在OpenACC中使用原子函数

时间:2016-09-01 14:12:55

标签: c++ openacc

我想在OpenACC指令中使用原子函数。 pgc ++的编译选项可以提供哪些帮助?我应该使用特定的头文件吗?

1 个答案:

答案 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;