In OpenMP any code inside a #pragma omp master
directive is executed by a single thread (the master), without an implied barrier at end of the region. (See section
In addition to nesting limitations single
construct can be implemented slower than master
construct because it is more complicated and flexible. You may want to check your particular implementation, but in general master
can be implemented faster, so multiple invocations of it may benefit comparing to single nowait
construct.