PPPL-4996
Multi-threaded GPU Acceleration of ORBIT with Minimal Code Modifications
Authors: Ante Qu, Stephane Ethier, Eliot Feibush and Roscoe White
Abstract: The guiding center code ORBIT [1] was originally developed 30 years ago to study the
drift-orbit effects of charged particles in the strong guiding magnetic fields of tokamaks. Today,
ORBIT remains a very active tool in magnetic-connement fusion research and continues to
adapt to the latest toroidal devices, such as the NSTX-Upgrade, for which it plays a very
important role in the study of energetic particle effects. Although the capabilities of ORBIT
have improved throughout the years, the code still remains a serial application, which has now
become an impediment to the lengthy simulations required for the NSTX-U project. In this
work, multi-threaded parallelism is introduced in the core of the code with the goal of achieving
the largest performance improvement while minimizing changes made to the source code. To
that end, we introduce compiler directives in the most compute-intensive parts of the code,
which constitutes the stable core that seldom changes. Standard OpenMP [2] directives are
used for shared-memory CPU multi-threading while newly developed OpenACC [3] directives
and CUDA Fortran [4] code are used for Graphics Processing Unit (GPU) multi-threading. Our
data shows that the fully-optimized CUDA Fortran version is 53: 6 0: 1 times faster than the
original code.
__________________________________________________
Submitted to: PPPL Reports
__________________________________________________
Download PPPL-4996 (pdf 5.37 MB 31 pp)
__________________________________________________