Code management and optimization for high-performance computing

In recent years, high-performance computing (HPC) systems have seen the introduction of accelerators based on heterogeneous architectures utilizing many-core and graphics processing unit (GPU) processors. HPC installations and scientific computing user facilities around the world have been increasingly adopting these new architectures. Scientific simulation codes can potentially achieve dramatic speed-ups on the modern HPC systems based on many-core and GPU architectures. Such speed-ups have the potential to shift the use of computational fluid dynamics (CFD) to much more complex problems.

The present topic explores the development of a new combustion DNS code, named KAUST Adaptive Reacting Flows Solver (KARFS), using the performance-portable programming model provided by the Kokkos C++ library towards accelerated performance in modern supercomputing hardware. The Kokkos C++ programming model provides the foundation for abstracting the data location, layout, and parallel execution. The message passing interface (MPI) is used as our distributed memory parallel model for parallelism across networked nodes in an HPC system, while the Kokkos programming model provides on-node parallelism through threads and vectorization. Therefore, the MPI+X programming model for KARFS relies on Kokkos for “X” for performance portability to multi-core, many-core and GPUs and provides the ability to innovate software development while maintaining backward compatibility with established parallel models. Using the MPI+X programming model, the capability and potential of KARFS to perform DNS of reacting flows with large, detailed reaction mechanisms have been already demonstrated.