编译器错误 PGI OpenACC "pgf90_mzero8" 未定义

Compiler Error PGI OpenACC "pgf90_mzero8" is undefined

我正在尝试将 Fortran 中的子例程编译为 !$acc routine seq 我收到以下错误消息

/scratch/tmp/pgaccKU0jSWcDesiI.gpu(93):错误:标识符 "pgf90_mzero8" 未定义

编译“/scratch/tmp/pgnvdgV0jsxZLyFWv.nv0”时检测到 1 个错误

PGI 编译器版本 17.4

文字大小写

子程序 xx(ndime,pgaus,yy) !$acc 例程 seq
隐式 none 整数(4):: ndime,pgaus 真实(8):: yy(ndime,ndime,pgaus)

yy =0.0

结束子程序 xx

这是一个已知问题。我假设您在代码中使用数组语法将数组归零,例如 "arr=0.0d0"。前端编译器识别这个习惯用法并替换为优化的运行时例程。这发生在编译的早期,在编译器知道这部分代码将被编译到设备之前很久。不幸的是,我们还没有将这个运行时例程移植到设备上,因此出现了错误。

最简单的解决方法是使用“-Mnoidiom”标志进行编译以禁用此优化。