Learning resources: OpenMP

How to Use these Resources

The resources below offer tutorials and reference information on OpenMP, its different uses and applications, and shared-memory parallelism, from beginner to advanced levels.  Some resources also discuss applications of OpenMP to GPU programming. Almost all the resources  presume some reasonable familiarity with a compiled language like C, C++, or Fortran.

 

Videos

The OpenMP Common Core: A hands-on exploration (2019) -- the evolving lecture series on OpenMP by Tim Mattson from Intel is arguably the gold standard exposition on OpenMP. This ~4hr video (and the associated slides and materials) are from a version of Mattson's presentation delivered at Argonne National Lab (ANL) during the Argonne Training Program on Extreme-Scale Computing (ATPESC) 2019. It includes exercises and discussion.  A slightly older version of this material, packaged as a self-paced video course with numerous shorter videos, is linked below under Self-Paced Online Courses.

Shared-memory Programming with OpenMP -- a video playlist of four recorded sessions (~1.5 - 2 hrs each) from a 2019 online OpenMP course from ARCHER (the UK National Supercomputing Service)

OpenMP on GPUs -- video (~1 hr) on using OpenMP to program GPUs.  Part of the Virtual Tutorial series from ARCHER.

Collection of OpenMP Hands-on Tutorials -- the Parallel Programming in Computational Engineering and Science workshop (PPCES), held in 2014 at RWTH Aachen in Germany, published a progression of hands-on OpenMP lectures, with accompanying slides and exercises:

 

Self-paced online courses

A Hands-on Introduction to OpenMP -- the more discrete course-like version of the Intel course on OpenMP, taught by Tim Mattson.  The link includes the YouTube video playlist, the slides, and all exercises.  Suitable to use as a self-paced course.

OpenMP Workshop -- video playlist with recordings of a one-day 2018 XSEDE OpenMP workshop co-sponsored by the Pittsburgh Supercomputing Center (joint partnership between Carnegie Mellon University and the University of Pittsburgh). Slides and exercises are included, along with a review of the exercises in the video.  Includes some coverage of parallel debugging and profiling tools and best practices.

Introduction to OpenMP -- a self-paced online course from Cyberinfrastructure Tutor at the National Center for Supercomputing Applications (NCSA)

OpenMP Course -- self-paced online course from the Cornell University Center for Advanced Computing (CAC) thoroughly covering different aspects of OpenMP

Hybrid Programming with OpenMP and MPI -- another self-paced CAC online course on programming models that combine OpenMP and MPI

 

Web pages / written online tutorials

The OpenMP Examples Guide -- a very long PDF (~200 pages) from openmp.org with C and Fortran examples of OpenMP construct for a bevy of use-cases.  For version 4.5 of OpenMP. Sample source code in both C and Fortran 90 available at this github repo (under the "sources" folder).

OpenMP Tutorials -- a compact set of four tutorials, ranging from basics to using OpenMP for parallel "for" loops.  From supercomputingblog.com .

OpenMP Tutorial -- materials from hands-on tutorial session taught at Argonne National Laboratory (ANL) as part of the 2020 Exascale Computing Project (ECP) Annual Meeting.  Link includes slides for the presentation and exercises, tips and hints, and solutions.

Learning OpenMP -- example-driven tutorial covering major use-cases for OpenMP.  Also available as a PDF ebook.

Using OpenMP with C -- introductory level tutorial with examples (in C) on different aspects of OpenMP.  From University of Colorado Boulder Research Computing (CURC).

Using OpenMP with Fortran -- same as above, but with examples in Fortran

 

Books

Books on OpenMP -- a curated listing favorite published OpenMP references, courtesy of openmp.org

Parallel Programming In MPI and Open MP -- book by Victor Eijkhout from the Texas Advanced Computing Center (TACC).  Available in online (the online version is titled "Parallel Programming for Science & Engineering") and print versions.

Parallel Programming in Fortran 95 Using OpenMP (2002) -- online book (in PDF form) from Universidad Politécnica de Madrid