编译器错误 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”标志进行编译以禁用此优化。
我正在尝试将 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”标志进行编译以禁用此优化。