我想将原子函数与 OpenACC 指令一起使用。 pgc++ 的编译选项有哪些可以提供帮助?我应该使用特定的头文件吗?
最佳答案
需要检查的一件事:您使用的数据是否正确?每this forum并非所有加速器都接受所有数据类型,并且可能并非所有数据类型都可以原子访问。表 13 位于 this link表示 Nvidia 上的原子似乎仅适用于 32 位整数和 float 据类型。 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;
关于c++ - 在 OpenACC 中使用原子函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39273889/