🎉 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 aims to cover state-of-the-art methods in modern parallel GPU computing, supercomputing and scientific software development with applications to natural sciences and engineering. The course is open source and is available on GitHub.
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
Solving physical processes: advection, reaction, diffusion & wave propagation
Spatial and temporal discretisation: finite differences and explicit time-stepping
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 Projects
Multi-GPU computing and optimisations
xPU computing
Distributed computing
Advanced optimisations
Final projects
Solve a solid mechanics or fluid dynamics problem of your interest, such as:
dynamic elasticity — seismic wave propagation
Maxwell's equations — electromagnetic fields propagation
shallow-water equations — rivers, lakes, or oceans
shallow ice approximation — ice sheet evolution
Navier–Stokes equations — fluid or smoke
thermo-mechanically coupled Stokes flow — mantle convection
hydro-mechanically coupled Stokes flow — subsurface CO2 flow
your own idea
Ivan Utkin — ETHZ / WSL
Ludovic Räss — Unil / ETHZ
Mauro Werder — WSL / ETHZ
Samuel Omlin — CSCS / ETHZ
Teaching Assistant: You Wu — ETHZ