有谁知道用OPENMP,CUDA,MPI,TBB这些方法设计出来的程序的性能和优缺点。请不吝赐教~

键盘叔叔 2010-06-03 08:13:50
加精
RT.

衷心感谢。
...全文
1440 51 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
51 条回复
切换为时间正序
请发表友善的回复…
发表回复
键盘叔叔 2011-02-24
  • 打赏
  • 举报
回复
[Quote=引用 43 楼 snow_bird 的回复:]

我最近也在做高性能计算的课题,只是刚刚起步,呵呵,所以说得也很浅,望高手指正。
楼主举出的这些库或者标准,都是用于并行计算的,不过其各自针对的侧重点或者实现的并行方法不同。
MPI即消息传递接口,用于计算机间传递的信息,也就是说,主要是针对计算机群集(cluster)并行或者超级计算机的并行。因为我现在实验条件没有群集,所以了解不多,呵呵。
OpenMP主要通过是一些编译的预处理指令实现并……
[/Quote]

谢谢你!能在这里跟大家相互交流学习真好!
intel_iclifort 2011-02-22
  • 打赏
  • 举报
回复
另外,性能是一方面,开发的成本,以及代码维护的成本也是需要考虑的。

否则大家都只用汇编了,何况现在的编译器也越来越智能,生成的可执行代码效率也不低
intel_iclifort 2011-02-22
  • 打赏
  • 举报
回复
在最新的Intel编译器中,提供了一个N Queen问题的范例程序代码,分别使用Native thread, OpenMP, OpenMP Taskq (3.0中的功能), STL, TBB 等方法实现并行。有兴趣的可以下载后,自己体会一下其中的差别。
qdwang2010 2011-01-23
  • 打赏
  • 举报
回复
tbb更好些,因为openmp虽然好写,但调试很困难,很多情况要自己考虑。
intel之所以开发tbb这像新技术就是看到了openmp,mpi的这方面不足,建议用tbb
wanglei5695312 2011-01-09
  • 打赏
  • 举报
回复
这个没有可比性...
ujyt520 2010-12-25
  • 打赏
  • 举报
回复
不错,如果在能详细点就更好了
xia_xia 2010-12-20
  • 打赏
  • 举报
回复
不错,如果在能详细点就更好了
pthiiu 2010-10-15
  • 打赏
  • 举报
回复
留个位置 正在学习中
snow_bird 2010-09-18
  • 打赏
  • 举报
