Evaluating performance and portability of high-level programming models: Julia, Python/Numba, and Kokkos on exascale nodes
Authors:
- 1 May 2023
- conference paper
- Published by Institute of Electrical and Electronics Engineers (IEEE)
- p. 373-382
Abstract
We explore the performance and portability of the high-level programming models: the LLVM-based Julia and Python/Numba, and Kokkos on high-performance computing (HPC) nodes: AMD Epyc CPUs and MI250X graphical processing units (GPUs) on Frontier’s test bed Crusher system and Ampere’s Arm-based CPUs and NVIDIA’s A100 GPUs on the Wombat system at the Oak Ridge Leadership Computing Facilities. We compare the default performance of a hand-rolled dense matrix multiplication algorithm on CPUs against vendor-compiled C/OpenMP implementations, and on each GPU against CUDA and HIP. Rather than focusing on the kernel optimization per-se, we select this naive approach to resemble exploratory work in science and as a lower-bound for performance to isolate the effect of each programming model. Julia and Kokkos perform comparably with C/OpenMP on CPUs, while Julia implementations are competitive with CUDA and HIP on GPUs. Performance gaps are identified on NVIDIA A100 GPUs for Julia’s single precision and Kokkos, and for Python/Numba in all scenarios. We also comment on half-precision support, productivity, performance portability metrics, and platform readiness. We expect to contribute to the understanding and direction for high-level, high-productivity languages in HPC as the first-generation exascale systems are deployed.Keywords
All Related Versions
Funding Information
- UT-Battelle
This publication has 41 references indexed in Scilit:
- Towards an Auto-Tuned and Task-Based SpMV (LASs Library)2020
- A comparative study of high-productivity high-performance programming languages for parallel metaheuristicsSwarm and Evolutionary Computation, 2020
- sLASs: A fully automatic auto-tuned linear algebra library based on OpenMP extensions implemented in OmpSs (LASs Library)Journal of Parallel and Distributed Computing, 2020
- Kokkos implementation of an Ewald Coulomb solver and analysis of performance portabilityJournal of Parallel and Distributed Computing, 2020
- Rapid software prototyping for heterogeneous and distributed platformsAdvances in Engineering Software, 2019
- Implications of a metric for performance portabilityFuture Generation Computer Systems, 2019
- Function portability of molecular dynamics on heterogeneous parallel architectures with OpenCLThe Journal of Supercomputing, 2018
- Kokkos: Enabling manycore performance portability through polymorphic memory access patternsJournal of Parallel and Distributed Computing, 2014
- PyCUDA and PyOpenCL: A scripting-based approach to GPU run-time code generationParallel Computing, 2012
- R: A Language for Data Analysis and GraphicsJournal of Computational and Graphical Statistics, 1996