| <!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 | 
 |         "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>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</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 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> |