<!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>
<div id="box">
<!--#include virtual="menu.html.incl"-->
<div id="content">
  <!--*********************************************************************-->
  <h1>About Polly</h1>
  <!--*********************************************************************-->

  <p> Polly is a high-level loop and data-locality optimizer and optimization
  infrastructure for LLVM. It uses an abstract mathematical representation based
  on integer polyhedra to analyze and optimize the memory access pattern of a
  program. We currently perform classical loop transformations, especially
  tiling and loop fusion to improve data-locality. Polly can also exploit
  OpenMP level parallelism, expose SIMDization opportunities. Work has also be
  done in the area of automatic GPU code generation.</p>

  For many users, however, it's not the existing optimizations in Polly that are
  of most interest, but the new analyses and optimizations enabled by the Polly
  infrastructure. At
  <a href="http://polyhedral.info">polyhedral.info</a> you can get an idea of
  what has already been done and what is possible in the context of polyhedral
  compilation.

  <!--=====================================================================-->
  <h2>News</h2>
  <!--=====================================================================-->

  <table id="news">
  <tr><td><b>2015</b></td></tr>
  <tr><td width="120"><p>February</p></td>
  <td>
    <h4>Polly allows now non-affine subregions</h4>
    Data-dependent or floating point conditionals inside a SCoP can now be
    overapproximated in order to increase the applicability on general purpose
    code.
  </td>
  </tr>
  <tr><td><b>2014</b></td></tr>
  <tr><td width="120"><p>August</p></td>
  <td>
  <h4>Polly drops the support of ScopLib and the external optimizer PoCC</h4>
  The support for ScopLib as an exchange format has been removed as recent
  versions of clan, candl and pluto all support the OpenScop exchange format.

  The support of the external optmizer PoCC has been dropped in favor of the
  isl optimizer (default) and the still available pluto support.
  </td>
  </tr>
  <tr><td><b>2014</b></td></tr>
  <tr><td width="120"><p>June</p></td>
  <td>
  <h4>Polly can be built without GPL licensed software</h4> After Sebastian
  Pop's
  and David Peixotto's (both Qualcomm) recent <a
  href="http://repo.or.cz/w/isl.git/commit/60703e3ee89b9d5d4d1afb6a3f611292c0884574">commit</a>
  to isl, isl's latest development version can be built with imath instead of
  GMP. With both CLooG and gmp having become optional, the last obilgatory
  dependency to GPL licensed software has been removed. Now Polly only depends
  on isl (and the included imath), which are both MIT licensed.
  </td>
  </tr>
  <tr><td width="120"><p>April</p></td>
  <td>
  <h4>Polly Phone Call - 23April</h4>
  We had a polly phone call about delinearizing array accesses (II)<a
  href="https://docs.google.com/document/d/1IZewI8Up0iEkCNIPr6gVtwJxF7RV6KmXkdwOBM_Q5Cs/edit?usp=sharing ">Meeting notes</a> are available online.
  <h4>Polly Phone Call - 17th April</h4>
  We had a polly phone call about delinearizing array accesses <a
  href="https://docs.google.com/document/d/14d3ehkH2MsvBdqsEOSYjysH0Ztyzb75Lp843hnxh2IA/edit?usp=sharing">Meeting notes</a> are available online.
  <h4>Polly Phone Call - 10th April</h4>
  We had a polly phone call. <a
  href="https://docs.google.com/document/d/12W-qZjiZGEQ_lVrob4OzvKJI3EooonC-ap1b9f9KCUE/edit?usp=sharing">Meeting notes</a> are available online.
  <h4>Polly Phone Call - 4th April</h4>
  We had a polly phone call. <a
  href="https://drive.google.com/folderview?id=0B7OMOXTgCYIUWkpJbWVJcW04ams&usp=sharing">Meeting notes</a> are available online.
  </td>
  </tr>
  <tr><td width="120"><p>March</p></td>
  <td>
  <h4>Static link Polly into tools</h4> Polly can now be configured with 'cmake
  -D LINK_POLLY_INTO_TOOLS:Bool=ON' to be statically linked in the tools (opt,
  bugpoint, and clang.) This makes it easier to use polly without having to load
  a shared library, and it also reduces the complexity of compiling Polly on
  Windows.
  </td>
  </tr>
  <tr><td width="120"><p>February</p></td>
  <td>
  <h4>Polly presentation at FOSDEM 2014</h4> Polly was <a
  href="https://fosdem.org/2014/schedule/event/polly/">presented</a> at the
  FOSDEM LLVM developer's meeting.
  <h4>New LLVM test-suite buildbots</h4>
  The set of <a href="http://lab.llvm.org:8011/console?category=polly">Polly
  buildbots</a> has been extended. We now have 16 new blades that track
  correctness and performance when compiling the LLVM test-suite. For now five
  of them are used to provide <a
  href="http://llvm.org/perf/db_default/v4/nts/22463">fine granularity
  reports</a> (almost per-commit)
  for 'clang -O3' (no polly). We also have six machines that track different
  configurations of polly.
  </td>
  </tr>
  <tr><td width="120"><p>January</p></td>
  <td>
  <h4>islplot released</h4>
  <a href="https://github.com/tobig/islplot">islplot</a> is a library that
  generates illustrations of integer sets and maps. It relies on <a
  href="http://repo.or.cz/w/isl.git">isl</a> to model the integer sets and uses the <a
  href="https://pypi.python.org/pypi/islpy">islpy</a> Python bindings to access
  them. Plotting is performed with <a
  href="http://matplotlib.org">matplotlib</a>. The following <a
  href="http://nbviewer.ipython.org/github/tobig/islplot/blob/master/notebooks/islplot-examples.ipynb">
  Examples</a> show its use.
  </td>
  </tr>
  <tr><td><b>2013</b></td></tr>
  <tr><td width="120"><p>November</p></td>
  <td>
  <h4>Loop optimization BoF at upcoming LLVM conference</h4>
  At the upcoming <a href="http://llvm.org/devmtg/2013-11/#bof5">LLVM conference
  </a> there will be a loop optimization BoF discussing Polly and other high
  level loop optimizers.
  </td>
  </tr>
  <tr><td width="120"><p>October</p></td>
  <td>
  <h4>Automatic code coverage and static analysis tests</h4>
  Sylvestre Ledru set up automatic tests for <a
  href="http://buildd-clang.debian.net/coverage/">code coverage</a> and
  <a href="http://buildd-clang.debian.net/scan-build/">static analysis</a>
  which run at least once a day and which include results for Polly.
  <h4>Move to CLooG 0.18.1 and isl 0.12.1</h4>
  With the move to an isl 0.12 version Polly can be compiled without the
  need to link directly to GMP (if isl is used for code generation). Currently
  isl is still internally using GMP, but private patches exist to also remove
  this dependency. Without the use of GMP, a <b>GPL free</b> version of Polly
  is possible.
  </td></tr>

  <tr><td><b>2012</b></td></tr>
  <tr><td width="120"><p>December</p></td>
  <td>
  <h4> New publication in the PPL Journal
     </h4>

      We published a journal version of the Polly paper named
      <em>
      Polly - Performing polyhedral optimizations on a low-level intermediate
      representation</em> in the Parallel Processing Letters 2012.
  </td></tr>
  <tr><td width="120"><p>September</p></td>
  <td>
  <h4>Experimental support for the <b>new isl code generator</b></h4>
     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 similar
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>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>
</div>
</body>
</html>
