[ONLINE] Parallel Programming with OpenMP @ IT4Innovations





With the increasing prevalence of multi-core processors, shared-memory programming models are essential. OpenMP is a popular, portable, widely supported, and easy-to-use shared-memory model. The course will improve users' understanding of OpenMP and its new features, to make the best use of this standard on modern computer architectures. The workshop will cover optimizations for NUMA architectures, SIMD, and accelerator programming in OpenMP. Several of the topics, tools, and/or hands-on exercises will be presented that support users in their programs' performance and correctness analysis.


1st day beginner

2nd day advanced

You can choose to attend both or just one of the days.




Participants are supposed to understand basic parallelization concepts. Slides will contain the C/C++ and FORTRAN syntax, except for some. Exercises will be available in C/C++ and FORTRAN. If you wish to attend only the second day you should be familiar with the fundamentals of OpenMP covered on the first day.


Day 1

9:00 - 10:30 Introduction:

  • Welcome
  • Overview of OpenMP
  • Parallel Region
  • Worksharing
  • Scoping

10:30 - 10:45 Coffee Break

10:45 - 12:15 Tasking/1:

  • Motivation
  • Task Model
  • Scoping with Tasks

12:15 - 13:15 Lunch Break 

13:15 - 14:45 Tasking/2:

  • Cut-off Strategy
  • Taskloop
  • Task Dependencies

14:45 - 15:00 Coffee Break

15:00 - 16:30  Hands-on Part 1


9:00 - 10:30 SIMD & GPU Programming/1:

  • SIMD Microarchitectures
  • OpenMP SIMD
  • OpenMP Target Device Model
  • Expressing Parallelism

10:30 - 10:45 Coffee Break

10:45 - 12:15 GPU Programming/2:

  • Device Data Environment
  • Asynchronous Offloading
  • GPU Performance Tuning

12:15 - 13:15 Lunch Break

13:15 - 14:45 Misc. OpenMP Features:

  • User-defined reductions
  • Do across loops
  • Cancellation

14:45 - 15:00 Coffee Break

15:00 - 16:30 Hands-on Part 2

About the tutors

Dr. Christian Terboven is a senior scientist and leads the HPC group at RWTH Aachen University. His research interests center around Parallel Programming and related Software Engineering aspects. Christian has been involved in the Analysis, Tuning, and Parallelization of several large-scale simulation codes for various architectures. He is responsible for several research projects in the area of programming models and approaches to improve the productivity and efficiency of modern HPC systems. In the context of OpenMP, Christian is the co-lead of the Affinity Subcommittee within the OpenMP Language Committee, and he is co-author of the book "Using OpenMP - The Next Step", published by MIT Press.

Dr. Michael Klemm is a Principal Member of Technical Staff in the HPC Center of Excellence at AMD.  His focus is on High Performance and Throughput Computing on AMD EPYC Processors and AMD InstinctAccelerators.  He holds an M.Sc. in Computer Science and a Doctor of Engineering degree (Dr.-Ing.) in Computer Science from the Friedrich-Alexander-University Erlangen-Nuremberg, Germany.  Michael's research focus is on compilers and runtime optimizations for distributed systems.  His areas of interest include compiler construction, design of programming languages, parallel programming, and performance analysis and tuning. In 2016, Michael was appointed Chief Executive Officer of the OpenMP Architecture Review Board.



This event was partially supported by The Ministry of Education, Youth and Sports from the Large Infrastructures for Research, Experimental Development and Innovations project "e-Infrastruktura CZ – LM2018140“ and partially by the PRACE-6IP project - the European Union’s Horizon 2020 research and innovation programme under grant agreement No. 823767.

  • Wednesday, December 7
    • 8:30 AM 8:50 AM
      Connecting to IT4I clusters with support
    • 8:50 AM 9:00 AM
      Time for everyone to join the training
    • 9:00 AM 10:30 AM

      Parallel Region

    • 10:30 AM 10:45 AM
      Coffee Break 15m
    • 10:45 AM 12:15 PM
      Tasking / 1


    • 12:15 PM 1:15 PM
      Lunch 1h
    • 1:15 PM 2:45 PM
      Tasking / 2

      Task Dependencies
      Memory Access
      Memory Placement

    • 2:45 PM 3:00 PM
      Comfort Break 15m
    • 3:00 PM 4:30 PM
      Hands-on Part 1
  • Thursday, December 8
    • 8:50 AM 9:00 AM
      Time for everyone to join the training
    • 9:00 AM 10:30 AM
      SIMD & GPU Programming / 1

      Expressing Parallelism

    • 10:30 AM 10:45 AM
      Coffee Break 15m
    • 10:45 AM 12:15 PM
      GPU Programming / 2

      Optimizing Data Movement
      Async. Offloading
      Integration with GPU Kernels

    • 12:15 PM 1:15 PM
      Lunch Break 1h
    • 1:15 PM 2:45 PM
      Misc. OpenMP Features

      User-defined Reductions
      MPI and Multi-Threading

    • 2:45 PM 3:00 PM
      Coffee Break 15m
    • 3:00 PM 4:30 PM
      Hands-on Part 2