在 OpenMP 中 #pragma omp master
中的任何代码指令由单个线程(主线程)执行,在区域末尾没有隐含的屏障。 (见 section on MASTER directive in the LLNL OpenMP tutorial)。
这似乎相当于 #pragma omp single nowait
(除了'master',任何线程都可以执行单个区域)。
什么情况下使用#pragma omp master
有用吗? ?
最佳答案
虽然 single nowait
构造在大多数情况下相当于 master
构造:
master
如果需要,可以在工作共享构造中使用构造。 single nowait
不是这种情况构造,因为两个工作共享构造不能嵌套在同一并行区域内 MPI_THREAD_FUNNELED
, 只允许主线程进行 MPI 调用 关于openmp - '#pragma omp master' 与 '#pragma omp single' 相比有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18820471/