Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

openmp conditional parallel loop

Tags:

c++

openmp

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.

like image 831
Weierstrass Avatar asked Jan 03 '17 19:01

Weierstrass


1 Answers

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.

like image 127
Roland W Avatar answered Oct 25 '22 10:10

Roland W