The goal of this course is to offer a practical approach to solve systems of partial differential equations in parallel on GPUs using the Julia programming language. Julia combines high-level language expressiveness and low-level language performance which enables efficient code development. The Julia GPU applications will be hosted on GitHub and implement modern software development practices.
Part 1 Introducing Julia & PDEs
The Julia language: hands-on
Modelling physical processes: advection, reaction, diffusion & wave propagation
Spatial and temporal discretisation: finite differences and explicit time integration
Software development tools: Git, continuous integration
Part 2 Solving PDEs on GPUs
Steady-state, implicit & nonlinear solutions
Efficient iterative algorithms
Parallel and GPU computing
Simulation performance limiters
Part 3 Final Project
xPU computing with backend-agnostic kernel programming
Distributed computing with MPI
Advanced optimisations: using shared memory and registers
Simulation of thermal porous convection in 3D
Ivan Utkin — ETHZ / WSL
Ludovic Räss — Unil / ETHZ
Mauro Werder — WSL / ETHZ
Samuel Omlin — CSCS / ETHZ
Teaching Assistant: Badie Taye — ETHZ