I have a callable program that I call from my miss program. On my Tesla K40, it works as expected. However, on my Quadro K4000, I get an RT_EXCEPTION_PROGRAM_ID_INVALID error. I did some digging and it seems that while my buffer of program IDs is populated with non-zero values on the CPU when the buffer is unmapped, by the time it gets to the miss program, the value in the buffer has become zero. It’s as if the buffer’s memory had been overwritten.
I first encountered this problem when I started working with a model that requires much more per-ray memory in OptiX. It doesn’t happen with my other models. I’m aware that some of this memory must be spilling into global memory, but shouldn’t the buffer of program IDs be protected from this?
I just upgraded from OptiX 3.7 to 3.8 beta, and updated my drivers to the latest versions for both machines, and the problem persists.
Here are the specs for the machine it doesn’t work on:
Quadro K4000, Windows 7, CUDA 6.5, OptiX 3.8 beta, driver 347.88
And the machine on which it works just fine:
2x Tesla K40, Windows 7, CUDA 6.5, OptiX 3.8 beta, driver 341.44