Optimization strategy for a performance portable Vlasov code
性能可搬Vlasovコードのための最適化手法
朝比 祐一 ; Latu, G.*; Bigot, J.*; Grandgirard, V.*
Asahi, Yuichi; Latu, G.*; Bigot, J.*; Grandgirard, V.*
本論文では、性能可搬な運動論的プラズマシミュレーションコードのための最適化手法について論じる。まず、性能可搬ライブラリKokkosと指示行(OpenACC/OpenMP)により、単一実装でCPU、GPUで実行可能な運動論的プラズマシミュレーションコードを開発した。これに最適化を施し、Intelや富士通のCPUおよびNvidia GPUにおいて最適化の効果を評価した。その結果、OpenACC/OpenMPでは1.07倍から1.39倍の性能向上が見られ、Kokkos版では、1.00倍から1.33倍の性能向上が見られた。複数の実装による様々なカーネルの最適化手法の効果を多数のデバイスにおいて調査した本成果は、最適化手法として幅広く利用可能と言える。Kokkosは複数のデータ構造やループ構造を単一コードによって表現することに長けており、CPUとGPU両方において高い性能を発揮するために適したフレームワークであると確認した。
This paper presents optimization strategies dedicated to a kinetic plasma simulation code that makes use of OpenACC/OpenMP directives and Kokkos performance portable framework to run across multiple CPUs and GPUs. We evaluate the impacts of optimizations on multiple hardware platforms: Intel Xeon Skylake, Fujitsu Arm A64FX, and Nvidia Tesla P100 and V100. After the optimizations, the OpenACC/OpenMP version achieved the acceleration of 1.07 to 1.39. The Kokkos version in turn achieved the acceleration of 1.00 to 1.33. Since the impact of optimizations under multiple combinations of kernels, devices and parallel implementations is demonstrated, this paper provides a widely available approach to accelerate a code keeping the performance portability. To achieve an excellent performance on both CPUs and GPUs, Kokkos could be a reasonable choice which offers more flexibility to manage multiple data and loop structures with a single codebase.