JuliaCon 2025

JACC.jl: a performance-portable programming model for Julia
2025-07-23 , Main Room 4

We will present new developments over the past two years in JACC.jl a performance portability package targeting high-performance computing (HPC) applications. These will include API changes and additions, the oneAPI backend, shared memory utilization, and ongoing efforts to manage kernels on multiple GPUs. We will relate lessons learned as well as challenges, and we might even ask for help.


JACC.jl (Julia ACCelerated) is a high-level programming model for performance portability in Julia. It provides a unified and lightweight interface to allow the same Julia code to run efficiently on a variety of CPU and GPU targets, primarily targeting current HPC hardware. We will present breaking changes and significant additions made to the primary JACC API. This includes how arrays are declared, how backends are specified, custom reduce operators and BLAS functions. In line with supporting performance portability in an HPC context, we will present new capabilities in JACC that attempt to bridge gaps between high-level programming and fine-grained performance control. This will include JACC.shared, which provides a high-level, portable, and easy-to-use method for programmers to exploit high-bandwidth shared GPU memory. This will also include JACC.Multi, which enables simultaneous utilization of multiple GPUs with no extra cost to programmability, and JACC.Async, an in-progress effort to distribute kernels as tasks to multiple devices asynchronously.

Philip Fackler joined the Oak Ridge National Laboratory in 2019 and is a Research Software Engineer in the Computer Science and Mathematics Division (CSMD). His interests include high performance computing applications and performance portability in Julia and C++, computational mesh generation and geometry, and C++ language evolution.

Philip obtained his Ph.D. (2017) and MS (2013) in computational engineering from the University of Tennessee at Chattanooga. He obtained his BA (2008) in mathematics from Asbury University in Wilmore, Kentucky.

During his Ph.D. Philip developed a code for point placement (for spatial discretization) with two novel algorithms using a background spacing field: one for inserting and removing points locally to achieve an appropriate population, and the other using point-to-point interactions (behaving as bubbles) to "smooth" the population or ensure the points were "well-placed".