The OpenMP training series presented by Michael Klemm of AMD the OpenMP ARB, and Christian Terboven of RWTH Aachen University, is part of the Performance Portability training series. Offered by NERSC, OCLF, and ALCF, the series features training sessions on various performance portable programming solutions to help ease developer transitions between current and emerging high performance computing (HPC) systems, such as the NERSC Perlmutter and Polaris (AMD CPU and Nvidia GPU), OLCF Frontier (AMD CPU and GPU), and ALCF Aurora (Intel CPU and GPU).


The OpenMP API is the de facto standard for writing parallel applications for shared memory computers. It is a portable programming model supported by multiple scientific compilers on CPU and GPU architectures. This monthly OpenMP training series offered from May to October 2024 will cover topics including OpenMP basics, parallel worksharing, tasking, memory management and affinity, vectorization, GPU offloading, and MPI/OpenMP hybrid programming. Detailed topics for each session are provided below. The format of each training session will be presentations followed by homework assignments. Homework solutions will be reviewed at the beginning of the next session. This training series is open to NERSC, OLCF, and ALCF users. Perlmutter training accounts will be provided if needed.

Session Dates and Times

All times are Pacific Daylight Time (PDT/UTC-7).

  • Session 1: Monday, May 6, 9:00 – 11:00 a.m.
  • Session 2: Monday, June 10, 9:00 – 10:30 a.m.
  • Session 3: Monday, July 8, 9:00 – 10:30 a.m.
  • Session 4: Thursday, September 5, 9:00 – 10:30 a.m.
  • Session 5: Monday, October 7, 9:00 – 10:30 a.m.
  • Session 6: Monday, October 28, 9:00 – 10:30 a.m.

Session Topics (tentative)

Session 1 (May 6): OpenMP Introduction

  • Welcome
  • OpenMP Overview
  • Parallel Region
  • Worksharing
  • Scoping
  • Tasking (short introduction)
  • Executing OpenMP Programs
  • Homework Assignments
  • Compile and Run on CPUs with Various OpenMP Compilers
  • Q&A

Session 2 (Jun 10): Tasking

  • Review of Session 1, Q&A
  • Review of Homework Assignments
  • Tasking Motivation
  • Task Model in OpenMP
  • Scoping
  • Taskloop
  • Dependencies
  • Cut-off strategy
  • Homework Assignments
  • Q&A

Session 3 (Jul 8): Optimization for NUMA and SIMD

  • Review of Session 2, Q&A
  • Review of Homework Assignments
  • OpenMP and NUMA Architectures
  • SIMD (vectorization)
  • Misc Optimizations
  • MPI and Multi-threading
  • Homework Assignments
  • Q&A

Session 4 (Aug 5): What Could Possibly Go Wrong Using OpenMP

  • Correctness
  • Performance
  • Q&A

Session 5 (Sept 4): Introduction to Offloading with OpenMP

  • Review of Session 3, Q&A
  • Review of Homework Assignments
  • Introduction to OpenMP Offload Features
  • Device Model
  • Creating Parallelism on the Target Device
  • Teams and Distribute Constructs
  • Loop Constructs
  • Homework Assignments
  • Compile and Run on CPUs with Various OpenMP Compilers
  • Q&A

Session 6 (Oct 7): Advanced OpenMP Offloading Topics

  • Review of Session 4, Q&A
  • Review of Homework Assignments
  • Unstructured Data Movement
  • Reducing Data Transfers
  • HALO Exchange
  • Asynchronous Offloading
  • Real-World Application Case Study: NWChem
  • Integration of GPU-Kernels (i.e., HIP)
  • Homework Assignments
  • Q&A

Session 7 (Oct 28): Selected / Remaining Topics

  • Review of Session 5, Q&A
  • Review of Homework Assignments
  • Remaining OpenMP Topics from Previous Sessions
  • Task Affinity
  • Hybrid Programming: Detached Tasks
  • Hybrid Programming: MPI + OpenMP
  • Q&A
  • Homework Help


This event will be presented online only using Zoom. Registration is required for remote participation.

You can register anytime during the OpenMP training series, even if you missed some early sessions. Slides, videos, and exercises will be posted before the next upcoming session to help you catch up.

<hr />

Office Hours

Wednesday, May 16, 20241 - 2 p.m.Registration