[polly] r245157 - AST Generation Paper published in TOPLAS

Tobias Grosser via llvm-commits llvm-commits at lists.llvm.org
Sat Aug 15 02:34:33 PDT 2015


Author: grosser
Date: Sat Aug 15 04:34:33 2015
New Revision: 245157

URL: http://llvm.org/viewvc/llvm-project?rev=245157&view=rev
Log:
AST Generation Paper published in TOPLAS

The July issue of TOPLAS contains a 50 page discussion of the AST generation
techniques used in Polly. This discussion gives not only an in-depth
description of how we (re)generate an imperative AST from our polyhedral based
mathematical program description, but also gives interesting insights about:

- Schedule trees: A tree-based mathematical program description that enables us
to perform loop transformations on an abstract level, while issues like the
generation of the correct loop structure and loop bounds will be taken care of
by our AST generator.

- Polyhedral unrolling: We discuss techniques that allow the unrolling of
non-trivial loops in the context of parameteric loop bounds, complex tile
shapes and conditionally executed statements. Such unrolling support enables
the generation of predicated code e.g. in the context of GPGPU computing.

- Isolation for full/partial tile separation: We discuss native support for
handling full/partial tile separation and -- in general -- native support for
isolation of boundary cases to enable smooth code generation for core
computations.

- AST generation with modulo constraints: We discuss how modulo mappings are
lowered to efficient C/LLVM code.

- User-defined constraint sets for run-time checks We discuss how arbitrary
sets of constraints can be used to automatically create run-time checks that
ensure a set of constrainst actually hold. This feature is very useful to
verify at run-time various assumptions that have been taken program
optimization.

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

Modified:
    polly/trunk/lib/CodeGen/IslAst.cpp
    polly/trunk/lib/Transform/ScheduleOptimizer.cpp
    polly/trunk/www/index.html
    polly/trunk/www/publications.html

Modified: polly/trunk/lib/CodeGen/IslAst.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/CodeGen/IslAst.cpp?rev=245157&r1=245156&r2=245157&view=diff
==============================================================================
--- polly/trunk/lib/CodeGen/IslAst.cpp (original)
+++ polly/trunk/lib/CodeGen/IslAst.cpp Sat Aug 15 04:34:33 2015
@@ -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"

Modified: polly/trunk/lib/Transform/ScheduleOptimizer.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Transform/ScheduleOptimizer.cpp?rev=245157&r1=245156&r2=245157&view=diff
==============================================================================
--- polly/trunk/lib/Transform/ScheduleOptimizer.cpp (original)
+++ polly/trunk/lib/Transform/ScheduleOptimizer.cpp Sat Aug 15 04:34:33 2015
@@ -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:
-//
-// 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.
+// 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.
+//
 //===----------------------------------------------------------------------===//
 
 #include "polly/ScheduleOptimizer.h"

Modified: polly/trunk/www/index.html
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/www/index.html?rev=245157&r1=245156&r2=245157&view=diff
==============================================================================
--- polly/trunk/www/index.html (original)
+++ polly/trunk/www/index.html Sat Aug 15 04:34:33 2015
@@ -44,6 +44,49 @@
 
   <table id="news">
   <tr><td><b>2015</b></td></tr>
+  <tr><td width="120"><p>July</p></td>
+  <td>
+    <h4>AST Generation Paper published in TOPLAS</h4>
+    The July issue of TOPLAS contains a 50 page discussion of the AST
+    generation techniques used in Polly. This discussion gives not only an
+    in-depth description of how we (re)generate an imperative AST from our
+    polyhedral based mathematical program description, but also gives
+    interesting insights about:
+    <ul>
+      <li><b>Schedule trees:</b> A tree-based mathematical program description
+      that enables us to perform loop transformations on an abstract level,
+      while issues like the generation of the correct loop structure and loop
+      bounds will be taken care of by our AST generator.
+      <li><b>Polyhedral unrolling:</b> We discuss techniques that allow the
+      unrolling of non-trivial loops in the context of parameteric loop bounds,
+      complex tile shapes and conditionally executed statements. Such unrolling
+      support enables the generation of predicated code e.g. in the context of
+      GPGPU computing.
+      <li><b>Isolation for full/partial tile separation:</b> We discuss native
+      support for handling full/partial tile separation and -- in general --
+      native support for isolation of boundary cases to enable smooth code
+      generation for core computations.
+      <li><b>AST generation with modulo constraints:</b> We discuss how modulo
+      mappings are lowered to efficient C/LLVM code.
+      <li><b>User-defined constraint sets for run-time checks</b> We discuss how
+      arbitrary sets of constraints can be used to automatically create run-time
+      checks that ensure a set of constrainst actually hold. This feature is
+      very useful to verify at run-time various assumptions that have been taken
+      program optimization.
+    </ul>
+
+   <a href="http://www.grosser.es#pub-polyhedral-AST-generation">
+   <em>Polyhedral AST generation is more than scanning polyhedra</em></a><br />
+    Tobias Grosser, Sven Verdoolaege, Albert Cohen<br />
+    ACM Transations on Programming Languages and Systems (TOPLAS), 37(4),
+    July 2015
+
+    <br>
+    <br>
+    <br>
+    <br>
+  </td>
+  </tr>
   <tr><td width="120"><p>February</p></td>
   <td>
     <h4>Polly allows now non-affine subregions</h4>

Modified: polly/trunk/www/publications.html
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/www/publications.html?rev=245157&r1=245156&r2=245157&view=diff
==============================================================================
--- polly/trunk/www/publications.html (original)
+++ polly/trunk/www/publications.html Sat Aug 15 04:34:33 2015
@@ -38,6 +38,12 @@ Parallel Processing Letters 2012 22:04<b
   <h2> Publications involving Polly </h2>
   <h3> 2015 </h3>
   <ul>
+  <li><em>Polyhedral AST generation is more than scanning polyhedra</em><br />
+  Tobias Grosser, Sven Verdoolaege, Albert Cohen<br />
+   ACM Transations on Programming Languages and Systems (TOPLAS), 37(4), July
+   2015<br />
+  <a href="http://www.grosser.es#pub-polyhedral-AST-generation">Paper</a>
+  </li>
   <li><em>On recovering multi-dimensional arrays in Polly</em><br />
   Tobias Grosser, Sebastian Pop, J. Ramanujam, P. Sadayappan <br />
   Impact2015 at HiPEAC, Amsterdam, The Netherlands<br />




More information about the llvm-commits mailing list