0

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

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

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

PGI 编译器版本 17.4

文本大小写

子例程 xx(ndime,pgaus,yy) !$acc 例程 seq
隐式无整数(4) :: ndime, pgaus real(8) :: yy(ndime,ndime,pgaus)

年=0.0

结束子程序 xx

4

1 回答 1

1

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

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

于 2017-10-18T14:57:57.070 回答