一些关于并行计算的科研思路

    

    最近想要找点新的点子来优化之前看到的一些立体匹配论文,我之前一直是用图割做立体匹配,刚开始时候用图割做图像分割,后来发现这块都被人做烂了,继续往下看发现图割还能搞立体匹配,效果也挺好。但是后面发现掉大坑里面了。


1.什么是好的research

这篇文章中写到什么是好的research?这篇文章中有讲到(看到的有点晚了)

http://www.52cs.org/?p=632


    创新性高,性能差:俗称的“挖坑”的工作。这样的工作包括提出一个全新的问题或者对一个已有问题的全新解法。这样的工作虽然可能在文章中只提出了非常简单的baseline,或性能并不能比过最好的已有方法,但是可以启发大量后续的research。

很显然用图割算法进行立体匹配就属于这种工作。


    在没有综合对比其他全局优化算法,或者办全局优化算法的时候,我就贸然继续采用图割算法进行立体匹配的工作,仅仅是因为之前看了图割算法,这不能不说是硕士阶段方向性选择的一大失误。


2.科研方向的选择(对于研究生而言尽量选择一个点)

    而我因为不懂科研方向的选择在图割算法立体匹配上下去,现在想想,什么是选择在硕士阶段科研题目的正确方法呢?我觉的对于一般院校的学生来说,应该是一些在小处上能够改进的题目,比如图像分割,人脸表情识别,深度图像增强这种有成熟框架可以替换算法实质内容,又实验方便的科目。

    比如讲图像分割,用聚类算法进行分割,模糊k均值,或者引入图论的相关算法多做些实验,国内的核心期刊还是很好水的。

而对于立体匹配这种偏系统性工程性科研题目。而且在没有师兄师姐代码或者理论基础的情况下,光是自己找代码,自己找例程就

 

 

非常耗费时间。


3.有关图形图像领域的万金油灌水(串行改并行)

    图形图像处理在国内国际有一个万金油灌水领域,其实也可以说是一个偷懒的领域,就是将传统算法并行化处理,下面说说我的思路。如何找到并识别并行的机会呢。最好的方法是用代码性能分析工具分析代码,对cpu占用率较高的部分单独拉出来来。代码分析可以在windows下面用amd的codexl,直接对应exe就能分析出来代码所在的瓶颈。或者用visual studio自带的analysis,或者linux下面免费的oprofile

 

比如下图我随便找了一个立体匹配的程序在codexl中跑过一遍后下面是分析的结果:可以看到热点函数和代码都给找出来了。这就是我们通常说的:

性能分析引导优化(profile-guided optimization)

 



看到程序27%的时间卡在了一个内联函数的直方图相加上。



    可以直接下载一个Intel parallel studio XE 2016之后在vs2010中打开tools运行优化选项,说明文档:

file:///C:/Program%20Files%20(x86)/IntelSWTools/documentation_2016/en/compiler_c/ps2016/get_started_wc.htm
 

如果按照学生身份来注册的话,是免费使用一年的: 点击打开链接 

  采用intel 编译器的优化,intel编译器安装好之后在windows下有两种运行方式,一种是命令行,一种是作为visual studio 2010的一个插件工具:
 
 
运行时候需要根据并行优化向导进行一步步配置优化,这基本也算是傻瓜式的优化,其实主要能用到的就是两部分,编译优化和,分析引导优化:


注意到开启不同选项,其优化时间是不同的,甚至更慢:

 



寻找并行化的机会之二:

    检查应用程序中的关键路径。关键路径是确定任务可以在最短时间内完成的一组步骤。下图中显然任务c可以和任务a和b并行。

 

 

 

 

 

 

要点:

      除非应用程序用于可并行化代码的时间超过其运行时间的一半,否则其可扩展性有限。我们用profile分析的时候,程序热点代码运行时间在25%-30%以上才有明显的优化效果。

 

 

真正能够缩短的运行时间,amdahl定律:



参考文献:

戈夫. 多核应用编程实战[M]. 人民邮电出版社, 2013.

转载于:https://www.cnblogs.com/wuyida/p/6301292.html

这本书的论点是,复杂性科学是一种“新型科学”,我借鉴自 Stephen Wolfram。 2002年,Wolfram 发表了 “新科学”一文,在这里介绍了他和其他人在细胞自动机上的工作, 并描述了一种用于计算系统研究的科学方法。在之后的章节中,我们会回顾 Wolfram,但是 现在我打算将他的标题用于更广泛的东西。 我认为复杂性是新的,不是因为它将科学工具应用到一个新的主题,而是因为它使用不同的 工具,允许不同种类的工作,并最终改变了我们认为是“科学”的东西。 为了证明差异,我将从经典科学的一个例子开始:假设有人问你为什么行星轨道是椭圆形 的。你可以引用万有引力的牛顿定律,并用它来写出描述行星运动的微分方程。然后,你可 以求解微分方程,并展示出解是椭圆。证明完毕! 大多数人发现这种解释令人满意。它包括一个数学推导 - 所以它有一些严格的证明 - 它解释了 具体的观察,椭圆轨道,通过诉诸一般的原则,引力。 让我用另一种解释来对比一下。假设你搬到像底特律这样种族隔离的城市,你想知道为什么 这样。如果你做一些研究,你可能会发现 Thomas Schelling 的一篇文章,称为“分离动态模 型”,它提出了一个简单的种族隔离模型: 这里是我对这个模型的描述: 城市的谢林模型是一个单元格数组,每个单元格代表一个房子。这些房子被两种“智能 体”占据,标有红色和蓝色,数量大致相等。大约10%的房子是空的。 在任何时间点,智能体可能会高兴或不高兴,这取决于附近的其他智能体。在模型的一 个版本中,如果智能体至少有两个邻居像自己一样,则智能体很高兴,如果邻居是一个 或者零个,则智能体不高兴。 这个模拟通过随机选择一个智能体来运行,并检查它是否快乐。如果是的话,没有任何 反应 如果不是,智能体随机选择一个未占用的单元格并移动。 如果你从一个完全未分离的模拟城市开始,并在短时间内运行该模型,类似的智能体会聚集 到一起。随着时间的流逝,这些社区会增长和合并,直到存在少量的大型社区,大多数智能 体都生活在均匀的社区中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值