diff options
Diffstat (limited to 'polly/lib')
| -rw-r--r-- | polly/lib/CodeGen/IslAst.cpp | 10 | ||||
| -rw-r--r-- | polly/lib/Transform/ScheduleOptimizer.cpp | 43 |
2 files changed, 45 insertions, 8 deletions
diff --git a/polly/lib/CodeGen/IslAst.cpp b/polly/lib/CodeGen/IslAst.cpp index 3c17517c923..c86b4b7c49e 100644 --- a/polly/lib/CodeGen/IslAst.cpp +++ b/polly/lib/CodeGen/IslAst.cpp @@ -7,7 +7,7 @@ // //===----------------------------------------------------------------------===// // -// The isl code generator interface takes a Scop and generates a isl_ast. This +// The isl code generator interface takes a Scop and generates an isl_ast. This // ist_ast can either be returned directly or it can be pretty printed to // stdout. // @@ -17,6 +17,14 @@ // bb2(c2); // } // +// An in-depth discussion of our AST generation approach can be found in: +// +// Polyhedral AST generation is more than scanning polyhedra +// Tobias Grosser, Sven Verdoolaege, Albert Cohen +// ACM Transations on Programming Languages and Systems (TOPLAS), +// 37(4), July 2015 +// http://www.grosser.es/#pub-polyhedral-AST-generation +// //===----------------------------------------------------------------------===// #include "polly/CodeGen/CodeGeneration.h" diff --git a/polly/lib/Transform/ScheduleOptimizer.cpp b/polly/lib/Transform/ScheduleOptimizer.cpp index 26b9668d972..1e063093033 100644 --- a/polly/lib/Transform/ScheduleOptimizer.cpp +++ b/polly/lib/Transform/ScheduleOptimizer.cpp @@ -7,14 +7,43 @@ // //===----------------------------------------------------------------------===// // -// This pass the isl to calculate a schedule that is optimized for parallelism -// and tileablility. The algorithm used in isl is an optimized version of the -// algorithm described in following paper: +// This pass generates an entirey new schedule tree from the data dependences +// and iteration domains. The new schedule tree is computed in two steps: +// +// 1) The isl scheduling optimizer is run +// +// The isl scheduling optimizer creates a new schedule tree that maximizes +// parallelism and tileability and minimizes data-dependence distances. The +// algorithm used is a modified version of the ``Pluto'' algorithm: +// +// U. Bondhugula, A. Hartono, J. Ramanujam, and P. Sadayappan. +// A Practical Automatic Polyhedral Parallelizer and Locality Optimizer. +// In Proceedings of the 2008 ACM SIGPLAN Conference On Programming Language +// Design and Implementation, PLDI ’08, pages 101–113. ACM, 2008. +// +// 2) A set of post-scheduling transformations is applied on the schedule tree. +// +// These optimizations include: +// +// - Tiling of the innermost tilable bands +// - Prevectorization - The coice of a possible outer loop that is strip-mined +// to the innermost level to enable inner-loop +// vectorization. +// - Some optimizations for spatial locality are also planned. +// +// For a detailed description of the schedule tree itself please see section 6 +// of: +// +// Polyhedral AST generation is more than scanning polyhedra +// Tobias Grosser, Sven Verdoolaege, Albert Cohen +// ACM Transations on Programming Languages and Systems (TOPLAS), +// 37(4), July 2015 +// http://www.grosser.es/#pub-polyhedral-AST-generation +// +// This publication also contains a detailed discussion of the different options +// for polyhedral loop unrolling, full/partial tile separation and other uses +// of the schedule tree. // -// U. Bondhugula, A. Hartono, J. Ramanujam, and P. Sadayappan. -// A Practical Automatic Polyhedral Parallelizer and Locality Optimizer. -// In Proceedings of the 2008 ACM SIGPLAN Conference On Programming Language -// Design and Implementation, PLDI ’08, pages 101–113. ACM, 2008. //===----------------------------------------------------------------------===// #include "polly/ScheduleOptimizer.h" |

