OS X中的并行STL算法

Noa*_*oah 7 algorithm parallel-processing macos stl

我致力于转换现有程序以利用STL的一些并行功能.

具体来说,我重新编写了一个大循环来处理std :: accumulate.它很好地运行.

现在,我希望并行运行累积操作.

我在GCC上看到的文档概述了两个具体步骤.

  1. 包括编译器标志 -D_GLIBCXX_PARALLEL
  2. 可能添加标题 <parallel/algorithm>

添加编译器标志似乎没有任何改变.执行时间是相同的,在监视系统时,我没有看到任何多个核心使用的迹象.

添加并行/算法标头时出错.我认为它将包含在最新版本的gcc(4.7)中.

那么,有几个问题:

  1. 有没有办法明确确定代码是否实际并行运行?
  2. OS X上是否有"最佳实践"方法?(理想的编译器标志,标题等?)

欢迎任何和所有建议.

谢谢!

mcm*_*mcc 2

请参阅http://threadingbuildingblocks.org/

如果您只并行化 STL 算法,那么您通常会对结果感到失望。这些算法通常只有在处理非常大的数据集(例如 N > 1000 万)时才开始显示出可扩展性优势。

TBB(和其他类似的)在更高的层次上工作,专注于整体算法设计,而不仅仅是叶函数(如 std::accumulate())。