OpenMP

From SNIC Documentation
Jump to: navigation, search


OpenMP is an Application Program Interface (the OpenMP API) for shared-memory parallelism in C, C++, and Fortran programs. See also Pthreads.

For a detailed description of OpenMP, see http://openmp.org/.


Resources

Textbook

Using OpenMP, by: Barbara Chapman, Gabriele Jost and Ruud van der Pas, MIT press, Cambridge, Mass, 2008

This book describes the traditional and for many scientific codes most important concepts of the OpenMP API. The discussion includes performance considerations and common coding mistakes. The book is based on the OpenMP standard 2.5.

Tutorials

  • Tim Mattson from Intel created a video tutorial: Introduction to OpenMP. The tutorial is freely available on youtube. This tutorial also discusses more recent concepts such as the OpenMP task construct.
  • A good tutorial on the SIMD construct, first introduced in OpenMP 4.0, is available from the HPC today website
  • Blaise Barney provides a tutorial on the Lawrence Livermore National Laboratory's webpage

Standard Specifications

The most recent and earlier versions of the OpenMP standard is available from the OpenMP ARB's website.

Starting with OpenMP 4.0 the examples, explaining some of the constructs in-depth, are no longer part of the actual standard document but are available as a separate documents.

Experts

These experts have registered specific competence on this subject:

  FieldAE FTEGeneral activities
Anders Sjöström (LUNARC)LUNARCGPU computing
MATLAB
General programming
Technical acoustics
50Helps users with MATLAB, General programming, Image processing, Usage of clusters
Chandan Basu (NSC)NSCComputational science100Working on climate and weather codes
EU projects IS-ENES and PRACE.
Joachim Hein (LUNARC)LUNARCParallel programming
Performance optimisation
85Parallel programming support
Performance optimisation
HPC training
Marcus Lundberg (UPPMAX)UPPMAXComputational science
Parallel programming
Performance tuning
100I help users with productivity, program performance, and parallelisation.