Fork me on GitHub

Introduction

logo

OpenMP is:

OpenMP is not:

Goals of OpenMP:

History:

In the early 90’s, vendors of shared-memory machines supplied similar, directive-based, Fortran programming extensions: * The user would augment a serial Fortran program with directives specifying which loops were to be parallelized * The compiler would be responsible for automatically parallelizing such loops across the SMP processors

Implementations were all functionally similar, but were diverging (as usual)

First attempt at a standard was the draft for ANSI X3H5 in 1994. It was never adopted, largely due to waning interest as distributed memory machines became popular.

However, not long after this, newer shared memory machine architectures started to become prevalent, and interest resumed.

The OpenMP standard specification started in the spring of 1997, taking over where ANSI X3H5 had left off.

Led by the OpenMP Architecture Review Board (ARB). Original ARB members and contributors are shown below. (Disclaimer: all partner names derived from the OpenMP web site)

APR Members Endorsing Application Developers Endorsing Software Vendors
Compaq / Digital
Hewlett-Packard Company
Intel Corporation
International Business Machines (IBM)
Kuck & Associates, Inc. (KAI)
Silicon Graphics, Inc.
Sun Microsystems, Inc.
U.S. Department of Energy ASCI program
ADINA R&D, Inc.
ANSYS, Inc.
Dash Associates
Fluent, Inc.
ILOG CPLEX Division
Livermore Software Technology Corporation (LSTC)
MECALOG SARL
Oxford Molecular Group PLC
The Numerical Algorithms Group Ltd.(NAG)
Absoft Corporation
Edinburgh Portable Compilers
GENIAS Software GmBH
Myrias Computer Technologies, Inc.
The Portland Group, Inc. (PGI)

For more news and membership information about the OpenMP ARB, visit: openmp.org/wp/about-openmp.

Release History

OpenMP continues to evolve, with new constructs and features being added over time.

Initially, the API specifications were released separately for C and Fortran. Since 2005, they have been released together.

The table below chronicles the OpenMP API release history:

Month/Year Version
Oct 1997 Fortran 1.0
Oct 1998 C/C++ 1.0
Nov 1999 Fortran 1.1
Nov 2000 Fortran 2.0
Mar 2002 C/C++ 2.0
May 2005 OpenMP 2.5
May 2008 OpenMP 3.0
Jul 2011 OpenMP 3.1
Jul 2013 OpenMP 4.0
Nov 2018 OpenMP 5.0
Nov 2020 OpenMP 5.1

Note: The remainder of this tutorial, unless otherwise indicated, refers to OpenMP version 3.1. Syntax and features new with OpenMP 4.x and OpenMP 5.x are not currently covered.

References: