The HPCRL provides Free Software available for public use, to ensure the dissemination of polyhedral compiler technologies being developed by the group. This software comprises source-to-source compilers, including PolyOpt/C and PolyOpt/Fortran that provide polyhedral compilation capabilities to the ROSE compiler; and a collection of benchmarks. The HOSTS (High Order STencil Synthesis) project addresses specifically the optimization of high-order stencil convolutions, and is now part of PolyOpt/C.
PolyOpt is a polyhedral loop optimization framework, integrated in the ROSE compiler. The main features are:
- Automatic extraction of regions that can be optimized in the polyhedral model
- Full support of PoCC (the Polyhedral Compiler Collection) analysis and optimizations:
- dependence analysis with Candl,
- program transformations for tiling and parallelism with Pluto,
- code generation with CLooG,
- parametric tiling with PTile.
- Numerous under-the-hood functionalities and optimizations.
We currently provide two packages:
- PolyOpt/C: targeting C/C++ program optimization.
- PolyOpt/Fortran: targeting Fortan program optimization.
PolyBench is a collection of benchmarks containing static control parts. The purpose is to uniformize the execution and monitoring of kernels, typically used in past and current publications. PolyBench features include:
- A single file, tunable at compile-time, used for the kernel instrumentation. It performs extra operations such as cache flushing before the kernel execution, and can set real-time scheduling to prevent OS interference.
- Non-null data initialization, and live-out data dump.
- Syntactic constructs to prevent any dead code elimination on the kernel.
- Parametric loop bounds in the kernels, for general-purpose implementation.
- Clear kernel marking, using #pragma scop and #pragma endscop delimiters.
- Polybench/C: a collection of 30 kernels (mostly linear algebra and stencils), written in C.
- Polybench/Fortran: a port of Polybench/C in Fortran.
PoCC PoCC, the Polyhedral Compiler Collection, is a flexible source-to-source iterative and model-driven compiler, embedding most of the state-of-the-art tools for polyhedral compilation. PoCC is a language-independent compiler, embedding its own internal representation of imperative programs that can be manipulated in the polyhedral model.
PoCC embeds powerful Free software for polyhedral compilation. This software is accessible from the main driver, and several IR conversion functions allows to communicate easily between passes of the compiler:
- Clan, the Chunky loop analyzer, to extract a polyhedral intermediate representation from the source code
- Candl, the Chunky analyzer for dependences in loops, to compute polyhedral dependences from the polyhedral IR
- LetSee, the Legal transformation Space explorator, for iterative compilation using affine multidimensional schedules
- PLuTo, an automatic parallelizer and locality optimizer for multicores, for powerful optimization with tiling and parallelism in the polyhedral model
- CLooG, the Chunky Loop Generator, to generate syntactic code from the polyhedral representation
- PIPLib, the Parametric Integer Programming Library
- PolyLib, the Polyhedral Library
- ISL, the Integer Set Library
- FM, the Fourier-Motzkin library