我正在尝试在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
隐含无
整数(4):: ndime,pgaus
真实的(8):: yy(ndime,ndime,pgaus)
yy = 0.0
结束子程序xx </ p>
答案 0 :(得分:1)
这是一个已知问题。我假设您在代码中使用数组语法将数组清零,例如“arr = 0.0d0”。前端编译器识别此习惯用法并替换为优化的运行时例程。这在编译很早就发生了,早在编译器知道这部分代码将被编译到设备之前。不幸的是,我们还没有将此运行时例程移植到设备上,因此错误。
最简单的解决方法是使用“-Mnoidiom”标志进行编译以禁用此优化。