【发布时间】:2019-03-04 20:16:11
【问题描述】:
首先,这是示例代码:
#include <iostream>
int main()
{
int x = 100;
#pragma omp parallel
{
#pragma omp single
{
#pragma omp task depend (in: x)
{ x += 1; }
#pragma omp task depend (out: x)
{ x *= 2; }
}
}
printf("x = %d\n", x); // prints 202
}
据我了解,task depend(in: x) 应该等待 depend(out: x) 的任何内容,但这似乎不是正在发生的事情。
在这种特殊情况下,输出为 202,表明 x 先递增然后加倍。
其实in/out和out/in这两种方法我都试过了,还有切换任务本身定义的顺序。无论输入/输出依赖关系如何,任务始终从上到下执行。
我是不是误解了task depend的意思?
【问题讨论】: