Julia for HPC Users¶

This page gives a gentle introduction to Julia from the perspective of HPC users.

We assume you've got a basic understanding of HPC systems, and basic programming experience -- but this is not a hard requirement.

The contents of this presentation is based on my 6-ish years of experience using Julia for scientific data processing (and for fun!). For deeper reading (including more HPC aspects), I recommend:

  1. carstenbauer/JuliaHLRS22
  2. ENCCS/Julia-for-HPC

Outline¶

This page gives a gentle introduction to Julia ith enough hands-on experience in Julia to start applying it to their own projects, or use Julia as a teaching tool in the classroom.

  1. Gentle introduction to the Julia language
  2. Working wiht array-based data
  3. Calling external codes (using the C-API, and PyCall)
  4. Working in Parrallel

A Gentle Introduction to Julia¶

  1. Getting Started: Slides Notebook
  2. The structure of a Julia Program (modules, control flow, and functions): Slides Notebook
  3. Methods, and Introspection: Slides Notebook
  4. Structured Data Types (Classes): Slides Notebook

Explore on GitHub

Array Data¶

  1. Working With Arrays: Slides Notebook

Explore on GitHub

Calling External Codes (C API + PyCall.jl)¶

  1. Calling Compiled Functions via the C-API: Slides Notebook
  2. Calling Python Code via PyCall.jl Slides Notebook

Explore on GitHub

Working In Parallel¶

  1. Distributed Computing: Slides Notebook
  2. Multi-Threaded Computing: Slides Notebook

Explore on GitHub

What About Numba ?¶

  1. A Numba Example: Slides Notebook
  2. The same again, but in Julia: Slides Notebook

Explore on GitHub

Working with MPI¶

  1. MPI.jl Basics: Slides Notebook
  2. Using Distributed Arrays: Slides Notebook
  3. One-sided MPI Communication: Slides Notebook
  4. MPIArrays.jl Basics: Slides Notebook

Explore on GitHub

Working with GPUS¶

  1. CUDA.jl Basics: Slides Notebook

Explore on GitHub