【问题标题】:What is the benefit of '#pragma omp master' as opposed to '#pragma omp single'?与“#pragma omp single”相比,“#pragma omp master”有什么好处?
【发布时间】:2013-09-20 03:46:50
【问题描述】:

在 OpenMP 中,#pragma omp master 指令内的任何代码都由单个线程(主线程)执行,区域末尾没有隐含的屏障。 (见section on MASTER directive in the LLNL OpenMP tutorial)。

这似乎等同于#pragma omp single nowait(除了'master',任何线程都可以执行单个区域)。

在什么情况下使用#pragma omp master有好处?

【问题讨论】:

    标签: openmp


    【解决方案1】:

    虽然single nowait 构造在大多数情况下等同于master 构造:

    1. 如果有任何需要,master 构造可以在工作共享构造中使用。 single nowait 构造不是这种情况,因为两个工作共享构造不能嵌套在同一个并行区域中

    2. 一些库希望主线程执行某些操作。例如,MPI 库在使用等于MPI_THREAD_FUNNELED 的线程支持级别进行初始化时,仅允许主线程进行 MPI 调用

    【讨论】:

    • 我不知道 MPI_THREAD_FUNNELED 的性能优于 MPI_THREAD_SERIALIZED 的任何实现,尽管我知道差异是如何出现的。
    【解决方案2】:

    除了嵌套限制之外,single 构造可以比master 构造更慢地实现,因为它更复杂和灵活。您可能想检查您的特定实现,但通常master 可以更快地实现,因此与single nowait 构造相比,它的多次调用可能会受益。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-22
      • 1970-01-01
      • 1970-01-01
      • 2016-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多