Evaluating performance and portability of high-level programming models: Julia, Python/Numba, and Kokkos on exascale nodes
arXiv:2303.06195 · doi:10.1109/IPDPSW59300.2023.00068
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.
arXiv commentAccepted at the 28th HIPS workshop, held in conjunction with IPDPS 2023. 10 pages, 9 figures
References in corpus (8)
- PyCUDA and PyOpenCL: A Scripting-Based Approach to GPU Run-Time Code Generation
- NVIDIA Tensor Core Programmability, Performance & Precision
- Adaptive numerical simulations with Trixi.jl: A case study of Julia for scientific computing
- Kokkos Kernels: Performance Portable Sparse/Dense Linear Algebra and Graph Kernels
- Bridging HPC Communities through the Julia Programming Language
- Productivity meets Performance: Julia on A64FX
- DistStat.jl: Towards Unified Programming for High-Performance Statistical Computing Environments in Julia
- Towards new solutions for scientific computing: the case of Julia
Cited by in corpus (6)
- Evaluation of OpenAI Codex for HPC Parallel Programming Models Kernel Generation
- Benchmarking the Parallel 1D Heat Equation Solver in Chapel, Charm++, C++, HPX, Go, Julia, Python, Rust, Swift, and Java
- Julia as a unifying end-to-end workflow language on the Frontier exascale system
- Energy Efficiency trends in HPC: what high-energy and astrophysicists need to know
- Comparing Llama-2 and GPT-3 LLMs for HPC kernels generation
- Julia in HEP