GPU porting of ASCOT5 code for Monte Carlo simulations in fusion plasmas
Abstract We present the GPU porting of a Monte Carlo particle-following code, called ASCOT5. The code solves the distribution function of minority species in fusion plasmas. Originally developed with an MPI-OpenMP hybrid parallelism taking full advantage of SIMD operations, the code has been ported to GPU architecture using the OpenACC programming model. Subsequently, modifications were made to implement three distinct algorithmic strategies: "history-based," "event-based," and "event-based-packing." In the first implementation, each GPU processing unit deals with the entire history of one or more particles, while the event-based algorithm operates on the principle of executing a single low-level event type at a time for all particles still alive (with or without packing particles). Performance results on NVIDIA GPUs are presented to showcase the effectiveness and efficiency of the code adaptations for GPU execution. These results provide insights into the comparative performance of the implemented approaches on the specified hardware architecture. portability across other architectures such as INTEL and AMD GPUs with OpenMP Offload is also presented.
Authors
- Gilles Fourestey (ORCID: https://orcid.org/0000-0001-7217-2977)
- K. Särkimäki (ORCID: https://orcid.org/0000-0001-9156-2559)
- Filippo Spiga (ORCID: https://orcid.org/0000-0003-1448-5304)
- Mathieu Peybernes (ORCID: https://orcid.org/0009-0000-4011-9047)
- S. Äkäslompolo (ORCID: https://orcid.org/0000-0002-9554-5147)
Institutions
- Czech Academy of Sciences, Institute of Plasma Physics (CZ)
- Nvidia (United States) (US)
- Max Planck Institute for Plasma Physics (DE)
- École Polytechnique Fédérale de Lausanne (CH)
- Aalto University (FI)
Publication Details
- Journal
- Plasma Physics and Controlled Fusion
- Published
- 2025-09-25
- DOI
- https://doi.org/10.1088/1361-6587/ae0bf3
- Primary Topic
- Magnetic confinement fusion research
- Type
- article
- Field-Weighted Citation Impact
- 0.00