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 OpenMP 3.1 is supported since GCC 4.7 » GCC OpenMP Wiki Compile with -fopenmp » GCC’s OpenMP Manual »More information
XL C/C++ / Fortran
AIX and Linux. rational/community/cafe/ccpp.html  -  the IBM C/C++ Community for XL Fortran for XL C/C++. »More information
C/C++ / Fortran Oracle Solaris Studio compilers and tools - free download for Solaris and Linux.Oracle Solaris Studio 12.3 compilers support OpenMP 3.1 Compile with -xopenmp »More information »OpenMP User’s Guide »Tools: Thread Analyzer |  Performance Analyzer
C/C++ / Fortran (10.1) Windows, Linux, and MacOSX. Compile with -Qopenmp on Windows, or just -openmp on Linux or Mac OSX »More information
»Portland Group Compilers and Tools C/C++ / Fortran »More Information on PGI Compilers Compile with -mp
»Absoft Pro Fortran Fortran Version 11.1 of the Fortran 95 compiler for Linux, Windows and Mac OS X includes integrated  OpenMP 3.0 support.  Compile with -openmp.  »More Information
»Lahey/Fujitsu Fortran 95 C/C++ / Fortran »More Information
»PathScale C/C++ / Fortran Linux 32/64 bit. »PathScale Compiler Suite User Guide
»HP C/C++ / Fortran »More Information
»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 Supports OpenMP 3.1. 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 Supports OpenMP 3.0. »More Information
»LLVM clang Free and open source (BSD-style license) - Linux, MacOS X OpenMP 3.1 »OpenMP-enabled clang compiler Instructions on how to build an OpenMP-enabled version of the clang Compiler are at » Compile and link with -fopenmp=libomp
»LLNL Research Compiler C/C++/Fortran Supports OpenMP 3.0 and some OpenMP 4.0 accelerator features.  »More information
»Appentra Solutions parallware compiler C Commercial source-to-source parallelizing compiler for Linux.
Compile with -t OpenMP to convert input C sequential source code into output C parallel source code annotated with OpenMP directives.

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.