forked from OSchip/llvm-project
228 lines
8.1 KiB
HTML
228 lines
8.1 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
|
"http://www.w3.org/TR/html4/strict.dtd">
|
|
<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
|
|
<html>
|
|
<head>
|
|
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
|
<title>OpenMP* : Support for the OpenMP language</title>
|
|
<link type="text/css" rel="stylesheet" href="menu.css">
|
|
<link type="text/css" rel="stylesheet" href="content.css">
|
|
</head>
|
|
|
|
<body>
|
|
<div id="menu">
|
|
<div>
|
|
<a href="https://llvm.org/">LLVM Home</a>
|
|
</div>
|
|
|
|
<div class="submenu">
|
|
<label>OpenMP Info</label>
|
|
<a href="/index.html">About</a>
|
|
</div>
|
|
|
|
<div class="submenu">
|
|
<label>Quick Links</label>
|
|
<a href="https://lists.llvm.org/mailman/listinfo/openmp-dev">openmp-dev</a>
|
|
<a href="https://lists.llvm.org/mailman/listinfo/openmp-commits">openmp-commits</a>
|
|
<a href="https://bugs.llvm.org/">Bug Reports</a>
|
|
<a href="https://github.com/llvm/llvm-project/tree/master/openmp">Browse Sources</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="content">
|
|
<!--*********************************************************************-->
|
|
<h1>OpenMP®: Support for the OpenMP language</h1>
|
|
<!--*********************************************************************-->
|
|
|
|
<p>The OpenMP subproject of LLVM contains the
|
|
components required to build an executable OpenMP program that are
|
|
outside the compiler itself.
|
|
</p>
|
|
|
|
<p>Here you can find :-
|
|
<ul>
|
|
<li>
|
|
the code for the runtime library against which
|
|
code compiled by <tt>clang -fopenmp</tt> must be linked before it
|
|
can run.
|
|
</li>
|
|
<li>
|
|
the library that supports offload to target devices (in
|
|
"libomptarget")
|
|
</li>
|
|
</ul>
|
|
</p>
|
|
|
|
<p>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 "libomptarget" directory.
|
|
</p>
|
|
|
|
<p>All of the code here is <a
|
|
href="https://llvm.org/docs/DeveloperPolicy.html#copyright-license-and-patents">dual licensed</a>
|
|
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.
|
|
</p>
|
|
|
|
<!--=====================================================================-->
|
|
<h2 id="dir-structure">Status</h2>
|
|
<!--=====================================================================-->
|
|
|
|
<p>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.
|
|
</p>
|
|
|
|
<!--=====================================================================-->
|
|
<h2 id="goals">Features and Goals</h2>
|
|
<!--=====================================================================-->
|
|
|
|
<ul>
|
|
<li>Support for the <a href="https://www.openmp.org/wp-content/uploads/OpenMP3.1.pdf">OpenMP
|
|
3.1 standard (PDF)</a> has been achieved in the Clang 3.8.0
|
|
release.
|
|
</li>
|
|
|
|
<li>Support for the
|
|
<a href="https://www.openmp.org/wp-content/uploads/OpenMP4.0.0.pdf">OpenMP
|
|
4.0 standard (PDF)</a> and <a href="https://www.openmp.org/wp-content/uploads/openmp-4.5.pdf">OpenMP
|
|
4.5 standard (PDF)</a> is now being implemented. (Some OpenMP 4.0
|
|
and 4.5 features are already available).
|
|
<li>High performance.</li>
|
|
<li>ABI compatibility with <a href="https://gcc.gnu.org">Gcc</a> and
|
|
<a href="https://software.intel.com/en-us/compilers">Intel's
|
|
existing OpenMP compilers.</a>
|
|
We currently have binary compatibility with OpenMP
|
|
3.1 code compiled by gcc 4.9, however we do not have support
|
|
for OpenMP 4.0 code that uses task cancellation when compiled
|
|
by gcc 4.9. How we will support such code remains a research issue.
|
|
</li>
|
|
</ul>
|
|
|
|
<!--=====================================================================-->
|
|
<h2 id="why">Why have the runtime code here?</h2>
|
|
<!--=====================================================================-->
|
|
|
|
<p>It makes sense to have the runtime sources in the same place
|
|
(and with the same license) as the compiler.
|
|
</p>
|
|
|
|
<!--=====================================================================-->
|
|
<h2 id="requirements">Platform Support</h2>
|
|
<!--=====================================================================-->
|
|
|
|
<p>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).
|
|
</p>
|
|
|
|
<p>The OpenMP runtime is known to work on
|
|
<ul>
|
|
<li>ARM® architecture processors</li>
|
|
<li>PowerPC™ processors</li>
|
|
<li>32 and 64 bit X86
|
|
processors when compiled with clang, with the Intel compiler
|
|
or with gcc, and also the Intel® Xeon Phi™ product family, when compiled with
|
|
the Intel compiler.
|
|
</li>
|
|
<li>MIPS and MIPS64</li>
|
|
<li>RISC-V 64-bit</li>
|
|
</ul>
|
|
Ports to other architectures and operating systems are welcome.
|
|
</p>
|
|
|
|
<p>A full OS and architecture compatibility matrix is in
|
|
<a href="README.txt">README.txt</a>
|
|
</p>
|
|
|
|
|
|
<!--=====================================================================-->
|
|
<h2>Get it and get involved!</h2>
|
|
<!--=====================================================================-->
|
|
|
|
<p>First please review our
|
|
<a href="https://llvm.org/docs/DeveloperPolicy.html">Developer's Policy</a>.
|
|
|
|
<p>To check out the code, use:</p>
|
|
|
|
<ul>
|
|
<li><code>git clone https://github.com/llvm/llvm-project.git</code></li>
|
|
</ul>
|
|
|
|
<p>In-tree build:</p>
|
|
<ul>
|
|
<li><code>cd llvm-project</code></li>
|
|
<li><code>mkdir build && cd build</code></li>
|
|
<li><code>cmake ../llvm -DLLVM_ENABLE_PROJECTS=openmp -DCMAKE_C_COMPILER=<C compiler> -DCMAKE_CXX_COMPILER=<C++ compiler></code></li>
|
|
<li><code>make omp</code></li>
|
|
</ul>
|
|
|
|
<p>Out-of-tree build:</p>
|
|
<ul>
|
|
<li><code>cd llvm-project</code></li>
|
|
<li><code>mkdir build-openmp && cd build-openmp</code></li>
|
|
<li><code>cmake ../openmp -DCMAKE_C_COMPILER=<C compiler> -DCMAKE_CXX_COMPILER=<C++ compiler></code></li>
|
|
<li><code>make</code></li>
|
|
</ul>
|
|
|
|
<p>Full details of how to build are in the
|
|
<a href="README.txt">README.txt</a> and README.rst in the source code repository.
|
|
</p>
|
|
|
|
<!--=====================================================================-->
|
|
<h3>Notes</h3>
|
|
<!--=====================================================================-->
|
|
|
|
<p>
|
|
|
|
</p>
|
|
|
|
<p>Send discussions to the
|
|
(<a href="https://lists.llvm.org/mailman/listinfo/openmp-dev">OpenMP mailing list</a>).</p>
|
|
|
|
|
|
<!--=====================================================================-->
|
|
<h2>Design Documents</h2>
|
|
<!--=====================================================================-->
|
|
|
|
<ul>
|
|
<li><a href="Reference.pdf">Runtime design (PDF)</a></li>
|
|
</ul>
|
|
|
|
<!--=====================================================================-->
|
|
<h2>Copyright notices</h2>
|
|
<!--=====================================================================-->
|
|
<ul>
|
|
<li>
|
|
The OpenMP name and the OpenMP logo are registered trademarks of the
|
|
OpenMP Architecture Review Board.
|
|
</li>
|
|
<li>
|
|
Intel is a trademark of Intel Corporation in the U.S. and/or other
|
|
countries.
|
|
</li>
|
|
<li>
|
|
PowerPC is a trademark of IBM Corporation in the U.S. and/or other
|
|
countries.
|
|
</li>
|
|
<li>
|
|
ARM is a trademark of ARM Corporation in the U.S. and/or
|
|
other countries.
|
|
</li>
|
|
<li>
|
|
MIPS is a trademark of MIPS Computer Systems in the U.S. and/or
|
|
other countries.
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|