NERSCPowering Scientific Discovery for 50 Years

Julia for HPC and Intro to Julia for Science, June 2024

June 18, 2024

Introduction

The Julia training session presented by OLCF, NERSC, and ORNL Neutron Sciences, is part of the Performance Portability training series. This series, offered by OLCF, NERSC, and ALCF, features training sessions on various performance portable programming solutions to help ease developer transitions between current and emerging high-performance computing (HPC) systems, such as the NERSC Perlmutter, OLCF Frontier, and ALCF Aurora featuring NVIDIA-, AMD-, and Intel-based GPUs, respectively.

  • Session 1: Tuesday, June 18, 10:00 am - 1:00 pm (Pacific time), Julia for HPC
  • Session 2: Friday, June 21, 10:00 am - 1:00 pm (Pacific time), Introduction to Julia for Science

Overview

Julia proposes to fill a gap in the high-performance plus high-productivity space being a dynamic language built on top of LLVM with lightweight interoperability with C and Fortran code, and a unified ecosystem for data science and reproducibility.

This training is open to all who want to learn more about how to use Julia for HPC and Science. Users of OLCF, SNS, HFIR, NERSC, and ALCF are encouraged to attend.

Odo, a Frontier-like system with AMD GPUs at OLCF, and Perlmutter with Nvidia GPUs will be used for hands-on for this training. NERSC users who are also interested in working on AMD GPUs (such as for performance portability among different GPU vendors) can apply for a training project with access to Odo. The application deadline for Odo access is June 11. Please see the application details on the OLCF Julia training event page for Session 1 under the "Compute Resources for the Event" section. Perlmutter training accounts will also be provided to OLCF and ALCF users if interested. 

Session 1: Julia for HPC

The Julia for High Performance Computing Tutorial will be on June 18, 2024 from 10 am -1 pm PDT. We will introduce participants to the Julia language for high-performance computing (HPC) applications in a hands-on session covering topics relevant to a HPC audience.

Contents are divided into 3 modules:

  1. A brief introduction to Julia
  2. Developing and running an HPC mini app including simulation using Threads, CUDA.jl and AMDGPU.jl programming models, parallel I/O using ADIOS2.jl
  3. Exposure to Jupyter and Pluto.jl notebooks for interactive computingBonus: VS Code and Copilot for Julia development work

Session 2: Introduction to Julia for Science

This 3-hour tutorial on June 21 from 10 am - 1 pm PDT focuses on introductory aspects of the Julia language and uses examples on Jupyter Notebooks. Julia’s value proposition is to provide a productive and performant scientific programming language on top of LLVM. Users of scientific instruments who need to do computational analysis on their laptops are especially encouraged to attend this session.

Attendees will learn about:

  1. Language basics: installation, syntax, code organization structure, data types
  2. Ecosystem: packaging, testing, CI, metaprogramming, tooling, REPL, Jupyter/Pluto notebooks
  3. Parallel programming models for CPU and GPU
  4. Standard library and mathematical packages: e.g. LinearAlgebra.jl, Optim.jl, Rotations.jl
  5. Data analysis: DataFrames, CSV, Plotting libraries ecosystem
  6. FluxML for AI applications.

Recommended Materials

  1. Attendees are encouraged to install the latest Julia v1.9 release candidate https://julialang.org/downloads/#upcoming_release
  2. https://github.com/ornl-training/julia-basics
  3. GrayScott HPC mini-app: ORNL
    https://github.com/ornladios/ADIOS2-Examples/tree/master/source/julia/GrayScott.jl
  4. Gentle read:
    https://bssw.io/blog_posts/julia-s-value-proposition-for-better-scientific-software

Registration

This event will be presented online only using Zoom.  Registration is required for remote participation. Please register on the OLCF event page (scroll down to the middle of the page).

Presentation Materials

Slides and recordings will be available.