OPTIX_ERROR_CUDA_ERROR on optixLaunch

Hi

I am trying to use Optix 7 sdk in my code. All initialzation, module , pipeline, program creation goes fine without any error. Currently I have kept rayGen and hit, miss function empty just to check. Following is the optixLauch call

OptixResult e = optixLaunch(
		m_pipeline, (CUstream)m_device->getStream(),
		(CUdeviceptr)m_lauchParamsBuffer.m_ptr,
		sizeof(LaunchParams),
		&m_sbt,
		nRays,
		1,
		1
	);

This call generates OPTIX_ERROR_CUDA_ERROR. I am not sure what is reason.
I have tried reducing size of execution to 1, 1 ,1 the error persists.
I have checked sbt, pipeline objects they are created without any errors being thrown. To confirm after each of this object creation I sync device so in case they are asyn and failing I can catch but, no luck there.

Can some one suggest me what that error exactly means and where I can look?
P.S : I am trying it on windows, 2080 Ti , Game ready 466.27 driver version.

Thanks

Hi @parkul24,

There are a few things you can check:

  • Try building and running some CUDA SDK samples, do they work?
  • Try building and running some OptiX SDK samples, do those work?
  • Try enabling validation mode in OptiX, does it report any errors?
    (See OptixDeviceContextValidationMode::OPTIX_DEVICE_CONTEXT_VALIDATION_MODE_ALL)

Also, occasionally I have issues where my driver gets into a bad state after a crash, and all subsequent OptiX initialization fails until I reset the machine, so please confirm that the problem persists after a system reboot.

–
David.

1 Like

I am trying it on windows, 2080 Ti , Game ready 466.27 driver version
CUDA samples build and run fine.
Optix sample also run fine.

I enabled optix validations with logleve 2 and I get following error in callback after calling optixLaunch;

Error recording event to prevent concurrent launches on the same OptixPipeline (CUDA error string: unspecified launch failure, CUDA error code: 719)
Error recording resource event on user stream (CUDA error string: unspecified launch failure, CUDA error code: 719)

But, I am not sure what that exactly means. It would be great if you can tell where I am going wrong.
Thanks.

OptiX validation mode is a separate flag, not the same as an error callback. Validation mode may add more information about what is going on, and it can be specified in addition to your error callback, like so:

OptixDeviceContextOptions options = {};
options.logCallbackFunction       = &context_log_cb;
options.logCallbackLevel          = 4;
options.validationMode            = OPTIX_DEVICE_CONTEXT_VALIDATION_MODE_ALL;

The error isn’t specific enough for us to pinpoint the reason, but it does refer to an “event” – are you using cuda stream events in your code? The 719 error, unfortunately, is just as vague as it sounds. If the validation mode doesn’t shed any light, then can you prune down the code to a minimal reproducer and send it? You could also start from one of the working OptiX SDK samples and try changing it to match the pre-launch call sequence.

–
David.

2 Likes

BTW, when you say you kept raygen emtpy, that means there is a raygen function specified in your SBT, but the function returns immediately, right?

Another thing you can try is to specify a raygen program, but nothing else; leave the hit & miss program entries null. If that works, it narrows things down to an SBT setup issue. If it doesn’t help, it likely means the opposite, that SBT setup isn’t the problem, and you can look elsewhere.

–
David.

2 Likes

yes you are right the rayGen program is mentioned in SBT but it returns immediately. Thanks for the top on SBT.
I set validation exactly like you said I modified the level to 4 still not much. I still got same error string. I will try what you suggested.

thanks

I think I found the issue. It was happening due to CUStream not created properly. I had CUStream created per device and wrong stream was used when calling optixLaunch(). Selecting proper stream corresponding to device resolved the issue. Thanks for quick replies.

1 Like