| <!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 - Todo</title> |
| <link type="text/css" rel="stylesheet" href="menu.css"> |
| <link type="text/css" rel="stylesheet" href="content.css"> |
| </head> |
| <body> |
| <div id="box"> |
| <!--#include virtual="menu.html.incl"--> |
| <div id="content"> |
| <h1> TODO </h1> |
| |
| <h2> Overview</h2> |
| <ul> |
| <li><a href="#phase3">Phase 4</a></li> |
| <li><a href="#phase3">Phase 3 - Improve Robustness, Interoperability and |
| Optimizations (ongoing)</a></li> |
| <li><a href="#llvm">Polly as a LLVM Project (Finished February 2012)</a></li> |
| <li><a href="#phase2">Phase 2 - First Optimizations and Enhanced User Experience (Finished |
| February 2012)</a></li> |
| <li><a href="#phase1">Phase 1 - Get Something Working (Finished October 2010)</a> |
| </li> |
| </ul> |
| <h2> Individual Phases</h3> |
| |
| <h3 id="phase4"> Phase 4</h3> |
| <table class="wikitable" cellpadding="2"> |
| <p> </p> |
| |
| <tbody> |
| <tr><th colspan="3" style="background: rgb(239, 239, 239);"> Infrastructure </th></tr> |
| <tr style="background: rgb(239, 239, 239)"> |
| <th width="400px"> Task </th> |
| <th width="150px"> Status </th> |
| <th> Owner </th> |
| </tr> |
| <tr> |
| <th align="left"> Move to isl C++ bindings |
| </th><td align="center" class='open'> Open |
| </td><td> |
| </td> |
| </tr> |
| <th align="left"> - Add isl C++ bindings generator to isl |
| </th><td align="center" class='open'> Open |
| </td><td> |
| </td> |
| </tr> |
| <tr> |
| <th align="left"> Add isl as an external library to Polly SVN |
| </th><td align="center" class='done'> Done |
| </td><td> |
| </td> |
| </tr> |
| <tr> |
| <th align="left"> Compile-time: Speed up transformations |
| </th><td align="center"> |
| </td><td> |
| </td> |
| </tr> |
| <th align="left"> - Optimize isl_int for small integers |
| </th><td align="center" class='done'> Done |
| </td><td> |
| </td> |
| </tr> |
| <tr> |
| <th align="left"> Compile-time: Minimize SCoP detection time |
| </th><td align="center" class='open'> Open |
| </td><td> |
| </td> |
| </tr> |
| <th align="left"> - Reconsider pass-ordering (move Polly later) |
| </th><td align="center" class='open'> Open |
| </td><td> |
| </td> |
| </tr> |
| |
| <tr><td colspan='4'> </td></tr> |
| <tr><th colspan="3" style="background: rgb(239, 239, 239);"> Increase coverage |
| </th></tr> |
| <tr style="background: rgb(239, 239, 239)"> |
| <th width="400px"> Task </th> |
| <th width="150px"> Status </th> |
| <th> Owner </th> |
| </tr> |
| |
| <tr> |
| <th align="left"> |
| Support for Modulos |
| </th><td align="center" class='done'> Done |
| </td><td> Johannes |
| </td></tr> |
| <tr> |
| <th align="left"> |
| Boolean Combinations |
| </th><td align="center" class='done'> Done |
| </td><td> Johannes |
| </td></tr> |
| <tr> |
| <th align="left"> |
| Unsigned Integers |
| </th><td align="center" class='done'> Done |
| </td><td> Johannes |
| </td></tr> |
| <tr> |
| <th align="left"> |
| Pointer Comparisions |
| </th><td align="center" class='done'> Done |
| </td><td> Johannes |
| </td></tr> |
| <tr> |
| <th align="left"> |
| Non-affine subregions |
| </th><td align="center" class='done'> Done |
| </td><td> Johannes |
| </td></tr> |
| |
| <tr><td colspan='4'> </td></tr> |
| <tr><th colspan="3" style="background: rgb(239, 239, 239);"> Polly as an |
| analysis </th></tr> |
| <tr style="background: rgb(239, 239, 239)"> |
| <th width="400px"> Task </th> |
| <th width="150px"> Status </th> |
| <th> Owner </th> |
| </tr> |
| |
| <tr> |
| <th align="left"> |
| Model scalars dependences directly in Polly |
| </th><td align="center" class='done'> Done |
| </td><td> |
| </td></tr> |
| <tr> |
| <th align="left"> |
| Code generate scalar dependences |
| </th><td align="center" class='done'> Done |
| </td><td> |
| </td></tr> |
| <tr> |
| <th align="left"> |
| Model PHI dependences directly in Polly |
| </th><td align="center" class='done'> Done |
| </td><td> |
| </td></tr> |
| <tr> |
| <th align="left"> |
| Code generate PHI dependences |
| </th><td align="center" class='done'> Done |
| </td><td> |
| </td></tr> |
| <tr> |
| <th align="left"> <a href="https://bugs.llvm.org/show_bug.cgi?id=12398">Remove |
| the need for independent blocks</a> |
| </th><td class="done"> Done |
| </td><td> |
| </td></tr> |
| <tr> |
| <th align="left"> |
| Remove polly-prepare pass |
| </th><td align="center" class='open'> Open |
| </td><td> |
| </td></tr> |
| |
| <tr><td colspan='4'> </td></tr> |
| <tr><th colspan="3" style="background: rgb(239, 239, 239);"> Correctness in |
| cornercases </th></tr> |
| <tr style="background: rgb(239, 239, 239)"> |
| <th width="400px"> Task </th> |
| <th width="150px"> Status </th> |
| <th> Owner </th> |
| </tr> |
| <tr> |
| <th align="left"> <a href="https://bugs.llvm.org/show_bug.cgi?id=10381">Derive |
| optimal types (instead of always using i64)</a> |
| </th><td class="open"> Open |
| </td><td> |
| </td></tr> |
| <tr> |
| <th align="left"> <a href="https://bugs.llvm.org/show_bug.cgi?id=12397">Model |
| integer wrapping</a> |
| </th><td align="center" class='done'> Done |
| </td><td> Johannes |
| </td></tr |
| |
| <tr><td colspan='4'> </td></tr> |
| <tr><th colspan="3" style="background: rgb(239, 239, 239);"> Optimize Julia |
| code with Polly |
| analysis </th></tr> |
| <tr style="background: rgb(239, 239, 239)"> |
| <th width="400px"> Task </th> |
| <th width="150px"> Status </th> |
| <th> Owner </th> |
| </tr> |
| |
| <th align="left"> |
| Integrate Polly into Julia |
| </th><td align="center" class='open'> Open |
| </td><td> |
| </td></tr> |
| <tr> |
| <th align="left"> |
| Eliminate run-time bounds checks |
| </th><td align="center" class='open'> Open |
| </td><td> |
| </td></tr> |
| <tr> |
| <th align="left"> - Reconsider unreachables in post-dominance tree |
| </th><td align="center" class='open'> Open |
| </td><td> |
| </td></tr> |
| |
| <th align="left"> - Actually eliminate statements |
| </th><td align="center" class='done'> Done |
| </td><td> |
| </td></tr> |
| |
| <tr><td colspan='4'> </td></tr> |
| <tr><th colspan="3" style="background: rgb(239, 239, 239);"> Improved |
| Optimizations in Polly |
| </th></tr> |
| <tr style="background: rgb(239, 239, 239)"> |
| <th width="400px"> Task </th> |
| <th width="150px"> Status </th> |
| <th> Owner </th> |
| </tr> |
| |
| <th align="left"> |
| Multi-level tiling |
| </th><td align="center" class='open'> Open |
| </td><td> |
| </td></tr> |
| <tr> |
| <th align="left"> |
| Register Tiling |
| </th><td align="center" class='open'> Open |
| </td><td> |
| </td></tr> |
| <tr> |
| <th align="left"> |
| Full/partial tile separation for vectorization |
| </th><td align="center" class='done'> Done |
| </td><td> |
| </td></tr> |
| <th align="left"> |
| Loop interchange after vectorization to maximize stride-one accesses |
| </th><td align="center" class='open'> Open |
| </td><td> |
| </td></tr> |
| </table> |
| |
| |
| <h3 id="phase3"> Phase 3 - Improve Robustness, Interoperability and |
| Optimizations (ongoing)</h3> |
| <table class="wikitable" cellpadding="2"> |
| <p> </p> |
| |
| <tbody> |
| <tr><th colspan="3" style="background: rgb(239, 239, 239);"> Frontend </th></tr> |
| <tr style="background: rgb(239, 239, 239)"> |
| <th width="400px"> Task </th> |
| <th width="150px"> Status </th> |
| <th> Owner </th> |
| </tr> |
| <tr> |
| <th align="left"> Non-affine access functions |
| </th><td align="center" class='done'> Done, needs testing |
| </td><td>Marcello |
| </td> |
| </tr> |
| |
| |
| <tr> |
| <tr> |
| <th align="left"> <a |
| href="https://bugs.llvm.org/show_bug.cgi?id=12403">Variable-size |
| multi-dimensional arrays</a> |
| </th><td align="center" class='done'> Done |
| </td><td>Sebastian |
| </td></tr> |
| <tr> |
| <th align="left"> <a |
| href="https://bugs.llvm.org/show_bug.cgi?id=12407">Derive information for |
| the SCoP context |
| </a> |
| </th> |
| <td align="center" class='nice'> Open |
| </td><td> |
| </td></tr> |
| <tr> |
| <th align="left"> <a href="https://bugs.llvm.org/show_bug.cgi?id=12402">Finer |
| grained statements</a> |
| </th><td align="center" class='nice'> Open |
| </td><td> |
| </td></tr> |
| <tr> |
| <th align="left"> Detect reductions |
| </th><td align="center" class='done'>Done |
| </td><td>Johannes |
| </td></tr> |
| <tr> |
| <th align="left"> Generate code for reductions |
| </th><td align="center" class='niceinprogress'>in progress |
| </td><td>Johannes |
| </td></tr> |
| <tr> |
| <th align="left"> Assume static sized arrays are only accessed in-bounds |
| </th><td align="center" class='done'>Done |
| </td><td>Tobias |
| </td></tr> |
| <tr><td colspan='4'> </td></tr> |
| <tr><th colspan="3" style="background: rgb(239, 239, 239);"> Optimizer </th></tr> |
| <tr style="background: rgb(239, 239, 239)"> |
| <th width="400px"> Task </th> |
| <th width="150px"> Status </th> |
| <th> Owner </th> |
| </tr> |
| <tr> |
| <th align="left"> <a href="https://bugs.llvm.org/show_bug.cgi?id=12405">Polyhedral |
| dead code elimination</a> |
| </th><td class="done">Done |
| </td><td> |
| </td></tr> |
| |
| <tr><td colspan='4'> </td></tr> |
| <tr><th colspan="3" style="background: rgb(239, 239, 239);"> Back End</th></tr> |
| <tr style="background: rgb(239, 239, 239)"> |
| <th width="400px"> Task </th> |
| <th width="150px"> Status </th> |
| <th> Owner </th> |
| </tr> |
| <tr> |
| <th align="left"> OpenMP code generation support in isl backend |
| (requirement to drop CLooG) |
| </th><td class="done"> Done |
| </td><td> Tobias |
| </td></tr> |
| <tr> |
| <th align="left"> Run-time alias checks |
| </th><td class="done"> Done |
| </td><td>Johannes |
| <tr> |
| <th align="left"> <a |
| href="https://polly.llvm.org/documentation/gpgpucodegen.html">GPGPU Code |
| Generation</a> |
| </th><td class="niceinprogress">in progress |
| </td><td> |
| Yabin |
| </td></tr> |
| <tr> |
| <th align="left"> <a |
| href="https://polly.llvm.org/documentation/memaccess.html">Allow optimizers to |
| change memory access functions</a> |
| </th><td class="done"> Done |
| </td><td>Johannes |
| </td></tr> |
| <tr> |
| <th align="left"> <a href="https://bugs.llvm.org/show_bug.cgi?id=12406">Make code |
| generation independent of the clast</a> |
| </th><td class="done">Done |
| </td><td> |
| </td></tr> |
| |
| <tr> |
| <tr><td colspan='4'> </td></tr> |
| <tr><th colspan="3" style="background: rgb(239, 239, 239);"> General</th></tr> |
| <tr style="background: rgb(239, 239, 239)"> |
| <th width="400px"> Task </th> |
| <th width="150px"> Status </th> |
| <th> Owner </th> |
| </tr> |
| <tr> |
| <th align="left"> Teach bugpoint to extract regions |
| </th><td class="nice"> Open |
| </td><td> |
| </td></tr> |
| <tr> |
| <th align="left"> Add <a |
| href="https://web.cse.ohio-state.edu/~pouchet.2/software/polybench/">Polybench |
| 3.2</a> to the LLVM test suite |
| </th><td class="done"> Done |
| </td><td> |
| </td></tr> |
| <tr> |
| <th align="left"> Build against an installed LLVM |
| </th><td class="done"> Done<br /> |
| </td><td> |
| </td></tr> |
| <tr> |
| <th align="left"> Setup buildbot regression testers using LNT |
| </th><td class="done"> Done |
| </td><td> Tobias |
| </td></tr> |
| </tbody></table> |
| <h3 id="llvm"> Polly as a LLVM Project (Finished February 2012)</h3> |
| |
| <table class="wikitable" cellpadding="2"> |
| |
| <tbody> |
| <tr style="background: rgb(239, 239, 239);"> |
| <th>Task |
| </th><th> Status |
| </th><th>Owner |
| </th></tr> |
| <tr> |
| <th align="left"> Move to LLVM SVN |
| </th><td class="done" align="center"> |
| <a |
| href="https://llvm.org/svn/llvm-project/polly" |
| >https://llvm.org/svn/llvm-project/polly</a> |
| </td><td> Tobias |
| |
| </td></tr> |
| <tr> |
| <th align="left"> Commit mails |
| </th><td class="done" align="center"> |
| llvm-commits@lists.llvm.org |
| </td><td> Tobias |
| </td></tr> |
| <tr> |
| |
| <th align="left"> LLVM Bugzilla category |
| </th><td class="done" align="center"> |
| <a href="https://bugs.llvm.org/enter_bug.cgi?product=Projects">LLVM Bugzilla</a> |
| <br /> |
| (Product is 'Projects', Component is 'Polly') |
| </td><td> Tobias |
| <tr> |
| <th align="left"> Website |
| </th><td class="done" align="center"> |
| <a href="https://polly.llvm.org">https://polly.llvm.org</a> |
| </td><td> Tobias |
| </td></tr> |
| <tr> |
| <th align="left">Buildbot that runs 'make polly-test' |
| </th><td class="done" align="center"> |
| <a href="http://lab.llvm.org:8011/console">Buildbot</a> |
| </td> |
| <td> Tobias, Andreas |
| </td></tr> |
| </th><td> |
| |
| </td></tr> |
| </tbody></table> |
| <h3 id="phase2"> Phase 2 - First Optimizations and Enhanced User Experience (Finished |
| February 2012)</h3> |
| <p> |
| |
| First optimizations to show the usefullness of Polly and enhance the user |
| experience. We also try to increase the amount of code we can optimize. |
| </p> |
| <table class="wikitable" cellpadding="2"> |
| |
| <tbody> |
| <tr><th colspan="3" style="background: rgb(239, 239, 239);"> Frontend </th></tr> |
| <tr style="background: rgb(239, 239, 239)"> |
| <th width="400px"> Task </th> |
| <th width="150px"> Status </th> |
| <th> Owner </th> |
| </tr> |
| <tr> |
| <tr> |
| <th align="left"> Allow parameters in access functions |
| </th><td align="center" class='done'> Done |
| </td><td> Tobias |
| </td></tr> |
| |
| <tr> |
| <th align="left"> Improved Scalar Evolution parsing |
| </th><td align="center" class='done'> Done |
| </td><td> Tobias |
| </td></tr> |
| <tr> |
| <th align="left"> (Graphical) user feedback on Scop Detection |
| </th><td align="center" class='done'> Done |
| </td><td> Tobias |
| </td></tr> |
| <tr><td colspan='4'> </td></tr> |
| <tr><th colspan="3" style="background: rgb(239, 239, 239);"> Optimizer </th></tr> |
| <tr style="background: rgb(239, 239, 239)"> |
| <th width="400px"> Task </th> |
| <th width="150px"> Status </th> |
| <th> Owner </th> |
| </tr> |
| <tr> |
| <th align="left"> Dependency Analysis |
| </th><td class="done" align="center"> Done |
| </td><td> Tobias |
| </td></tr> |
| <tr> |
| <tr> |
| <th align="left"> Optimizer - Connect Pluto (through PoCC) |
| </th><td class="done" align="center"> Done |
| </td><td> Tobias |
| </td></tr> |
| <tr> |
| <tr> |
| <th align="left"> Optimizer - Add ISL internal Pluto like optimizer |
| </th><td class="done" align="center"> Done |
| </td><td> Tobias |
| </td></tr> |
| |
| <tr> |
| <th align="left"> Import/Export - SCoPLib 0.2 (needed for PoCC) |
| </th><td class="done" align="center">Done |
| |
| </td><td> Tobias |
| </td></tr> |
| <tr><td colspan='4'> </td></tr> |
| <tr><th colspan="3" style="background: rgb(239, 239, 239);"> Back End</th></tr> |
| <tr style="background: rgb(239, 239, 239)"> |
| <th width="400px"> Task </th> |
| <th width="150px"> Status </th> |
| <th> Owner </th> |
| </tr> |
| <tr> |
| <th align="left">SIMD code generation for trivially vectorizable loops |
| </th><td class="done">Done |
| </td><td>Tobias |
| </td></tr> |
| <tr> |
| <th align="left">OpenMP code generation |
| </th><td class="done">Done |
| </td><td> Raghesh, Tobias |
| |
| </td></tr> |
| <tr> |
| <tr><td colspan='4'> </td></tr> |
| <tr><th colspan="3" style="background: rgb(239, 239, 239);"> General</th></tr> |
| <tr style="background: rgb(239, 239, 239)"> |
| <th width="400px"> Task </th> |
| <th width="150px"> Status </th> |
| <th> Owner </th> |
| </tr> |
| <tr> |
| <th align="left"> clang integration |
| </th><td class="done" align="center"> done |
| |
| </td><td> Tobias |
| </td></tr> |
| <tr> |
| <th align="left"> Commit RegionPass patch upstream |
| </th><td class="done" align="center"> done |
| |
| </td><td> Tobias |
| </td></tr> |
| <tr> |
| </tbody></table> |
| <h3 id="phase1">Phase 1 - Get Something Working (Finished October 2010)</h3> |
| <p>Create a minimal version of Polly that can transform an LLVM-IR program to |
| the polyhedral model and back to LLVM-IR. No transformations are performed. |
| </p> |
| <table class="wikitable" cellpadding="2"> |
| |
| <tbody> |
| <tr><th colspan="3" style="background: rgb(239, 239, 239);"> Front End</th></tr> |
| <tr style="background: rgb(239, 239, 239)"> |
| <th width="400px"> Task </th> |
| <th width="150px"> Status </th> |
| <th> Owner </th> |
| </tr> |
| |
| <th align="left"> Region detection |
| </td><td class="done"> Done |
| </td><td>Ether |
| </td></tr> |
| <tr> |
| <th align="left"> Access Functions |
| </td><td class="done"> Done |
| </td><td>John, Ether |
| </td></tr> |
| <tr> |
| <th align="left"> Alias sets |
| </td><td class="done"> Done |
| </td><td>Ether |
| </td></tr> |
| <tr> |
| <th align="left"> Scalar evolution to affine expression |
| </td><td class="done"> Done |
| |
| </td><td> |
| Ether |
| </td></tr> |
| <tr> |
| <th align="left"> SCoP extraction |
| </td><td class="done"> Done |
| </td><td>Tobias, Ether |
| |
| </td></tr> |
| <tr> |
| <th align="left"> SCoPs to polyhedral model |
| </td><td class="done"> Done |
| </td><td>Tobias, Ether |
| </td></tr> |
| <tr><td colspan='4'> </td></tr> |
| <tr><th colspan="3" style="background: rgb(239, 239, 239);"> Optimizer </th></tr> |
| <tr style="background: rgb(239, 239, 239)"> |
| <th width="400px"> Task </th> |
| <th width="150px"> Status </th> |
| <th> Owner </th> |
| </tr> |
| <tr> |
| <th align="left"> Define polyhedral description |
| </td><td class="done"> Done |
| </td><td>Tobias |
| |
| </td></tr> |
| <tr><td colspan='4'> </td></tr> |
| <tr><th colspan="3" style="background: rgb(239, 239, 239);"> Back End</th></tr> |
| <tr style="background: rgb(239, 239, 239)"> |
| <th width="400px"> Task </th> |
| <th width="150px"> Status </th> |
| <th> Owner </th> |
| </tr> |
| <tr> |
| <th align="left"> Create LLVM-IR using CLooG |
| </td><td class="done"> Done |
| </td><td> Tobias |
| |
| </td></tr> |
| <tr><td colspan='4'> </td></tr> |
| <tr><th colspan="3" style="background: rgb(239, 239, 239);"> General</th></tr> |
| <tr style="background: rgb(239, 239, 239)"> |
| <th width="400px"> Task </th> |
| <th width="150px"> Status </th> |
| <th> Owner </th> |
| </tr> |
| <tr> |
| <th align="left"> Setup git repositories |
| |
| </td><td class="done"> Done |
| </td><td> Tobias |
| </td></tr> |
| <tr> |
| <th align="left"> Add CLooG/isl to build system |
| </td><td class="done"> Done |
| </td><td> Tobias |
| |
| </td></tr> |
| |
| </tbody></table> |
| </div> |
| </div> |
| </body> |
| </html> |