sUtil Documentation

Hello,
in the example optix_PathTracer the sUtil is very often used, but I can’t find any documentation for this class in the Optix 7.2 API Documentation.
Could you point me to some documentation about this helper class? I think it would be more easy to understand everything if these utilities are also documented or commented in the example code.
When I review the code, I see there are also some dependencies to the support functions located in SDK/support…

The sutil helper library is meant as a simple framework to make the OptiX SDK example code smaller.
The individual SDK examples are normally showing a specific feature of the OptiX API and the surrounding functionality is just there for convenience.
The vector math, matrix and quaternion headers in there are a good starting point. Everything else is specific to the OptiX SDK examples and not really required if you want to implement your own OptiX applications.
If you want to see what is happening inside these helpers and the actual OptiX SDK examples, I would simply build them as debug target and single step through the host side helper functions inside the debugger.

Compare that with other OptiX application frameworks. For example none of my OptiX 7 examples uses anything from the OptiX SDK except for the API headers.
You might also want to look at the other resources inside the sticky posts of this OptiX sub-forum.

Thanks for your answer 😀
What is the current preferred debugger under Ubuntu 18.04, CUDA 10.2 and Optix 7.2?
Is there a way to use an IDE VSCode or Eclipse with NSight and gdb together?
Are there some tutorials or how to’s to have an example app for setup everything?
The compilation of the examples is running already and I created also a new project, but debugging is quite opaque to me.

My preferred solution would be VSCode, but there are no such plugins available right?

1 Like

For debugging host code, use whatever development environment you are comfortable with.

cuda-gdb would be the Linux debugger for the CUDA kernel side, but be aware that debugging OptiX device code might not function as expected and is an ongoing development in the OptiX team.

What will work is Nsight Systems for application profiling and Nsight Compute for CUDA/OptiX kernel profiling.
Depending on the GPU you’re using, you might need specific versions of these, e.g. Nsight Compute 2020 dropped support for Pascal GPUs.
Check the resp. release notes before setting up a development system.

You can always use CUDA’s printf() inside OptiX kernels. It’s useful to limit output to a single launch index. Careful when using multi-GPUs and workload distribution, window coordinates are not launch coordinates then. In single GPU mind that the launch index [0, 0] is normally the left bottom corner of the image.

Please see these threads for more information on that. YMMV.
The first link is one of the three sticky posts in this sub-forum and already a little outdated.
OptiX debugging and profiling tools
https://forums.developer.nvidia.com/t/how-can-i-debug-the-cu-shaders-of-optix-in-linux/123514/3
https://forums.developer.nvidia.com/t/compile-error-in-debug/158255/2
https://forums.developer.nvidia.com/t/optix-compile-debug-level-full-and-optix-compile-debug-level-full-incompatible-with-new-drivers/156467