混合Boost FOREACH宏和OpenMP并行化

时间:2010-11-22 15:36:11

标签: c++ boost foreach openmp

我目前有一个代码(在C中),其外部循环是OpenMP并行化的(它在共享内存列表上本地运行)。我用C ++重写它,对于很多东西,我发现BOOST_FOREACH宏是一个非常好的语法,作为迭代列表,数组等的循环结构。

我的问题是:有没有办法可以使用该语法并并行化OpenMP风格的循环?

3 个答案:

答案 0 :(得分:2)

从终端复制价值1千瓦:

$ g++ a.cpp -I/opt/boost-1.45.0/include -O -fopenmp   
a.cpp: In function ‘int main()’:
a.cpp:12: error: for statement expected before ‘if’

答案 1 :(得分:0)

是的,它应该可行。 BOOST_FOREACH只是for循环的辅助宏,因此OpenMP应该识别并并行化该循环。

答案 2 :(得分:0)

为什么不简单地尝试一下,然后分析结果?

如果OpenMP平行化了boost_foreach,我会留下深刻的印象,因为foreach在很大程度上依赖模板技巧来扣除容器类型。如果我在你的位置,我会重写foreach以使用常规for循环。