OpenMP®: Support for the OpenMP language

The OpenMP subproject of LLVM contains the components required to build an executable OpenMP program that are outside the compiler itself.

Here you can find :-

Support for the parts of the OpenMP 4.0 (and later) language that are not associated with the "target" constructs are contained in the "runtime" directory. Support for offloading computation via the "target" directive is in the separate "offload" directory. That builds a library that provides the interfaces for transferring code and data to attached computational devices such as the Intel® Xeon Phi™ coprocessor or GPUs. The README.txt in the "offload" directory describes how to build the offload library.

All of the code here is dual licensed under the MIT license and the UIUC License (a BSD-like license). The LICENSE.txt file at the top of the OpenMP project contains the license text and associated patent grants.

Status

With the release of Clang 3.8.0, OpenMP 3.1 support is enabled in Clang by default, and the OpenMP runtime is therefore built as a normal part of the Clang build, and distributed with the binary distributions.You do not, therefore, need explicitly to check out this code, or build it out of tree; a normal Clang check out and build will automatically include building these runtime libraries.

Features and Goals

Why have the runtime code here?

It makes sense to have the runtime sources in the same place (and with the same license) as the compiler.

Platform Support

The runtime can be built with gcc, icc or clang. However, note that a runtime built with clang cannot be guaranteed to work with OpenMP code compiled by the other compilers, since clang does not support a 128-bit float type, and cannot therefore generate the code used for reductions of that type (which may occur in user code compiled by the other compilers).

The OpenMP runtime is known to work on

Ports to other architectures and operating systems are welcome.

A full OS and archiecture compatibility matrix is in README.txt

Get it and get involved!

First please review our Developer's Policy.

To check out the code, use:

Note that for an in-tree build, you should check out openmp to llvm/projects.

In-tree build:

Out-of-tree build:

Full details of how to build are in the README.txt and Build_With_CMake.txt (inside the runtime/ subdirectory)

Notes

Send discussions to the (OpenMP mailing list).

Design Documents

Copyright notices