The BSC GPU Hackathon took place in the online format on the 25th of October and the first week of November. This multi-day event, co-organized by NVIDIA and Barcelona Supercomputer Center (BSC), and promoted by Raise Center of Excellence, CHEESE and CompBioMed was a part of the BSCTech Hackathons 2021 series. Its main goal was to help teams accelerate their own code on GPUs using a programming model or machine learning framework of their choice under the guidance of expert mentors from national labs, universities, and industry leaders. Through the partnership with NVIDIA and OpenACC the event provided a thrilling opportunity for the scientists to test their applications and enhance their experience.
The BSC Fusion group represented by Xavier Sáez and Irina Gasilova together with Juri Romazanov and Sebastian Rode from the Forschungszentrum Jülich (FZ Jülich) formed a BSCFUS team that participated in the event with the ERO2.0 code under the guidance of the expert mentors Kaveh Haghighi Mood from FZ Jülich and Remi Lacroix from The Institute for Development and Resources in Intensive Scientific Computing (IDRIS). The work on the ERO2.0 code is carried out under the Advanced Computing Hub CIEMAT-BSC of the EUROfusion E-TASC programme (more information about the ACH CIEMAT-BSC here).
The ERO2.0 is a massively parallel Monte-Carlo simulation code for particle transport in fusion plasma devices (e.g., tokamaks) written in C++. Parallelization is done using MPI and OpenMP. The core algorithm focuses on the calculation of test particle trajectories (“particle loop”) using Fokker-Planck equation, where the most time-consuming part is the “polygon mesh distance query” function.
The team’s objective was to achieve the compilation and execution of ERO2 on GPUs using OpenACC and to evaluate if it was possible to fully port the application to GPU. During the process, the team faced multiple problems, among which were some NVIDIA compiler bugs and the absence of support for certain C++ features, and understood the need for major refactoring of the code for the full portability of the code on the GPU.
Though the task was really challenging as the starting point was from zero, thanks to the deep knowledge, wide experience and full involvement of the mentors the team reached significant results. The major steps were achieved to enable GPU support and, as a result, an initial running version of the code with OpenACC was created.
The team would like to express its particular gratitude to the mentors Kaveh Haghighi Mood and Remi Lacroix for their devotion to the task and to the event leader Mozhgan Kabiri Chimeh (NVIDIA).