mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-26 23:09:03 -04:00

This fixes most references to the paths: llvm.org/svn/ llvm.org/git/ llvm.org/viewvc/ github.com/llvm-mirror/ github.com/llvm-project/ reviews.llvm.org/diffusion/ to instead point to https://github.com/llvm/llvm-project. This is *not* a trivial substitution, because additionally, all the checkout instructions had to be migrated to instruct users on how to use the monorepo layout, setting LLVM_ENABLE_PROJECTS instead of checking out various projects into various subdirectories. I've attempted to not change any scripts here, only documentation. The scripts will have to be addressed separately. Additionally, I've deleted one document which appeared to be outdated and unneeded: lldb/docs/building-with-debug-llvm.txt Differential Revision: https://reviews.llvm.org/D57330 llvm-svn: 352514
227 lines
8.0 KiB
HTML
227 lines
8.0 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="https://github.com/llvm/llvm-project/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="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 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="http://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="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>
|