2011-05-02 15:48:29 +08:00
|
|
|
<!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">
|
2011-12-13 23:07:00 +08:00
|
|
|
<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">
|
2011-05-02 15:48:29 +08:00
|
|
|
</head>
|
|
|
|
<body>
|
2013-12-20 06:50:10 +08:00
|
|
|
<div id="box">
|
2011-05-02 15:48:29 +08:00
|
|
|
<!--#include virtual="menu.html.incl"-->
|
|
|
|
<div id="content">
|
|
|
|
<!--*********************************************************************-->
|
2013-12-20 08:53:01 +08:00
|
|
|
<h1>About Polly</h1>
|
2011-05-02 15:48:29 +08:00
|
|
|
<!--*********************************************************************-->
|
|
|
|
|
2014-03-21 17:34:34 +08:00
|
|
|
<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>
|
|
|
|
|
2014-06-11 04:18:16 +08:00
|
|
|
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
|
2014-03-21 17:34:34 +08:00
|
|
|
<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.
|
2011-05-02 15:48:29 +08:00
|
|
|
|
2011-12-13 22:53:20 +08:00
|
|
|
<p>
|
2011-12-13 23:07:00 +08:00
|
|
|
<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">
|
2011-12-14 20:21:27 +08:00
|
|
|
<source
|
2011-12-13 23:07:00 +08:00
|
|
|
src="http://www.grosser.es/publications/grosser-2011--Polly-First-successful-optimizations--LLVM-Developer-Meeting.mp4"
|
2011-12-14 20:21:27 +08:00
|
|
|
type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
|
2011-12-13 23:07:00 +08:00
|
|
|
<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}]}'
|
2011-12-14 20:21:27 +08:00
|
|
|
/>
|
2011-12-13 23:07:00 +08:00
|
|
|
<img src="images/video-summit-2011.png" width="640" height="360" alt="Poster Image"
|
|
|
|
title="No video playback capabilities." />
|
|
|
|
</object>
|
|
|
|
</video>
|
|
|
|
</div>
|
2011-05-02 15:48:29 +08:00
|
|
|
|
|
|
|
<!--=====================================================================-->
|
2011-12-13 22:53:25 +08:00
|
|
|
<h2>News</h2>
|
2011-05-02 15:48:29 +08:00
|
|
|
<!--=====================================================================-->
|
|
|
|
|
2011-12-13 22:53:25 +08:00
|
|
|
<table id="news">
|
2014-01-06 17:51:38 +08:00
|
|
|
<tr><td><b>2014</b></td></tr>
|
2014-06-04 17:26:39 +08:00
|
|
|
<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>
|
2014-04-04 02:56:13 +08:00
|
|
|
<tr><td width="120"><p>April</p></td>
|
|
|
|
<td>
|
2014-04-24 02:09:24 +08:00
|
|
|
<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.
|
2014-04-18 03:59:38 +08:00
|
|
|
<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.
|
2014-04-11 02:44:50 +08:00
|
|
|
<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>
|
2014-04-04 02:56:13 +08:00
|
|
|
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>
|
2014-03-20 05:31:09 +08:00
|
|
|
<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>
|
2014-02-20 05:58:56 +08:00
|
|
|
<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
|
2014-03-20 05:31:09 +08:00
|
|
|
of them are used to provide <a
|
2014-02-20 05:58:56 +08:00
|
|
|
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>
|
2014-01-06 17:51:38 +08:00
|
|
|
<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">
|
2014-01-06 17:52:42 +08:00
|
|
|
Examples</a> show its use.
|
2014-01-06 17:53:00 +08:00
|
|
|
</td>
|
2014-01-06 17:51:38 +08:00
|
|
|
</tr>
|
2013-10-26 18:01:42 +08:00
|
|
|
<tr><td><b>2013</b></td></tr>
|
2013-10-26 18:08:35 +08:00
|
|
|
<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>
|
2013-10-26 18:01:42 +08:00
|
|
|
<tr><td width="120"><p>October</p></td>
|
|
|
|
<td>
|
2013-10-26 18:01:52 +08:00
|
|
|
<h4>Automatic code coverage and static analysis tests</h4>
|
2013-10-29 19:05:18 +08:00
|
|
|
Sylvestre Ledru set up automatic tests for <a
|
2013-10-26 18:01:42 +08:00
|
|
|
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.
|
2013-10-26 18:01:52 +08:00
|
|
|
<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
|
2013-12-20 17:49:24 +08:00
|
|
|
need to link directly to GMP (if isl is used for code generation). Currently
|
2013-10-26 18:01:52 +08:00
|
|
|
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.
|
2013-10-26 18:01:42 +08:00
|
|
|
</td></tr>
|
2013-10-26 18:01:52 +08:00
|
|
|
|
2012-01-31 17:13:12 +08:00
|
|
|
<tr><td><b>2012</b></td></tr>
|
2012-12-30 01:40:09 +08:00
|
|
|
<tr><td width="120"><p>December</p></td>
|
|
|
|
<td>
|
2013-10-26 18:01:52 +08:00
|
|
|
<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.
|
2012-12-30 01:40:09 +08:00
|
|
|
</td></tr>
|
2012-10-08 01:43:18 +08:00
|
|
|
<tr><td width="120"><p>September</p></td>
|
|
|
|
<td>
|
2013-10-26 18:01:52 +08:00
|
|
|
<h4>Experimental support for the <b>new isl code generator</b></h4>
|
|
|
|
The code generator can be parameterized on a fine-grained
|
2012-10-08 01:43:18 +08:00
|
|
|
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
|
2012-10-12 15:44:38 +08:00
|
|
|
exception of GMP (LGPL), there is no other (L)GPL licensed software used in
|
|
|
|
Polly. The
|
2012-10-08 01:43:18 +08:00
|
|
|
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
|
2013-12-20 17:49:24 +08:00
|
|
|
already able to perform Pluto-like optimizations with Polly, as a similar
|
2012-10-08 01:43:18 +08:00
|
|
|
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>
|
2012-02-20 16:41:55 +08:00
|
|
|
<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>
|
2012-01-31 17:13:12 +08:00
|
|
|
<tr><td width="120"><p>January</p></td>
|
|
|
|
<td>
|
|
|
|
<p>Improved support for the isl scheduling optimizer</p>
|
2012-02-01 03:54:50 +08:00
|
|
|
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
|
2012-01-31 17:13:12 +08:00
|
|
|
notable speedups for various kernels.
|
|
|
|
</td></tr>
|
|
|
|
|
|
|
|
<tr>
|
|
|
|
<tr><td><b><br/>2011</b></td></tr>
|
2011-12-13 22:53:25 +08:00
|
|
|
<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
|
2011-10-23 19:01:07 +08:00
|
|
|
href="http://lab.llvm.org:8011/console">LLVM Buildbots</a>
|
2011-12-13 22:53:25 +08:00
|
|
|
</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
|
2011-06-30 22:32:33 +08:00
|
|
|
href="http://research.google.com/university/relations/fellowship_recipients.html">
|
|
|
|
Google Europe Fellowship in Efficient Computing</a>.
|
2011-12-13 22:53:25 +08:00
|
|
|
</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>
|
2011-05-02 15:48:29 +08:00
|
|
|
</ul>
|
|
|
|
</div>
|
2013-12-20 06:50:10 +08:00
|
|
|
</div>
|
2011-05-02 15:48:29 +08:00
|
|
|
</body>
|
|
|
|
</html>
|