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居然是效率最高的,因为他可以控制线程数量。
希望有大神分析一下。 展开
Visual C++ (Visual Studio 2012)提供了4种并行技术:
Qpar:自动并行化,加速代码执行的编译器优化。个人感觉最无脑的并行技术,对代码更改最小
PPL:并发运行时(cocurrency runtime),数据并行或任务并行的类。功能很全面,相对比较简单
AMP:允许使用现代图形处理器进行通用编程的类,就是GPU并行技术。MS最新的并行技术,代码更改最大
OpenMP:OpenMP API的Microsoft实现。经典的外部并行技术库,很多科学计算都用这个,跨语言和平台
小弟看了MSDN文档,这么多方式,直接蒙了。到底哪个是最高效的呢?从MSDN原文来看,他强调,效率取决于硬件和环境,这不难理解。但是,小弟现在面临大量代码移植(之前用的是标准C++,核心算法用的是C,没有并行),到底选哪一个好呢?
自己用矩阵乘法比较了一下,发现在我的个人电脑(MacBook Pro)上,Qpar居然是效率最高的,因为他可以控制线程数量。
希望有大神分析一下。 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询