PolyOpt/C

From HPCRL Wiki
(Difference between revisions)
Jump to: navigation, search
(Created page with "== Description == PolyOpt/C is a polyhedral loop optimization framework, integrated in the [http://www.rosecompiler.org ROSE] compiler. The main features are: * Automatic extra...")
 
 
(2 intermediate revisions by one user not shown)
Line 14: Line 14:
  
 
== News ==
 
== 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.  
 
* 01/23/2012:  Pre-release of the 0.2.0 version of PolyOpt/C.  
Line 20: Line 22:
 
== Download ==
 
== Download ==
  
* [http://hpcrl.cse.ohio-state.edu/downloads/polyopt-0.2.0.tar.gz PolyOpt/C 0.2.0] (pre-release)  
+
* '''[http://hpcrl.cse.ohio-state.edu/downloads/polyopt/polyopt-c-0.2.1.tar.gz PolyOpt/C 0.2.1] '''
 +
* older version: [http://hpcrl.cse.ohio-state.edu/downloads/polyopt/polyopt-0.2.0.tar.gz PolyOpt/C 0.2.0] (pre-release)  
  
 
===== Copyright notice =====  
 
===== Copyright notice =====  
Line 32: Line 35:
 
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.
 
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: [http://hpcrl.cse.ohio-state.edu/downloads/polyopt-0.2.0.pdf polyopt.pdf].
+
* PolyOpt manual: [http://hpcrl.cse.ohio-state.edu/downloads/polyopt/doc/polyopt-c-0.2.1.pdf polyopt.pdf] or the  [http://hpcrl.cse.ohio-state.edu/downloads/polyopt/doc/htmltexinfo/index.html polyopt.html] version.
 +
* Installation guide:  [http://hpcrl.cse.ohio-state.edu/downloads/polyopt/doc/INSTALL.standard install.txt]
 +
* License:  [http://hpcrl.cse.ohio-state.edu/downloads/polyopt/doc/LICENSE.txt license.txt]
 +
 
  
  
Line 39: Line 45:
 
The installation of PolyOpt/C is packaged in an installer script install.sh. It assumes [http://www.rosecompiler.org ROSE] is built, and will download and install a local copy of [http://www.cse.ohio-state.edu/~pouchet/software/pocc PoCC].
 
The installation of PolyOpt/C is packaged in an installer script install.sh. It assumes [http://www.rosecompiler.org ROSE] is built, and will download and install a local copy of [http://www.cse.ohio-state.edu/~pouchet/software/pocc PoCC].
  
  $> tar xzf polyopt-0.2.0-pre.tar.gz
+
  $> tar xzf polyopt-c-0.2.1.tar.gz
  $> cd polyopt-0.2.0-pre
+
  $> cd polyopt-c-0.2.1
 
  $> export ROSE_ROOT=/path/to/rose/install
 
  $> export ROSE_ROOT=/path/to/rose/install
 
  $> export BOOST_ROOT=/path/to/boost/install
 
  $> export BOOST_ROOT=/path/to/boost/install
Line 49: Line 55:
 
For a test run of the compiler:
 
For a test run of the compiler:
  
  $> PolyRose --polyopt-help
+
  $> PolyOpt dgemm.c
  
  
 
To inspect the available options:
 
To inspect the available options:
  
  $> PolyRose -h
+
  $> PolyOpt --polyopt-help
  Available options for PolyOpt:  
+
  Available options for PolyOpt:
 
  --polyopt-help
 
  --polyopt-help
 
  Verbosity options:  
 
  Verbosity options:  
Line 66: Line 72:
 
  Scop extraction related options:  
 
  Scop extraction related options:  
 
  --polyopt-generic-scop-extractor
 
  --polyopt-generic-scop-extractor
--polyopt-strict-scop-extractor
 
--polyopt-unsafe-scop-extractor
 
 
  --polyopt-approximate-scop-extractor
 
  --polyopt-approximate-scop-extractor
 
  --polyopt-safe-math-func
 
  --polyopt-safe-math-func
--polyopt-f2c-scop-extractor
 
 
  --polyopt-scop-extractor-verbose=1
 
  --polyopt-scop-extractor-verbose=1
 
  --polyopt-scop-extractor-verbose=2
 
  --polyopt-scop-extractor-verbose=2
Line 88: Line 91:
 
  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-l2tile
 
 
  --polyopt-pluto-parallel
 
  --polyopt-pluto-parallel
--polyopt-pluto-unroll
 
 
  --polyopt-pluto-prevector
 
  --polyopt-pluto-prevector
  --polyopt-pluto-fuse-maxfuse
+
  --polyopt-pluto-fuse-<maxfuse,smartfuse,nofuse>
--polyopt-pluto-fuse-smartfuse
+
--polyopt-pluto-fuse-nofuse
+
 
  --polyopt-pluto-rar
 
  --polyopt-pluto-rar
 
  --polyopt-pluto-lastwriter
 
  --polyopt-pluto-lastwriter
--polyopt-pluto-multipipe
 
--polyopt-pluto-scalpriv
 
--polyopt-pluto-bee
 
--polyopt-pluto-context
 
--polyopt-letsee
 
--polyopt-letsee-normspace
 
--polyopt-letsee-prune-precut
 
--polyopt-letsee-backtrack-multi
 
--polyopt-vectorizer
 
--polyopt-storage-compaction
 

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

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.


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
Personal tools