【发布时间】:2013-07-05 23:15:07
【问题描述】:
我正在研究这个简单的代码片段 顺便说一句,我用 0 初始化了 c 数组的所有元素。
#pragma acc kernels copyin(a[0:n],b[0:n]), copyout(c[0:n])
{
c[0]=11;
for(i=0; i<n; i++) {
if(c[i]==11) c[i]=123;
c[i] = a[i] + b[i];
}
}
当我查看生成的小码时,我看到 c[0] 被分配在主机代码片段(CPU)上。这意味着迭代适用于旧的 c 值(初始化值为 0)。因此迭代从未进入 c[i]=123 赋值。我的意思是代码返回了错误的结果:( 你遇到过类似的事情吗?
【问题讨论】: