GenASiS Basics: Object-oriented utilitarian functionality for large-scale physics simulations
Reuben D. Budiardja · 2023
GenASiS Basics provides modern Fortran classes furnishing extensible object-oriented utilitarian functionality for large-scale physics simulations on distributed memory supercomputers. This functionality includes physical units and constants; display to the screen or standard output device; message passing; I/O to disk; and runtime parameter management and usage statistics. The latest version of this release includes major additions to its functionality: infrastructure facilitating the offloading of computational kernels to devices such as GPUs and the facilitation of direct communication between GPUs. In this talk, I will start with the overarching motivation of this work, which is to harness the computational power of GPUs to perform astrophysical simulations. Then I will describe the high-level overview of GenASiS and the functionality afforded by GenASiS Basics. I will also describe how we use OpenMP in GenASiS Basics to create an infrastructure to seamlessly manage data movement and offload computational kernels to GPUs. I will also describe an example fluid dynamic application included in GenASiS Basics showing significant speedups when using GPUs via the above-mentioned infrastructure. Finally and most importantly, I will show how one can leverage the functionality provided by GenASiS Basics to program their physics application to run on clusters and supercomputers.