C ++ STL算法是否使用CPU 的多核来提高性能?如果不, 是否有任何推荐的库可以执行STL所做的事情,但使用多个内核,比如说使用OpenMP?或者是否有任何开关可以在编译期间指定gcc指示STL使用多个核心
编辑:我在Ubuntu 10.10上使用英特尔酷睿i7 960处理器,使用gcc 4.4
答案 0 :(得分:10)
GNU libstdc ++似乎有一个并行模式,支持STL的几个并行化功能:
http://gcc.gnu.org/onlinedocs/libstdc++/manual/parallel_mode.html
答案 1 :(得分:4)
我知道没有利用多核的STL实现。即使确实存在,您也需要确保增加的复杂性最终成为净收益。 STL提供的算法类型(排序,累积等)仅在相当极端的情况下(例如,> 1000万个元素)从并行性中受益。如果你只在STL级别利用并行性,你可能会对结果感到失望。
我会看看英特尔的TBB(http://threadingbuildingblocks.org/),它提供了一个基于任务的并行框架。它鼓励算法设计适合基于任务的调度,而不仅仅是一堆叶子函数(例如parallel_sort(),尽管TBB确实提供了一个)。
答案 2 :(得分:1)