OMP Pragma嵌套有意义吗?

时间:2015-06-09 14:57:55

标签: openmp pragma

我正在查看下面的一些代码(在审稿人/审核员的能力范围内)。下面显示的嵌套是在源代码中使用TABS创建的。

#pragma omp parallel
    #pragma omp sections
    {
        #pragma omp section
            p2 = ModularExponentiation((a % p), dp, p);
        #pragma omp section
            q2 = ModularExponentiation((a % q), dq, q);
    }

嵌套是一种风格问题吗?或者它是否具有像Python那样的意义?

1 个答案:

答案 0 :(得分:2)

你可以将前两个pragma折叠成一个,它不会改变语义,所以你可以改变

#pragma omp parallel
#pragma omp sections

#pragma omp parallel sections

但是,部分编译指示必须嵌套在部分编译指示内,以指定任务并行性。您可能希望将它们分开的一个示例是,如果您希望两个平行的部分一个接一个地在两个之间并且之间有一个障碍,例如:

#pragma omp parallel
{
  #pragma omp sections
  {
    #pragma omp section
    { ... }
    #pragma omp section
    { ... }
  }
  #pragma omp sections
  {
    #pragma omp section
    { ... }
    #pragma omp section
    { ... }
  }
}

这不需要创建一个新的"团队"对于第二组部分