"OpenMP®" Support for the OpenMP language
The OpenMP subproject of LLVM is intended to contain all of the components required to build an executing OpenMP program that are outside the compiler itself. Support for OpenMP 3.1 in Clang is in the process of being promoted into the Clang mainline, and can be found at OpenMP/Clang.
Here you can find the code for the runtime library against which code compiled by the OpenMP/Clang compiler must be linked before it can run. This code is also available at openmprtl.org; we intend to keep the different sites in sync.
Support for the parts of the OpenMP 4.0 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 an attached computational device. Initial support here is for the Intel® Xeon Phi coprocessor, but work is beginning to support other attached computing devices, and the design is intended to be general. The README.txt in the "offload" directory describes how to build the offload library.
We are, however, still missing test code. Any contributions in that area would be greatly appreciated!
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.
Features and Goals
- Correctness as defined by the OpenMP 3.1 standard (PDF) now, and OpenMP 4.0 standard (PDF) in the future.
- High performance.
- ABI compatibility with Gcc and Intel's existing OpenMP compilers.
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.
The OpenMP runtime is known to work on 32 and 64 bit X86 processors when compiled with either the Intel compiler or gcc, and also the Intel® Xeon Phi™ product family, when compiled with the Intel compiler.
A full OS compatibility matrix is in README.txt
Currently the runtime is built with either gcc or icc. Obviously it would also be good to build with Clang.
Get it and get involved!
First please review our Developer's Policy.
To check out the code, use:
svn co http://llvm.org/svn/llvm-project/openmp/trunk openmp
Full details of how to build are in the README.txt
Send discussions to the (OpenMP mailing list).
- The OpenMP name and the OpenMP logo are registered trademarks of the OpenMP Architecture Review Board.
- Intel is a trademark of Intel Corporation in the U.S. and/or other countries.