问题
I am trying to use an openmp for loop if a certain condition holds. I could simply use an if else statement to use the parallel for loop if a condition holds, but the code in the for loop is a bit long and it would double the length of the code if I just use the if else statement. So basically, I want a better way to do this:
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
}
}
so I won't have to write the code inside the for loop twice.
回答1:
Use OpenMP's if
clause to conditionally enable parallelism:
#pragma omp parallel for if(condition_holds)
for(...) {
}
You will probably get an overhead of one additional function call because the loop body is separated into a function by the OpenMP implementation.
来源:https://stackoverflow.com/questions/41450756/openmp-conditional-parallel-loop