blob: 3b768e83838fc54bca4d6c2ff4a180eb52b8eb54 [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>
25 <a href="http://lists.cs.uiuc.edu/mailman/listinfo/openmp-dev">openmp-dev</a>
Andrey Churbanovcfda4512013-10-03 07:27:25 +000026 <a href="http://lists.cs.uiuc.edu/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
40 outside the compiler itself. Support for OpenMP 3.1 in Clang is in the
41 process of being promoted into the Clang mainline, and can be
Jim Cownie885d7fa2013-10-03 11:55:28 +000042 found at <a href="http://clang-omp.github.io/">OpenMP/Clang</a>.
Jim Cownie5e8470a2013-09-27 10:38:44 +000043 </p>
44
Jim Cownie4cc4bb42014-10-07 16:25:50 +000045 <p>Here you can find :-
46 <ul>
47 <li>
48 the code for the runtime library against which
49 code compiled by the OpenMP/Clang compiler must be linked before it
50 can run. This code is also available
51 at <a href="http://openmprtl.org/">openmprtl.org</a>; we intend to
52 keep the different sites in sync.
53 </li>
54 <li>
55 the library that supports offload to target devices (in
56 "offload")
57 </li>
58 <li>
59 the OpenUH test-suite which is being integrated.
60 </li>
61 </ul>
Jim Cownie5e8470a2013-09-27 10:38:44 +000062 </p>
63
Jim Cownie33f7b242014-04-09 15:40:23 +000064 <p>Support for the parts of the OpenMP 4.0 language that are not
65 associated with the "target" constructs are contained in the
66 "runtime" directory. Support for offloading computation via the
67 "target" directive is in the separate "offload" directory. That
68 builds a library that provides the interfaces for transferring code
69 and data to an attached computational device. Initial support here
70 is for the Intel&reg Xeon Phi&#0153 coprocessor, but work is
71 beginning to support other attached computing devices, and the
72 design is intended to be general. The README.txt in the "offload"
73 directory describes how to build the offload library.
74 </p>
75
Jim Cownie5e8470a2013-09-27 10:38:44 +000076 <p>All of the code here is <a
77 href="http://llvm.org/docs/DeveloperPolicy.html#license">dual licensed</a>
78 under the MIT license and the UIUC License (a BSD-like license).
79 The LICENSE.txt file at the top of the OpenMP project contains
80 the license text and associated patent grants.
81 </p>
82
83 <!--=====================================================================-->
84 <h2 id="goals">Features and Goals</h2>
85 <!--=====================================================================-->
86
87 <ul>
88 <li>Correctness as defined by the
89 <a href="http://www.openmp.org/mp-documents/OpenMP3.1.pdf">OpenMP
Jim Cownie885d7fa2013-10-03 11:55:28 +000090 3.1 standard (PDF)</a> now, and <a href="http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf">OpenMP
91 4.0 standard (PDF)</a> in the future.</li>
Jim Cownie5e8470a2013-09-27 10:38:44 +000092 <li>High performance.</li>
Jim Cownie885d7fa2013-10-03 11:55:28 +000093 <li>ABI compatibility with <a href="http://gcc.gnu.org">Gcc</a> and
94 <a href="http://software.intel.com/en-us/intel-compilers">Intel's
Jim Cownie18d84732014-05-10 17:02:09 +000095 existing OpenMP compilers.</a>
Jim Cownie4cc4bb42014-10-07 16:25:50 +000096 With this release we have restored compatibility with OpenMP
97 3.1 code compiled by gcc 4.9, however we do not have support
98 for OpenMP 4.0 code that uses task cancellation when compiled
99 by gcc 4.9. How we will support such code remains a research issue.
Jim Cownie885d7fa2013-10-03 11:55:28 +0000100 </li>
Jim Cownie5e8470a2013-09-27 10:38:44 +0000101 </ul>
102
103 <!--=====================================================================-->
104 <h2 id="why">Why have the runtime code here?</h2>
105 <!--=====================================================================-->
106
107 <p>It makes sense to have the runtime sources in the same place
108 (and with the same license) as the compiler.
109 </p>
110
111 <!--=====================================================================-->
112 <h2 id="requirements">Platform Support</h2>
113 <!--=====================================================================-->
114
Jim Cownie4cc4bb42014-10-07 16:25:50 +0000115 <p>The OpenMP runtime is known to work on
116 <ul>
117 <li>ARM&reg;&nbsp; architecture processors</li>
118 <li>PowerPC&trade;&nbsp; processors</li>
119 <li>32 and 64 bit X86
120 processors when compiled with clang, with the Intel compiler
121 or with gcc, and also the Intel&reg;&nbsp;Xeon Phi&trade; product family, when compiled with
122 the Intel compiler.
123 </li>
124 </ul>
125 Ports to other architectures and operating systems are welcome.
Jim Cownie5e8470a2013-09-27 10:38:44 +0000126 </p>
127
Jim Cownie4cc4bb42014-10-07 16:25:50 +0000128 <p>A full OS and archiecture compatibility matrix is in
Jim Cownie885d7fa2013-10-03 11:55:28 +0000129 <a href="README.txt">README.txt</a>
Jim Cownie5e8470a2013-09-27 10:38:44 +0000130 </p>
131
132
133 <!--=====================================================================-->
Jim Cownie885d7fa2013-10-03 11:55:28 +0000134 <h2 id="dir-structure">Status</h2>
Jim Cownie5e8470a2013-09-27 10:38:44 +0000135 <!--=====================================================================-->
136
Jim Cownie18d84732014-05-10 17:02:09 +0000137 <p>The runtime can be built with gcc, icc or clang. However, note
138 that a runtime built with clang cannot be guaranteed to work with
139 OpenMP code compiled by the other compilers, since clang does not support
140 a 128-bit float type, and cannot therefore generate the code used
141 for reductions of that type (which may occur in user code compiled
142 by the other compilers).
Jim Cownie5e8470a2013-09-27 10:38:44 +0000143 </p>
144
Jim Cownie18d84732014-05-10 17:02:09 +0000145 <p>The University of Houston has kindly contributed their test
146 suite (in the "testsuite" directory). Integration and use of this
Jim Cownie4cc4bb42014-10-07 16:25:50 +0000147 for automatic testing is in progress.
Jim Cownie18d84732014-05-10 17:02:09 +0000148 </p>
Jim Cownie5e8470a2013-09-27 10:38:44 +0000149
150 <!--=====================================================================-->
151 <h2>Get it and get involved!</h2>
152 <!--=====================================================================-->
153
154 <p>First please review our
155 <a href="http://llvm.org/docs/DeveloperPolicy.html">Developer's Policy</a>.
156
157 <p>To check out the code, use:</p>
158
159 <ul>
160 <li><code>svn co http://llvm.org/svn/llvm-project/openmp/trunk openmp</code></li>
161 </ul>
162
163 <p>
164 Next:
165 </p>
166
167 <ul>
168 <li><code>cd openmp/runtime</code></li>
169 <li><code>make compiler=gcc</code></li>
170 </ul>
171
172 <p>Full details of how to build are in the
Jim Cownie885d7fa2013-10-03 11:55:28 +0000173 <a href="README.txt">README.txt</a>
Jim Cownie4cc4bb42014-10-07 16:25:50 +0000174 which also describes a CMake based build system which may be more
175 convenient on some platforms and for porting to new platforms than
176 the make and Perl based system.
Jim Cownie5e8470a2013-09-27 10:38:44 +0000177 </p>
178
179 <!--=====================================================================-->
180 <h3>Notes</h3>
181 <!--=====================================================================-->
182
183<p>
184
185</p>
186
187 <p>Send discussions to the
188 (<a href="http://lists.cs.uiuc.edu/mailman/listinfo/openmp-dev">OpenMP mailing list</a>).</p>
189
190
191 <!--=====================================================================-->
192 <h2>Design Documents</h2>
193 <!--=====================================================================-->
194
195<ul>
Jim Cownie885d7fa2013-10-03 11:55:28 +0000196<li><a href="Reference.pdf">Runtime design (PDF)</a></li>
Jim Cownie5e8470a2013-09-27 10:38:44 +0000197</ul>
198
Jim Cownie885d7fa2013-10-03 11:55:28 +0000199 <!--=====================================================================-->
200 <h2>Copyright notices</h2>
201 <!--=====================================================================-->
202<ul>
203<li>
204 The OpenMP name and the OpenMP logo are registered trademarks of the
205 OpenMP Architecture Review Board.
206</li>
207<li>
208 Intel is a trademark of Intel Corporation in the U.S. and/or other
209 countries.
210</li>
Jim Cownie4cc4bb42014-10-07 16:25:50 +0000211<li>
212 PowerPC is a trademark of IBM Corporation in the U.S. and/or other
213 countries.
214</li>
215<li>
216 ARM is a trademark of ARM Corporation in the U.S. and/or
217 other countries.
218</li>
Jim Cownie885d7fa2013-10-03 11:55:28 +0000219</ul>
Jim Cownie5e8470a2013-09-27 10:38:44 +0000220</div>
221</body>
222</html>