not-very-explicit compiler error (CUDA fortran)

Hello,

I am currently trying to port a radiative transfer code to GPU. The code is about 3000 lines, but for now the cuda relevent part only ~ 200 lines.
I don’t expect it to comile correctly yet, but I get an error message such that
I have no idea to the nature of the problem…

/opt/pgi/linux86-64/11.1/bin/pgf90 -Mlarge_arrays -Bdynamic -mcmodel=medium -Mcuda=cc13 -c tr_ly_utils_cuda.cuf
/tmp/pgcudaforfHjgpIHQFwvJ.gpu(34): error: class “” has no member “m”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(38): error: class “” has no member “m”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(40): error: class “” has no member “m”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(42): error: class “” has no member “m”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(43): error: class “” has no member “m”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(44): error: class “” has no member “m”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(45): error: class “” has no member “m”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(49): error: class “” has no member “m”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(49): error: class “” has no member “m”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(59): error: class “” has no member “m”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(60): error: class “” has no member “m”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(61): error: class “” has no member “m”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(66): error: class “” has no member “m”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(70): error: class “” has no member “m”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(70): error: class “” has no member “m”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(71): error: class “” has no member “m”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(72): error: class “” has no member “m”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(99): error: class “” has no member “m4122904”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(100): error: class “” has no member “m4184344”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(101): error: class “” has no member “m4184344”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(102): error: class “” has no member “m4184344”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(103): error: class “” has no member “m4184344”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(104): error: class “” has no member “m4184344”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(107): error: class “” has no member “m4184344”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(108): error: class “” has no member “m4184344”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(110): error: class “” has no member “m4122904”

/tmp/pgcudaforfHjgpIHQFwvJ.gpu(111): error: class “” has no member “m4184344”

27 errors detected in the compilation of “/tmp/pgnvdPIjg74VnjPwX.nv0”.
PGF90-F-0000-Internal compiler error. pgnvd job exited with nonzero status code 0 (tr_ly_utils_cuda.cuf: 153)
PGF90/x86-64 Linux 11.1-0: compilation aborted
make: *** [utils_cuda.mod] Erreur 2

Any hint? I am using version 11.1 of the compiler with the following options:

pgf90 -Mlarge_arrays -Bdynamic -mcmodel=medium -Mcuda=cc13

If necessary I can post the current version of the .cuf files, but they are not so short…

Benoit Semelin.

Well, after commenting progressively all the kernels in of .cuf file, the message changed to:

/opt/pgi/linux86-64/11.1/bin/pgf90 -Mlarge_arrays -Bdynamic -mcmodel=medium -Mcuda=cc13 -c tr_ly_utils_cuda.cuf
ptxas /tmp/pgcudafordCvgjqBYTaGz.ptx, line 49; error : Constant overflow
ptxas %JY: Ptx assembly aborted due to errors
PGF90-F-0000-Internal compiler error. pgnvd job exited with nonzero status code 0 (tr_ly_utils_cuda.cuf: 113)
PGF90/x86-64 Linux 11.1-0: compilation aborted

And line 49 was:

REAL(KIND=4),device :: diff_num(ARRAY_SIZE_GPU,ARRAY_SIZE_GPU,ARRAY_SIZE_GPU)

with ARRAY_SIZE_GPU=512

Changing it to 256 solves the problem. I guess you cannot address such a large array with 32 bits memory addressing…