Emr*_*koz 5 c++ parallel-processing concurrency openmp ppl
我想比较PPL和OpenMP的性能,但无法在网上找到详细的调查.我相信没有多少人对PPL有经验.
我正在使用Visual Studio 2010在Windows上开发我的软件,并且不想在短期内将其移植到其他地方.
如果可移植性不是问题,只关注性能,那么您对这两种方法有什么看法?
在 MSDN 上,对 OpenMP 和 ConcRT(PPL 的核心)的属性进行了很好的比较:
OpenMP 模型特别适合高性能计算,其中非常大的计算问题分布在单个计算机的处理资源上。在这种情况下,硬件环境是已知的,开发人员可以合理地期望在执行算法时对计算资源具有独占访问权限。
但是,其他约束较少的计算环境可能不适合 OpenMP。例如,递归问题(例如快速排序算法或搜索数据树)使用 OpenMP 更难以实现。并发运行时通过提供并行模式库 (PPL) 和异步代理库来补充 OpenMP 的功能。与 OpenMP 不同的是,Concurrency Runtime 提供了一个动态调度程序,可以适应可用资源并随着工作负载的变化调整并行度。
因此,OpenMP 的主要缺点:
这可能取决于您的算法,但是这项研究表明 PPL 可能比 OpenMP 更快:
http://www.codeproject.com/Articles/373305/Visual-Cplusplus-11-Beta-Benchmark-of-Parallel-Loo
Serial : 72ms
OpenMP : 16ms
PPL : 12ms
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6118 次 |
| 最近记录: |