OpenMP并行区域没有隐式同步

时间:2013-12-20 06:03:46

标签: performance openmp

我的代码有以下结构

<serial-code-1>
#pragma omp parallel
{
    <parallel-code>
}
<serial-code-2>

我想删除并行区域末尾的隐式屏障同步,例如nowait。所以任何首先完成的线程都可以开始执行串行代码-2(它需要在序列代码2中进行一些更改),但它可能。如何实现这样的目标呢?

1 个答案:

答案 0 :(得分:1)

也许

<serial-code-1>
#pragma omp parallel
{
    <parallel-code>
    #pragma omp single
    {
    <serial-code-2>
    }
}

single指令范围内的代码,串行代码只能由一个线程执行,可能是第一个完成并行代码执行的线程。