2017-10-18 65 views
0

我试图编译一个子程序FORTRAN为$ ACC常规SEQ 我收到以下错误消息编译器错误PGI OpenACC的“pgf90_mzero8”未定义

/scratch/tmp/pgaccKU0jSWcDesiI.gpu(93)!错误:标识符 “pgf90_mzero8” 是 “/scratch/tmp/pgnvdgV0jsxZLyFWv.nv0” 的编译

PGI编译器版本17.4

文本情况下

检测未定义

1错误

子程序XX(ndime,pgaus,YY) $!ACC常规SEQ
隐无 整数(4):: ndime,pgaus 实(8):: YY(ndime,ndime,pgaus)

YY = 0.0

端子程序XX

回答

1

这是一个已知的问题。我假设你在你的代码中使用数组语法清零数组,例如“arr = 0.0d0”。前端编译器可以识别这种习​​惯用法,并用优化的运行时例程取而代之。这很早就发生在编译之前,编译器知道这段代码将被编译到设备中。不幸的是,我们还没有将这个运行时间例程移植到设备上,从而导致错误。

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

+0

Thanks Mat我通过一个小测试案例得出了同样的结论。 –

相关问题