Hi all,

I’ve developed a noise filter using Optix 7.0. Code works fine in a small test application.
Now I’ve tried to port this code into my main application where other cuda stuff is implemented.
When calling optixDenoiserInvoke I get an error OPTIX_ERROR_INTERNAL_ERROR.
Actually I do not know what to change to get it working here in my bigger app.

Checked memory consumption, but there are more than 4GB available.


After coping around with cucontext optixDenoiserInvoke returns OPTIX_SUCCESS, but after the call all remaining cuda calls return CUDA_ERROR_ILLEGAL_ADDRESS.
Any help still greatly appreciated… No help at all, so I’ve got it on my own.

I’ve used ‘compute-sanitizer --tool memcheck myoptix.exe > test.txt’. This resulted in an 8GB sized text file and the fourth line of it showed
========= Program hit invalid device context (error 201) on CUDA API call to cuCtxGetDevice.
Stack showed that the error occured while in optixDenoiserCreate.
The call itself returned OPTIX_SUCCESS!!!

Later on in my app I get CUDA_ERROR_ILLEGAL_ADDRESS, which is a follow up on other errors during the optixDenoiserInvoke, which too returns OPTIX_SUCCESS.
I get:
========= Program hit no kernel image is available for execution on the device (error 209) on CUDA API call to cudaLaunchKernel.

========= Invalid global write of size 4 bytes
========= at 0x1bf0 in void optix_exp::generateWinogradTilesKernel<__half,float>(optix_exp::GenerateWinogradTilesParams<__half,float>)
========= by thread (2,1,0) in block (0,0,0)

optixDenoiserInvoke returns with OPTIX_SUCCESS despite the errors occured during the call.
After denoise I call cudaStreamSynchroize:
========= Program hit unspecified launch failure (error 719) on CUDA API call to cudaStreamSynchronize.
========= Saved host backtrace up to driver entry point at error
The cudaStreamSynchronize finally returns CUDA_ERROR_ILLEGAL_ADDRESS.

Finally the problem was embarrassing simple… After setting the correct cucontext everything works fine.