c++ - 在 OpenACC 中使用原子函数

标签 c++ openacc

我想将原子函数与 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/

相关文章:

c++ - 如何在GPU上复制OpenACC中分配的 vector 指针内存的 vector

python - 将 F2Py 与 OpenACC 一起使用会在 Python 中出现导入错误

c++ - OpenACC CPU 与 GPU 优化

c++ - 如何从 QLineEdit 对象中检索文本?

c++ - 访问嵌套模板参数

c++ - `std::string::iterator` 保证不是指向 char 的指针吗?

c++ - RBM 在代码上与 OpenACC 没有改进

c++ - 使用指针运算将两个数组的内容相加并保存到一个空数组

c++ - 无法成功创建唯一对象的 std::list

nvidia - gcc - openacc - 编译的程序无法正常运行