compiler crash in 2.2

I’m re-posting this (with some new info) from the XP forum, because I’ve seen the error in linux now as well.

I have some code that compiled fine with the CUDA 2.0 toolkit, but crashes the compiler in versions 2.1 and 2.2 with the following error:

1>(0): Error: Signal caught in phase Global Optimization – Expression Reshaping – processing aborted
1>nvopencc ERROR: C:\CUDA\bin/…/open64/lib//be.exe returned non-zero status 3

I cannot post code, but I believe the error occurs when a kernel calls another kernel inside a loop. In my case, kernel A calls kernel B. Inside kernel B, the logic is:

if(x){
do stuff
}
else{
do other stuff
while(y){
call kernel C
}
}

This is not the only case where I’ve encountered the same problem, but it’s the simplest. The other cases all had kernels calling kernels inside loops, though. Has anyone else seen this error, and is a fix on the way?

Brian

P.S. I attempted to file a bug, but for at least the last three days I’ve been getting database errors from the bug report page. Meta-bug!

AFAIK you are not allowed to call a kernel inside a kernel. I admit that this should not crash the compiler, so.

I’m sorry, I was using the wrong terminology. I’m calling device functions from inside device functions, not kernels inside kernels. The actual situation is kernel A calls device function B, which calls device function C in a loop.

Are you able to send me code privately?

Nope, sorry. Company policy doesn’t allow code out at all.

Doh. Any chance you could try to write a clean repro case? I’m guessing that you’d be able to write a repro much more easily than I could, since you have the original broken code…

I’ll see what I can do.