如果某个条件成立,我试图使用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循环中编写代码两次。
答案 0 :(得分:9)
使用OpenMP的if
子句有条件地启用并行性:
#pragma omp parallel for if(condition_holds)
for(...) {
}
您可能会获得一个额外函数调用的开销,因为OpenMP实现将循环体分隔为一个函数。