Litcius/Paper detail

Comparing Julia to Performance Portable Parallel Programming Models for HPC

Wei-Chen Lin, Simon McIntosh‐Smith

202124 citationsDOIOpen Access PDF

Abstract

Julia is a general-purpose, managed, strongly and dynamically-typed programming language with emphasis on high performance scientific computing. Traditionally, HPC software development uses languages such as C, C++ and Fortran, which compile to unmanaged code. This offers the programmer near bare-metal performance at the expense of safety properties that a managed runtime would otherwise provide. Julia, on the other hand, combines novel programming language design approaches to achieve high levels of productivity without sacrificing performance while using a fully managed runtime. This study provides an evaluation of Julia&#x0027;s suitability for HPC applications from a performance point of view across a diverse range of CPU and GPU platforms. We select representative memory-bandwidth bound and compute bound mini-apps, port them to Julia, and conduct benchmarks across a wide range of current HPC CPUs and GPUs from vendors such as Intel<sup>&#x00AE;</sup>, AMD&#x00AE;, NVIDIA&#x00AE;, Marvell<sup>&#x00AE;</sup>, and Fujitsu<sup>&#x00AE;</sup>, We then compare and characterise the results against existing parallel programming frameworks such as OpenMP&#x00AE;, Kokkos, OpenCL&#x2122;, and first-party frameworks such as CUDA&#x00AE;, HIP&#x2122;, and oneAPI&#x2122; SYCL&#x2122;. Finally, we show that Julia&#x0027;s performance either matches the competition or is only a short way behind.

Topics & Concepts

Computer scienceCompilerCUDAProgrammerParallel computingFortranProgramming languageProgramming paradigmSupercomputerMemory bandwidthGeneral-purpose computing on graphics processing unitsOperating systemGraphicsParallel Computing and Optimization TechniquesDistributed and Parallel Computing SystemsAdvanced Data Storage Technologies
Comparing Julia to Performance Portable Parallel Programming Models for HPC | Litcius