Raytracing on the HPC: Performance Insights Gained from a Multiplatform Raytracing API
Hunter, R. Harrison (US Army Engineer Research and Development Center)
S. Ross Glandon
Jing-Ru C. Cheng
Incorporation of GPUs/Accelerators into Physics-based Codes
Realtime ray tracing is an important tool in computational research. Among other things, it is used to model sensors for autonomous vehicle simulation, efficiently simulate radiative energy propagation, and create effective data visualizations. However, raytracing libraries currently offered for GPU platforms have a high level of complexity to facilitate the detailed configuration needed by gaming engines and high-fidelity renderers. A researcher wishing to take advantage of the performance gains offered by the GPU for simple ray casting routines would have to invest time into learning at least one of these ray tracing libraries. Additionally, they would have to adapt their project code to each specific GPU platform on which they wish to run. To overcome this barrier, a C++ API has been developed that implements simple ray casting endpoints in GPU-specific code for several contemporary device platforms. This API allows the user to select which backend implementation to use at runtime and currently supports the NVIDIA Optix ray tracing library, Vulkan, AMD Radeon, and even Intel Embree for CPU support. Benchmarking tests have been executed using this API, and the resulting performance data provides insight to help users determine the optimal backend library to select for their ray tracing needs. HPC research will be well-served by the ability to perform general purpose raytracing on the increasing number of graphics and machine learning nodes offered by the HPCMP.