Hello! I want to compare the performance of software ray tracing and hardware accelerated ray tracing by implementing the same application with two different methods. I know that OptiX 5 uses CUDA cores to implement the entire ray tracing algorithm and OptiX 7 uses RT cores for BVH traversal and ray triangle intersection. I’ve implemented the hardware accelerated ray tracing version of the application with OptiX 7, but have trouble implementing the software ray tracing version with OptiX 5. When we run the OptiX 5 sample program “optixHello”, we will get an error when we reach
Cuda-gdb will display the following error message:
[New Thread 0x7fffa47b8700 (LWP 3695601)]
[New Thread 0x7fffa3fb7700 (LWP 3695602)]
warning: Cuda API error detected: cuCtxGetDevice returned (0xc9)
warning: Cuda API error detected: cuModuleLoadDataEx returned (0xda)
pure virtual method called
terminate called without an active exception
Thread 1 "optixHello" received signal SIGABRT, Aborted.
0x00007ffff45c400b in raise () from /lib/x86_64-linux-gnu/libc.so.6
My environment is Ubuntu 16.04, nvcc 9.0, gcc 4.8, OptiX 5.1, which meets the requirements of OptiX 5.1 release note. My GPU is RTX 4090, the driver version is 535.129.03, As mentioned in the release note, All NVIDIA GPUs of Compute Capability 3.0 (Kepler) or higher are supported and Linux: driver version 390.42 or later is required, this part should also meet the requirements.
I don’t know what is wrong, how can I use OptiX 5 on RTX 4090?
Any suggestions are appreciated. Thanks in advance.
Before you spend too much time, I should add that OptiX 5 might not work, so I’ve already started asking around. There might be reasons it no longer compiles correctly for Ada GPUs, because OptiX 5 support for newer architectures has ended. We are no longer regression testing OptiX 5, which is why I’m not immediately sure.
I also want to add a note that you should be aware that testing OptiX 5 against OptiX 7 is not going to be an apples-to-apples comparison or even close. Far too many things have changed between these two versions to be able to consider this a software vs hardware comparison. Memory handling, SBT management, BVH format and traversal algorithms, and many other major things have changed, and so even if OptiX 5 were to work, the results could be misleading.
Okay I heard back with an update that OptiX 5 shipped with SASS binaries long before Ada existed, and hasn’t been recompiled for Ada, therefore I believe it is not expected to work on Ada. I am not sure that would cause the initialization failure you saw, but maybe it’s a moot point. The way to get OptiX 5 to work for sure is to use a Maxwell, Pascal, or Volta GPU. In that case your comparison would also need to account for differences in clock speed, number of SMs, and changes in architecture and memory hierarchy, which is difficult but not impossible, at least to get a rough idea. Anyway, sorry if that outcome is not what you were hoping for, but I hope at least that saves you some time avoiding a dead end. We’re happy to discuss other potential ways to achieve your goals if you’d like.