我想比较ppl与openmp关于他们的性能,但无法找到对网站的详细调查。我相信没有多少人经历过PPL。

我正在使用Visual Studio 2010在Windows上开发我的软件,不希望在短期内将其移植到其他地方。

如果可移植性不是问题,并且只关注表现,您如何看待这两种方法?

有帮助吗?

解决方案

它可能取决于您的算法,但该研究表明PPL可能更快,然后是OpenMP:

http:// www。codeproject.com/articles/373305/visual-cplusplus-11-beta-benchmark-of-parallel-loo

Serial : 72ms
OpenMP : 16ms
PPL    : 12ms
.

其他提示

在msdn上有一个大的比较属性Openmp和Conct(PPL核心):

OpenMP模型是一种特别好的高性能计算匹配,其中在单台计算机的处理资源上分布了非常大的计算问题。在这种情况下,已知硬件环境,并且在执行算法时,开发人员可以合理地预期对计算资源的独占访问。

然而,其他,较少约束的计算环境可能不是OpenMP的良好匹配。例如,递归问题(例如Quicksort算法或搜索数据树)通过使用OpenMP更难以实现。并发运行时通过提供并行模式库(PPL)和异步代理库来补充OpenMP的功能。与OpenMP不同,并发运行时提供动态调度程序,它适应可用资源,并将并行程度调整为工作负载更改。

因此,OpenMP的主要缺点:

  • 静态脱落模型。
  • 不包含取消机制(非常巨大的缺点,需要许多并发算法取消)。
  • 不包含并发代理方法。
  • 在ParaLel代码中的烦恼。

如果您唯一关注的是性能,那么我认为关于这两种方法完全无关紧要。这是一个由经验方法可解决的问题,而不是通过论证来解决。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top