what does this error message mean? Assertion `peerBlock->scratch' failed.

Full message:

$ ./a.out

a.out: /home/buildmeister/build/sw/rel/gpu_drv/r180/r180_00/drivers/gpgpu/cuda/src/gpgpucomp/…/…/…/…/common/cop/codegen/nv50/cop_nv50_flow.cpp:7514: void lHandleBlock(BasicBlock*, int*, int*, int, int): Assertion `peerBlock->scratch’ failed.

Aborted

There is no user “buildmeister” on my machine. Seems like a driver error to me.

GPU: GTX280

OS: RHEL 5, x86

CUDA: CUDA 2.1

Compile options: NVCC -arch=compute_13

On another machine, whose OS is Fedora 10, x86_64, the error is as follows:

a.out: /home/buildmeister/build/sw/rel/gpu_drv/r180/r180_00/drivers/gpgpu/cuda/src/gpgpucomp/…/…/…/…/common/cop/codegen/nv50/cop_nv50_flow.cpp:3098: void LiveRangeInfo::AddAccrossRange(LdStruct*, int, int, int, RangeKind): Assertion `aCount < colorMap.accrossCount’ failed.

Aborted

I will try 2.2 beta, and see what happens.

If you want to post source, that would be helpful.

The source is quite long. Let me shrink it before posting it.

Since the program is composed of several source files, I have attached the files as a tar file. Please extract all the files into the same directory, compile with “nvcc testPA.cu -arch=compute_13”, and then run the generated binary.

I use CUDA 2.1 on RHEL5_x86. The driver version is 180.22.

Please let me know if there are workarounds.

Thank you very much!
program.tar (30 KB)

The path mentioned in the above message is the “path” in NVCC or some other CUDA run-time component’s source-tree. Nothing to do with your source-tree or anything connected to your setup or file system.

The source code author has used primitives like FILE and LINE to print errors.

Every1 scratches their head as to what that path means - the very first time.

You didn’t state whether this reproduces with the CUDA_2.2-beta. Does it?

Reproduced this with the 2.2 beta, so I filed a bug on this. Not sure if it will be fixed for 2.2 final, though…

I’d be happy if there is a workaround. I am fully aware of the enormous effort needed to fix a compiler bug. :-)