我的代码有以下结构
<serial-code-1>
#pragma omp parallel
{
<parallel-code>
}
<serial-code-2>
我想删除并行区域末尾的隐式屏障同步,例如nowait。所以任何首先完成的线程都可以开始执行串行代码-2(它需要在序列代码2中进行一些更改),但它可能。如何实现这样的目标呢?
答案 0 :(得分:1)
也许
<serial-code-1>
#pragma omp parallel
{
<parallel-code>
#pragma omp single
{
<serial-code-2>
}
}
single
指令范围内的代码,串行代码只能由一个线程执行,可能是第一个完成并行代码执行的线程。