| <!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>Polly - Polyhedral optimizations for LLVM</title> |
| <link type="text/css" rel="stylesheet" href="menu.css"> |
| <link type="text/css" rel="stylesheet" href="content.css"> |
| <script src="video-js/video.js" type="text/javascript" charset="utf-8"></script> |
| <script type="text/javascript"> |
| VideoJS.setupAllWhenReady(); |
| </script> |
| |
| <!-- Include the VideoJS Stylesheet --> |
| <link rel="stylesheet" href="video-js/video-js.css" type="text/css" media="screen" title="Video JS"> |
| </head> |
| <body> |
| <!--#include virtual="menu.html.incl"--> |
| <div id="content"> |
| <!--*********************************************************************--> |
| <h1>Polly: Polyhedral optimizations for LLVM</h1> |
| <!--*********************************************************************--> |
| |
| <p> Polly is a polyhedral optimizer for LLVM. Using an abstract mathematical |
| representation it analyzes and optimizes the memory access pattern of a |
| program. This includes data-locality optimizations for cache locality as |
| well as automatic parallelization for thread-level and SIMD parallelism. |
| Our overall goal is an integrated optimizer for data-locality and |
| parallelism that takes advantage of multi-cores, cache hierarchies, short |
| vector instructions as well as dedicated accelerators.</p> |
| |
| <p> |
| <div class="video-js-box" style="margin:auto; margin-top: 1em; margin-bottom: 1em"> |
| <video id="example_video_2" class="video-js" width="640" height="360" |
| controls="controls" preload="auto" |
| poster="images/video-summit-2011.png"> |
| <source |
| src="http://www.grosser.es/publications/grosser-2011--Polly-First-successful-optimizations--LLVM-Developer-Meeting.mp4" |
| type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'> |
| <source |
| src="http://www.grosser.es/publications/grosser-2011--Polly-First-successful-optimizations--LLVM-Developer-Meeting.webm" |
| type='video/webm; codecs="vp8, vorbis"'> |
| <object id="flash_fallback_2" class="vjs-flash-fallback" width="640" |
| height="360" type="application/x-shockwave-flash" |
| data="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf"> |
| <param name="movie" value="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" /> |
| <param name="allowfullscreen" value="true" /> |
| <param name="flashvars" |
| value='config={"playlist":["publications/images/video-summit-2011.png", |
| {"url": |
| "http://www.grosser.es/publications/grosser-2011--Polly-First-successful-optimizations--LLVM-Developer-Meeting.mp4","autoPlay":false,"autoBuffering":true}]}' |
| /> |
| <img src="images/video-summit-2011.png" width="640" height="360" alt="Poster Image" |
| title="No video playback capabilities." /> |
| </object> |
| </video> |
| </div> |
| <b>WARNING:</b> Polly started as a research project and larger parts of it are |
| still open research projects. Even though we aim for a robust, production |
| quality implementation, not all parts of Polly are there yet. We invite |
| you to contribute - both as industry collaborator, who may want to use parts |
| of Polly in production, as well as researcher, who is more interested in using |
| his expertise to work on some of the open research projects. |
| </p> |
| |
| <!--=====================================================================--> |
| <h2>News</h2> |
| <!--=====================================================================--> |
| |
| <table id="news"> |
| <tr><td><b>2012</b></td></tr> |
| <tr><td width="120"><p>September</p></td> |
| <td> |
| <p>Experimental support for the <b>new isl code generator</b> |
| was committed. The code generator can be parameterized on a fine-grained |
| level. It gives direct control for example over unrolling, the amount of |
| control overhead and the code size. It can also be used to |
| create loops to handle border conditions or to perform full-partial tile |
| separation.<br /> |
| We also relicensed isl under the <b>MIT license</b>. This means, with the |
| exception of GMP (LGPL), there is no other (L)GPL licensed software used in |
| Polly. The |
| use of GMP is limited to a well defined interface. Replacing it with |
| a BSD licensed replacement is a tractable engineering project we would |
| be very interested in. For more information about isl see the <a |
| href="http://www.kotnet.org/~skimo/isl/manual.pdf">isl manual</a>. |
| </p> |
| </td></tr> |
| <tr><td width="120"><p>July</p></td> |
| <td> |
| <p> Polly can now be directly linked to the <a |
| href="http://pluto-compiler.sourceforge.net/">Pluto optimizer</a>. We were |
| already able to perform Pluto-like optimizations with Polly, as a similer |
| algorithm was added to isl half a year ago. However, being able to directly |
| compare with the original implementation will not only bring in competition in |
| the optimizer field. It will also allow new experiments with a cutting edge |
| research tool.<br \> |
| This support was on of the outcomes of the 1-day Polly workshop and the |
| following week of joint work at IISC Bangalore and in cooperation with |
| AMD India. |
| </td></tr> |
| <td> |
| </td></tr> |
| <tr><td width="120"><p>February</p></td> |
| <td> |
| <p>Polly is an official LLVM project, reachable at <a |
| href="http://polly.llvm.org">http://polly.llvm.org</a></p> |
| </td></tr> |
| <tr><td width="120"><p>January</p></td> |
| <td> |
| <p>Improved support for the isl scheduling optimizer</p> |
| Polly can now automatically optimize all <a |
| href="http://www.cse.ohio-state.edu/~pouchet/software/polybench/">polybench |
| 2.0</a> kernels without the help of |
| an external optimizer. The compile time is reasonable and we can show |
| notable speedups for various kernels. |
| </td></tr> |
| |
| <tr> |
| <tr><td><b><br/>2011</b></td></tr> |
| <tr><td width="120"><p>November</p></td> |
| <td> |
| <p> |
| Talk at the <a href="http://llvm.org/devmtg/2011-11/"> |
| LLVM Developer Meeting 2011</a></p> |
| New SCEV parser<br> |
| (Allows parameters in array subscript and max/signextend) |
| </td></tr> |
| |
| <tr> |
| <td><p>October</p></td> |
| <td> |
| <p>Polly can use the isl schedule optimizer<br> |
| (The optimizer is similar to the one in Pluto, but it is part of isl) |
| </p> |
| </td></tr> |
| |
| <tr> |
| <td><p>August</p></td> |
| <td> |
| <p> |
| <a href="example_load_Polly_into_clang.html">Use Polly as |
| clang plugin</a></p> |
| </td> |
| </tr> |
| |
| <tr> |
| <td><p>July</p></td> |
| <td> |
| <p> Polly builder as part of the <a |
| href="http://lab.llvm.org:8011/console">LLVM Buildbots</a> |
| </p> |
| </td> |
| </tr> |
| |
| <tr> |
| <td><p>June</p></td> |
| <td> |
| <p><a href="http://www.grosser.es">Tobias</a> is founded for |
| three years by a <a |
| href="http://research.google.com/university/relations/fellowship_recipients.html"> |
| Google Europe Fellowship in Efficient Computing</a>. |
| </p> |
| </td> |
| </tr> |
| |
| <tr> |
| <td><p>May </p></td> |
| <td><p><a href="http://www.grosser.es">Tobias</a>' diploma thesis and |
| Raghesh's master thesis. See our <a |
| href="publications.html">list of publications</a>.</p></td> |
| </tr> |
| |
| <tr> |
| <td><p>April</p></td> |
| <td><p>Polly moves to the LLVM infrastructure (svn, bugtracker)</p></td> |
| </tr> |
| |
| <tr> |
| <td><p>March</p></td> |
| <td><p>Presentation at <a |
| href="http://impact2011.inrialpes.fr/">CGO/IMPACT</a></p> |
| <p>Polly can compile |
| polybench 2.0 with vectorization and OpenMP code generation</p> |
| </td> |
| </tr> |
| <tr> |
| <td><p>Februar</p></td> |
| <td><p>pollycc - a script to automatically compile with |
| polyhedral optimizations </p></td> |
| </tr> |
| |
| <tr> |
| <td><p> Januar</p></td> |
| <td><p> Basic OpenMP support, Alias analysis integration, |
| Pluto/POCC support </p></td> |
| </tr> |
| |
| <tr><td><b><br>2010</b></td></tr> |
| <tr> |
| <td><p> Dezember </p></td> |
| <td><p>Basic vectorization support </p></td> |
| </tr> |
| |
| <tr> |
| <td><p> November </p></td> |
| <td><p>Talk at the <a |
| href="http://llvm.org/devmtg/2010-11/">LLVM Developer Meeting</a> </p></td> |
| </tr> |
| |
| <tr> |
| <td><p>October</p></td> |
| <td><p>Dependency analysis </p> |
| <p>Finished Phase 1 - Get something working </p> |
| <p>Support scalar dependences and sequential SCoPs </p> |
| </td> |
| </tr> |
| |
| <tr> |
| <td><p>August</p></td> |
| <td><p>RegionInfo pass committed to LLVM</p> |
| <p>llvm-test suite compiles </p> |
| </td> |
| </tr> |
| |
| <tr> |
| <td><p>July</p></td> |
| <td><p>Code generation works for normal SCoPs. </p></td> |
| </tr> |
| |
| <tr> |
| <td><p>June </p></td> |
| <td><p>OpenSCoP import/export works (as far as openscop is finished).</p></td> |
| </tr> |
| |
| <tr> |
| <td><p>May</p></td> |
| <td><p>The CLooG AST can be parsed.</p> |
| </td> |
| </tr> |
| |
| <tr> |
| <td><p>April</p></td> |
| <td><p>SCoPs can automatically be detected. </p></td> |
| </tr> |
| |
| <tr> |
| <td><p>March</p></td> |
| <td><p>The RegionInfo framework is almost completed. </p></td> |
| </tr> |
| |
| <tr> |
| <td><p>February</p></td> |
| <td><p>Translate a simple loop to Polly-IR and regenerate a loop structure |
| with CLooG works. </p> |
| <p>ISL and CLooG are integrated. </p></td> |
| </tr> |
| |
| </tr> |
| |
| <tr> |
| <td><p>January</p></td> |
| <td><p>The RegionInfo pass is finished. </p></td> |
| </tr> |
| |
| <tr><td><b><br>2009</b></td></tr> |
| <tr> |
| <td><p>End of the year</p></td> |
| <td><p>Work on the infrastructure started. </p></td> |
| </tr> |
| </table> |
| </ul> |
| </div> |
| </body> |
| </html> |