Optix traversable depth exceeded error on RTX30XX GPUs

we are using a scene graph with 4 levels (ias-srt motion transform-ias-gas), where the top level ias contains multiple srt motion transforms and lower ias may have multiple gas. This works fine on an RTX2080TI, but on other GPUs (RTX3080TI, RTX3090 and RTX A5000 with up to date studio drivers) we get the error “Validation mode caught builtin exception OPTIX_EXCEPTION_CODE_TRAVERSAL_DEPTH_EXCEEDED” during ray launch. Without validation mode we get a memory access violation in a later cuda call.

I created a simple program by extending the optixTriangle example code from the optix 7.7 SDK to reproduce this error and attached it here. In this example there are simply multiple srt transforms with identity transform, each referencing a ias. Each ias references the same gas with a single triangle. When the ias between srt transform and gas is removed, the example works again.
optixMotionBlurTest.zip (10.1 KB)

Is there anything wrong with our implementation or is this a bug?

Thanks for the reproducer project.

Seems to be a bug. I can reproduce the described behaviors: works on Turing, fails on Ada, fails with IAS->SRT->IAS->GAS, works with IAS->SRT->GAS.

I filed a bug report against the OptiX driver.

(In case your code looks similar, in the reproducer:
OptixModuleCompileOptions usesMotionBlur is an int, not a bool.
OptixModuleCompileOptions numAttributeValues should be 2 when only using built-in triangles.
OptixPipelineLinkOptions maxTraceDepth should be 1 for this example because there is only an optixTrace inside the ray generation program. Saves stack space.)

Thank you for your quick response.

numAttributeValues is set to 3 in the triangle example. I did not change that value.
I set the maxTraceDepth to 4 because we use it in our program and just forgot to set it back to 1.

Can you make an estimate how long it will take until this bug is fixed?

It’s fixed internally but will probably take until beginning of June to appear in a released driver.

1 Like