ComputationalRadiationPhysics/picongpu: C++14, New Solvers, I/O via openPMD API, HIP Support


ComputationalRadiationPhysics/picongpu: C++14, New Solvers, I/O via openPMD API, HIP Support

Bastrakov, S.; Bastrakova, K.; Marre, B. E.; Debus, A.; Garten, M.; Gruber, B. M.; Hübl, A.; Trojok, J.; Kelling, J.; Lebedev, A.; Meyer, F.; Ordyna, P.; Pöschel, F.; Sprenger, L.; Steiniger, K.; Wang, M.; Starke, S.; Thévenet, M.; Pausch, R.; Widera, R.

This release switches to C++14 as minimum required version. Transition to C++17 is planned for upcoming releases.

We extended PIConGPU with a few new solvers. Binary collisions are now available. We added arbitrary-order FDTD Maxwell's solver. All field solvers are now compatible with perfectly matched layer absorber, which became default. Yee solver now supports incident field generation using total field/scattered field technique. We added Higuera-Cary particle pusher and improved compatibility of pushers with probe species. Implementation of particle boundaries was extended to support custom positions, reflecting and thermal boundary kinds were added.

With this release, PIConGPU fully switches to openPMD API library for performing I/O. The native HDF5 and ADIOS output plugins were replaced with a new openPMD plugin. All other plugins were updated to use openPMD API. Plugins generally support HDF5 and ADIOS2 backends of openPMD API, a user can choose file format based on their installation of openPMD API. We also added new plugins for SAXS and particle merging.

We added support for HIP as a computational backend. In particular, it allows running on AMD GPUs. Several performance optimizations were added. Some functors and plugins now have performance-influencing parameters exposed to a user.

The code was largely modernized and refactored, documentation was extended.

Thanks to Sergei Bastrakov, Kseniia Bastrakova, Brian Edward Marre, Alexander Debus, Marco Garten, Bernhard Manfred Gruber, Axel Huebl, Jakob Trojok, Jeffrey Kelling, Anton Lebedev, Felix Meyer, Paweł Ordyna, Franz Poeschel, Lennert Sprenger, Klaus Steiniger, Manhui Wang, Sebastian Starke, Maxence Thévenet, Richard Pausch, René Widera for contributions to this release!

Keywords: C++; HPC; CUDA; HIP; Particle-in-Cell; PIConGPU; Laser; Plasma

  • Software in external data repository
    Publication year 2021
    Programming language: C++, Python, Shell, CMake, Dockerfile, Awk
    System requirements: Computer
    License: GPLv3+, LGPLv3+, CC-BY 4.0 (Link to license text)
    Hosted on https://github.com/ComputationalRadiationPhysics/picongpu: Link to location
    DOI: 10.5281/zenodo.5795557

Permalink: https://www.hzdr.de/publications/Publ-33776