The goal of the tutorial is to introduce an audience familiar with high-performance computing (HPC) concepts to the Julia programming language using a hands-on approach.
It’s a good time to get Julia v1.9 installed from their website
- Workflow aspects: simulation CPU/CPU, parallel I/O, data analysis (Notebooks)
- Multiple dispatch for array back ends (CPU, CUDA, AMDGPU)
- Multithreaded CPU using Julia @threads
- GPU programming using CUDA.jl and AMDGPU.jl
- Parallel I/O with ADIOS2.jl (outputs can be visualized in ParaView)
- Julia on OLCF’s JupyterHub and Pluto.jl Notebooks (read and plot)
- More general aspects of the language (software engineering, AI)
- AI infrastructure: Flux.jl, SciML
- Performance portability layers: e.g. KernelAbstractions.jl
- Ahead-of-time compilation: PackageCompiler.jl
- Tools ecosystem for profiling, debugging (well some)
“Can a machine translate a sufficiently rich mathematical language into a suffienciently economical program at a sufficiently low cost to make the whole affair feasible?” – John Backus on Fortran (1980)
- Compiled via LLVM for performance. Julia is Compiled
- Provides a unified tested ecosystem (packaging, testing, tools, interactivity, etc.). See JuliaCon presentation on GeneralRegistry.
- Community of HPC people from day-1 (the community is you, low entry barrier)
- Sustained by JuliaHub, MIT’s JuliaLab, NumFocus and several open-source contributors
- Great math (Fortran) and data science (Python) simple syntax
- Rapid prototyping: stay in one language+ecosystem for your custom kernels + data analysis
- Interoperate with Fortran, C, C++ (via C), Python, R code in a lightweight manner
- Renewed interest for high-performance + high-productivity languages
- Great first language to expose newcomers to both HPC + math concepts
- Contribute to HPC stack: CUDA.jl, MPI.jl, AMDGPU.jl, ADIOS2.jl, HDF5.jl…for us, by us
Julia’s value proposition
- Already existing infrastructure/expertise (Fortran is perfect!)
- Too much of an investment to learn a new language
- Performance/productivity solutions already in place
- Having N-language/ecosystems is not a problem
- Python + X is well supported for your needs
- Garbage collection, Just-in-time (JIT) compilation are issues
- Developing low-level system libraries
- Domain outside “technical computing”
- Overall, you do not see any value added
Julia’s value proposition for Better Scientific Software. High-level intro and many resources for Scientific Software.
JuliaParallel.org. Checkout the monthly HPC call and previous events: SC22 BoF, ECP BoF, Tutorial days.
Julia Basics Notebooks. Run on myBinder or locally.
From zero to Julia!. Series of introductory lessons.
Julia for Sustainable HPC Software by Valentin Churavy.
Godoy, William F., Pedro Valero-Lara, T. Elise Dettling, Christian Trefftz, Ian Jorquera, Thomas Sheehy, Ross G. Miller, Marc Gonzalez-Tallada, Jeffrey S. Vetter, and Valentin Churavy. “Evaluating performance and portability of high-level programming models: Julia, Python/Numba, and Kokkos on exascale nodes.” IPDPS HIPS workshop (2023), arXiv:2303.06195
This research was supported by the Exascale Computing Project (17-SC-20-SC), a collaborative effort of the U.S. Department of Energy Office of Science and the National Nuclear Security Administration.
The many people in the Julia community that made this possible. Thanks to Suzanne Parete-Koon from the Oak Ridge Leadership Center (OLCF).