blob: 02b58ffdd67fd22aa6ef72e13b47e74064b93302 [file] [log] [blame]
Johannes Doerfert5aa21942014-08-13 17:49:161<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
Tobias Grosserfe6d9842011-05-02 07:48:292 "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>Polly - Polyhedral optimizations for LLVM</title>
8 <link type="text/css" rel="stylesheet" href="menu.css">
9 <link type="text/css" rel="stylesheet" href="content.css">
Tobias Grosser54da06c2011-12-13 15:07:0010 <script src="video-js/video.js" type="text/javascript" charset="utf-8"></script>
11 <script type="text/javascript">
12 VideoJS.setupAllWhenReady();
13 </script>
14
15 <!-- Include the VideoJS Stylesheet -->
16 <link rel="stylesheet" href="video-js/video-js.css" type="text/css" media="screen" title="Video JS">
Tobias Grosserfe6d9842011-05-02 07:48:2917</head>
18<body>
Tobias Grosserca4ca282013-12-19 22:50:1019<div id="box">
Tobias Grosserfe6d9842011-05-02 07:48:2920<!--#include virtual="menu.html.incl"-->
21<div id="content">
22 <!--*********************************************************************-->
Tobias Grosser7110f332013-12-20 00:53:0123 <h1>About Polly</h1>
Tobias Grosserfe6d9842011-05-02 07:48:2924 <!--*********************************************************************-->
25
Tobias Grosserca493da2014-03-21 09:34:3426 <p> Polly is a high-level loop and data-locality optimizer and optimization
27 infrastructure for LLVM. It uses an abstract mathematical representation based
28 on integer polyhedra to analyze and optimize the memory access pattern of a
29 program. We currently perform classical loop transformations, especially
30 tiling and loop fusion to improve data-locality. Polly can also exploit
31 OpenMP level parallelism, expose SIMDization opportunities. Work has also be
32 done in the area of automatic GPU code generation.</p>
33
Tobias Grosser8d614d02014-06-10 20:18:1634 For many users, however, it's not the existing optimizations in Polly that are
35 of most interest, but the new analyses and optimizations enabled by the Polly
36 infrastructure. At
Tobias Grosserca493da2014-03-21 09:34:3437 <a href="http://polyhedral.info">polyhedral.info</a> you can get an idea of
38 what has already been done and what is possible in the context of polyhedral
39 compilation.
Tobias Grosserfe6d9842011-05-02 07:48:2940
Tobias Grosserfe6d9842011-05-02 07:48:2941 <!--=====================================================================-->
Tobias Grosser40c163a2011-12-13 14:53:2542 <h2>News</h2>
Tobias Grosserfe6d9842011-05-02 07:48:2943 <!--=====================================================================-->
44
Tobias Grosser40c163a2011-12-13 14:53:2545 <table id="news">
Tobias Grosserc4a80162016-04-29 12:35:4646 <tr><td><b>2016</b></td></tr>
47 <tr><td width="120"><p>April</p></td>
48 <td>
49 A source checkout that contains Polly now provides Polly functionality
50 by default in clang/opt/bugpoint without the need to load an additional
51 module.
52 </td>
53 </tr>
Johannes Doerfertc28197e2015-02-28 14:46:2654 <tr><td><b>2015</b></td></tr>
Tobias Grosser234a4822015-08-15 09:34:3355 <tr><td width="120"><p>July</p></td>
56 <td>
57 <h4>AST Generation Paper published in TOPLAS</h4>
58 The July issue of TOPLAS contains a 50 page discussion of the AST
59 generation techniques used in Polly. This discussion gives not only an
60 in-depth description of how we (re)generate an imperative AST from our
61 polyhedral based mathematical program description, but also gives
62 interesting insights about:
63 <ul>
64 <li><b>Schedule trees:</b> A tree-based mathematical program description
65 that enables us to perform loop transformations on an abstract level,
66 while issues like the generation of the correct loop structure and loop
67 bounds will be taken care of by our AST generator.
68 <li><b>Polyhedral unrolling:</b> We discuss techniques that allow the
69 unrolling of non-trivial loops in the context of parameteric loop bounds,
70 complex tile shapes and conditionally executed statements. Such unrolling
71 support enables the generation of predicated code e.g. in the context of
72 GPGPU computing.
73 <li><b>Isolation for full/partial tile separation:</b> We discuss native
74 support for handling full/partial tile separation and -- in general --
75 native support for isolation of boundary cases to enable smooth code
76 generation for core computations.
77 <li><b>AST generation with modulo constraints:</b> We discuss how modulo
78 mappings are lowered to efficient C/LLVM code.
79 <li><b>User-defined constraint sets for run-time checks</b> We discuss how
80 arbitrary sets of constraints can be used to automatically create run-time
81 checks that ensure a set of constrainst actually hold. This feature is
82 very useful to verify at run-time various assumptions that have been taken
83 program optimization.
84 </ul>
85
86 <a href="http://www.grosser.es#pub-polyhedral-AST-generation">
87 <em>Polyhedral AST generation is more than scanning polyhedra</em></a><br />
88 Tobias Grosser, Sven Verdoolaege, Albert Cohen<br />
89 ACM Transations on Programming Languages and Systems (TOPLAS), 37(4),
90 July 2015
91
92 <br>
93 <br>
94 <br>
95 <br>
96 </td>
97 </tr>
Johannes Doerfertc28197e2015-02-28 14:46:2698 <tr><td width="120"><p>February</p></td>
99 <td>
Johannes Doerfertd40991b2015-02-28 14:48:15100 <h4>Polly allows now non-affine subregions</h4>
101 Data-dependent or floating point conditionals inside a SCoP can now be
102 overapproximated in order to increase the applicability on general purpose
103 code.
104 </td>
Johannes Doerfertc28197e2015-02-28 14:46:26105 </tr>
Tobias Grosserd4521052014-01-06 09:51:38106 <tr><td><b>2014</b></td></tr>
Johannes Doerfert5aa21942014-08-13 17:49:16107 <tr><td width="120"><p>August</p></td>
108 <td>
109 <h4>Polly drops the support of ScopLib and the external optimizer PoCC</h4>
110 The support for ScopLib as an exchange format has been removed as recent
111 versions of clan, candl and pluto all support the OpenScop exchange format.
112
113 The support of the external optmizer PoCC has been dropped in favor of the
114 isl optimizer (default) and the still available pluto support.
115 </td>
116 </tr>
117 <tr><td><b>2014</b></td></tr>
Tobias Grosserd2851612014-06-04 09:26:39118 <tr><td width="120"><p>June</p></td>
119 <td>
120 <h4>Polly can be built without GPL licensed software</h4> After Sebastian
121 Pop's
122 and David Peixotto's (both Qualcomm) recent <a
123 href="http://repo.or.cz/w/isl.git/commit/60703e3ee89b9d5d4d1afb6a3f611292c0884574">commit</a>
124 to isl, isl's latest development version can be built with imath instead of
125 GMP. With both CLooG and gmp having become optional, the last obilgatory
126 dependency to GPL licensed software has been removed. Now Polly only depends
127 on isl (and the included imath), which are both MIT licensed.
128 </td>
129 </tr>
Tobias Grosserd7c5e512014-04-03 18:56:13130 <tr><td width="120"><p>April</p></td>
131 <td>
Tobias Grosser36e997f2014-04-23 18:09:24132 <h4>Polly Phone Call - 23April</h4>
133 We had a polly phone call about delinearizing array accesses (II)<a
134 href="https://docs.google.com/document/d/1IZewI8Up0iEkCNIPr6gVtwJxF7RV6KmXkdwOBM_Q5Cs/edit?usp=sharing ">Meeting notes</a> are available online.
Tobias Grosser6e4dea22014-04-17 19:59:38135 <h4>Polly Phone Call - 17th April</h4>
136 We had a polly phone call about delinearizing array accesses <a
137 href="https://docs.google.com/document/d/14d3ehkH2MsvBdqsEOSYjysH0Ztyzb75Lp843hnxh2IA/edit?usp=sharing">Meeting notes</a> are available online.
Tobias Grosser77011942014-04-10 18:44:50138 <h4>Polly Phone Call - 10th April</h4>
139 We had a polly phone call. <a
140 href="https://docs.google.com/document/d/12W-qZjiZGEQ_lVrob4OzvKJI3EooonC-ap1b9f9KCUE/edit?usp=sharing">Meeting notes</a> are available online.
141 <h4>Polly Phone Call - 4th April</h4>
Tobias Grosserd7c5e512014-04-03 18:56:13142 We had a polly phone call. <a
143 href="https://drive.google.com/folderview?id=0B7OMOXTgCYIUWkpJbWVJcW04ams&usp=sharing">Meeting notes</a> are available online.
144 </td>
145 </tr>
Sebastian Pop76369972014-03-19 21:31:09146 <tr><td width="120"><p>March</p></td>
147 <td>
148 <h4>Static link Polly into tools</h4> Polly can now be configured with 'cmake
149 -D LINK_POLLY_INTO_TOOLS:Bool=ON' to be statically linked in the tools (opt,
150 bugpoint, and clang.) This makes it easier to use polly without having to load
151 a shared library, and it also reduces the complexity of compiling Polly on
152 Windows.
153 </td>
154 </tr>
Tobias Grosser3b49fdb2014-02-19 21:58:56155 <tr><td width="120"><p>February</p></td>
156 <td>
157 <h4>Polly presentation at FOSDEM 2014</h4> Polly was <a
158 href="https://fosdem.org/2014/schedule/event/polly/">presented</a> at the
159 FOSDEM LLVM developer's meeting.
160 <h4>New LLVM test-suite buildbots</h4>
161 The set of <a href="http://lab.llvm.org:8011/console?category=polly">Polly
162 buildbots</a> has been extended. We now have 16 new blades that track
163 correctness and performance when compiling the LLVM test-suite. For now five
Sebastian Pop76369972014-03-19 21:31:09164 of them are used to provide <a
Tobias Grosser3b49fdb2014-02-19 21:58:56165 href="http://llvm.org/perf/db_default/v4/nts/22463">fine granularity
166 reports</a> (almost per-commit)
167 for 'clang -O3' (no polly). We also have six machines that track different
168 configurations of polly.
169 </td>
170 </tr>
Tobias Grosserd4521052014-01-06 09:51:38171 <tr><td width="120"><p>January</p></td>
172 <td>
173 <h4>islplot released</h4>
174 <a href="https://github.com/tobig/islplot">islplot</a> is a library that
175 generates illustrations of integer sets and maps. It relies on <a
176 href="http://repo.or.cz/w/isl.git">isl</a> to model the integer sets and uses the <a
177 href="https://pypi.python.org/pypi/islpy">islpy</a> Python bindings to access
178 them. Plotting is performed with <a
179 href="http://matplotlib.org">matplotlib</a>. The following <a
180 href="http://nbviewer.ipython.org/github/tobig/islplot/blob/master/notebooks/islplot-examples.ipynb">
Tobias Grosser2cc94632014-01-06 09:52:42181 Examples</a> show its use.
Tobias Grosser20b99662014-01-06 09:53:00182 </td>
Tobias Grosserd4521052014-01-06 09:51:38183 </tr>
Tobias Grosser8aa20902013-10-26 10:01:42184 <tr><td><b>2013</b></td></tr>
Tobias Grosserce464722013-10-26 10:08:35185 <tr><td width="120"><p>November</p></td>
186 <td>
187 <h4>Loop optimization BoF at upcoming LLVM conference</h4>
188 At the upcoming <a href="http://llvm.org/devmtg/2013-11/#bof5">LLVM conference
189 </a> there will be a loop optimization BoF discussing Polly and other high
190 level loop optimizers.
191 </td>
192 </tr>
Tobias Grosser8aa20902013-10-26 10:01:42193 <tr><td width="120"><p>October</p></td>
194 <td>
Tobias Grosser1bb26832013-10-26 10:01:52195 <h4>Automatic code coverage and static analysis tests</h4>
Sylvestre Ledru6a20b7e2013-10-29 11:05:18196 Sylvestre Ledru set up automatic tests for <a
Tobias Grosser8aa20902013-10-26 10:01:42197 href="http://buildd-clang.debian.net/coverage/">code coverage</a> and
198 <a href="http://buildd-clang.debian.net/scan-build/">static analysis</a>
199 which run at least once a day and which include results for Polly.
Tobias Grosser1bb26832013-10-26 10:01:52200 <h4>Move to CLooG 0.18.1 and isl 0.12.1</h4>
201 With the move to an isl 0.12 version Polly can be compiled without the
Tobias Grosser556416d2013-12-20 09:49:24202 need to link directly to GMP (if isl is used for code generation). Currently
Tobias Grosser1bb26832013-10-26 10:01:52203 isl is still internally using GMP, but private patches exist to also remove
204 this dependency. Without the use of GMP, a <b>GPL free</b> version of Polly
205 is possible.
Tobias Grosser8aa20902013-10-26 10:01:42206 </td></tr>
Tobias Grosser1bb26832013-10-26 10:01:52207
Tobias Grosserccda0d52012-01-31 09:13:12208 <tr><td><b>2012</b></td></tr>
Tobias Grosser16242da2012-12-29 17:40:09209 <tr><td width="120"><p>December</p></td>
210 <td>
Tobias Grosser1bb26832013-10-26 10:01:52211 <h4> New publication in the PPL Journal
212 </h4>
213
214 We published a journal version of the Polly paper named
215 <em>
216 Polly - Performing polyhedral optimizations on a low-level intermediate
217 representation</em> in the Parallel Processing Letters 2012.
Tobias Grosser16242da2012-12-29 17:40:09218 </td></tr>
Tobias Grosserf6e69802012-10-07 17:43:18219 <tr><td width="120"><p>September</p></td>
220 <td>
Tobias Grosser1bb26832013-10-26 10:01:52221 <h4>Experimental support for the <b>new isl code generator</b></h4>
222 The code generator can be parameterized on a fine-grained
Tobias Grosserf6e69802012-10-07 17:43:18223 level. It gives direct control for example over unrolling, the amount of
224 control overhead and the code size. It can also be used to
225 create loops to handle border conditions or to perform full-partial tile
226 separation.<br />
227 We also relicensed isl under the <b>MIT license</b>. This means, with the
Tobias Grosserff639682012-10-12 07:44:38228 exception of GMP (LGPL), there is no other (L)GPL licensed software used in
229 Polly. The
Tobias Grosserf6e69802012-10-07 17:43:18230 use of GMP is limited to a well defined interface. Replacing it with
231 a BSD licensed replacement is a tractable engineering project we would
232 be very interested in. For more information about isl see the <a
233 href="http://www.kotnet.org/~skimo/isl/manual.pdf">isl manual</a>.
234 </p>
235 </td></tr>
236 <tr><td width="120"><p>July</p></td>
237 <td>
238 <p> Polly can now be directly linked to the <a
239href="http://pluto-compiler.sourceforge.net/">Pluto optimizer</a>. We were
Tobias Grosser556416d2013-12-20 09:49:24240already able to perform Pluto-like optimizations with Polly, as a similar
Tobias Grosserf6e69802012-10-07 17:43:18241algorithm was added to isl half a year ago. However, being able to directly
242compare with the original implementation will not only bring in competition in
243the optimizer field. It will also allow new experiments with a cutting edge
244research tool.<br \>
245 This support was on of the outcomes of the 1-day Polly workshop and the
246 following week of joint work at IISC Bangalore and in cooperation with
247 AMD India.
248 </td></tr>
249 <td>
250 </td></tr>
Tobias Grosserbe3df7b2012-02-20 08:41:55251 <tr><td width="120"><p>February</p></td>
252 <td>
253 <p>Polly is an official LLVM project, reachable at <a
254 href="http://polly.llvm.org">http://polly.llvm.org</a></p>
255 </td></tr>
Tobias Grosserccda0d52012-01-31 09:13:12256 <tr><td width="120"><p>January</p></td>
257 <td>
258 <p>Improved support for the isl scheduling optimizer</p>
Tobias Grosser1f1daa92012-01-31 19:54:50259 Polly can now automatically optimize all <a
260 href="http://www.cse.ohio-state.edu/~pouchet/software/polybench/">polybench
261 2.0</a> kernels without the help of
262 an external optimizer. The compile time is reasonable and we can show
Tobias Grosserccda0d52012-01-31 09:13:12263 notable speedups for various kernels.
264 </td></tr>
265
266 <tr>
267 <tr><td><b><br/>2011</b></td></tr>
Tobias Grosser40c163a2011-12-13 14:53:25268 <tr><td width="120"><p>November</p></td>
269 <td>
270 <p>
271 Talk at the <a href="http://llvm.org/devmtg/2011-11/">
272 LLVM Developer Meeting 2011</a></p>
273 New SCEV parser<br>
274 (Allows parameters in array subscript and max/signextend)
275 </td></tr>
276
277 <tr>
278 <td><p>October</p></td>
279 <td>
280 <p>Polly can use the isl schedule optimizer<br>
281 (The optimizer is similar to the one in Pluto, but it is part of isl)
282 </p>
283 </td></tr>
284
285 <tr>
286 <td><p>August</p></td>
287 <td>
288 <p>
289 <a href="example_load_Polly_into_clang.html">Use Polly as
290 clang plugin</a></p>
291 </td>
292 </tr>
293
294 <tr>
295 <td><p>July</p></td>
296 <td>
297 <p> Polly builder as part of the <a
Tobias Grosser57bc0262011-10-23 11:01:07298 href="http://lab.llvm.org:8011/console">LLVM Buildbots</a>
Tobias Grosser40c163a2011-12-13 14:53:25299 </p>
300 </td>
301 </tr>
302
303 <tr>
304 <td><p>June</p></td>
305 <td>
306 <p><a href="http://www.grosser.es">Tobias</a> is founded for
307 three years by a <a
Tobias Grosser1dbc8a02011-06-30 14:32:33308 href="http://research.google.com/university/relations/fellowship_recipients.html">
309 Google Europe Fellowship in Efficient Computing</a>.
Tobias Grosser40c163a2011-12-13 14:53:25310 </p>
311 </td>
312 </tr>
313
314 <tr>
315 <td><p>May </p></td>
316 <td><p><a href="http://www.grosser.es">Tobias</a>' diploma thesis and
Johannes Doerfert5aa21942014-08-13 17:49:16317 Raghesh's master thesis. See our <a
Tobias Grosser40c163a2011-12-13 14:53:25318 href="publications.html">list of publications</a>.</p></td>
319 </tr>
320
321 <tr>
322 <td><p>April</p></td>
323 <td><p>Polly moves to the LLVM infrastructure (svn, bugtracker)</p></td>
324 </tr>
325
326 <tr>
327 <td><p>March</p></td>
328 <td><p>Presentation at <a
329 href="http://impact2011.inrialpes.fr/">CGO/IMPACT</a></p>
330 <p>Polly can compile
331 polybench 2.0 with vectorization and OpenMP code generation</p>
332 </td>
333 </tr>
334 <tr>
335 <td><p>Februar</p></td>
336 <td><p>pollycc - a script to automatically compile with
337 polyhedral optimizations </p></td>
338 </tr>
339
340 <tr>
341 <td><p> Januar</p></td>
342 <td><p> Basic OpenMP support, Alias analysis integration,
343 Pluto/POCC support </p></td>
344 </tr>
345
346 <tr><td><b><br>2010</b></td></tr>
347 <tr>
348 <td><p> Dezember </p></td>
349 <td><p>Basic vectorization support </p></td>
350 </tr>
351
352 <tr>
353 <td><p> November </p></td>
354 <td><p>Talk at the <a
355 href="http://llvm.org/devmtg/2010-11/">LLVM Developer Meeting</a> </p></td>
356 </tr>
357
358 <tr>
359 <td><p>October</p></td>
360 <td><p>Dependency analysis </p>
361 <p>Finished Phase 1 - Get something working </p>
362 <p>Support scalar dependences and sequential SCoPs </p>
363 </td>
364 </tr>
365
366 <tr>
367 <td><p>August</p></td>
368 <td><p>RegionInfo pass committed to LLVM</p>
369 <p>llvm-test suite compiles </p>
370 </td>
371 </tr>
372
373 <tr>
374 <td><p>July</p></td>
375 <td><p>Code generation works for normal SCoPs. </p></td>
376 </tr>
377
378 <tr>
Tobias Grosser40c163a2011-12-13 14:53:25379 <td><p>May</p></td>
380 <td><p>The CLooG AST can be parsed.</p>
381 </td>
382 </tr>
383
384 <tr>
385 <td><p>April</p></td>
386 <td><p>SCoPs can automatically be detected. </p></td>
387 </tr>
388
389 <tr>
390 <td><p>March</p></td>
391 <td><p>The RegionInfo framework is almost completed. </p></td>
392 </tr>
393
394 <tr>
395 <td><p>February</p></td>
396 <td><p>Translate a simple loop to Polly-IR and regenerate a loop structure
397 with CLooG works. </p>
398 <p>ISL and CLooG are integrated. </p></td>
399 </tr>
400
401 </tr>
402
403 <tr>
404 <td><p>January</p></td>
405 <td><p>The RegionInfo pass is finished. </p></td>
406 </tr>
407
408 <tr><td><b><br>2009</b></td></tr>
409 <tr>
410 <td><p>End of the year</p></td>
411 <td><p>Work on the infrastructure started. </p></td>
412 </tr>
413 </table>
Tobias Grosserfe6d9842011-05-02 07:48:29414 </ul>
Tobias Grosserfe6d9842011-05-02 07:48:29415</div>
Tobias Grosserca4ca282013-12-19 22:50:10416</div>
Tobias Grosserfe6d9842011-05-02 07:48:29417</body>
418</html>