JACC: on-node performance portable programming model in Julia

07/28/2023, 4:10 PM4:20 PM UTC
32-124

Abstract:

We present our research efforts in creating a performance portable programming model, JACC, in Julia targeting heterogeneous hardware on the US Department of Energy Leadership Computational Facilities. JACC leverages the high-productivity aspect of Julia and the CUDA.jl and AMDGPU.jl vendor specific GPU implementations and expands to many core CPUs (Arm, x86) and automatic memory management. The goal is to allow Julia applications to write performant code once leveraging existing infrastructure.

Description:

In this talk we present our efforts towards a performance portable programming model in Julia: JACC. We leverage existing implementations targeting vendor-specific GPU hardware acceleration: CUDA.jl and AMDGPU.jl. Similar to KernelAbstractions.jl for GPUs and Kokkos for C++ on multiple platforms, we aim to understand the requirements and feasibility of a performance portable layer targeting heterogeneous hardware at the US Department of Energy Leadership Computing Facilities. We share the gaps in coarse/fine granularity kernel implementations, lessons learned and results from testing JACC on Summit (IBM+NVIDIA) and Crusher (AMD) using the gray-scott diffusion-reaction proxy application running simulation on CPU and GPU heterogeneous hardware. We aim to understand the feasibility of this capability as an important need towards the adoption of Julia in the High-Performance Computing (HPC) communities. JACC leverages the Julia high-productivity and high-performance capability on top of LLVM allowing users to develop their software focusing on their science, while offloading performance portability aspects to our efforts.

Platinum sponsors

JuliaHub

Gold sponsors

ASML

Silver sponsors

Pumas AIQuEra Computing Inc.Relational AIJeffrey Sarnoff

Bronze sponsors

Jolin.ioBeacon BiosignalsMIT CSAILBoeing

Academic partners

NAWA

Local partners

Postmates

Fiscal Sponsor

NumFOCUS