HPC Training Series - Course 19 "OpenMP for Shared-Memory Parallel Programming"

Europe/Athens
Description

EuroCC@Greece announces the 19th Course of HPC Training Series with the subject "OpenMP for Shared-Memory Parallel Programming".   

Date: January 19th, 2026, at 10:00 EET    

Location: Online via Zoom  

Presentation Language: Greek

Audience:

Students / researchers / engineers with:

  • Basic C/C++ or Fortran knowledge, and

  • Basic familiarity with Linux and batch systems (Slurm)

Course Description: This seminar is a focused OpenMP introduction, starting with the motivation for OpenMP—its simplicity and portability compared to low-level threading libraries—and how it lets you incrementally parallelise existing serial codes. We then review shared-memory architectures (UMA vs NUMA and how real nodes look in practice, including caches and sockets).

Next we introduce the threaded programming model and the fork–join paradigm, including how threads share and privatise data, illustrated through simple C/C++ and Fortran “Hello, world” OpenMP examples. Building on that, we cover OpenMP basics: parallel regions, data-sharing attributes (shared, private, firstprivate, lastprivate, default(none)), worksharing constructs (for/do, sections, single, master), and scheduling options (static, dynamic, guided, runtime).

We then move to reductions and loop shaping (reduction clause, collapse for nested loops), and to synchronisation primitives—barrier, critical, atomic, locks, ordered, master/masked—together with typical race-condition examples. Finally, we discuss performance aspects: scheduling and chunksize, false sharing, NUMA effects, data affinity/first-touch, environment variables (OMP_WAIT_POLICY, OMP_DYNAMIC, OMP_PROC_BIND), and timing. Throughout, short hands-on exercises show how to add OpenMP pragmas to existing loops and how to avoid common pitfalls.

Learning Objectives:

By the end of the Seminar, participants will be able to:

  • Explain the shared-memory model (UMA vs NUMA) and how it affects OpenMP performance.

  • Understand the threaded programming model and the fork–join execution model in OpenMP.

  • Write and compile simple OpenMP “Hello, world” programs in C/C++ or Fortran.

  • Use parallel regions with correct data-sharing clauses (shared, private, firstprivate, lastprivate, default(none)).

  • Parallelise loops using omp parallel for / parallel do with appropriate scheduling (static, dynamic, guided, runtime).

  • Apply reductions and collapse for nested loops.

  • Use synchronisation constructs (barrier, critical, atomic, locks, ordered, master/masked) to avoid race conditions.

  • Recognise and mitigate performance bottlenecks such as excessive synchronisation, poor scheduling, NUMA penalties and false sharing.

  • Control OpenMP behaviour via environment variables (e.g. OMP_NUM_THREADS, OMP_SCHEDULE, OMP_WAIT_POLICY, OMP_PROC_BIND) and omp_get_wtime() for timing.

 

Note: Please enter your institutional/corporate email when registering.

 

Registration
Registration
    • 10:00 10:10
      Introduction to EuroCC@Greece & the Training Series 10m
      Speaker: Nikos Bakas (GRNET)
    • 10:10 10:20
      How to access EuroHPC-JU machines (projects, accounts, etc) 10m
      Speaker: Nikos Bakas (GRNET)
    • 10:20 10:30
      Motivation for OpenMP: simplicity, portability & incremental parallelisation 10m
      Speaker: Iakovos Panourgias (GRNET)
    • 10:30 10:45
      Shared-memory systems: UMA, NUMA and real HPC nodes (caches, sockets) 15m
      Speaker: Iakovos Panourgias (GRNET)
    • 10:45 11:15
      Threaded programming model & fork–join; OpenMP “Hello, world” in C/C++ and Fortran 30m
      Speaker: Iakovos Panourgias (GRNET)
    • 11:15 11:35
      Race conditions & parallel loops: from serial loop to omp parallel for/do 20m
      Speaker: Iakovos Panourgias (GRNET)
    • 11:35 11:55
      Break 20m
    • 11:55 12:25
      OpenMP basics: parallel regions & data sharing (shared, private, first/lastprivate, default) 30m
      Speaker: Iakovos Panourgias (GRNET)
    • 12:25 12:55
      Worksharing & scheduling: for/do, sections, single, master, schedule(static/dynamic/guided) 30m
      Speaker: Iakovos Panourgias (GRNET)
    • 12:55 13:25
      Synchronisation: barrier, critical, atomic, locks, ordered, master/masked; avoiding races 30m
      Speaker: Iakovos Panourgias (GRNET)
    • 13:25 13:45
      Reductions, collapse for nested loops & small exercises 20m
      Speaker: Iakovos Panourgias (GRNET)
    • 13:45 14:00
      Performance tips & Q&A: scheduling, NUMA, false sharing, env vars, timing & debugging tools 15m