what's the Assertion in line 2616 of cgtarget.cxx?

When I compile my .cu file, i get an error as:

Assertion failure at line 2616 of …/…/be/cg/NVISA/cgtarget.cxx:

Compiler Error in file /tmp/xxx.cpp3.i during Register Allocation phase:

ran out of registers in predicate

One interesting thing is that when I add more and complicate logic into the kernel function (in fact, 10000+ more lines in .ptx file), the compiler tells me:

“compiler may run out of memory or run very slowly”

However, it does not throw the " ran out of registers in predicate" error anymore, and the compilation finishes correctly.

I am wondering what’s the assertion here, it seems like unreasonable because when i uses a relative simple logic in the kernel function, it gives me “ran out of registers”, but when i add (not replace, just add some new computation, the original still exists) more logic, this assertion failure gone.

An assertion error of this nature indicates that there is a problem inside the compiler. You did not mention what version of CUDA you are using. If this problem reproduces with the CUDA 3.1 toolchain it would be helpful if you could file a bug if you are a registered developer. If you are not a registered developer, would it be possible to post a self-contained program that reproduces the error? I could take a look at it and file a compiler bug if necessary.

CUDA Driver Version: 2.30

CUDA Runtime Version: 2.30

Cuda compilation tools, release 2.3, V0.2.1221.

Platform: Ubuntu 10.4 64bit

Actuall, i can reproduce the same error on my window Vista 32bit box too.

CUDA Driver Version: 3.0

CUDA Runtime Version: 3.0

Cuda compilation tools, release 3.0, V0.2.1221.

Platform: Windows Vista 32bit

For the test program that reproduced the error, i am afraid it is unavailable now, since it is out of my right to release it. :(