回复
我最近也在做高性能计算的课题,只是刚刚起步,呵呵,所以说得也很浅,望高手指正。
楼主举出的这些库或者标准,都是用于并行计算的,不过其各自针对的侧重点或者实现的并行方法不同。
MPI即消息传递接口,用于计算机间传递的信息,也就是说,主要是针对计算机群集(cluster)并行或者超级计算机的并行。因为我现在实验条件没有群集,所以了解不多,呵呵。
OpenMP主要通过是一些编译的预处理指令实现并行,在C/C++里面形如“#pragma ...”这样的东东,现在最新的版本是3.0, GCC和Intel C++支持最新的,微软的2005,2008,2010VS都只支持到2.0。OpenMP主要实现的是多线程,也就是在一台多个CPU处理器的计算机上发挥作用。不过也有在群集中使用的OpenMP论文,我没有关注,只是知道。OpenMP由于只是加一些预处理器指令,而且其目的是要让编写的程序在并行和串行时同时都能正常运行,所以其最大的优点是可以将现行的串行C程序经过不大的更改便成为多线程的。有地方说OpenMP主要是针对循环的并行,我只是刚开始学,没有体会到,呵呵。
TBB是Intel公司的产品,基于STL,得过Jolt的大奖,是非常好的线程库,其最大优点是结构良好,抽象程度也比OpenMP要高,许多地方说,如果是写新程序,用TBB比较好,不过其不支持C,只支持C++。做图形学的,如果知道OpenCV库,这个库就用到了TBB。
我本来准备对CPU并行用TBB的,不过看到了TBB的网站上FAQ,其写到,应该在程序中尽可能地用OpenMP,现在还是决定先学OpenMP了,呵呵,OpenMP和TBB可以并存,不过要学起来也不是一朝一夕能够完成,将Intel的TBB官网FAQ节选如下:
Everyone should use OpenMP as much as they can. It is easy to use, it is standard, it is supported by all major compilers, and it exploits parallelism well. But it is very loop oriented, and does not address algorithm or data structure level parallelism. When OpenMP works for your code, you should use it. We’ve seen it used to great advanatage in financial applications, mp3 codecs, scientific programs and high definition video editing software. OpenMP is best geared for Fortran and C code.
CUDA是NVIDIA公司公司针对其生产的GPU做的编程库,有如Intel为CPU开发的TBB一样。GPU其实一直是可以并行的,其特点是数据密集型的并行,但以前编程接口很少,高手们要通过OpenGL才能实现使用GPU进行并行计算。直到NVIDIA开发了CUDA,我们可以利用C/C++来进行GPU的编程。前述的类库或标准都是针对CPU,而CUDA针对的是GPU,所以可以想见的是,以上的库可以和CUDA配合起来用。实际上已经有人完成了许多方案,如用MPI和CUDA实现群集高性能GPU的协作,OpenMP和TBB和NVIDIA实现CPU和GPU的协作。
这里还要指出的是,从编程方面来说,OpenMP和TBB的编译器支持非常广泛,而CUDA较前两者都很新,所以支持的编译器不多,而TBB只是类库,还是基于STL的,所以应该和CUDA更容易配合,当然CUDA和OpenMP的配合已经有人实现了。
我只是从实现的方法上说这么多,至于优劣,我的能力不足以评估,呵呵。我现在主要希望研究CPU和GPU异构的协作,这可能用到OpenMP,TBB和CUDA,如果楼主及其他高手也有同样想法,可一起探讨。
zldrobit 2010-06-29
  • 打赏
  • 举报
回复
cuda是使用GPU计算的NVDIA并行计算架构。。。 跟OPENMP是不一样的。。
arxie 2010-06-27
  • 打赏
  • 举报
回复
关注中,希望有高人出现
Ade子夜 2010-06-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 horreaper 的回复:]
如果编写的程序各线程之间有复杂的交互的话,用raw threading比较好,其他就用openMP和TBB等
从程序风格上来说,C的程序用OpenMP好点,C++用TBB
[/Quote]

顶!上楼!
a402108132a 2010-06-26
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!
hw123315123315 2010-06-26
  • 打赏
  • 举报
回复
gthhhhghg
zhangmeeno 2010-06-25
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!
volkswageos 2010-06-25
  • 打赏
  • 举报
回复
OPENMP,CUDA,MPI,TBB能不能先解释一下这几个词的含义
sing_along_river 2010-06-25
  • 打赏
  • 举报
回复
自己动手写过几个简单的
openmp,MPI 和CUDA的人飘过
键盘叔叔 2010-06-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 horreaper 的回复:]
如果编写的程序各线程之间有复杂的交互的话,用raw threading比较好,其他就用openMP和TBB等
从程序风格上来说,C的程序用OpenMP好点,C++用TBB
[/Quote]

看来阁下经验比较丰富呀~
键盘叔叔 2010-06-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 intel_iclifort 的回复:]
这个问题太大了, 估计不是三两句话能说清楚的

先抛个砖, 从并行编程的模式看, 有共享内存和分布式之分, 纯数据并行和任务并行之分, 支持的编程语言之分, 实现的方式之分(语言扩展还是类库模板)...

明白了这些, 大概能知道哪个方式适合你的应用或者算法要求.

没有绝对的好坏之分, 就像大家一直在谈论的编程语言谁更好的问题.
[/Quote]

嗯,你说的有道理,这个我还需要多编程才能有更深的理解呀
键盘叔叔 2010-06-24
  • 打赏
  • 举报
回复
谢谢各位来围观了,看看是否还有多核高手来解惑~
加载更多回复(28)

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