Frameworks supporting the polyhedral model

Use of the polyhedral model within a compiler requires software to represent the objects of this framework (sets of integer-valued points in regions of various spaces) and perform operations upon them (e.g., testing whether the set is empty). Use of the polyhedral model within a compiler requires software to represent the objects of this framework (sets of integer-valued points in regions of various spaces) and perform operations upon them (e.g., testing whether the set is empty). For more detail about the objects and operations in this model, and an example relating the model to the programs being compiled, see the polyhedral model page. There are many frameworks supporting the polyhedral model. Some of these frameworks use one or more libraries forperforming polyhedral operations. Others, notably Omega, combine everything in a single package.Some commonly used libraries are the Omega Library (and a more recent fork), piplib, PolyLib, PPL, isl,the cloog polyhedral code generator, and the barvinok library for counting integer solutions.Of these libraries, PolyLib and PPL focus mostly on rational values, while the other libraries focus on integer values.The polyhedral framework of gcc is called Graphite. Polly provides polyhedral optimizations for LLVM, and R-Stream has had a polyhedral mapper since ca. 2006. Polyhedral frameworks are designed to support compilers techniques for analysis and transformation of codes with nested loops, producing exact results for loop nests with affine loop bounds and subscripts ('Static Control Parts' of programs). They can be used to represent and reason about executions (iterations) of statements, rather than treating a statement as a single object representing properties of all executions of that statement. Polyhedral frameworks typically also allow the use of symbolic expressions.

[ "Polytope model" ]
Parent Topic
Child Topic
    No Parent Topic