OpenMP (Open Multi-Processing) is an application programming interface (API) that supports multi-platform shared memory multiprocessing programming in C, C++ and Fortran on many architectures, including Unix and Microsoft Windows platforms. It consists of a set of compiler directives, library routines, and environment variables that influence run-time behavior.

Jointly defined by a group of major computer hardware and software vendors, OpenMP is a portable, scalable model that gives programmers a simple and flexible interface for developing parallel applications for platforms ranging from the desktop to the supercomputer.

An application built with the hybrid model of parallel programming can run on a computer cluster using both OpenMP and Message Passing Interface (MPI), or more transparently through the use of OpenMP extensions for non-shared memory systems.

OpenMP website


 There are different versions of OpenMP Specifications. Among those, version 3.0 lauched in May 2008 is the complete one. Visit the link for detail information on these specifications.

Version 3.0 Complete Specifications - (May, 2008). (PDF)


There are a number of compilers from various vendors or open source communities implement the OpenMP API such as gcc (GNU), XL C/C++/Fortran (IBM), Visual Studio 2008 C++ (Microsoft) and etc. Visit link for complete list of compilers that support OpenMP.

For compiling OpenMP pgrogram on Lab Cluster, you can use gcc and compile your program with -fopenmp