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