TRA220 GPU-accelerated computational methods using Python and CUDA

  • This is Tracks course. In this course, the students will learn how to write a simple CFD, FEM code, a Poisson solver or a wave propagation solver. The code should run entirely or partly on the GPU using CUDA. MSc and PhD students at Chalmers are welcome. Study period 2, 2024.
  • The course does not belong to a specific Master programme but it is a cross disciplinary course.
  • What is a Tracks course?
  • The course fulfils sustainable development goals (SDGs) Goal 9: Industry, Innovation and Infrastructure

Nvidia, CUDA, GPU

Tracks management

Teachers

Application

Course content

  • Introduction lectures first week on CUDA programming including two mini-workshops.
  • Project.
    • the student groups write a simple CFD/FEM code or Poisson solver or wave propagation solver for the GPU. Ideally, each group includes students with knowledge in CFD, FEM, Poisson equation or wave propagation and using GPUs.
    • Another option is a Lattice-Boltzmann project. The purpose of the project is to extend a CPU-based Lattice-Boltzmann fluid solver developed by Saab Aeronautics in Python to GPU. The CPU-version is utilizing the Numba Python package for parallelization, where the computational heavy routines are parallelized using shared memory. The Numba package supports GPU-parallelization and it should be straight forward to rewrite the necessary routines for full GPU-performance. The GPU-version will then be tested on a simple lid-driven cavity case. The supervisor is Magnus Carlsson at Saab Aeronautics (Email magnus.carlsson@chalmers.se, magnus.carlsson1@saabgroup.com)
    • Here are examples of Python codes for Poisson, LaPlace, linear and non-linear convection, Burger's equation etc
    • Here's an example of a simple Poisson solver (by lada) which can be used for working on Poisson solvers
    • Here's an example of a vectorized Poisson solver (by lada) which can be used for working on Poisson solvers
    • Here's an example of a finite volume code written in CUDU (by lada)
    • Here are examples of student reports from the Track course 2022-2023
    • Students who choose to do a CFD project may start with a CFD Python code (by lada) with a turbulence model or a simpler Navier-Stokes code
    • profiling (GPU time, uploading/downloading data to/from the GPU etc)
    • Written and oral presentation of the project

Time table. For locations, see TimeEdit

  • 7 Nov 13.15-15.00. Workshop 1 on GPU. Hari Abram.
  • 12 Nov 13.15-15.00 Introduction to CFD. Lars Davidson.
  • 14 Nov 10.00-11.45. Introduction to FEM, Fredrik Larsson
  • 14 Nov 13.15-15.00. Workshop 2 on GPU. Hari Abram.
  • 19 Nov 13.15-15.00 Using GPU on C3SE. Leonard Nielsen
  • 3 Dec 9.00-11.45. Mid-term workshop. Presentation of all student groups on status of the project
  • 23 Jan 9,.00-11.45. Final workshop. Presentation of all student groups

Learning outcomes

General learning outcomes are found in the course description of TRA105 - Tracks advanced 1

Detailed learning outcomes

  • be able to programme numerical solvers in Python
  • be able to programme in CUDA
  • be able to profile the programme

Course PM

The first lecture (including mini workshop) will take place on Thursday 7 Nov at 13.00-15.00 in Room SB3-L112 followed by another four lectures (see Time table above). The remaining of the course will mainly be project work and project meetings (once a week). The times for the meetings will be determined by each project group.

Please bring a lap-top to the first lecture. It is not necessary that your lap-top has a Nvidia graphics card.

A large part of the course will consist of a programming project. It should be on either FEM, CFD or solving a Poisson equation or the wave propagation equation. Please send an Email to lada@chalmers.se giving your preference. We will then form groups of 3-4 students.

We will arrange a mid-term meeting where the project groups will give a short presentation of the status of their project

At the end of the course (probably in the exam week), we will organize a workshop where all project groups will present their work. The project groups should also submit a report.

How to run on GPUs using Chalmers computers

Here you find information on how to use Chalmers computers.

You can register on the project C3SE 2023/2-15 and apply for an account here

Here you find a self-study Canvas course on how to use Vera cluster