🎉 Welcome to ETH's course 101-0250-00L on solving partial differential equations (PDEs) in parallel on graphical processing units (GPUs) with the Julia programming language. This course is the first part of a two-part series, focusing on the fundamentals of GPU programming and parallel numerical methods. The second part, offered in the spring semester next year, is project-based: participants will design and implement their own GPU-accelerated applications.
This course introduces state-of-the-art methods in modern parallel GPU computing, supercomputing, and scientific software development, with applications in the natural sciences and engineering. All course materials are open source and available on GitHub. As part of the course, you will learn how to model physical processes such as thermal convection in porous media, as illustrated below with an example simulation:
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