Same code resulting differently

Hello!

I am implementing path tracing algorithm (OptiX 7.2, and CUDA 11.6). There is supposed to be a user defined cube under HDRI Sky Light. It is working correctly on my laptop, but when I am running the same code on my Desktop, the cube is not visible anymore. Could the problem be with CUDA compiler? My laptop has MX 330 GPU, while my desktop is accompanied by RTX.

No Problem On Laptop Configuration:
Cuda compilation tools, release 11.6, V11.6.124 Build cuda_11.6.r11.6/compiler.31057947_0 NVIDIA-SMI 511.65 Driver Version: 511.65 CUDA Version: 11.6

Problem with Desktop Configuration:
Cuda compilation tools, release 11.6, V11.6.124 Build cuda_11.6.r11.6/compiler.31057947_0 NVIDIA-SMI 512.15 Driver Version: 512.15 CUDA Version: 11.6

Fig 1: Result in the Laptop, see the cube in the middle of the screen. Please ignore the two figures, this is not a side-by-side comparison, I was trying to send the rendered scene to the VR, currently in progress without disparity.

Fig 2: Result in the Desktop, you can see the cube is no longer visible at the scene. Although, the code is the same.

Hi @_Bi2022,

Based on your description it seems unlikely that the CUDA compiler is the source of the issue, since you have the same compiler on both machines. The two differences are the driver version, and the GPU model. Probably the first thing to try is to use the same driver version on both machines.

I will be honest that I don’t understand the problem description, and I don’t understand what the image is demonstrating. Can you elaborate a little? Am I looking at two side-by-side images, or is this the image where the cube is visible? What is the significance of the two visible cubes?

Just to brainstorm a little… when geometry goes missing, there may be a few likely suspects. One could be that the hitgroup is missing or corrupt from the SBT, or that the SBT offset at run time is incorrect for some reason. Another might be than an instance transform is getting set incorrectly in one case and not the other. Is this cube made out of built-in triangles, or are you using a custom intersection program? If you are building your own AABBs for the cube, then make sure to check the bounds on both machines. After that, make sure to verify that your IS program is being called in both cases. Regardless of what kind of primitive you use, you might be able to check whether it’s in the scene by using a clock() timer in your raygen program to check how long your optixTrace() call takes, and putting the result into the framebuffer. (You might want to scale your result, or take the log value or something to get the color into a visible range with decent contrast.) This gives you a sort of x-ray of your scene where you can see that geometry exists, even if it’s not visible for some reason.


David.

1 Like

The problem definitely lies in the different driver version. This code base is developed with OptiX 7.2 and runs on CUDA 11.6. While the driver version 511.65 everything works fine, but updating driver to 512.59 the 3D model/ cube is no longer visible. So, it seems like this could happen.

P.S. Driver with 511.65 (studio driver) with Geforce RTX 3090, the code does not show result, but Driver 511.65 (studio driver) with GeForce GTX 1070/ MX 330 shows the output result.

This is not actionable with the given description alone and no way to reproduce this in-house