blob: c43a4e0ebd5903c862ee43c04069852a601e34e3 [file] [log] [blame]
Jim Cownie5e8470a2013-09-27 10:38:44 +00001<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
2 "http://www.w3.org/TR/html4/strict.dtd">
3<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
4<html>
5<head>
6 <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
7 <title>OpenMP* : Support for the OpenMP language</title>
8 <link type="text/css" rel="stylesheet" href="menu.css">
9 <link type="text/css" rel="stylesheet" href="content.css">
10</head>
11
12<body>
13<div id="menu">
14 <div>
15 <a href="http://llvm.org/">LLVM Home</a>
16 </div>
17
18 <div class="submenu">
19 <label>OpenMP Info</label>
20 <a href="/index.html">About</a>
21 </div>
22
23 <div class="submenu">
24 <label>Quick Links</label>
Tanya Lattner856c7322015-08-05 04:04:09 +000025 <a href="http://lists.llvm.org/mailman/listinfo/openmp-dev">openmp-dev</a>
26 <a href="http://lists.llvm.org/mailman/listinfo/openmp-commits">openmp-commits</a>
Jim Cownie5e8470a2013-09-27 10:38:44 +000027 <a href="http://llvm.org/bugs/">Bug Reports</a>
28 <a href="http://llvm.org/svn/llvm-project/openmp/trunk/">Browse SVN</a>
29 <a href="http://llvm.org/viewvc/llvm-project/openmp/trunk/">Browse ViewVC</a>
30 </div>
31</div>
32
33<div id="content">
34 <!--*********************************************************************-->
Jim Cownie4cc4bb42014-10-07 16:25:50 +000035 <h1>OpenMP&reg;: Support for the OpenMP language</h1>
Jim Cownie5e8470a2013-09-27 10:38:44 +000036 <!--*********************************************************************-->
37
38 <p>The OpenMP subproject of LLVM is intended to contain all of the
39 components required to build an executing OpenMP program that are
Andrey Churbanove3ebce62015-05-13 13:42:59 +000040 outside the compiler itself.
Jim Cownie5e8470a2013-09-27 10:38:44 +000041 </p>
42
Jim Cownie4cc4bb42014-10-07 16:25:50 +000043 <p>Here you can find :-
44 <ul>
45 <li>
46 the code for the runtime library against which
47 code compiled by the OpenMP/Clang compiler must be linked before it
48 can run. This code is also available
49 at <a href="http://openmprtl.org/">openmprtl.org</a>; we intend to
50 keep the different sites in sync.
51 </li>
52 <li>
53 the library that supports offload to target devices (in
54 "offload")
55 </li>
56 <li>
57 the OpenUH test-suite which is being integrated.
58 </li>
59 </ul>
Jim Cownie5e8470a2013-09-27 10:38:44 +000060 </p>
61
Jim Cownie33f7b242014-04-09 15:40:23 +000062 <p>Support for the parts of the OpenMP 4.0 language that are not
63 associated with the "target" constructs are contained in the
64 "runtime" directory. Support for offloading computation via the
65 "target" directive is in the separate "offload" directory. That
66 builds a library that provides the interfaces for transferring code
67 and data to an attached computational device. Initial support here
68 is for the Intel&reg Xeon Phi&#0153 coprocessor, but work is
69 beginning to support other attached computing devices, and the
70 design is intended to be general. The README.txt in the "offload"
71 directory describes how to build the offload library.
72 </p>
73
Jim Cownie5e8470a2013-09-27 10:38:44 +000074 <p>All of the code here is <a
75 href="http://llvm.org/docs/DeveloperPolicy.html#license">dual licensed</a>
76 under the MIT license and the UIUC License (a BSD-like license).
77 The LICENSE.txt file at the top of the OpenMP project contains
78 the license text and associated patent grants.
79 </p>
80
81 <!--=====================================================================-->
82 <h2 id="goals">Features and Goals</h2>
83 <!--=====================================================================-->
84
85 <ul>
86 <li>Correctness as defined by the
87 <a href="http://www.openmp.org/mp-documents/OpenMP3.1.pdf">OpenMP
Jim Cownie885d7fa2013-10-03 11:55:28 +000088 3.1 standard (PDF)</a> now, and <a href="http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf">OpenMP
89 4.0 standard (PDF)</a> in the future.</li>
Jim Cownie5e8470a2013-09-27 10:38:44 +000090 <li>High performance.</li>
Jim Cownie885d7fa2013-10-03 11:55:28 +000091 <li>ABI compatibility with <a href="http://gcc.gnu.org">Gcc</a> and
92 <a href="http://software.intel.com/en-us/intel-compilers">Intel's
Jim Cownie18d84732014-05-10 17:02:09 +000093 existing OpenMP compilers.</a>
Jim Cownie4cc4bb42014-10-07 16:25:50 +000094 With this release we have restored compatibility with OpenMP
95 3.1 code compiled by gcc 4.9, however we do not have support
96 for OpenMP 4.0 code that uses task cancellation when compiled
97 by gcc 4.9. How we will support such code remains a research issue.
Jim Cownie885d7fa2013-10-03 11:55:28 +000098 </li>
Jim Cownie5e8470a2013-09-27 10:38:44 +000099 </ul>
100
101 <!--=====================================================================-->
102 <h2 id="why">Why have the runtime code here?</h2>
103 <!--=====================================================================-->
104
105 <p>It makes sense to have the runtime sources in the same place
106 (and with the same license) as the compiler.
107 </p>
108
109 <!--=====================================================================-->
110 <h2 id="requirements">Platform Support</h2>
111 <!--=====================================================================-->
112
Jim Cownie4cc4bb42014-10-07 16:25:50 +0000113 <p>The OpenMP runtime is known to work on
114 <ul>
115 <li>ARM&reg;&nbsp; architecture processors</li>
116 <li>PowerPC&trade;&nbsp; processors</li>
117 <li>32 and 64 bit X86
118 processors when compiled with clang, with the Intel compiler
119 or with gcc, and also the Intel&reg;&nbsp;Xeon Phi&trade; product family, when compiled with
120 the Intel compiler.
121 </li>
122 </ul>
123 Ports to other architectures and operating systems are welcome.
Jim Cownie5e8470a2013-09-27 10:38:44 +0000124 </p>
125
Jim Cownie4cc4bb42014-10-07 16:25:50 +0000126 <p>A full OS and archiecture compatibility matrix is in
Jim Cownie885d7fa2013-10-03 11:55:28 +0000127 <a href="README.txt">README.txt</a>
Jim Cownie5e8470a2013-09-27 10:38:44 +0000128 </p>
129
130
131 <!--=====================================================================-->
Jim Cownie885d7fa2013-10-03 11:55:28 +0000132 <h2 id="dir-structure">Status</h2>
Jim Cownie5e8470a2013-09-27 10:38:44 +0000133 <!--=====================================================================-->
134
Jim Cownie18d84732014-05-10 17:02:09 +0000135 <p>The runtime can be built with gcc, icc or clang. However, note
136 that a runtime built with clang cannot be guaranteed to work with
137 OpenMP code compiled by the other compilers, since clang does not support
138 a 128-bit float type, and cannot therefore generate the code used
139 for reductions of that type (which may occur in user code compiled
140 by the other compilers).
Jim Cownie5e8470a2013-09-27 10:38:44 +0000141 </p>
142
Jim Cownie18d84732014-05-10 17:02:09 +0000143 <p>The University of Houston has kindly contributed their test
144 suite (in the "testsuite" directory). Integration and use of this
Jim Cownie4cc4bb42014-10-07 16:25:50 +0000145 for automatic testing is in progress.
Jim Cownie18d84732014-05-10 17:02:09 +0000146 </p>
Jim Cownie5e8470a2013-09-27 10:38:44 +0000147
148 <!--=====================================================================-->
149 <h2>Get it and get involved!</h2>
150 <!--=====================================================================-->
151
152 <p>First please review our
153 <a href="http://llvm.org/docs/DeveloperPolicy.html">Developer's Policy</a>.
154
155 <p>To check out the code, use:</p>
156
157 <ul>
158 <li><code>svn co http://llvm.org/svn/llvm-project/openmp/trunk openmp</code></li>
159 </ul>
160
161 <p>
Jonathan Peyton89776182015-09-14 17:20:30 +0000162 Note that for an in-tree build, you should check out openmp to llvm/projects.
Jim Cownie5e8470a2013-09-27 10:38:44 +0000163 </p>
Jonathan Peyton89776182015-09-14 17:20:30 +0000164
165 <p>In-tree build:</p>
Jim Cownie5e8470a2013-09-27 10:38:44 +0000166 <ul>
Jonathan Peyton89776182015-09-14 17:20:30 +0000167 <li><code>cd where-you-want-to-live</code></li>
168 <li>Check out openmp into llvm/projects</li>
169 <li><code>cd where-you-want-to-build</code></li>
170 <li><code>mkdir build &amp;&amp; cd build</code></li>
171 <li><code>cmake path/to/llvm -DCMAKE_C_COMPILER=&lt;C compiler&gt; -DCMAKE_CXX_COMPILER=&lt;C++ compiler&gt;</code></li>
172 <li><code>make omp</code></li>
173 </ul>
174
175 <p>Out-of-tree build:</p>
176 <ul>
177 <li><code>cd where-you-want-to-live</code></li>
178 <li>Check out openmp</li>
179 <li><code>cd where-you-want-to-live/openmp/runtime</code></li>
180 <li><code>mkdir build &amp;&amp; cd build</code></li>
181 <li><code>cmake path/to/openmp -DCMAKE_C_COMPILER=&lt;C compiler&gt; -DCMAKE_CXX_COMPILER=&lt;C++ compiler&gt;</code></li>
182 <li><code>make</code></li>
Jim Cownie5e8470a2013-09-27 10:38:44 +0000183 </ul>
184
185 <p>Full details of how to build are in the
Jonathan Peyton89776182015-09-14 17:20:30 +0000186 <a href="README.txt">README.txt</a> and Build_With_CMake.txt (inside the runtime/ subdirectory)
Jim Cownie5e8470a2013-09-27 10:38:44 +0000187 </p>
188
189 <!--=====================================================================-->
190 <h3>Notes</h3>
191 <!--=====================================================================-->
192
193<p>
194
195</p>
196
197 <p>Send discussions to the
Tanya Lattner856c7322015-08-05 04:04:09 +0000198 (<a href="http://lists.llvm.org/mailman/listinfo/openmp-dev">OpenMP mailing list</a>).</p>
Jim Cownie5e8470a2013-09-27 10:38:44 +0000199
200
201 <!--=====================================================================-->
202 <h2>Design Documents</h2>
203 <!--=====================================================================-->
204
205<ul>
Jim Cownie885d7fa2013-10-03 11:55:28 +0000206<li><a href="Reference.pdf">Runtime design (PDF)</a></li>
Jim Cownie5e8470a2013-09-27 10:38:44 +0000207</ul>
208
Jim Cownie885d7fa2013-10-03 11:55:28 +0000209 <!--=====================================================================-->
210 <h2>Copyright notices</h2>
211 <!--=====================================================================-->
212<ul>
213<li>
214 The OpenMP name and the OpenMP logo are registered trademarks of the
215 OpenMP Architecture Review Board.
216</li>
217<li>
218 Intel is a trademark of Intel Corporation in the U.S. and/or other
219 countries.
220</li>
Jim Cownie4cc4bb42014-10-07 16:25:50 +0000221<li>
222 PowerPC is a trademark of IBM Corporation in the U.S. and/or other
223 countries.
224</li>
225<li>
226 ARM is a trademark of ARM Corporation in the U.S. and/or
227 other countries.
228</li>
Jim Cownie885d7fa2013-10-03 11:55:28 +0000229</ul>
Jim Cownie5e8470a2013-09-27 10:38:44 +0000230</div>
231</body>
232</html>