/pde-on-gpu-wu

101-0250-00L Solving PDEs in parallel on GPUs

Primary LanguageJupyter NotebookMIT LicenseMIT

Error in user YAML: (<unknown>): found character that cannot start any token while scanning for the next token at line 2 column 28
---
Current maintainer: youwuyou (youwuyou@ethz.ch)
In relation to lecture by: @luraess, @utkinis, @mauro3, @omlins
---

Exercise Overview

Part 1 - Introduction

Lecture 1: Why Julia GPU

Number Topic Finished
Code Exercise 1.1 Car travel ✔️
Code Exercise 1.2 Car travel in 2 dimensions ✔️
Code Exercise 1.3 Volcanic bomb ✔️
Code Exercise 1.4 (optional) - Orbital around a centre of mass
Code Exercise 1.5 (optional) - Many volcanic bombs

Lecture 2: PDEs & physical processes

Number Topic Finished
Code Exercise 2.1 Advection-Diffusion ✔️
Code Exercise 2.2 Reaction-Diffusion ✔️
Code Exercise 2.3 Nonlinear problems ✔️
Code Exercise 2.4 Julia install and Git repo ✔️

Lecture 3: Solving elliptic PDEs

Number Topic Finished
Code Exercise 3.1 Implicit transient diffusion using dual timestepping ✔️
Code Exercise 3.2 Operator-splitting for advection-diffusion ✔️
Code Exercise 3.3 Advection-diffusion in 2D ✔️
Code Exercise 3.4 Optimal iteration parameters for pseudo-transient method ✔️

Part 2 - solving PDEs on GPUs

Lecture 4: Porous convection

Number Topic Finished
Code Exercise 4.1 Thermal porous convection in 2D ✔️
Code Exercise 4.2 Thermal porous convection with implicit temperature update ✔️

Lecture 5: Parallel computing

Number Topic Finished
Code Exercise 5.1 Performance implementation: Diffusion 2D ✔️
Code Exercise 5.2 Performance evaluation: Diffusion 2D (strong scaling test) ✔️
Code Exercise 5.3 Unit tests ✔️

Lecture 6: GPU computing & perf

Number Topic Finished
Code Exercise 6.1 Data transfer optimisations ✔️
Code Exercise 6.2 Solving PDEs on GPUs ✔️
Code Exercise 6.3 Unit and reference tests ✔️

Part 3 - Multi-GPU computing (projects)

Lecture 7: XPU computing

Number Topic Finished
Code Exercise 7.1 2D Thermal porous convection xPU implementation ✔️
Code Exercise 7.2 3D Thermal porous convection xPU implementation ✔️
Code Exercise 7.3 CI and GitHub Actions ✔️

Lecture 8: Julia MPI & multi-XPU

Number Topic Finished
Code Exercise 8.1 Towards distributed memory computing on GPUs
Code Exercise 8.2 Multi-XPU computing

NOTE: code exercise 8.1 has one last problem remained

Lecture 9: Multi-xPU & Projects

Number Topic Finished
Code Exercise 9.1 Multi-xPU computing projects
Code Exercise 9.2 Automatic documentation in Julia ✔️

Lecture 10: Advanced optimisations

Number Topic Finished
Code Exercise 10.1 Push-ups with memory copy
Code Exercise 10.2 Advanced data transfer optimisations (part 1)
Code Exercise 10.3 Advanced data transfer optimisations (part 2)

Lecture 11 - 14: Final Projects

Topic: Hydro-mechanical solver for (in)compressible two-phase flow equations

Repository: HydroMech.jl

Description:

The project aims to implement a collection of hydro-mechanical solvers that solve the (in)compressible two-phase flow equations in 2-/3D. As a starting point, we extend and use the existing code of the 2D incompressible solver to reproduce the porosity wave benchmark as in (Räss 2019). The second step of the project consists of implementing the 3D version of it and to reproduce the 3D benchmark in the same paper.

After verifying the reproducibility of the developed incompressible solver, we will implement the compressible solver and reproduce the fluid injection 2D benchmark as in (Dal Zilio 2022)