I’m currently working on an undergraduate research project that involves using a Geforce 8800+CUDA to speed up some adaptive beamformers in our lab, and I ran into some problems while compiling one of the GPU kernels. I received the following error:
$ /usr/local/cuda/bin/nvcc cgesvd.cu -I/usr/local/cuda/include -L/usr/lib64 --cubin --host-compilation=C Compiler error in file <temp file 1> during Reading WHIRL file phase: ### Can't read PU headers section in intermediate compiler file <temp file 2> nvopencc INTERNAL ERROR: /usr/local/cuda/open64/lib//be returned non-zero status 1.
The kernel being compiled contains an initial version of the CGESVD routine and its dependencies that I’ve been porting from the CLAPACK reference implementation at the Netlib repository to the G80. This is a largish collection of code that I had problems originally trying to compile using nvcc because the compilation phase would eat up all 4GB of RAM on our first system, thus causing major swapping that brought the system to its knees. Moving to a system with 8GB alleviated this problem, which is when I started receiving the error above.
As far as I can tell, WHIRL files are open64’s intermediate file format that it uses before the latter stages of compilation, but I haven’t been able to find any information on these PU headers nor do I have any clue as to what could be triggering this error. The only thing I can think of is the kernel being compiled is too large, but I was hoping someone here might have some ideas or tips on what to try before pursuing other workarounds.