Levering the compute power of GPU accelerators to scientific computing is becoming increasingly important. There are many programming models for GPU programming, but OpenMP is a vendor-agnostic approach that allows you to write code that can run on a wide variety of GPU hardware. In this training, we will cover GPU programming with OpenMP, and how to optimize performance.
Learning outcomes
When you complete this training you will
- have a good understanding of the GPU hardware and programming model;
- be able to write OpenMP code that offloads to the GPU;
- understand how to optimize performance of OpenMP GPU code;
- be able to apply this knowledge to your own scientific computing applications.
Schedule
Total duration: 4 hours.
| Subject | Duration |
|---|---|
| introduction and motivation | 5 min. |
| GPU hardware/programming model | 80 min. |
| OpenMP worksharing | 25 min. |
| coffee break | 10 min. |
| OpenMP data movements | 30 min. |
| OpenMP kernes | 10 min. |
| Examples | 60 min. |
| wrap up | 10 min. |
Training materials
Slides are available in the GitHub repository as well as example code and hands-on material. The slides can be viewed online.
Target audience
This training is for you if you want to do GPU programming in C, C++ or Fortran and want a vendor-agnostic approach.
Prerequisites
You will need experience programming in C, C++ or Fortran and be familiar with the OpenMP programming model.
If you plan to do GPU programming in a Linux or HPC environment you should be familiar with these as well.
For following along hands-on, you need
- laptop or desktop with internet access.
- a system set up so you can connect to an HPC system, an account on an HPC system (e.g., VSC, CECI, …), compute credits if that is required to run jobs on the HPC system if you want to use an HPC system;
Level
- Introductory: 20 %
- Intermediate: 40 %
- Advanced: 40 %
Trainer(s)
- Geert Jan Bex (geertjan.bex@uhasselt.be)