227 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			HTML
		
	
	
	
			
		
		
	
	
			227 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="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/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="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>
 |