GNU C++库的实现支持并行模式,可以在这里找到详细说明。
- 您有使用过它的经验吗?好的还是坏的?特别是关于正确性的问题,但也包括性能。
- 是否有一些“比较严肃”的项目在使用它?
- 您是使用全局打开并行开关-D_GLIBCXX_PARALLEL,还是仔细地手动打开特定的并行化功能,例如:
__gnu_parallel::sort(v.begin(), v.end());
? - 是否有类似的开源项目?意思是:比使用openMP更容易并行化。
感谢您的经验。
Sascha
GNU C++库的实现支持并行模式,可以在这里找到详细说明。
__gnu_parallel::sort(v.begin(), v.end());
?感谢您的经验。
Sascha
回答晚了,但:
我认为应该认真考虑使用Intel TBB。我注意到 C++标准并行模式中缺少了并行容器。TBB容器不遵循C++标准容器的接口规范,但它们为此提供了解释。除此之外,TBB还有许多示例和设计模式。
我已经在一些小项目中使用过它,大型 STL 操作速度加快。我从未遇到任何问题(我使用了全局开关)。然而,我并没有真正做太多基准测试,您可能需要参考像http://algo2.iti.kit.edu/singler/mcstl/parallelmode_se.pdf 和 http://ls11-www.cs.uni-dortmund.de/people/gutweng/AD08/VO11_parallel_mode_overview.pdf这样的研究。