C++并行技术,哪个最快?Qpar, PPL, AMP, OpenMP

小弟做科学计算的,刚开始使用并行技术,想移植以前的代码。VisualC++(VisualStudio2012)提供了4种并行技术:Qpar:自动并行化,加速代码执行的编译... 小弟做科学计算的,刚开始使用并行技术,想移植以前的代码。

Visual C++ (Visual Studio 2012)提供了4种并行技术:

Qpar:自动并行化,加速代码执行的编译器优化。个人感觉最无脑的并行技术,对代码更改最小
PPL:并发运行时(cocurrency runtime),数据并行或任务并行的类。功能很全面,相对比较简单
AMP:允许使用现代图形处理器进行通用编程的类,就是GPU并行技术。MS最新的并行技术,代码更改最大
OpenMP:OpenMP API的Microsoft实现。经典的外部并行技术库,很多科学计算都用这个,跨语言和平台

小弟看了MSDN文档,这么多方式,直接蒙了。到底哪个是最高效的呢?从MSDN原文来看,他强调,效率取决于硬件和环境,这不难理解。但是,小弟现在面临大量代码移植(之前用的是标准C++,核心算法用的是C,没有并行),到底选哪一个好呢?

自己用矩阵乘法比较了一下,发现在我的个人电脑(MacBook Pro)上,Qpar居然是效率最高的,因为他可以控制线程数量。

希望有大神分析一下。
展开
 我来答
我回来了调用
2014-09-20 · TA获得超过388个赞
知道小有建树答主
回答量:772
采纳率:0%
帮助的人:470万
展开全部
应该是OpenMP, 到不是它的速度多快, 而是一个开源的东西, 会被更多的人研究, 因此它的应用环境可能更容易建立起来.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式