繁体   English   中英

openmp 条件并行循环

[英]openmp conditional parallel loop

如果某个条件成立,我会尝试使用 openmp for 循环。 如果条件成立,我可以简单地使用 if else 语句来使用并行 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 循环中编写代码两次。

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

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

}

您可能会得到一个额外函数调用的开销,因为循环体被 OpenMP 实现分成了一个函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM