TODO

Overview

Individual Phases

Phase 4

Infrastructure
Task Status Owner
Move to isl C++ bindings Open
    - Add isl C++ bindings generator to isl Open
Add isl as an external library to Polly SVN Done
Compile-time: Speed up transformations
    - Optimize isl_int for small integers Done
Compile-time: Minimize SCoP detection time Open
    - Reconsider pass-ordering (move Polly later) Open
 
Increase coverage
Task Status Owner
Support for Modulos Done Johannes
Boolean Combinations Done Johannes
Unsigned Integers Done Johannes
Pointer Comparisons Done Johannes
Non-affine subregions Done Johannes
 
Polly as an analysis
Task Status Owner
Model scalars dependences directly in Polly Done
Code generate scalar dependences Done
Model PHI dependences directly in Polly Done
Code generate PHI dependences Done
Remove the need for independent blocks Done
Remove polly-prepare pass Open
 
Correctness in cornercases
Task Status Owner
Derive optimal types (instead of always using i64) Open
Model integer wrapping Done Johannes
 
Optimize Julia code with Polly analysis
Task Status Owner
Integrate Polly into Julia Open
Eliminate run-time bounds checks Open
    - Reconsider unreachables in post-dominance tree Open
    - Actually eliminate statements Done
 
Improved Optimizations in Polly
Task Status Owner
Multi-level tiling Open
Register Tiling Open
Full/partial tile separation for vectorization Done
Loop interchange after vectorization to maximize stride-one accesses Open

Phase 3 - Improve Robustness, Interoperability and Optimizations (ongoing)

Frontend
Task Status Owner
Non-affine access functions Done, needs testing Marcello
Variable-size multi-dimensional arrays Done Sebastian
Derive information for the SCoP context Open
Finer grained statements Open
Detect reductions Done Johannes
Generate code for reductions in progress Johannes
Assume static sized arrays are only accessed in-bounds Done Tobias
 
Optimizer
Task Status Owner
Polyhedral dead code elimination Done
 
Back End
Task Status Owner
OpenMP code generation support in isl backend (requirement to drop CLooG) Done Tobias
Run-time alias checks Done Johannes
GPGPU Code Generation in progress Yabin
Allow optimizers to change memory access functions Done Johannes
Make code generation independent of the clast Done
 
General
Task Status Owner
Teach bugpoint to extract regions Open
Add Polybench 3.2 to the LLVM test suite Done
Build against an installed LLVM Done
Setup buildbot regression testers using LNT Done Tobias

Polly as a LLVM Project (Finished February 2012)

Task Status Owner
Move to LLVM SVN https://llvm.org/svn/llvm-project/polly Tobias
Commit mails llvm-commits@lists.llvm.org Tobias
LLVM Bugzilla category LLVM Bugzilla
(Product is 'Projects', Component is 'Polly')
Tobias
Website https://polly.llvm.org Tobias
Buildbot that runs 'make polly-test' Buildbot Tobias, Andreas

Phase 2 - First Optimizations and Enhanced User Experience (Finished February 2012)

First optimizations to show the usefulness of Polly and enhance the user experience. We also try to increase the amount of code we can optimize.

Frontend
Task Status Owner
Allow parameters in access functions Done Tobias
Improved Scalar Evolution parsing Done Tobias
(Graphical) user feedback on Scop Detection Done Tobias
 
Optimizer
Task Status Owner
Dependency Analysis Done Tobias
Optimizer - Connect Pluto (through PoCC) Done Tobias
Optimizer - Add ISL internal Pluto like optimizer Done Tobias
Import/Export - SCoPLib 0.2 (needed for PoCC) Done Tobias
 
Back End
Task Status Owner
SIMD code generation for trivially vectorizable loops Done Tobias
OpenMP code generation Done Raghesh, Tobias
 
General
Task Status Owner
clang integration done Tobias
Commit RegionPass patch upstream done Tobias

Phase 1 - Get Something Working (Finished October 2010)

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.

Front End
Task Status Owner
Region detection Done Ether
Access Functions Done John, Ether
Alias sets Done Ether
Scalar evolution to affine expression Done Ether
SCoP extraction Done Tobias, Ether
SCoPs to polyhedral model Done Tobias, Ether
 
Optimizer
Task Status Owner
Define polyhedral description Done Tobias
 
Back End
Task Status Owner
Create LLVM-IR using CLooG Done Tobias
 
General
Task Status Owner
Setup git repositories Done Tobias
Add CLooG/isl to build system Done Tobias