我致力于转换现有程序以利用STL的一些并行功能。
具体来说,我重写了一个大循环来处理std :: accumulate。它很好地运行。
现在,我希望将累积操作并行运行。
我在GCC上看到的文档概述了两个具体步骤。
-D_GLIBCXX_PARALLEL
<parallel/algorithm>
添加编译器标志似乎没有任何改变。执行时间是相同的,在监视系统时我没有看到任何多个核心使用的迹象。
添加并行/算法标头时出错。我认为它将包含在最新版本的gcc(4.7)中。
所以,有几个问题:
欢迎提出任何建议。
谢谢!
答案 0 :(得分:2)
请参阅http://threadingbuildingblocks.org/
如果你只是对STL算法进行并行化,你会对结果感到失望。在处理非常大的数据集(例如N> 1000万)时,这些算法通常只会开始显示可扩展性优势。
TBB(和其他类似的人)在更高层次上工作,专注于整体算法设计,而不仅仅是叶子函数(如std :: accumulate())。
答案 1 :(得分:0)