Advanced OpenMP Topics and GPU Programming with OpenMP
When running a large simulation on a supercomputer, it is important that your code is efficiently parallelized and able to use all the resources that the machine can provide you. OpenMP is a programming model that aims at allowing the developers to easily obtain performance improvements by exploiting parallelism in term of multi-core CPUs and GPUs.
This 3-day course is on Advanced OpenMP Topics: 1.5 days on CPU OpenMP and 1.5 days on OpenMP Offloading. There will be hands-on exercises after topic presentations.
CPU OpenMP sessions will include an Introduction with review of Worksharing, explicit Tasking, SIMD directives, Affinity and using OpenMP with C++.
GPU OpenMP Offloading will include an Introduction to GPUs in HPC before introducing OpenMP target offloading, structure and unstructured data movement (mapping), device and static storage declarations, asynchronous and dependence operations, interoperability with libs and HIP, and other aspects of device interactions.
Expected Learning Results of this Course
- Deeper knowledge of the OpenMP tasking paradigm, affinity, and vectorization with OpenMP
- Awareness of the differences of CPU and GPU, why and when to offload
- Ability to vectorize computation
- Ability to write kernels
- Ability to increase performance of the code using the above techniques
Prerequisites
- Knowledge of Fortran, C or C++
- Knowledge of basic OpenMP
- Ability to work on a remote machine in Linux environment (exercises will be prepared for LUMI, and an account will be requested, access will be provided).
The content level of the course is: beginner's - 30%, intermediate - 50%, advanced - 20%, community-targeted content - 0%.
Tentative Agenda
Day 1
09:00-12:00 OpenMP beyond threads.
12:00-01:00 Lunch
13:00-17:00 Tasking and Dependences, Affinity
Day 2
09:00-12:00 OpenMP: vectorization and C++ support
12:00-01:00 Lunch
13:00-17:00 Intro to GPUs and OpenMP offloading
Day 3
09:00-12:00 Offloading, a Closer Look and Data Movement
12:00-01:00 Lunch
13:00-17:00 Offloading: Device Functions, Interoperability, Variants, Device Memory Routines, Advanced Topics, Discussion
In addition to lectures there will be hands on exercises/labs.
Language
English
Lecturers
Kent F. Milfeld (TACC)
Emanuele Vitali (CSC)
Price
The fee covers the lunches, coffee and snacks during the event.
- For academic partipants: 180€ ex VAT.
- For industry: 840€ ex VAT.