PolyOpt/C

a Polyhedral Optimizer for the ROSE compiler




[<< home] [news] [description] [documentation] [download] [installation] [user guide] On development, version 0.2.1 available

News

Copyright notice This software was produced with support from the Defense Advanced Research Projects Agency (DARPA) through AFRL Contract FA8650-09-C-1915. Nothing in this work should be construed as reflecting the official policy or position of the Defense Department, the United States government, Rice University or Ohio State University.
THIS SOFTWARE HAS BEEN APPROVED FOR PUBLIC RELEASE, UNLIMITED DISTRIBUTION.

Description

PolyOpt is a polyhedral loop optimization framework, integrated in the ROSE compiler. The main features are:

Note, only a subset of C/C++ is currently supported by PolyOpt/C.

Documentation

Please note that the following documents are preliminary. Don't hesitate to contact the author Louis-Noel Pouchet for any question.


Download

Download PolyOpt/C. A working ROSE installation is a pre-requesite.


Installation

The installation of PolyOpt/C is packaged in an installer script install.sh. It assumes ROSE is built, and will download and install a local copy of PoCC.

$> tar xzf polyopt-c-0.2.1.tar.gz
$> cd polyopt-c-0.2.1
$> export ROSE_ROOT=/path/to/rose/install
$> export BOOST_ROOT=/path/to/boost/install
$> ./install.sh
$> export PATH=$PATH:`pwd`/src

For a test run of the compiler:

$> PolyOpt dgemm.c

To inspect the available options:

$> PolyOpt --polyopt-help
Available options for PolyOpt: 
--polyopt-help
Verbosity options: 
--polyopt-verbose
--polyopt-quiet
Main optimization paths: 
--polyopt-fixed-tiling
--polyopt-parametric-tiling
--polyopt-parallel-only
Scop extraction related options: 
--polyopt-generic-scop-extractor
--polyopt-approximate-scop-extractor
--polyopt-safe-math-func
--polyopt-scop-extractor-verbose=1
--polyopt-scop-extractor-verbose=2
--polyopt-scop-extractor-verbose=3
--polyopt-scop-extractor-verbose=4
Main driver related options: 
--polyopt-annotate-only
--polyopt-annotate-inner-loops
--polyopt-compute-ddv
--polyopt-hullify-ddv
--polyopt-generate-pragmas
Codegen related options: 
--polyopt-codegen-use-past
--polyopt-codegen-use-clast
--polyopt-codegen-use-ptile
--polyopt-codegen-insert-ptile-api
Dependence analysis options: 
--polyopt-scalar-privatization
PoCC related options: 
--polyopt-pocc-verbose
--polyopt-pluto
--polyopt-pluto-tile
--polyopt-pluto-parallel
--polyopt-pluto-prevector
--polyopt-pluto-fuse-<maxfuse,smartfuse,nofuse>
--polyopt-pluto-rar
--polyopt-pluto-lastwriter


Manual

User guide