openmp条件并行循环

Wei*_*ass 6 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
  }
}
Run Code Online (Sandbox Code Playgroud)

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

Rol*_*d W 11

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

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

}
Run Code Online (Sandbox Code Playgroud)

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