一直对并行开发很有兴趣,但迟迟未能出手,原因很简单,这个领域真的出乎意料的热,了解的越多,越会更加迷茫,本身这
个领域就牵扯着各家的利益。
早先了解到的是openmp和tbb,cuda等,开始纠结于cuda和tbb,最后决定跟着Intel的步伐走,因为实在是厌倦gpu过大的功
耗,觉得intel更有前景,选了tbb,由于之前没有用过标准模板库,标c++用的不好,再加之openmp是业界标准,intel的并行辅助工具也主推openmp,所以决定学习openmp,正当要大张旗鼓的开始时,又了解到了opencl,一个基于异构的api,也是标准,因为刚学完opengl,看到这个opencl和opengl可以很好的结合,外加编程风格相似,又决定学opencl,看了opencl的文档,发现它采用的是C99编程语言,而从微软官方得到证明,vs2010 不支持c99,那怎么开始呀,况且我的笔记本只有gpu支持opencl,cpu不属于8000系列的,不支持,在官网注册账户,要下载opencl预览版驱动,可是还要再加入什么计划,10天后才可以下载那个驱动,突然觉得opencl入门好坎坷,不由得开始质疑它的前途。
intel的独显计划暂停了,但并未完全取消,另有打算,但异构又是当今的一大趋势,到底我该学那个,大家讨论一下吧。
------解决方案--------------------------------------------------------
可以选择的并行方法太多了,也是烦恼的事情。
先从项目的实际背景出发,主要是数据并行呢,还是任务并行多些; 开发使用的语言呢? C, C++, Fortran; 需要考虑跨平台性么(例如Windows,Linux). 等等。然后就容易入手了。
可以考虑使用Intel Cilk Plus,这个对代码的改动比较少,兼容C和C++。有兴趣的话,先下个中文手册看看: http://software.intel.com/zh-cn/forums/showthread.php?t=77996&o=a&s=lr
------解决方案--------------------------------------------------------
目前主要还是同构吧,异构只是刚刚起步,还面临很多性能的问题
------解决方案--------------------------------------------------------
建议先从一个小的项目入手。有了实践,体会更深些。并行开发的编程模式,还远没有到大一统的时候。
恐怕和编程语言一样,继续百花齐放,关键是谁更适合于你要进行的应用。但是基本的思想都是一样的,发掘潜在的并行性,消除依赖,调节负载均衡。。。这些你用任何的并行开发都需要好好考虑的。
------解决方案--------------------------------------------------------
CUDA
------解决方案--------------------------------------------------------
学习了
------解决方案--------------------------------------------------------
都学,更有前途,语言神马的Hello World问题都是浮云,都可以规定时间规定地点解决的。
思想才是根本。
算法+数据结构,是内功,管他神马拳法。
------解决方案--------------------------------------------------------
比较看好opencl和cuda。这几年cuda发展明显要优于opencl。