Optimizing Eilmer Chemistry Code for GPUs

Eilmer, a RANS/LES CFD solver used to model unsteady reactive flows at hypersonic flow conditions, requires expensive chemistry computations that can be efficiently computed using GPUs. Optimizing the performance of these chemistry routines can allow modelers to use more detailed chemical kinetic mechanisms that can more reliably predict behavior observed in practice while requiring more reasonable computational costs. Eilmer provides a basic GPU chemistry kernel implemented using Cuda, however significant optimizations are necessary to efficiently perform GPU runs for real world problems. This presentation discusses efforts to improve the Eilmer GPU chemistry code to expand from inefficient single GPU node runs to larger and more efficient multi-GPU node runs. These efforts include porting more chemistry code to Cuda to take advantage of the GPU more fully and efficiently perform the same computations as the CPU kernel, implementing optimizations to perform GPU memory operations and computations more efficiently, optimizing shared memory CPU code to reduce the CPU overhead, and adding the capability to use GPUs for MPI runs. Multiple test cases are used to demonstrate the effectiveness of the improved GPU code on HPCMP systems compared to the CPU code and original GPU code, along with profiling data to understand the performance in more detail. Lessons learned about effectively porting and optimizing GPU codes are also shared.

PRESENTER

Lasinski, Michael (Presenting for Eller, Paul)
Eller, Paul
paul.eller@gdit.com
540-597-5261

GDIT PET

CATEGORY

GPU usage for HPC applications

SYSTEMS USED

Narwhal

SECRET

No