openmp条件并行循环

时间:2017-01-03 19:14:45

标签: c++ openmp

如果某个条件成立,我试图使用openmp for循环。如果条件成立,我可以简单地使用if else语句来使用parallel for循环,但for循环中的代码有点长,如果我只使用if else语句,它会使代码长度加倍。所以基本上,我想要一个更好的方法来做到这一点:

if(condition_holds){
   // use parallel for loop
   #pragma omp parallel for
   for(...){
     // Long piece of code
   }
}else{
  // Don't use parallel for loop
  for(...){
    // Long piece of code
  }
}

所以我不必在for循环中编写代码两次。

1 个答案:

答案 0 :(得分:9)

使用OpenMP的if子句有条件地启用并行性:

#pragma omp parallel for if(condition_holds)
for(...) {

}

您可能会获得一个额外函数调用的开销,因为OpenMP实现将循环体分隔为一个函数。