我想在OpenACC指令中使用原子函数。 pgc ++的编译选项可以提供哪些帮助?我应该使用特定的头文件吗?
答案 0 :(得分:0)
要检查一件事:您使用的是正确的数据吗?每this forum并非所有加速器都接受所有数据类型,并且可能并非所有数据类型都可以原子方式访问。表{3}处的表13表明Nvidia上的原子似乎只适用于32位整数和浮点数据类型。 64位可用于计算容量6.x +。
您说您的代码如下:
#pragma acc atomic
{
res[i][i]=res[i][i]+x;
res[j][j]=res[j][j]+y;
}
但是,我认为你不能像这样将多个原子嵌套在一起。请尝试改为:
#pragma acc atomic update
res[i][i]=res[i][i]+x;
#pragma acc atomic update
res[j][j]=res[j][j]+y;