OpenMP Compilers

A number of compilers from various vendors or open source communities implement the OpenMP API:

Free and open source - Linux, Solaris, AIX, MacOSX, Windows, FreeBSD, NetBSD, OpenBSD, DragonFly BSD, HPUX, RTEMS
From GCC 4.2.0, OpenMP 2.5 is fully supported.
From GCC 4.4.0, OpenMP 3.0 is fully supported.
From GCC 4.7.0, OpenMP 3.1 is fully supported.
In GCC 4.9.0, OpenMP 4.0 is supported for C and C++, but not Fortran.
From GCC 4.9.1, OpenMP 4.0 is fully supported.
From GCC 6.1, OpenMP 4.5 will be supported for C and C++, but not Fortran.
Compile with -fopenmp to enable OpenMP.
Online documentation:
OpenMP support history:
XL C/C++ / Fortran
From XL C/C++ compiler version 12.1 and XL Fortran compiler version 14.1, OpenMP 3.1 is fully supported.

From XL C/C++ compiler version 13.1 and XL Fortran compiler version 15.1, OpenMP 4.0 is partially supported on AIX and Linux

From XL C/C++ compiler version 13.1.2 and XL Fortran compiler version 15.1.1, OpenMP 4.0 is partially supported on Linux (little endian).

XL C/C++

XL Fortran

C/C++ / Fortran Oracle Solaris Studio compilers and tools - free download for Solaris and Linux.Oracle Solaris Studio 12.4 compilers support OpenMP 4.0 Compile with -xopenmp »Solaris Studio »OpenMP User’s Guide »Tools: Thread Analyzer |  Performance Analyzer
C/C++ / Fortran Windows, Linux, and MacOSX.
OpenMP 3.1 fully supported in version 12 compilers.
OpenMP 4.0 supported in version 16 compilers.
Compile with -Qopenmp on Windows, or just -openmp on Linux or Mac OSX
»More information
»PGI C/C++ / Fortran Support for OpenMP 3.1 in all languages on x86 systems running Linux and OS X, and in Fortran and C on Windows.  Compile with -mp to enable OpenMP on all platforms.
More Information on PGI Compilers
»Absoft Pro Fortran Fortran Versions 11.1 and later of the Absoft Fortran 95 compiler for Linux, Windows and Mac OS X include integrated OpenMP 3.0 support.  Compile with -openmp. More information:
»Lahey/Fujitsu Fortran 95 C/C++ / Fortran

The compilers in the software package of ‘Technical Computing Suite for the PRIMEHPC FX100′ support OpenMP 3.1.

»More information

»PathScale C/C++ / Fortran Linux 32/64 bit.EKOPath 6: - CPU only. Fully supports OpenMP 2.5. Supports almost all OpenMP 3.x and 4.0, no OpenMP4 offload directives support.
ENZO2016: - CPU+GPU - Fully supports OpenMP 2.5. Supports almost all OpenMP 3.x and 4.0, includes OpenMP4 offloading
»MS Visual Studio 2008-2010 C++ Implements OpenMP 2.0  Not all versions support OpenMP. Visual Studio 2008 supports OpenMP in the Standard, Professional and Team System Editions. Visual Studio 2010 supports OpenMP in the Professional, Premium and Ultimate Editions. »More Information
»Cray Cray C/C++ and Fortran Cray Compiling Environment (CCE) 8.4 (September 2015) supports OpenMP 4.0. OpenMP is on by default.
»More Information
»NAG nagfor NAG Fortran Complier 6.0 supports OpenMP 3.0 and 3.1 on x86. For x64 Linux, x64 Mac and Windows. Compile with –openmp. »More Information
»OpenUH Research Compiler C/C++/Fortran The OpenUH 3.x compiler has a full open-source implementation of OpenMP 2.5 and near-complete support for OpenMP 3.0 (including explicit task constructs) on Linux 32-bit or 64-bit platforms. For more information or to download:
»LLVM clang Clang is an open-source (permissively licensed) C++ compiler that is available to download at Clang 3.7 release supports OpenMP 3.1 and some elements of OpenMP 4.0 (most notably #pragma omp simd).  Compile and link with -fopenmp=libomp
»LLNL Rose Research Compiler C/C++/Fortran Supports OpenMP 3.0 and some OpenMP 4.0 accelerator features targetting NVIDIA GPUs.
»More information
»Appentra Solutions parallware compiler C The compiler Parallware version 1.2 is a commercial source-to-source parallelizing compiler for Linux. It converts input C sequential source code into output C parallel source code annotated with directives OpenMP 2.5.
»More Information
»Texas Instruments C
OpenMP 3.0 is supported on TI’s Keystone I family of Multicore C66x Digital Signal Processor (DSP) SoCs using the Multicore Software Development Kit MCSDK-C66
OpenMP 3.0 with the device constructs from OpenMP 4.0 is supported on TI’s Keystone II family of C66x+Cortex-A15 SoCs using MCSDK-K2
»BSC Mercurium
C/C++/Fortran From Mercurium version 1.99, OpenMP 3.1 is supported except: the collapse clause, the threadprivate clause in Fortran and OpenMP 3.1 new atomics.  More information:

Test Your Compiler and Environment

Here is a trivial test program that you can use to test your compiler and environment (file hello.c):

#include <omp.h> #include <stdio.h> int main() { #pragma omp parallel printf("Hello from thread %d, nthreads %d\n", omp_get_thread_num(), omp_get_num_threads()); }

Compilation should proceed with no errors or warnings. Execute the output, called variously a.out, a.exe, hello.exe . You should see more than one “Hello” line with different thread numbers. Note that the lines may be mixed together. If you see only one, try setting the environment variable OMP_NUM_THREADS to some number (say 4) and try again.