Customer Training

Event header image

OpenMP task and GPU offloading course

9.10.2023 09:00 +03:00 EEST - 11.10.2023 17:00 +03:00 EEST

CSC Training Facilities

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


  • 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.




Kent F. Milfeld (TACC)
Emanuele Vitali (CSC)


The fee covers the lunches, coffee and snacks during the event.

  • For academic partipants: 180€ ex VAT.
  • For industry: 840€ ex VAT.

The deadline for the registrations is October 2, 2023.

No registrations available anymore.

Event time


9.10.2023 09:00 +03:00 EEST


11.10.2023 17:00 +03:00 EEST

Event location

CSC Training Facilities

Keilaranta 14
02100 Espoo

View larger map and directions