Introduction to OpenMP

OpenMP is the de facto standard for thread-based parallelization of C/C++ and Fortran applications on shared-memory systems. Its directive-based approach allows incremental parallelization of existing sequential code with minimal restructuring. This course covers both foundational OpenMP concepts and advanced topics – including SIMD vectorization, task-based parallelism, and GPU offloading – giving participants a comprehensive toolkit for shared-memory performance optimization.

The course has evolved considerably: it started as a compact one-day introduction, was later extended and split into two separate events – one covering the fundamentals and one dedicated to advanced topics – and has since been merged back into a single offering, with all materials reworked as interactive Jupyter notebooks.

Level: Beginner to intermediate

Language: English (German upon request for bespoke courses)

Price and Eligibility: Refer to the registration page for each event (generally free of charge for members of academia from Europe).

Knowledge

  • Programming experience in C, C++, or Fortran (the majority of examples will be demonstrated in C++)

Technical

  • A modern web browser (exercises run on NHR@FAU’s HPC clusters via JupyterHub – no local installation required)

After completing this course, you will be able to:

  • Parallelize C/C++ and Fortran applications using OpenMP
  • Choose the most suited parallelization approach for the task at hand
  • Reason about data sharing between threads and write correct, race-free parallel programs
  • Evaluate and improve the performance of OpenMP applications on multi-core and multi-socket hardware
  • Apply advanced OpenMP features such as SIMD vectorization and task parallelism
  • Offload compute-heavy application parts to GPU accelerators

  • OpenMP fundamentals: threads, parallel regions, and the programming model
  • Parallelizing loops, managing data sharing, reductions, and synchronization
  • Performance optimization: thread placement and memory locality on NUMA systems
  • Advanced features: SIMD vectorization and task-based parallelism
  • Offloading computation to GPUs and other accelerators

  • 2026, May 4-6: three-day online course
  • 2025, Feb 26-28: three-day online course
  • 2024, Sep 4-6: three half-day online course
  • 2024, Mar 12: full-day online course (Part 2)
  • 2024, Mar 5: full-day online course (Part 1)
  • 2023, Sep 27: full-day online course (Part 2)
  • 2023, Sep 20: full-day online course (Part 1)
  • 2023, Mar 28: full-day online course (Part 2)
  • 2023, Mar 21: full-day online course (Part 1)
  • 2022, Oct 4: full-day online course

For an overview of all NHR@FAU courses, visit the course overview page.