PolyOpt/C
Line 61: | Line 61: | ||
$> PolyOpt --polyopt-help | $> PolyOpt --polyopt-help | ||
− | + | Available options for PolyOpt: | |
− | Available options for PolyOpt: | + | --polyopt-help |
− | --polyopt-help | + | Verbosity options: |
− | Verbosity options: | + | --polyopt-verbose |
− | --polyopt-verbose | + | --polyopt-quiet |
− | --polyopt-quiet | + | Main optimization paths: |
− | Main optimization paths: | + | --polyopt-fixed-tiling |
− | --polyopt-fixed-tiling | + | --polyopt-parametric-tiling |
− | --polyopt-parametric-tiling | + | --polyopt-parallel-only |
− | --polyopt-parallel-only | + | Scop extraction related options: |
− | Scop extraction related options: | + | --polyopt-generic-scop-extractor |
− | --polyopt-generic-scop-extractor | + | --polyopt-approximate-scop-extractor |
− | --polyopt-approximate-scop-extractor | + | --polyopt-safe-math-func |
− | --polyopt-safe-math-func | + | --polyopt-scop-extractor-verbose=1 |
− | --polyopt-scop-extractor-verbose=1 | + | --polyopt-scop-extractor-verbose=2 |
− | --polyopt-scop-extractor-verbose=2 | + | --polyopt-scop-extractor-verbose=3 |
− | --polyopt-scop-extractor-verbose=3 | + | --polyopt-scop-extractor-verbose=4 |
− | --polyopt-scop-extractor-verbose=4 | + | Main driver related options: |
− | Main driver related options: | + | --polyopt-annotate-only |
− | --polyopt-annotate-only | + | --polyopt-annotate-inner-loops |
− | --polyopt-annotate-inner-loops | + | --polyopt-compute-ddv |
− | --polyopt-compute-ddv | + | --polyopt-hullify-ddv |
− | --polyopt-hullify-ddv | + | --polyopt-generate-pragmas |
− | --polyopt-generate-pragmas | + | Codegen related options: |
− | Codegen related options: | + | --polyopt-codegen-use-past |
− | --polyopt-codegen-use-past | + | --polyopt-codegen-use-clast |
− | --polyopt-codegen-use-clast | + | --polyopt-codegen-use-ptile |
− | --polyopt-codegen-use-ptile | + | --polyopt-codegen-insert-ptile-api |
− | --polyopt-codegen-insert-ptile-api | + | Dependence analysis options: |
− | Dependence analysis options: | + | --polyopt-scalar-privatization |
− | --polyopt-scalar-privatization | + | PoCC related options: |
− | PoCC related options: | + | --polyopt-pocc-verbose |
− | --polyopt-pocc-verbose | + | --polyopt-pluto |
− | --polyopt-pluto | + | --polyopt-pluto-tile |
− | --polyopt-pluto-tile | + | --polyopt-pluto-parallel |
− | --polyopt-pluto-parallel | + | --polyopt-pluto-prevector |
− | --polyopt-pluto-prevector | + | --polyopt-pluto-fuse-<maxfuse,smartfuse,nofuse> |
− | --polyopt-pluto-fuse-<maxfuse,smartfuse,nofuse> | + | --polyopt-pluto-rar |
− | --polyopt-pluto-rar | + | --polyopt-pluto-lastwriter |
− | --polyopt-pluto-lastwriter | + |
Latest revision as of 21:13, 12 March 2012
Contents |
Description
PolyOpt/C 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
Note, only a subset of C/C++ is currently supported by PolyOpt: see PolyOpt/Fortran for Fortran programs support.
News
- 03/12/2012: Release of the 0.2.1 version of PolyOpt/C.
- 01/23/2012: Pre-release of the 0.2.0 version of PolyOpt/C.
Download
- PolyOpt/C 0.2.1
- older version: PolyOpt/C 0.2.0 (pre-release)
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
Documentation
Please note that the following document is preliminary. The documentation will be improved soon. In the meantime, don't hesitate to contact the author for any question.
- PolyOpt manual: polyopt.pdf or the polyopt.html version.
- Installation guide: install.txt
- License: license.txt
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