我目前有一个代码(在C中),其外部循环是OpenMP并行化的(它在共享内存列表上本地运行)。我用C ++重写它,对于很多东西,我发现BOOST_FOREACH宏是一个非常好的语法,作为迭代列表,数组等的循环结构。
我的问题是:有没有办法可以使用该语法并并行化OpenMP风格的循环?
答案 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循环。