并行编程下Windows* 线程, OpenMP*, Intel® Threading Building Blocks的对比

并行编程下Windows* 线程, OpenMP*, Intel® Threading Building Blocks的对比

 

 

2009-03-30 10:08:35 作者:Peter Wang (Intel) 来源:http://software.intel.com

 

 

这是一个有意思的话题当我们计 划在多核系统下应用并行编程来最大化地利用处理器时,这意味着我们想把一个大的串行任务分割成一些小任务并让它们同时运行。

 

下一个问题是我们应用使用什么 方法?这里有三个选择-一、传统的Windows* 线程; 二、OpenMP*; 三、Intel® Threading Build Blocks (后文简称TBB)。很难说哪个好哪个坏,这和开发者有关。比如,如果开发者之前没有并行编程的经验,那么如果开发者不想学 Windows* 线程的话 可 以使用 OpenMP* 和 TBB。OpenMP* 的优势是代码清洁并且易于维护。TBB 同样很有帮助,开发者不需要知道线程如何工作,仅仅把你的任务提交给TBB,TBB就能使你的应用程序运行于最佳性能。而有一些开发者想自己控制线程的运 行, Windows* 线程就是一个选择。

 

这里,我列出了这三个选项的主要因素

并行编程的挑战Windows* threadsOpenMP*Intel® Threading Build Blocks
任务级 xx
跨平台支持 xx
动态运行库  x
线程控制x  
预测试和校验 xx
C 语言支持xx 
Intel® Threading Tools 支持xxx
未来的维护 xx
动态内存分配  x
“轻型” 互斥体  x
处理器关联性x 线程关联性

思考一下你是否处于下面情形中的一个,请根据不同的情形选择合格的方案以节省开发成本。

情形一

你已经有一个能工作的多线程程序,希望找到性能瓶颈并改进之。

你不需要重写代码,只要使用Intel(R) VTune(TM) Performance Analyzer 和 Intel? Thread Profiler 来查找代码中的真正的性能问题,并且你还有机会使用 OpenMP* 或 TBB 在“深”循环中改进代码,或者更换同步对象。

情形二

你可能有串行代码,但是不知道怎样把它改成多线程的。

使用Intel® VTune™ Performance Analyzer来查找你代码中的热点区,不需要改变整个程序-只要改变关键代码就可以达到并行化。

情形三

你要开发一个新项目。考虑你的算法如何并行工作,分割小任务,适当的粒度。如果你不怎么精通多线程编程-那么就使用TBB来提交小任务,或者使用 OpenMP* 来安排结构化流。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值