[SOLVED] Perfomance of Optix 4.1

Hello Developers,

I have developed a Radiation Transfer solver using Opitx 3.9 by modifying the “Tutorial” example.Everything was working fine but to improve the performance I have updated my SDK to Optix 4.1. There is a huge change in the structure of the program.

The problem is, previously I was mapping several buffers inside “Trace” function before launching the rays and then un-mapping into a variable to solve the equations inside trace ,it was working fine. But, in optix 4.1, I am doing the same things inside “glutDisplay” function. The problem is when I initialize a buffer inside glutDisplay function it becomes very very slow. It is exactly the same thing which I did in Optix 3.9.

Is this a issue of a driver or it is due to any change in Opitx 4.1 SDK ? I have tried several Acceleration structures as well, the problem remains the same.
Can you suggest any alternate method to load and unload buffers?

System details:

OS: Centos 7.
GPU: Titan X.
SDK: 4.1.1

update :

The problem has been solved

Sorry, from your descriptions there is no way to determine what you’re doing exactly.

That description sounds as if this shouldn’t have worked at all. It’s not allowed to call launch() while buffers are mapped.
You mean the TraceRay helper function in the device code?

What do you mean with “initialize a buffer”? If you create new variables between launches, you incur a kernel recompile.

In another thread you said you had a TitanX and a Tesla K40. If that is the case, OptiX 3.9.1 would have used only a single board, where OptiX 4.1.1 would use both because it supports heterogeneous multi-GPU setups, then kernels would be compiled for both architecture and there would be no OpenGL interop.
You would need to select the device you want to use inside your OptiX application with rtContextSetDevices() to avoid that.

If you upgraded from OptiX 3.9.1 to OptiX 4.1.1 you can skip OptiX 4 completely and go straight to OptiX 5.0.0 which supports the same range of GPUs.

Hello, sorry for the confusion, Actually I wanted to transfer data between CPU and device with buffers. I have fixed the problem. Thank you so much for you detailed answer.

I have switched back to TitanX, It was just for research purpose.