I have a large Fortran code in which we use OpenACC for GPU support. I compiled my code with the
-g option, but
-G doesn’t seem to work for nvfortran. If I run it in cuda-gdb it will terminate with:
CUDA Exception: Warp Illegal Instruction The exception was triggered at PC 0x55e08f0 Thread 1 "fleur" received signal CUDA_EXCEPTION_4, Warp Illegal Instruction. [Switching focus to CUDA kernel 19, grid 1082100, block (986,0,0), thread (0,0,0), device 0, sm 0, warp 19, lane 0] 0x00000000085a6650 in m_ylm_ylm4_ () (cuda-gdb) frame #0 0x00000000085a6650 in m_ylm_ylm4_ ()
I am not sure how this can help me. I can’t get a line, the frame just points to a whole routine, which doesn’t contain any OpenACC.
How am I supposed to use this information? Is there anyway of accessing the CUDA kernels OpenACC generates? Can I get more detailed information on where the error occurs or which instruction is invalid? How do I properly debug issues within OpenACC? Can I get more detailed line information?