代码之家  ›  专栏  ›  技术社区  ›  F'x

混合了BoostForEach宏和OpenMP并行化

  •  6
  • F'x  · 技术社区  · 14 年前

    我目前有一个代码(在C语言中),它的外部循环是OpenMP并行的(它在本地共享内存列表上运行)。我在C++中改写它,对于很多事情,我发现BooStY-Frac宏是一个非常好的语法,用于循环遍历列表、数组等。

    我的问题是:有没有一种方法可以同时使用这种语法和并行化循环openmp样式?

    3 回复  |  直到 14 年前
        1
  •  2
  •   F'x    14 年前

    从终端复制值为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’
    
        2
  •  0
  •   Puppy    14 年前

    是的,应该可以。BoostForEach只是for循环的一个助手宏,因此OpenMP应该识别并并行化该循环。

        3
  •  0
  •   Viktor Sehr    14 年前

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

    如果OpenMP ParatedBoost-ForEach,我会印象深刻,因为ForEach严重依赖模板技巧来推断容器类型。如果我处在你的位置,我会重写前臂,使用正则的for循环。