openaccpgipgi-accelerator

Compiler Error PGI OpenACC "pgf90_mzero8" is undefined


I am trying to compile a subroutine in fortran as !$acc routine seq I am getting following error message

/scratch/tmp/pgaccKU0jSWcDesiI.gpu(93): error: identifier "pgf90_mzero8" is undefined

1 error detected in the compilation of "/scratch/tmp/pgnvdgV0jsxZLyFWv.nv0"

PGI compiler version 17.4

Text case

subroutine xx(ndime,pgaus,yy) !$acc routine seq
implicit none integer(4) :: ndime, pgaus real(8) :: yy(ndime,ndime,pgaus)

yy =0.0

end subroutine xx


Solution

  • This is a known issue. I'm assuming that you in your code you are zeroing out an array using array syntax, something like "arr=0.0d0". The front end compiler recognizes this idiom and replaces with an optimized runtime routine. This happens very early in the compilation, long before the compiler knows that this section of code will be compiled to the device. Unfortunately we haven't yet ported this runtime routine to the device and hence the error.

    The easiest work around is to compile with the "-Mnoidiom" flag to disable this optimization.