IPPL: A Massively Parallel, Performance Portable C++ Library for Particle-Mesh Methods
Andreas Adelmann
Abstract: We present the Independent Parallel Particle Layer (IPPL), a performance-portable C++ library for Particle-in-Cell methods. IPPL leverages Kokkos (a performance portability abstraction layer), HeFFTe (a library for large-scale FFTs), and MPI (Message Passing Interface) to provide a portable, massively parallel toolkit for particle-mesh methods. IPPL supports simulations in one to six dimensions, mixed precision, and asynchronous execution across different execution spaces (e.g., CPUs and GPUs). Beyond its applications in particle simulations, IPPL is also used for research on high-performance computing (HPC) methods and algorithms, such as parallel-in-time integration. Furthermore, IPPL is an integral part of OPALX, an open-source accelerator simulation toolkit for exascale. In addition to its research applications, IPPL has been used in numerous student projects at ETH, providing hands-on experience with parallel computing and scientific simulations. We demonstrate the performance of the latest version of IPPL with a diverse set of examples, ranging from plasma physics to astrophysics, on cutting-edge HPC systems, including Alps, Perlmutter, and Lumi.