forked from OSchip/llvm-project
244 lines
8.8 KiB
HTML
244 lines
8.8 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="http://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="http://lists.llvm.org/mailman/listinfo/openmp-dev">openmp-dev</a>
|
|
<a href="http://lists.llvm.org/mailman/listinfo/openmp-commits">openmp-commits</a>
|
|
<a href="http://llvm.org/bugs/">Bug Reports</a>
|
|
<a href="http://llvm.org/svn/llvm-project/openmp/trunk/">Browse SVN</a>
|
|
<a href="http://llvm.org/viewvc/llvm-project/openmp/trunk/">Browse ViewVC</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
|
|
"offload")
|
|
</li>
|
|
<li>
|
|
the OpenUH test-suite used to validate the OpenMP runtime
|
|
</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 "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.
|
|
</p>
|
|
|
|
<p>All of the code here is <a
|
|
href="http://llvm.org/docs/DeveloperPolicy.html#license">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="http://www.openmp.org/mp-documents/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="http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf">OpenMP
|
|
4.0 standard (PDF)</a> and <a href="http://www.openmp.org/mp-documents/OpenMP4.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="http://gcc.gnu.org">Gcc</a> and
|
|
<a href="http://software.intel.com/en-us/intel-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>
|
|
</ul>
|
|
Ports to other architectures and operating systems are welcome.
|
|
</p>
|
|
|
|
<p>A full OS and archiecture 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="http://llvm.org/docs/DeveloperPolicy.html">Developer's Policy</a>.
|
|
|
|
<p>To check out the code, use:</p>
|
|
|
|
<ul>
|
|
<li><code>svn co http://llvm.org/svn/llvm-project/openmp/trunk openmp</code></li>
|
|
</ul>
|
|
|
|
<p>
|
|
Note that for an in-tree build, you should check out openmp to llvm/projects.
|
|
</p>
|
|
|
|
<p>In-tree build:</p>
|
|
<ul>
|
|
<li><code>cd where-you-want-to-live</code></li>
|
|
<li>Check out openmp into llvm/projects</li>
|
|
<li><code>cd where-you-want-to-build</code></li>
|
|
<li><code>mkdir build && cd build</code></li>
|
|
<li><code>cmake path/to/llvm -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 where-you-want-to-live</code></li>
|
|
<li>Check out openmp</li>
|
|
<li><code>cd where-you-want-to-live/openmp/runtime</code></li>
|
|
<li><code>mkdir build && cd build</code></li>
|
|
<li><code>cmake path/to/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 Build_With_CMake.txt (inside the runtime/ subdirectory)
|
|
</p>
|
|
|
|
<!--=====================================================================-->
|
|
<h3>Notes</h3>
|
|
<!--=====================================================================-->
|
|
|
|
<p>
|
|
|
|
</p>
|
|
|
|
<p>Send discussions to the
|
|
(<a href="http://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>
|