Hello,
the compiler is frustrating me with
PGF90-F-0155-Compiler failed to translate accelerator region (see -Minfo messages): Unsupported procedure (em_fw.cuf: 1)
PGF90/x86-64 Linux 15.7-0: compilation aborted
pgf90-Fatal-f902 completed with exit code 1
I don’t know what the problem could be. I followed the directives from the compiler manual and the kernel is compiled out of the box.
I invoke the compiler with
pgf90 -c -v -Mcuda -Minfo=all em_fw.cuf
and I obtain the output
Export PGI=/share/apps/pgi
/share/apps/pgi/linux86-64/15.7/bin/pgf901 em_fw.cuf -opt 1 -nohpf -nostatic -x 19 0x400000 -quad -x 59 4 -x 15 2 -x 49 0x400004 -x 51 0x20 -x 57 0x4c -x 58 0x10000 -x 124 0x1000 -tp haswell -x 57 0xfb0000 -x 58 0x78031040 -x 47 0x08 -x 48 4608 -x 49 0x100 -x 120 0x200 -stdinc /share/apps/pgi/linux86-64/15.7/include-gcc44:/share/apps/pgi/linux86-64/15.7/include:/usr/local/include:/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include:/usr/include -cmdline '+pgf90 em_fw.cuf -c -v -Mcuda -Minfo=all' -def unix -def __unix -def __unix__ -def linux -def __linux -def __linux__ -def __NO_MATH_INLINES -def __x86_64 -def __x86_64__ -def __LONG_MAX__=9223372036854775807L -def '__SIZE_TYPE__=unsigned long int' -def '__PTRDIFF_TYPE__=long int' -def __THROW= -def __extension__= -def __amd_64__amd64__ -def __k8 -def __k8__ -def __SSE__ -def __MMX__ -def __SSE2__ -def __SSE3__ -def __SSSE3__ -idir /share/apps/pgi/linux86-64/2015/cuda/6.5/include -def _CUDA -ccff -freeform -x 137 1 -x 180 0x4000000 -cudaver 6.5 -vect 48 -y 54 1 -def __CUDA_API_VERSION=6050 -x 70 0x40000000 -x 189 0x8000 -y 163 0xc0000000 -x 189 0x10 -x 137 1 -modexport /tmp/pgf90VGFvn6SZp5q9.cmod -modindex /tmp/pgf90NGFv1l0KW0QO.cmdx -output /tmp/pgf90-GFv9Dx35pqg.ilm
0 inform, 0 warnings, 0 severes, 0 fatal for cuda_em_fw
0 inform, 0 warnings, 0 severes, 0 fatal for computeref
0 inform, 0 warnings, 0 severes, 0 fatal for ref
PGF90/x86-64 Linux 15.7-0: compilation successful
/share/apps/pgi/linux86-64/15.7/bin/pgf902 /tmp/pgf90-GFv9Dx35pqg.ilm -fn em_fw.cuf -opt 1 -x 51 0x20 -x 119 0xa10000 -x 122 0x40 -x 123 0x1000 -x 127 4 -x 127 17 -x 19 0x400000 -x 28 0x40000 -x 120 0x10000000 -x 70 0x8000 -x 122 1 -x 125 0x20000 -x 117 0x1000 -quad -x 59 4 -tp haswell -x 120 0x1000 -x 124 0x1400 -y 15 2 -x 57 0x3b0000 -x 58 0x48000000 -x 49 0x100 -x 120 0x200 -astype 0 -x 137 1 -x 180 0x4000000 -cudaver 6.5 -x 176 0x100 -cudacap 20 -cudacap 30 -cudacap 35 -cudacap 50 -cudaver 6.5 -x 70 0x40000000 -x 124 1 -x 189 0x8000 -y 163 0xc0000000 -x 189 0x10 -y 189 0x4000000 -x 137 1 -x 180 0x4000000 -x 176 0x100 -cudacap 20 -cudacap 30 -cudacap 35 -cudacap 50 -cudaver 6.5 -x 0 0x1000000 -x 2 0x100000 -x 0 0x2000000 -x 161 53239 -x 162 53239 -cmdline '+pgf90 em_fw.cuf -c -v -Mcuda -Minfo=all' -asm /tmp/pgf90FGFvDQ16Kx2u.s
0 inform, 0 warnings, 0 severes, 0 fatal for cuda_em_fw
0 inform, 0 warnings, 0 severes, 0 fatal for computeref
PGF90-F-0155-Compiler failed to translate accelerator region (see -Minfo messages): Unsupported procedure (em_fw.cuf: 1)
PGF90/x86-64 Linux 15.7-0: compilation aborted
pgf90-Fatal-f902 completed with exit code 1
Unlinking /tmp/pgf90-GFv9Dx35pqg.ilm
Unlinking /tmp/pgf903GFvLnZT9_VH.stb
Unlinking /tmp/pgf90VGFvn6SZp5q9.cmod
Unlinking /tmp/pgf90NGFv1l0KW0QO.cmdx
Unlinking /tmp/pgf90FGFvDQ16Kx2u.s
Unlinking /tmp/pgf90xGFvf_c90sEB.ll
the function ref is declared as
attributes(device) real function ref(n,d,c,rho,alf,theta,freq)
implicit none
integer, device, intent(in) :: n
real, device, dimension(2:n), intent(in) :: d
real, device, dimension(n+1), intent(in) :: c ,rho, alf
real, device, intent(in) :: theta, freq
complex, device, dimension(2:n) :: zin
complex, device, dimension(n+1) :: z
complex, device, dimension(n+1) :: th
complex, device, dimension(2:n) :: s, phi
complex, device, dimension(n+1) :: v, k
integer, device :: i
[...]
end function ref
and I really don’t do anything fancy within the function (unless vector assignment is fancy and I never realised it).
Thanks in advance for any help!