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 e ffects of charged particles in the strong guiding magnetic fields of tokamaks. Today, ORBIT remains a very active tool in magnetic-con nement 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)
__________________________________________________