http://hpcrl.cse.ohio-state.edu/wiki/index.php?title=Special:Contributions/Rountev&feed=atom&deletedOnly=&limit=50&target=Rountev&topOnly=&year=&month=HPCRL Wiki - User contributions [en]2024-03-29T11:24:18ZFrom HPCRL WikiMediaWiki 1.17.0http://hpcrl.cse.ohio-state.edu/wiki/index.php/IEIE2015-08-04T17:15:59Z<p>Rountev: /* Publications */</p>
<hr />
<div>== Overview ==<br />
<br />
The Inspector/Executor Compiler (IEC) implements a source-to-source transformation scheme for generating distributed memory code for irregular parallel loops. Loops might also contain dependences through associative and commutative reduction operators. Details of code-generation scheme described in the publications listed below.<br />
<br />
== Publications ==<br />
<br />
M. Ravishankar, R. Dathathri, V. Elango, L.-N. Pouchet, J. Ramanujam, A. Rountev, and P. Sadayappan, "Distributed Memory Code Generation for Mixed Irregular/Regular Computations", ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP), 2015. [http://hpcrl.cse.ohio-state.edu/IEC/ppopp15_ie.pdf link].<br />
Example of generated code: [http://hpcrl.cse.ohio-state.edu/IEC/example.pdf link].<br />
<br />
M. Ravishankar, J. Eisenlohr, L.-N. Pouchet, J. Ramanujam, A. Rountev, and P Sadayappan, "Automatic Parallelization of a Class of Irregular Loops for Distributed Memory Systems", ACM Transaction on Parallel Computing (TOPC), Sept 2014 [http://hpcrl.cse.ohio-state.edu/IEC/topc13.pdf link].<br />
<br />
M. Ravishankar, J. Eisenlohr, L.-N. Pouchet, J. Ramanujam, A. Rountev, and P. Sadayappan, "Code Generation for Parallel Execution of a Class of Irregular Loops on Distributed Memory Systems", Supercomputing (SC), 2012. [http://hpcrl.cse.ohio-state.edu/IEC/sc_12-ie.pdf link].<br />
<br />
== Download ==<br />
<br />
* [http://hpcrl.cse.ohio-state.edu/IEC/IEC.tar.gz IEC 0.1]<br />
** [http://hpcrl.cse.ohio-state.edu/IEC/README README]<br />
<br />
== Installation ==<br />
<br />
Please follow the instructions in the README<br />
<br />
== Acknowledgements ==<br />
<br />
This software is based upon work supported by the U. S. National Science Foundation under grants 0811457, 0904549, 0926127, 0926687, 1059417, 1321147 and 1404995 and by the U.S. Department of Energy under grant DE-SC0008844. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation, the Department of Energy, or The Ohio State University.</div>Rountevhttp://hpcrl.cse.ohio-state.edu/wiki/index.php/IEIE2015-08-04T17:11:47Z<p>Rountev: /* Overview */</p>
<hr />
<div>== Overview ==<br />
<br />
The Inspector/Executor Compiler (IEC) implements a source-to-source transformation scheme for generating distributed memory code for irregular parallel loops. Loops might also contain dependences through associative and commutative reduction operators. Details of code-generation scheme described in the publications listed below.<br />
<br />
== Publications ==<br />
<br />
M Ravishankar, R Dathathri, V Elango, LN Pouchet, J Ramanujam, A Rountev, P Sadayappan, "Distributed Memory Code Generation for Mixed Irregular/Regular Computations", PPoPP 2015, San Fransisco, CA, USA. [http://hpcrl.cse.ohio-state.edu/IEC/ppopp15_ie.pdf link].<br />
Example of generated code : [http://hpcrl.cse.ohio-state.edu/IEC/example.pdf link]<br />
<br />
M Ravishankar, J Eisenlohr, LN Pouchet, J Ramanujam, A Rountev, P Sadayappan, "Automatic Parallelization of a Class of Irregular Loops for Distributed Memory Systems", ACM Transaction on Parallel Computing, Sept 2014. [http://hpcrl.cse.ohio-state.edu/IEC/topc13.pdf link].<br />
<br />
M Ravishankar, J Eisenlohr, LN Pouchet, J Ramanujam, A Rountev, P Sadayappan, "Code generation for parallel execution of a class of irregular loops on distributed memory systems", Supercomputing 2012, Salt Lake City, UT, USA. [http://hpcrl.cse.ohio-state.edu/IEC/sc_12-ie.pdf link].<br />
<br />
<br />
<br />
== Download ==<br />
<br />
* [http://hpcrl.cse.ohio-state.edu/IEC/IEC.tar.gz IEC 0.1]<br />
** [http://hpcrl.cse.ohio-state.edu/IEC/README README]<br />
<br />
== Installation ==<br />
<br />
Please follow the instructions in the README<br />
<br />
== Acknowledgements ==<br />
<br />
This software is based upon work supported by the U. S. National Science Foundation under grants 0811457, 0904549, 0926127, 0926687, 1059417, 1321147 and 1404995 and by the U.S. Department of Energy under grant DE-SC0008844. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation, the Department of Energy, or The Ohio State University.</div>Rountevhttp://hpcrl.cse.ohio-state.edu/wiki/index.php/IEIE2015-08-04T17:04:46Z<p>Rountev: </p>
<hr />
<div>== Overview ==<br />
<br />
The Inspector/Executor Compiler (IEC) implements a source-to-source transformation scheme for generating distributed memory code for irregular parallel loops. Loops might also contain dependences through associative and commutative reduction operators. Details of code-generation scheme described in these papers in [http://dl.acm.org/citation.cfm?id=2389094 Supercomputing 2012] and in TOPC (to be published soon)<br />
<br />
== Publications ==<br />
<br />
M Ravishankar, R Dathathri, V Elango, LN Pouchet, J Ramanujam, A Rountev, P Sadayappan, "Distributed Memory Code Generation for Mixed Irregular/Regular Computations", PPoPP 2015, San Fransisco, CA, USA. [http://hpcrl.cse.ohio-state.edu/IEC/ppopp15_ie.pdf link].<br />
Example of generated code : [http://hpcrl.cse.ohio-state.edu/IEC/example.pdf link]<br />
<br />
M Ravishankar, J Eisenlohr, LN Pouchet, J Ramanujam, A Rountev, P Sadayappan, "Automatic Parallelization of a Class of Irregular Loops for Distributed Memory Systems", ACM Transaction on Parallel Computing, Sept 2014. [http://hpcrl.cse.ohio-state.edu/IEC/topc13.pdf link].<br />
<br />
M Ravishankar, J Eisenlohr, LN Pouchet, J Ramanujam, A Rountev, P Sadayappan, "Code generation for parallel execution of a class of irregular loops on distributed memory systems", Supercomputing 2012, Salt Lake City, UT, USA. [http://hpcrl.cse.ohio-state.edu/IEC/sc_12-ie.pdf link].<br />
<br />
<br />
<br />
== Download ==<br />
<br />
* [http://hpcrl.cse.ohio-state.edu/IEC/IEC.tar.gz IEC 0.1]<br />
** [http://hpcrl.cse.ohio-state.edu/IEC/README README]<br />
<br />
== Installation ==<br />
<br />
Please follow the instructions in the README<br />
<br />
== Acknowledgements ==<br />
<br />
This software is based upon work supported by the U. S. National Science Foundation under grants 0811457, 0904549, 0926127, 0926687, 1059417, 1321147 and 1404995 and by the U.S. Department of Energy under grant DE-SC0008844. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation, the Department of Energy, or The Ohio State University.</div>Rountevhttp://hpcrl.cse.ohio-state.edu/wiki/index.php/IEIE2015-08-04T17:03:10Z<p>Rountev: </p>
<hr />
<div>== Overview ==<br />
<br />
The Inspector/Executor Compiler (IEC) implements a source-to-source transformation scheme for generating distributed memory code for irregular parallel loops. Loops might also contain dependences through associative and commutative reduction operators. Details of code-generation scheme described in these papers in [http://dl.acm.org/citation.cfm?id=2389094 Supercomputing 2012] and in TOPC (to be published soon)<br />
<br />
== Publications ==<br />
<br />
M Ravishankar, R Dathathri, V Elango, LN Pouchet, J Ramanujam, A Rountev, P Sadayappan, "Distributed Memory Code Generation for Mixed Irregular/Regular Computations", PPoPP 2015, San Fransisco, CA, USA. [http://hpcrl.cse.ohio-state.edu/IEC/ppopp15_ie.pdf link].<br />
Example of generated code : [http://hpcrl.cse.ohio-state.edu/IEC/example.pdf link]<br />
<br />
M Ravishankar, J Eisenlohr, LN Pouchet, J Ramanujam, A Rountev, P Sadayappan, "Code generation for parallel execution of a class of irregular loops on distributed memory systems", Supercomputing 2012, Salt Lake City, UT, USA. [http://hpcrl.cse.ohio-state.edu/IEC/sc_12-ie.pdf link].<br />
<br />
M Ravishankar, J Eisenlohr, LN Pouchet, J Ramanujam, A Rountev, P Sadayappan, "Automatic Parallelization of a Class of Irregular Loops for Distributed Memory Systems", [http://hpcrl.cse.ohio-state.edu/IEC/topc13.pdf link], ACM Transaction on Parallel Computing, Sept 2014 <br />
<br />
== Download ==<br />
<br />
* [http://hpcrl.cse.ohio-state.edu/IEC/IEC.tar.gz IEC 0.1]<br />
** [http://hpcrl.cse.ohio-state.edu/IEC/README README]<br />
<br />
== Installation ==<br />
<br />
Please follow the instructions in the README<br />
<br />
== Acknowledgements ==<br />
<br />
This software is based upon work supported by the U. S. National Science Foundation under grants 0811457, 0904549, 0926127, 0926687, 1059417, 1321147 and 1404995 and by the U.S. Department of Energy under grant DE-SC0008844. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation, the Department of Energy, or The Ohio State University.</div>Rountevhttp://hpcrl.cse.ohio-state.edu/wiki/index.php/PolyOpt/FortranPolyOpt/Fortran2012-08-30T17:56:42Z<p>Rountev: /* Description */</p>
<hr />
<div>== Description == <br />
<br />
PolyOpt/Fortran is a polyhedral loop optimization framework for Fortran, integrated in the [http://www.rosecompiler.org ROSE] compiler. The main features are:<br />
* Automatic extraction of regions that can be optimized in the polyhedral model<br />
* Full support of PoCC (the Polyhedral Compiler Collection) analysis and optimizations:<br />
** Dependence analysis with Candl<br />
** Program transformations for tiling and parallelism with Pluto<br />
** Code generation with CLooG<br />
** Parametric tiling with PTile<br />
* Numerous under-the-hood functionalities and optimizations<br />
<br />
Note that only a subset of Fortran is currently supported by PolyOpt/Fortran: see [[PolyOpt/C]] for C/C++ programs support.<br />
<br />
== News ==<br />
<br />
* 03/09/2012: Release of the 0.1.0 version of PolyOpt/Fortran.<br />
<br />
== Download ==<br />
<br />
* [http://hpcrl.cse.ohio-state.edu/downloads/polyopt-fortran-0.1.0.tar.gz PolyOpt/Fortran 0.1.0]<br />
<br />
== Documentation ==<br />
<br />
Please note that the following document is preliminary. The documentation will be improved soon. In the meantime, do not hesitate to contact the authors for any questions.<br />
<br />
PolyOpt manual: [http://hpcrl.cse.ohio-state.edu/downloads/polyopt-fortran-0.1.0.pdf polyopt.pdf].<br />
<br />
=== Installation ===<br />
<br />
The installation of PolyOpt/Fortran 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].<br />
<br />
$> tar xzf polyopt-fortran-0.1.0.tar.gz<br />
$> cd polyopt-fortran-0.1.0<br />
$> export ROSE_ROOT=/path/to/rose/install<br />
$> export BOOST_ROOT=/path/to/boost/install<br />
$> ./install.sh<br />
$> export PATH=$PATH:`pwd`/src<br />
<br />
For a test run of the compiler:<br />
<br />
$> PolyRose --polyopt-help<br />
<br />
To inspect the available options:<br />
<br />
$> PolyRose --polyopt-help<br />
Available options for PolyOpt/Fortran: <br />
--polyopt-help<br />
Verbosity options: <br />
--polyopt-verbose<br />
--polyopt-quiet<br />
Main optimization paths: <br />
--polyopt-fixed-tiling<br />
--polyopt-parametric-tiling<br />
--polyopt-parallel-only<br />
Scop extraction related options: <br />
--polyopt-generic-scop-extractor<br />
--polyopt-approximate-scop-extractor<br />
--polyopt-safe-math-func<br />
--polyopt-scop-extractor-verbose=1<br />
--polyopt-scop-extractor-verbose=2<br />
--polyopt-scop-extractor-verbose=3<br />
--polyopt-scop-extractor-verbose=4<br />
Main driver related options: <br />
--polyopt-generate-pragmas<br />
Codegen related options: <br />
--polyopt-codegen-use-past<br />
--polyopt-codegen-use-ptile<br />
--polyopt-codegen-insert-ptile-api<br />
Dependence analysis options: <br />
--polyopt-scalar-privatization<br />
PoCC related options: <br />
--polyopt-pocc-verbose<br />
--polyopt-pluto<br />
--polyopt-pluto-tile<br />
--polyopt-pluto-parallel<br />
--polyopt-pluto-prevector<br />
--polyopt-pluto-fuse-<maxfuse,smartfuse,nofuse><br />
<br />
== Acknowledgements ==<br />
<br />
<br />
This software was produced with support from the Defense Advanced Research Projects Agency (DARPA) through AFRL Contract FA8650-09-C-7915 and from the Department of Energy through grant DE-SC0005033. Nothing in this work should be construed as reflecting the official policy or position of the US Defense Department, the US Department of Energy, the United States government, Ohio State University, or Rice University.<br />
THIS SOFTWARE HAS BEEN APPROVED FOR PUBLIC RELEASE, UNLIMITED DISTRIBUTION.</div>Rountevhttp://hpcrl.cse.ohio-state.edu/wiki/index.php/PolyOpt/FortranPolyOpt/Fortran2012-08-30T17:55:56Z<p>Rountev: /* Documentation */</p>
<hr />
<div>== Description == <br />
<br />
PolyOpt/Fortran is a polyhedral loop optimization framework for Fortran, integrated in the [http://www.rosecompiler.org ROSE] compiler. The main features are:<br />
* Automatic extraction of regions that can be optimized in the polyhedral model<br />
* Full support of PoCC (the Polyhedral Compiler Collection) analysis and optimizations:<br />
** Dependence analysis with Candl<br />
** Program transformations for tiling and parallelism with Pluto<br />
** Code generation with CLooG<br />
** Parametric tiling with PTile<br />
* Numerous under-the-hood functionalities and optimizations<br />
<br />
Note, only a subset of Fortran is currently supported by PolyOpt/Fortran: see [[PolyOpt/C]] for C/C++ programs support.<br />
<br />
== News ==<br />
<br />
* 03/09/2012: Release of the 0.1.0 version of PolyOpt/Fortran.<br />
<br />
== Download ==<br />
<br />
* [http://hpcrl.cse.ohio-state.edu/downloads/polyopt-fortran-0.1.0.tar.gz PolyOpt/Fortran 0.1.0]<br />
<br />
== Documentation ==<br />
<br />
Please note that the following document is preliminary. The documentation will be improved soon. In the meantime, do not hesitate to contact the authors for any questions.<br />
<br />
PolyOpt manual: [http://hpcrl.cse.ohio-state.edu/downloads/polyopt-fortran-0.1.0.pdf polyopt.pdf].<br />
<br />
=== Installation ===<br />
<br />
The installation of PolyOpt/Fortran 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].<br />
<br />
$> tar xzf polyopt-fortran-0.1.0.tar.gz<br />
$> cd polyopt-fortran-0.1.0<br />
$> export ROSE_ROOT=/path/to/rose/install<br />
$> export BOOST_ROOT=/path/to/boost/install<br />
$> ./install.sh<br />
$> export PATH=$PATH:`pwd`/src<br />
<br />
For a test run of the compiler:<br />
<br />
$> PolyRose --polyopt-help<br />
<br />
To inspect the available options:<br />
<br />
$> PolyRose --polyopt-help<br />
Available options for PolyOpt/Fortran: <br />
--polyopt-help<br />
Verbosity options: <br />
--polyopt-verbose<br />
--polyopt-quiet<br />
Main optimization paths: <br />
--polyopt-fixed-tiling<br />
--polyopt-parametric-tiling<br />
--polyopt-parallel-only<br />
Scop extraction related options: <br />
--polyopt-generic-scop-extractor<br />
--polyopt-approximate-scop-extractor<br />
--polyopt-safe-math-func<br />
--polyopt-scop-extractor-verbose=1<br />
--polyopt-scop-extractor-verbose=2<br />
--polyopt-scop-extractor-verbose=3<br />
--polyopt-scop-extractor-verbose=4<br />
Main driver related options: <br />
--polyopt-generate-pragmas<br />
Codegen related options: <br />
--polyopt-codegen-use-past<br />
--polyopt-codegen-use-ptile<br />
--polyopt-codegen-insert-ptile-api<br />
Dependence analysis options: <br />
--polyopt-scalar-privatization<br />
PoCC related options: <br />
--polyopt-pocc-verbose<br />
--polyopt-pluto<br />
--polyopt-pluto-tile<br />
--polyopt-pluto-parallel<br />
--polyopt-pluto-prevector<br />
--polyopt-pluto-fuse-<maxfuse,smartfuse,nofuse><br />
<br />
== Acknowledgements ==<br />
<br />
<br />
This software was produced with support from the Defense Advanced Research Projects Agency (DARPA) through AFRL Contract FA8650-09-C-7915 and from the Department of Energy through grant DE-SC0005033. Nothing in this work should be construed as reflecting the official policy or position of the US Defense Department, the US Department of Energy, the United States government, Ohio State University, or Rice University.<br />
THIS SOFTWARE HAS BEEN APPROVED FOR PUBLIC RELEASE, UNLIMITED DISTRIBUTION.</div>Rountevhttp://hpcrl.cse.ohio-state.edu/wiki/index.php/PolyOpt/FortranPolyOpt/Fortran2012-08-30T17:55:46Z<p>Rountev: /* Documentation */</p>
<hr />
<div>== Description == <br />
<br />
PolyOpt/Fortran is a polyhedral loop optimization framework for Fortran, integrated in the [http://www.rosecompiler.org ROSE] compiler. The main features are:<br />
* Automatic extraction of regions that can be optimized in the polyhedral model<br />
* Full support of PoCC (the Polyhedral Compiler Collection) analysis and optimizations:<br />
** Dependence analysis with Candl<br />
** Program transformations for tiling and parallelism with Pluto<br />
** Code generation with CLooG<br />
** Parametric tiling with PTile<br />
* Numerous under-the-hood functionalities and optimizations<br />
<br />
Note, only a subset of Fortran is currently supported by PolyOpt/Fortran: see [[PolyOpt/C]] for C/C++ programs support.<br />
<br />
== News ==<br />
<br />
* 03/09/2012: Release of the 0.1.0 version of PolyOpt/Fortran.<br />
<br />
== Download ==<br />
<br />
* [http://hpcrl.cse.ohio-state.edu/downloads/polyopt-fortran-0.1.0.tar.gz PolyOpt/Fortran 0.1.0]<br />
<br />
== Documentation ==<br />
<br />
Please note that the following document is preliminary. The documentation will be improved soon. In the meantime, do not hesitate to contact the authors for any question.<br />
<br />
PolyOpt manual: [http://hpcrl.cse.ohio-state.edu/downloads/polyopt-fortran-0.1.0.pdf polyopt.pdf].<br />
<br />
=== Installation ===<br />
<br />
The installation of PolyOpt/Fortran 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].<br />
<br />
$> tar xzf polyopt-fortran-0.1.0.tar.gz<br />
$> cd polyopt-fortran-0.1.0<br />
$> export ROSE_ROOT=/path/to/rose/install<br />
$> export BOOST_ROOT=/path/to/boost/install<br />
$> ./install.sh<br />
$> export PATH=$PATH:`pwd`/src<br />
<br />
For a test run of the compiler:<br />
<br />
$> PolyRose --polyopt-help<br />
<br />
To inspect the available options:<br />
<br />
$> PolyRose --polyopt-help<br />
Available options for PolyOpt/Fortran: <br />
--polyopt-help<br />
Verbosity options: <br />
--polyopt-verbose<br />
--polyopt-quiet<br />
Main optimization paths: <br />
--polyopt-fixed-tiling<br />
--polyopt-parametric-tiling<br />
--polyopt-parallel-only<br />
Scop extraction related options: <br />
--polyopt-generic-scop-extractor<br />
--polyopt-approximate-scop-extractor<br />
--polyopt-safe-math-func<br />
--polyopt-scop-extractor-verbose=1<br />
--polyopt-scop-extractor-verbose=2<br />
--polyopt-scop-extractor-verbose=3<br />
--polyopt-scop-extractor-verbose=4<br />
Main driver related options: <br />
--polyopt-generate-pragmas<br />
Codegen related options: <br />
--polyopt-codegen-use-past<br />
--polyopt-codegen-use-ptile<br />
--polyopt-codegen-insert-ptile-api<br />
Dependence analysis options: <br />
--polyopt-scalar-privatization<br />
PoCC related options: <br />
--polyopt-pocc-verbose<br />
--polyopt-pluto<br />
--polyopt-pluto-tile<br />
--polyopt-pluto-parallel<br />
--polyopt-pluto-prevector<br />
--polyopt-pluto-fuse-<maxfuse,smartfuse,nofuse><br />
<br />
== Acknowledgements ==<br />
<br />
<br />
This software was produced with support from the Defense Advanced Research Projects Agency (DARPA) through AFRL Contract FA8650-09-C-7915 and from the Department of Energy through grant DE-SC0005033. Nothing in this work should be construed as reflecting the official policy or position of the US Defense Department, the US Department of Energy, the United States government, Ohio State University, or Rice University.<br />
THIS SOFTWARE HAS BEEN APPROVED FOR PUBLIC RELEASE, UNLIMITED DISTRIBUTION.</div>Rountevhttp://hpcrl.cse.ohio-state.edu/wiki/index.php/PolyOpt/FortranPolyOpt/Fortran2012-08-30T17:55:18Z<p>Rountev: /* Documentation */</p>
<hr />
<div>== Description == <br />
<br />
PolyOpt/Fortran is a polyhedral loop optimization framework for Fortran, integrated in the [http://www.rosecompiler.org ROSE] compiler. The main features are:<br />
* Automatic extraction of regions that can be optimized in the polyhedral model<br />
* Full support of PoCC (the Polyhedral Compiler Collection) analysis and optimizations:<br />
** Dependence analysis with Candl<br />
** Program transformations for tiling and parallelism with Pluto<br />
** Code generation with CLooG<br />
** Parametric tiling with PTile<br />
* Numerous under-the-hood functionalities and optimizations<br />
<br />
Note, only a subset of Fortran is currently supported by PolyOpt/Fortran: see [[PolyOpt/C]] for C/C++ programs support.<br />
<br />
== News ==<br />
<br />
* 03/09/2012: Release of the 0.1.0 version of PolyOpt/Fortran.<br />
<br />
== Download ==<br />
<br />
* [http://hpcrl.cse.ohio-state.edu/downloads/polyopt-fortran-0.1.0.tar.gz PolyOpt/Fortran 0.1.0]<br />
<br />
== Documentation ==<br />
<br />
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.<br />
<br />
PolyOpt manual: [http://hpcrl.cse.ohio-state.edu/downloads/polyopt-fortran-0.1.0.pdf polyopt.pdf].<br />
<br />
=== Installation ===<br />
<br />
The installation of PolyOpt/Fortran 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].<br />
<br />
$> tar xzf polyopt-fortran-0.1.0.tar.gz<br />
$> cd polyopt-fortran-0.1.0<br />
$> export ROSE_ROOT=/path/to/rose/install<br />
$> export BOOST_ROOT=/path/to/boost/install<br />
$> ./install.sh<br />
$> export PATH=$PATH:`pwd`/src<br />
<br />
For a test run of the compiler:<br />
<br />
$> PolyRose --polyopt-help<br />
<br />
To inspect the available options:<br />
<br />
$> PolyRose --polyopt-help<br />
Available options for PolyOpt/Fortran: <br />
--polyopt-help<br />
Verbosity options: <br />
--polyopt-verbose<br />
--polyopt-quiet<br />
Main optimization paths: <br />
--polyopt-fixed-tiling<br />
--polyopt-parametric-tiling<br />
--polyopt-parallel-only<br />
Scop extraction related options: <br />
--polyopt-generic-scop-extractor<br />
--polyopt-approximate-scop-extractor<br />
--polyopt-safe-math-func<br />
--polyopt-scop-extractor-verbose=1<br />
--polyopt-scop-extractor-verbose=2<br />
--polyopt-scop-extractor-verbose=3<br />
--polyopt-scop-extractor-verbose=4<br />
Main driver related options: <br />
--polyopt-generate-pragmas<br />
Codegen related options: <br />
--polyopt-codegen-use-past<br />
--polyopt-codegen-use-ptile<br />
--polyopt-codegen-insert-ptile-api<br />
Dependence analysis options: <br />
--polyopt-scalar-privatization<br />
PoCC related options: <br />
--polyopt-pocc-verbose<br />
--polyopt-pluto<br />
--polyopt-pluto-tile<br />
--polyopt-pluto-parallel<br />
--polyopt-pluto-prevector<br />
--polyopt-pluto-fuse-<maxfuse,smartfuse,nofuse><br />
<br />
== Acknowledgements ==<br />
<br />
<br />
This software was produced with support from the Defense Advanced Research Projects Agency (DARPA) through AFRL Contract FA8650-09-C-7915 and from the Department of Energy through grant DE-SC0005033. Nothing in this work should be construed as reflecting the official policy or position of the US Defense Department, the US Department of Energy, the United States government, Ohio State University, or Rice University.<br />
THIS SOFTWARE HAS BEEN APPROVED FOR PUBLIC RELEASE, UNLIMITED DISTRIBUTION.</div>Rountevhttp://hpcrl.cse.ohio-state.edu/wiki/index.php/PolyOpt/FortranPolyOpt/Fortran2012-08-30T17:54:58Z<p>Rountev: /* Download */</p>
<hr />
<div>== Description == <br />
<br />
PolyOpt/Fortran is a polyhedral loop optimization framework for Fortran, integrated in the [http://www.rosecompiler.org ROSE] compiler. The main features are:<br />
* Automatic extraction of regions that can be optimized in the polyhedral model<br />
* Full support of PoCC (the Polyhedral Compiler Collection) analysis and optimizations:<br />
** Dependence analysis with Candl<br />
** Program transformations for tiling and parallelism with Pluto<br />
** Code generation with CLooG<br />
** Parametric tiling with PTile<br />
* Numerous under-the-hood functionalities and optimizations<br />
<br />
Note, only a subset of Fortran is currently supported by PolyOpt/Fortran: see [[PolyOpt/C]] for C/C++ programs support.<br />
<br />
== News ==<br />
<br />
* 03/09/2012: Release of the 0.1.0 version of PolyOpt/Fortran.<br />
<br />
== Download ==<br />
<br />
* [http://hpcrl.cse.ohio-state.edu/downloads/polyopt-fortran-0.1.0.tar.gz PolyOpt/Fortran 0.1.0]<br />
<br />
== Documentation ==<br />
<br />
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.<br />
<br />
PolyOpt manual: [http://hpcrl.cse.ohio-state.edu/downloads/polyopt-fortran-0.1.0.pdf polyopt.pdf].<br />
<br />
<br />
=== Installation ===<br />
<br />
The installation of PolyOpt/Fortran 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].<br />
<br />
$> tar xzf polyopt-fortran-0.1.0.tar.gz<br />
$> cd polyopt-fortran-0.1.0<br />
$> export ROSE_ROOT=/path/to/rose/install<br />
$> export BOOST_ROOT=/path/to/boost/install<br />
$> ./install.sh<br />
$> export PATH=$PATH:`pwd`/src<br />
<br />
<br />
<br />
For a test run of the compiler:<br />
<br />
$> PolyRose --polyopt-help<br />
<br />
<br />
To inspect the available options:<br />
<br />
$> PolyRose --polyopt-help<br />
Available options for PolyOpt/Fortran: <br />
--polyopt-help<br />
Verbosity options: <br />
--polyopt-verbose<br />
--polyopt-quiet<br />
Main optimization paths: <br />
--polyopt-fixed-tiling<br />
--polyopt-parametric-tiling<br />
--polyopt-parallel-only<br />
Scop extraction related options: <br />
--polyopt-generic-scop-extractor<br />
--polyopt-approximate-scop-extractor<br />
--polyopt-safe-math-func<br />
--polyopt-scop-extractor-verbose=1<br />
--polyopt-scop-extractor-verbose=2<br />
--polyopt-scop-extractor-verbose=3<br />
--polyopt-scop-extractor-verbose=4<br />
Main driver related options: <br />
--polyopt-generate-pragmas<br />
Codegen related options: <br />
--polyopt-codegen-use-past<br />
--polyopt-codegen-use-ptile<br />
--polyopt-codegen-insert-ptile-api<br />
Dependence analysis options: <br />
--polyopt-scalar-privatization<br />
PoCC related options: <br />
--polyopt-pocc-verbose<br />
--polyopt-pluto<br />
--polyopt-pluto-tile<br />
--polyopt-pluto-parallel<br />
--polyopt-pluto-prevector<br />
--polyopt-pluto-fuse-<maxfuse,smartfuse,nofuse><br />
<br />
== Acknowledgements ==<br />
<br />
<br />
This software was produced with support from the Defense Advanced Research Projects Agency (DARPA) through AFRL Contract FA8650-09-C-7915 and from the Department of Energy through grant DE-SC0005033. Nothing in this work should be construed as reflecting the official policy or position of the US Defense Department, the US Department of Energy, the United States government, Ohio State University, or Rice University.<br />
THIS SOFTWARE HAS BEEN APPROVED FOR PUBLIC RELEASE, UNLIMITED DISTRIBUTION.</div>Rountevhttp://hpcrl.cse.ohio-state.edu/wiki/index.php/PolyOpt/FortranPolyOpt/Fortran2012-08-30T17:52:56Z<p>Rountev: </p>
<hr />
<div>== Description == <br />
<br />
PolyOpt/Fortran is a polyhedral loop optimization framework for Fortran, integrated in the [http://www.rosecompiler.org ROSE] compiler. The main features are:<br />
* Automatic extraction of regions that can be optimized in the polyhedral model<br />
* Full support of PoCC (the Polyhedral Compiler Collection) analysis and optimizations:<br />
** Dependence analysis with Candl<br />
** Program transformations for tiling and parallelism with Pluto<br />
** Code generation with CLooG<br />
** Parametric tiling with PTile<br />
* Numerous under-the-hood functionalities and optimizations<br />
<br />
Note, only a subset of Fortran is currently supported by PolyOpt/Fortran: see [[PolyOpt/C]] for C/C++ programs support.<br />
<br />
== News ==<br />
<br />
* 03/09/2012: Release of the 0.1.0 version of PolyOpt/Fortran.<br />
<br />
== Download ==<br />
<br />
* [http://hpcrl.cse.ohio-state.edu/downloads/polyopt-fortran-0.1.0.tar.gz PolyOpt/Fortran 0.1.0] <br />
<br />
<br />
<br />
== Documentation ==<br />
<br />
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.<br />
<br />
PolyOpt manual: [http://hpcrl.cse.ohio-state.edu/downloads/polyopt-fortran-0.1.0.pdf polyopt.pdf].<br />
<br />
<br />
=== Installation ===<br />
<br />
The installation of PolyOpt/Fortran 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].<br />
<br />
$> tar xzf polyopt-fortran-0.1.0.tar.gz<br />
$> cd polyopt-fortran-0.1.0<br />
$> export ROSE_ROOT=/path/to/rose/install<br />
$> export BOOST_ROOT=/path/to/boost/install<br />
$> ./install.sh<br />
$> export PATH=$PATH:`pwd`/src<br />
<br />
<br />
<br />
For a test run of the compiler:<br />
<br />
$> PolyRose --polyopt-help<br />
<br />
<br />
To inspect the available options:<br />
<br />
$> PolyRose --polyopt-help<br />
Available options for PolyOpt/Fortran: <br />
--polyopt-help<br />
Verbosity options: <br />
--polyopt-verbose<br />
--polyopt-quiet<br />
Main optimization paths: <br />
--polyopt-fixed-tiling<br />
--polyopt-parametric-tiling<br />
--polyopt-parallel-only<br />
Scop extraction related options: <br />
--polyopt-generic-scop-extractor<br />
--polyopt-approximate-scop-extractor<br />
--polyopt-safe-math-func<br />
--polyopt-scop-extractor-verbose=1<br />
--polyopt-scop-extractor-verbose=2<br />
--polyopt-scop-extractor-verbose=3<br />
--polyopt-scop-extractor-verbose=4<br />
Main driver related options: <br />
--polyopt-generate-pragmas<br />
Codegen related options: <br />
--polyopt-codegen-use-past<br />
--polyopt-codegen-use-ptile<br />
--polyopt-codegen-insert-ptile-api<br />
Dependence analysis options: <br />
--polyopt-scalar-privatization<br />
PoCC related options: <br />
--polyopt-pocc-verbose<br />
--polyopt-pluto<br />
--polyopt-pluto-tile<br />
--polyopt-pluto-parallel<br />
--polyopt-pluto-prevector<br />
--polyopt-pluto-fuse-<maxfuse,smartfuse,nofuse><br />
<br />
== Acknowledgements ==<br />
<br />
<br />
This software was produced with support from the Defense Advanced Research Projects Agency (DARPA) through AFRL Contract FA8650-09-C-7915 and from the Department of Energy through grant DE-SC0005033. Nothing in this work should be construed as reflecting the official policy or position of the US Defense Department, the US Department of Energy, the United States government, Ohio State University, or Rice University.<br />
THIS SOFTWARE HAS BEEN APPROVED FOR PUBLIC RELEASE, UNLIMITED DISTRIBUTION.</div>Rountevhttp://hpcrl.cse.ohio-state.edu/wiki/index.php/PolyOpt/FortranPolyOpt/Fortran2012-08-30T17:50:25Z<p>Rountev: /* Acknowledgements */</p>
<hr />
<div>== Description == <br />
<br />
PolyOpt/Fortran is a polyhedral loop optimization framework for Fortran, integrated in the [http://www.rosecompiler.org ROSE] compiler. The main features are:<br />
* Automatic extraction of regions that can be optimized in the polyhedral model<br />
* Full support of PoCC (the Polyhedral Compiler Collection) analysis and optimizations:<br />
** Dependence analysis with Candl<br />
** Program transformations for tiling and parallelism with Pluto<br />
** Code generation with CLooG<br />
** Parametric tiling with PTile<br />
* Numerous under-the-hood functionalities and optimizations<br />
<br />
Note, only a subset of Fortran is currently supported by PolyOpt/Fortran: see [[PolyOpt/C]] for C/C++ programs support.<br />
<br />
== News ==<br />
<br />
* 03/09/2012: Release of the 0.1.0 version of PolyOpt/Fortran.<br />
<br />
== Download ==<br />
<br />
* [http://hpcrl.cse.ohio-state.edu/downloads/polyopt-fortran-0.1.0.tar.gz PolyOpt/Fortran 0.1.0] <br />
<br />
== Acknowledgements ==<br />
<br />
<br />
This software was produced with support from the Defense Advanced Research Projects Agency (DARPA) through AFRL Contract FA8650-09-C-7915 and from the Department of Energy through grant DE-SC0005033. Nothing in this work should be construed as reflecting the official policy or position of the US Defense Department, the US Department of Energy, the United States government, Ohio State University, or Rice University.<br />
THIS SOFTWARE HAS BEEN APPROVED FOR PUBLIC RELEASE, UNLIMITED DISTRIBUTION.<br />
<br />
== Documentation ==<br />
<br />
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.<br />
<br />
PolyOpt manual: [http://hpcrl.cse.ohio-state.edu/downloads/polyopt-fortran-0.1.0.pdf polyopt.pdf].<br />
<br />
<br />
=== Installation ===<br />
<br />
The installation of PolyOpt/Fortran 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].<br />
<br />
$> tar xzf polyopt-fortran-0.1.0.tar.gz<br />
$> cd polyopt-fortran-0.1.0<br />
$> export ROSE_ROOT=/path/to/rose/install<br />
$> export BOOST_ROOT=/path/to/boost/install<br />
$> ./install.sh<br />
$> export PATH=$PATH:`pwd`/src<br />
<br />
<br />
<br />
For a test run of the compiler:<br />
<br />
$> PolyRose --polyopt-help<br />
<br />
<br />
To inspect the available options:<br />
<br />
$> PolyRose --polyopt-help<br />
Available options for PolyOpt/Fortran: <br />
--polyopt-help<br />
Verbosity options: <br />
--polyopt-verbose<br />
--polyopt-quiet<br />
Main optimization paths: <br />
--polyopt-fixed-tiling<br />
--polyopt-parametric-tiling<br />
--polyopt-parallel-only<br />
Scop extraction related options: <br />
--polyopt-generic-scop-extractor<br />
--polyopt-approximate-scop-extractor<br />
--polyopt-safe-math-func<br />
--polyopt-scop-extractor-verbose=1<br />
--polyopt-scop-extractor-verbose=2<br />
--polyopt-scop-extractor-verbose=3<br />
--polyopt-scop-extractor-verbose=4<br />
Main driver related options: <br />
--polyopt-generate-pragmas<br />
Codegen related options: <br />
--polyopt-codegen-use-past<br />
--polyopt-codegen-use-ptile<br />
--polyopt-codegen-insert-ptile-api<br />
Dependence analysis options: <br />
--polyopt-scalar-privatization<br />
PoCC related options: <br />
--polyopt-pocc-verbose<br />
--polyopt-pluto<br />
--polyopt-pluto-tile<br />
--polyopt-pluto-parallel<br />
--polyopt-pluto-prevector<br />
--polyopt-pluto-fuse-<maxfuse,smartfuse,nofuse></div>Rountevhttp://hpcrl.cse.ohio-state.edu/wiki/index.php/PolyOpt/FortranPolyOpt/Fortran2012-08-30T17:50:14Z<p>Rountev: /* Download */</p>
<hr />
<div>== Description == <br />
<br />
PolyOpt/Fortran is a polyhedral loop optimization framework for Fortran, integrated in the [http://www.rosecompiler.org ROSE] compiler. The main features are:<br />
* Automatic extraction of regions that can be optimized in the polyhedral model<br />
* Full support of PoCC (the Polyhedral Compiler Collection) analysis and optimizations:<br />
** Dependence analysis with Candl<br />
** Program transformations for tiling and parallelism with Pluto<br />
** Code generation with CLooG<br />
** Parametric tiling with PTile<br />
* Numerous under-the-hood functionalities and optimizations<br />
<br />
Note, only a subset of Fortran is currently supported by PolyOpt/Fortran: see [[PolyOpt/C]] for C/C++ programs support.<br />
<br />
== News ==<br />
<br />
* 03/09/2012: Release of the 0.1.0 version of PolyOpt/Fortran.<br />
<br />
== Download ==<br />
<br />
* [http://hpcrl.cse.ohio-state.edu/downloads/polyopt-fortran-0.1.0.tar.gz PolyOpt/Fortran 0.1.0] <br />
<br />
== Acknowledgements ==<br />
---------------<br />
<br />
This software was produced with support from the Defense Advanced Research Projects Agency (DARPA) through AFRL Contract FA8650-09-C-7915 and from the Department of Energy through grant DE-SC0005033. Nothing in this work should be construed as reflecting the official policy or position of the US Defense Department, the US Department of Energy, the United States government, Ohio State University, or Rice University.<br />
THIS SOFTWARE HAS BEEN APPROVED FOR PUBLIC RELEASE, UNLIMITED DISTRIBUTION.<br />
<br />
== Documentation ==<br />
<br />
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.<br />
<br />
PolyOpt manual: [http://hpcrl.cse.ohio-state.edu/downloads/polyopt-fortran-0.1.0.pdf polyopt.pdf].<br />
<br />
<br />
=== Installation ===<br />
<br />
The installation of PolyOpt/Fortran 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].<br />
<br />
$> tar xzf polyopt-fortran-0.1.0.tar.gz<br />
$> cd polyopt-fortran-0.1.0<br />
$> export ROSE_ROOT=/path/to/rose/install<br />
$> export BOOST_ROOT=/path/to/boost/install<br />
$> ./install.sh<br />
$> export PATH=$PATH:`pwd`/src<br />
<br />
<br />
<br />
For a test run of the compiler:<br />
<br />
$> PolyRose --polyopt-help<br />
<br />
<br />
To inspect the available options:<br />
<br />
$> PolyRose --polyopt-help<br />
Available options for PolyOpt/Fortran: <br />
--polyopt-help<br />
Verbosity options: <br />
--polyopt-verbose<br />
--polyopt-quiet<br />
Main optimization paths: <br />
--polyopt-fixed-tiling<br />
--polyopt-parametric-tiling<br />
--polyopt-parallel-only<br />
Scop extraction related options: <br />
--polyopt-generic-scop-extractor<br />
--polyopt-approximate-scop-extractor<br />
--polyopt-safe-math-func<br />
--polyopt-scop-extractor-verbose=1<br />
--polyopt-scop-extractor-verbose=2<br />
--polyopt-scop-extractor-verbose=3<br />
--polyopt-scop-extractor-verbose=4<br />
Main driver related options: <br />
--polyopt-generate-pragmas<br />
Codegen related options: <br />
--polyopt-codegen-use-past<br />
--polyopt-codegen-use-ptile<br />
--polyopt-codegen-insert-ptile-api<br />
Dependence analysis options: <br />
--polyopt-scalar-privatization<br />
PoCC related options: <br />
--polyopt-pocc-verbose<br />
--polyopt-pluto<br />
--polyopt-pluto-tile<br />
--polyopt-pluto-parallel<br />
--polyopt-pluto-prevector<br />
--polyopt-pluto-fuse-<maxfuse,smartfuse,nofuse></div>Rountevhttp://hpcrl.cse.ohio-state.edu/wiki/index.php/PolyOpt/FortranPolyOpt/Fortran2012-08-30T17:49:49Z<p>Rountev: /* Acknowledgements */</p>
<hr />
<div>== Description == <br />
<br />
PolyOpt/Fortran is a polyhedral loop optimization framework for Fortran, integrated in the [http://www.rosecompiler.org ROSE] compiler. The main features are:<br />
* Automatic extraction of regions that can be optimized in the polyhedral model<br />
* Full support of PoCC (the Polyhedral Compiler Collection) analysis and optimizations:<br />
** Dependence analysis with Candl<br />
** Program transformations for tiling and parallelism with Pluto<br />
** Code generation with CLooG<br />
** Parametric tiling with PTile<br />
* Numerous under-the-hood functionalities and optimizations<br />
<br />
Note, only a subset of Fortran is currently supported by PolyOpt/Fortran: see [[PolyOpt/C]] for C/C++ programs support.<br />
<br />
== News ==<br />
<br />
* 03/09/2012: Release of the 0.1.0 version of PolyOpt/Fortran.<br />
<br />
== Download ==<br />
<br />
* [http://hpcrl.cse.ohio-state.edu/downloads/polyopt-fortran-0.1.0.tar.gz PolyOpt/Fortran 0.1.0] <br />
<br />
=== Acknowledgements ===<br />
---------------<br />
<br />
This software was produced with support from the Defense Advanced Research Projects Agency (DARPA) through AFRL Contract FA8650-09-C-7915 and from the Department of Energy through grant DE-SC0005033. Nothing in this work should be construed as reflecting the official policy or position of the US Defense Department, the US Department of Energy, the United States government, Ohio State University, or Rice University.<br />
THIS SOFTWARE HAS BEEN APPROVED FOR PUBLIC RELEASE, UNLIMITED DISTRIBUTION.<br />
<br />
== Documentation ==<br />
<br />
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.<br />
<br />
PolyOpt manual: [http://hpcrl.cse.ohio-state.edu/downloads/polyopt-fortran-0.1.0.pdf polyopt.pdf].<br />
<br />
<br />
=== Installation ===<br />
<br />
The installation of PolyOpt/Fortran 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].<br />
<br />
$> tar xzf polyopt-fortran-0.1.0.tar.gz<br />
$> cd polyopt-fortran-0.1.0<br />
$> export ROSE_ROOT=/path/to/rose/install<br />
$> export BOOST_ROOT=/path/to/boost/install<br />
$> ./install.sh<br />
$> export PATH=$PATH:`pwd`/src<br />
<br />
<br />
<br />
For a test run of the compiler:<br />
<br />
$> PolyRose --polyopt-help<br />
<br />
<br />
To inspect the available options:<br />
<br />
$> PolyRose --polyopt-help<br />
Available options for PolyOpt/Fortran: <br />
--polyopt-help<br />
Verbosity options: <br />
--polyopt-verbose<br />
--polyopt-quiet<br />
Main optimization paths: <br />
--polyopt-fixed-tiling<br />
--polyopt-parametric-tiling<br />
--polyopt-parallel-only<br />
Scop extraction related options: <br />
--polyopt-generic-scop-extractor<br />
--polyopt-approximate-scop-extractor<br />
--polyopt-safe-math-func<br />
--polyopt-scop-extractor-verbose=1<br />
--polyopt-scop-extractor-verbose=2<br />
--polyopt-scop-extractor-verbose=3<br />
--polyopt-scop-extractor-verbose=4<br />
Main driver related options: <br />
--polyopt-generate-pragmas<br />
Codegen related options: <br />
--polyopt-codegen-use-past<br />
--polyopt-codegen-use-ptile<br />
--polyopt-codegen-insert-ptile-api<br />
Dependence analysis options: <br />
--polyopt-scalar-privatization<br />
PoCC related options: <br />
--polyopt-pocc-verbose<br />
--polyopt-pluto<br />
--polyopt-pluto-tile<br />
--polyopt-pluto-parallel<br />
--polyopt-pluto-prevector<br />
--polyopt-pluto-fuse-<maxfuse,smartfuse,nofuse></div>Rountevhttp://hpcrl.cse.ohio-state.edu/wiki/index.php/PolyOpt/FortranPolyOpt/Fortran2012-08-30T17:49:30Z<p>Rountev: /* Acknowledgements */</p>
<hr />
<div>== Description == <br />
<br />
PolyOpt/Fortran is a polyhedral loop optimization framework for Fortran, integrated in the [http://www.rosecompiler.org ROSE] compiler. The main features are:<br />
* Automatic extraction of regions that can be optimized in the polyhedral model<br />
* Full support of PoCC (the Polyhedral Compiler Collection) analysis and optimizations:<br />
** Dependence analysis with Candl<br />
** Program transformations for tiling and parallelism with Pluto<br />
** Code generation with CLooG<br />
** Parametric tiling with PTile<br />
* Numerous under-the-hood functionalities and optimizations<br />
<br />
Note, only a subset of Fortran is currently supported by PolyOpt/Fortran: see [[PolyOpt/C]] for C/C++ programs support.<br />
<br />
== News ==<br />
<br />
* 03/09/2012: Release of the 0.1.0 version of PolyOpt/Fortran.<br />
<br />
== Download ==<br />
<br />
* [http://hpcrl.cse.ohio-state.edu/downloads/polyopt-fortran-0.1.0.tar.gz PolyOpt/Fortran 0.1.0] <br />
<br />
==== Acknowledgements ====<br />
---------------<br />
<br />
This software was produced with support from the Defense Advanced Research Projects Agency (DARPA) through AFRL Contract FA8650-09-C-7915 and from the Department of Energy through grant DE-SC0005033. Nothing in this work should be construed as reflecting the official policy or position of the US Defense Department, the US Department of Energy, the United States government, Ohio State University, or Rice University.<br />
THIS SOFTWARE HAS BEEN APPROVED FOR PUBLIC RELEASE, UNLIMITED DISTRIBUTION.<br />
<br />
== Documentation ==<br />
<br />
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.<br />
<br />
PolyOpt manual: [http://hpcrl.cse.ohio-state.edu/downloads/polyopt-fortran-0.1.0.pdf polyopt.pdf].<br />
<br />
<br />
=== Installation ===<br />
<br />
The installation of PolyOpt/Fortran 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].<br />
<br />
$> tar xzf polyopt-fortran-0.1.0.tar.gz<br />
$> cd polyopt-fortran-0.1.0<br />
$> export ROSE_ROOT=/path/to/rose/install<br />
$> export BOOST_ROOT=/path/to/boost/install<br />
$> ./install.sh<br />
$> export PATH=$PATH:`pwd`/src<br />
<br />
<br />
<br />
For a test run of the compiler:<br />
<br />
$> PolyRose --polyopt-help<br />
<br />
<br />
To inspect the available options:<br />
<br />
$> PolyRose --polyopt-help<br />
Available options for PolyOpt/Fortran: <br />
--polyopt-help<br />
Verbosity options: <br />
--polyopt-verbose<br />
--polyopt-quiet<br />
Main optimization paths: <br />
--polyopt-fixed-tiling<br />
--polyopt-parametric-tiling<br />
--polyopt-parallel-only<br />
Scop extraction related options: <br />
--polyopt-generic-scop-extractor<br />
--polyopt-approximate-scop-extractor<br />
--polyopt-safe-math-func<br />
--polyopt-scop-extractor-verbose=1<br />
--polyopt-scop-extractor-verbose=2<br />
--polyopt-scop-extractor-verbose=3<br />
--polyopt-scop-extractor-verbose=4<br />
Main driver related options: <br />
--polyopt-generate-pragmas<br />
Codegen related options: <br />
--polyopt-codegen-use-past<br />
--polyopt-codegen-use-ptile<br />
--polyopt-codegen-insert-ptile-api<br />
Dependence analysis options: <br />
--polyopt-scalar-privatization<br />
PoCC related options: <br />
--polyopt-pocc-verbose<br />
--polyopt-pluto<br />
--polyopt-pluto-tile<br />
--polyopt-pluto-parallel<br />
--polyopt-pluto-prevector<br />
--polyopt-pluto-fuse-<maxfuse,smartfuse,nofuse></div>Rountevhttp://hpcrl.cse.ohio-state.edu/wiki/index.php/Polybench/FortranPolybench/Fortran2012-08-30T17:44:06Z<p>Rountev: /* Acknowledgements */</p>
<hr />
<div>== News ==<br />
<br />
* 03/28/12: Public release of PolyBench/Fortran 1.0 [http://hpcrl.cse.ohio-state.edu/downloads/polybench-fortran-1.0.tar.gz Download]. PolyBench/Fortran is a port of [http://www.cse.ohio-state.edu/~pouchet/software/polybench/polybench.html PolyBench/C 3.2] in Fortran, written by [mailto:narayanm@cse.ohio-state.edu Mohanish Narayan].<br />
<br />
== Description == <br />
<br />
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:<br />
<br />
* 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.<br />
* Non-null data initialization, and live-out data dump.<br />
* Syntactic constructs to prevent any dead code elimination on the kernel.<br />
* Parametric loop bounds in the kernels, for general-purpose implementation.<br />
* Clear kernel marking, using !$pragma scop and !$pragma endscop delimiters.<br />
<br />
<br />
{| border="1"<br />
|+ '''Available benchmarks (PolyBench/Fortran version 1.0)'''<br />
! scope="col" | Benchmark <br />
! scope="col" | Description<br />
|-<br />
|2mm || 2 Matrix Multiplications (D=A.B; E=C.D)<br />
|-<br />
|3mm || 3 Matrix Multiplications (E=A.B; F=C.D; G=E.F)<br />
|-<br />
|adi || Alternating Direction Implicit solver<br />
|-<br />
|atax || Matrix Transpose and Vector Multiplication<br />
|-<br />
|bicg || BiCG Sub Kernel of BiCGStab Linear Solver<br />
|-<br />
|cholesky || Cholesky Decomposition<br />
|-<br />
|correlation || Correlation Computation<br />
|-<br />
|covariance || Covariance Computation<br />
|-<br />
|doitgen || Multiresolution analysis kernel (MADNESS)<br />
|-<br />
|durbin || Toeplitz system solver<br />
|-<br />
||dynprog || Dynamic programming (2D)<br />
|-<br />
|fdtd-2d || 2-D Finite Different Time Domain Kernel<br />
|-<br />
|fdtd-apml || FDTD using Anisotropic Perfectly Matched Layer<br />
|-<br />
||gauss-filter || Gaussian Filter<br />
|-<br />
|gemm || Matrix-multiply C=alpha.A.B+beta.C<br />
|-<br />
|gemver || Vector Multiplication and Matrix Addition<br />
|-<br />
|gesummv || Scalar, Vector and Matrix Multiplication<br />
|-<br />
|gramschmidt || Gram-Schmidt decomposition<br />
|-<br />
|jacobi-1D || 1-D Jacobi stencil computation<br />
|-<br />
|jacobi-2D || 2-D Jacobi stencil computation<br />
|-<br />
|lu || LU decomposition<br />
|-<br />
|ludcmp || LU decomposition<br />
|-<br />
|mvt || Matrix Vector Product and Transpose<br />
|-<br />
|reg-detect || 2-D Image processing<br />
|-<br />
|seidel || 2-D Seidel stencil computation<br />
|-<br />
|symm || Symmetric matrix-multiply<br />
|-<br />
|syr2k || Symmetric rank-2k operations<br />
|-<br />
|syrk || Symmetric rank-k operations<br />
|-<br />
|trisolv || Triangular solver<br />
|-<br />
|trmm || Triangular matrix-multiply <br />
|-<br />
|}<br />
<br />
== Download ==<br />
<br />
* Download Polybench/Fortran 1.0: [http://hpcrl.cse.ohio-state.edu/downloads/polybench-fortran-1.0.tar.gz polybench-fortran-1.0.tar.gz]<br />
<br />
== Documentation ==<br />
<br />
<br />
Copyright (c) 2011-2012 the Ohio State University.<br />
<br />
==== Contact ====<br />
* [mailto:pouchet@cse.ohio-state.edu Louis-Noel Pouchet]<br />
* [mailto:narayanm@cse.ohio-state.edu Mohanish Narayan] <br />
<br />
<br />
==== New in 1.0 ====<br />
* First release of Polybench/Fortran, based on Polybench/C 3.2<br />
<br />
<br />
==== Mailing lists ====<br />
* Announces about releases of PolyBench: [mailto:polybench-announces@lists.sourceforge.net polybench-announces@lists.sourceforge.net]<br />
<br />
* General discussions reg. PolyBench: [mailto:polybench-discussion@lists.sourceforge.net polybench-discussion@lists.sourceforge.net]<br />
<br />
<br />
==== Available benchmarks ====<br />
* '''linear-algebra'''<br />
** linear-algebra/solvers:<br />
*** linear-algebra/kernels/2mm/2mm.F90<br />
*** linear-algebra/kernels/3mm/3mm.F90<br />
*** linear-algebra/kernels/atax/atax.F90<br />
*** linear-algebra/kernels/bicg/bicg.F90<br />
*** linear-algebra/kernels/cholesky/cholesky.F90<br />
*** linear-algebra/kernels/doitgen/doitgen.F90<br />
*** linear-algebra/kernels/gemm/gemm.F90<br />
*** linear-algebra/kernels/gemver/gemver.F90<br />
*** linear-algebra/kernels/gesummv/gesummv.F90<br />
*** linear-algebra/kernels/mvt/mvt.F90<br />
*** linear-algebra/kernels/symm/symm.F90<br />
*** linear-algebra/kernels/syr2k/syr2k.F90<br />
*** linear-algebra/kernels/syrk/syrk.F90<br />
*** linear-algebra/kernels/trisolv/trisolv.F90<br />
*** linear-algebra/kernels/trmm/trmm.F90<br />
** linear-algebra/solvers:<br />
*** linear-algebra/solvers/durbin/durbin.F90<br />
*** linear-algebra/solvers/dynprog/dynprog.F90<br />
*** linear-algebra/solvers/gramschmidt/gramschmidt.F90<br />
*** linear-algebra/solvers/lu/lu.F90<br />
*** linear-algebra/solvers/ludcmp/ludcmp.F90<br />
* '''datamining'''<br />
** datamining/correlation/correlation.F90<br />
** datamining/covariance/covariance.F90<br />
* '''medley'''<br />
** medley/floyd-warshall/floyd-warshall.F90<br />
** medley/reg_detect/reg_detect.F90<br />
* '''stencils'''<br />
** stencils/adi/adi.F90<br />
** stencils/fdtd-2d/fdtd-2d.F90<br />
** stencils/fdtd-apml/fdtd-apml.F90<br />
** stencils/jacobi-1d-imper/jacobi-1d-imper.F90<br />
** stencils/jacobi-2d-imper/jacobi-2d-imper.F90<br />
** stencils/seidel-2d/seidel-2d.F90<br />
<br />
<br />
<br />
==== Sample compilation commands ====<br />
---------------<br />
====== To compile a benchmark without any monitoring ======<br />
<pre><br />
# Build utilities first <br />
$> gcc -c utilities/fpolybench.c -o utilities/fpolybench.o<br />
<br />
# Build the benchmark<br />
$> gfortran -ffree-line-length-none linear-algebra/kernels/atax/atax.F90 -Iutilities utilities/fpolybench.o -o atax_base<br />
</pre><br />
<br />
====== To compile a benchmark with execution time reporting ======<br />
<pre><br />
# Build utilities first <br />
$> gcc -c -DPOLYBENCH_TIME utilities/fpolybench.c -o utilities/fpolybench.o<br />
<br />
# Build the benchmark<br />
$> gfortran -ffree-line-length-none -DPOLYBENCH_TIME linear-algebra/kernels/atax/atax.F90 -Iutilities utilities/fpolybench.o -o atax_time<br />
</pre><br />
<br />
====== To generate the reference output of a benchmark ======<br />
<pre><br />
# Build utilities first <br />
$> gcc -c utilities/fpolybench.c -o utilities/fpolybench.o<br />
<br />
# Build the benchmark<br />
$> gfortran -ffree-line-length-none -O0 -DPOLYBENCH_DUMP_ARRAYS linear-algebra/kernels/atax/atax.F90 -Iutilities utilities/fpolybench.o -o atax_ref<br />
$> ./atax_ref 2>atax_ref.out<br />
</pre><br />
<br />
<br />
==== Some available options ====<br />
---------------<br />
They are all passed as macro definitions during compilation time (e.g,<br />
-Dname_of_the_option).<br />
<!--<br />
* POLYBENCH_TIME: <nowiki>output execution time (gettimeofday) [default: off]</nowiki><br />
* POLYBENCH_NO_FLUSH_CACHE: <nowiki>don't flush the cache before calling the<br />
timer [default: flush the cache]</nowiki><br />
* POLYBENCH_LINUX_FIFO_SCHEDULER: <nowiki>use FIFO real-time scheduler for the<br />
kernel execution, the program must be run as root, under linux only,<br />
and compiled with -lc [default: off]</nowiki><br />
* POLYBENCH_CACHE_SIZE_KB: <nowiki>cache size to flush, in kB [default: 33MB]</nowiki><br />
* POLYBENCH_STACK_ARRAYS: <nowoki>use stack allocation instead of malloc [default: off]</nowiki><br />
* POLYBENCH_DUMP_ARRAYS: <nowiki>dump all live-out arrays on stderr [default: off]</nowiki><br />
* POLYBENCH_CYCLE_ACCURATE_TIMER: <nowiki>Use Time Stamp Counter to monitor<br />
the execution time of the kernel [default: off]</nowiki><br />
* POLYBENCH_PAPI: <nowiki>turn on papi timing (see below).<br />
* MINI_DATASET, SMALL_DATASET, STANDARD_DATASET, LARGE_DATASET,<br />
EXTRALARGE_DATASET: set the dataset size to be used<br />
[default: STANDARD_DATASET]</nowiki><br />
* POLYBENCH_USE_SCALAR_LB: Use scalar loop bounds instead of parametric ones.--><br />
<br />
====== POLYBENCH_TIME ====== <br />
<nowiki>Output execution time (gettimeofday) [default: off]</nowiki><br />
<br />
====== POLYBENCH_NO_FLUSH_CACHE ======<br />
<nowiki>Don't flush the cache before calling the<br />
timer [default: flush the cache]</nowiki><br />
<br />
====== POLYBENCH_LINUX_FIFO_SCHEDULER ====== <br />
<nowiki>Use FIFO real-time scheduler for the<br />
kernel execution, the program must be run as root, under linux only,<br />
and compiled with -lc [default: off]</nowiki><br />
<br />
====== POLYBENCH_CACHE_SIZE_KB ====== <br />
<nowiki>Cache size to flush, in kB [default: 33MB]</nowiki><br />
<br />
====== POLYBENCH_STACK_ARRAYS ====== <br />
<nowiki>Use stack allocation instead of malloc [default: off]</nowiki><br />
<br />
====== POLYBENCH_DUMP_ARRAYS ====== <br />
<nowiki>Dump all live-out arrays on stderr [default: off]</nowiki><br />
<br />
====== POLYBENCH_CYCLE_ACCURATE_TIMER ====== <br />
<nowiki>Use Time Stamp Counter to monitor<br />
the execution time of the kernel [default: off]</nowiki><br />
<br />
====== POLYBENCH_PAPI ====== <br />
<nowiki>Turn on papi timing (see below).</nowiki><br />
<br />
====== MINI_DATASET, SMALL_DATASET, STANDARD_DATASET, LARGE_DATASET, EXTRALARGE_DATASET ====== <br />
<nowiki>Set the dataset size to be used<br />
[default: STANDARD_DATASET]</nowiki><br />
<br />
====== POLYBENCH_USE_SCALAR_LB ======<br />
Use scalar loop bounds instead of parametric ones.<br />
<br />
==== PAPI support ====<br />
---------------<br />
====== To compile a benchmark with PAPI support ======<br />
<pre><br />
# Build utilities first <br />
$> gcc -c utilities/fpolybench.c -o utilities/fpolybench.o -DPOLYBENCH_PAPI<br />
<br />
# Build the benchmark<br />
$> gfortran -ffree-line-length-none -O3 -DPOLYBENCH_PAPI linear-algebra/kernels/atax/atax.F90 -Iutilities utilities/fpolybench.o -o atax_papi<br />
</pre><br />
<br />
====== To specify which counter(s) to monitor ======<br />
Edit utilities/papi_counters.list, and add 1 line per event to<br />
monitor. Each line (including the last one) must finish with a ',' and<br />
both native and standard events are supported.<br />
<br />
The whole kernel is run one time per counter (no multiplexing) and<br />
there is no sampling being used for the counter value.<br />
<br />
<br />
==== Accurate performance timing ====<br />
---------------<br />
With kernels that have an execution time in the orders of a few tens<br />
of milliseconds, it is critical to validate any performance number by<br />
repeating several times the experiment. A companion script is<br />
available to perform reasonable performance measurement of a PolyBench.<br />
<br />
<pre><br />
# Build utilities first <br />
$> gcc -c -O3 utilities/fpolybench.c -o utilities/fpolybench.o -DPOLYBENCH_TIME<br />
<br />
# Build the benchmark<br />
$> gfortran -ffree-line-length-none -O3 -DPOLYBENCH_TIME linear-algebra/kernels/atax/atax.F90 -Iutilities utilities/fpolybench.o -o atax_time<br />
<br />
# Run the benchmark using the companion script.<br />
$> ./utilities/time_benchmark.sh ./atax_time<br />
</pre><br />
<br />
This script will run five times the benchmark (that must be a<br />
PolyBench compiled with -DPOLYBENCH_TIME), eliminate the two extremal<br />
times, and check that the deviation of the three remaining does not<br />
exceed a given thresold, set to 5%.<br />
<br />
It is also possible to use POLYBENCH_CYCLE_ACCURATE_TIMER to use the<br />
Time Stamp Counter instead of gettimeofday() to monitor the number of<br />
elapsed cycles.<br />
<br />
<br />
<br />
==== Generating macro-free benchmark suite ====<br />
---------------<br />
<pre><br />
(from the root of the archive:)<br />
$> PARGS="-I utilities -DPOLYBENCH_TIME";<br />
$> for i in `cat utilities/benchmark_list`; do create_pped_version.sh $i "$PARGS"; done<br />
</pre><br />
<br />
This create for each benchmark file 'xxx.F' a new file<br />
'xxx.preproc.F'. The PARGS variable in the above example can be set to<br />
the desired configuration.<br />
<br />
e.g<br />
<pre><br />
$> PARGS="-I utilities -DPOLYBENCH_STACK_ARRAYS -DPOLYBENCH_USE_SCALAR_LB -DLARGE_DATASET -DPOLYBENCH_TIME";<br />
$> for i in `cat utilities/benchmark_list`; do ./utilities/create_pped_version.sh "$i" "$PARGS"; done<br />
</pre><br />
<br />
==== Acknowledgements ====<br />
---------------<br />
This software was produced with support from the Department of Energy's<br />
Office of Advanced Scientific Computing under grant DE-SC0005033 and by the<br />
National Science Foundation under grant CCF-0811781. Nothing in this work<br />
should be construed as reflecting the official policy or position of the<br />
US Department of Energy, the US National Science Foundation, the United States<br />
government, or the Ohio State University.</div>Rountevhttp://hpcrl.cse.ohio-state.edu/wiki/index.php/Polybench/FortranPolybench/Fortran2012-08-30T17:43:37Z<p>Rountev: /* Acknowledgements */</p>
<hr />
<div>== News ==<br />
<br />
* 03/28/12: Public release of PolyBench/Fortran 1.0 [http://hpcrl.cse.ohio-state.edu/downloads/polybench-fortran-1.0.tar.gz Download]. PolyBench/Fortran is a port of [http://www.cse.ohio-state.edu/~pouchet/software/polybench/polybench.html PolyBench/C 3.2] in Fortran, written by [mailto:narayanm@cse.ohio-state.edu Mohanish Narayan].<br />
<br />
== Description == <br />
<br />
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:<br />
<br />
* 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.<br />
* Non-null data initialization, and live-out data dump.<br />
* Syntactic constructs to prevent any dead code elimination on the kernel.<br />
* Parametric loop bounds in the kernels, for general-purpose implementation.<br />
* Clear kernel marking, using !$pragma scop and !$pragma endscop delimiters.<br />
<br />
<br />
{| border="1"<br />
|+ '''Available benchmarks (PolyBench/Fortran version 1.0)'''<br />
! scope="col" | Benchmark <br />
! scope="col" | Description<br />
|-<br />
|2mm || 2 Matrix Multiplications (D=A.B; E=C.D)<br />
|-<br />
|3mm || 3 Matrix Multiplications (E=A.B; F=C.D; G=E.F)<br />
|-<br />
|adi || Alternating Direction Implicit solver<br />
|-<br />
|atax || Matrix Transpose and Vector Multiplication<br />
|-<br />
|bicg || BiCG Sub Kernel of BiCGStab Linear Solver<br />
|-<br />
|cholesky || Cholesky Decomposition<br />
|-<br />
|correlation || Correlation Computation<br />
|-<br />
|covariance || Covariance Computation<br />
|-<br />
|doitgen || Multiresolution analysis kernel (MADNESS)<br />
|-<br />
|durbin || Toeplitz system solver<br />
|-<br />
||dynprog || Dynamic programming (2D)<br />
|-<br />
|fdtd-2d || 2-D Finite Different Time Domain Kernel<br />
|-<br />
|fdtd-apml || FDTD using Anisotropic Perfectly Matched Layer<br />
|-<br />
||gauss-filter || Gaussian Filter<br />
|-<br />
|gemm || Matrix-multiply C=alpha.A.B+beta.C<br />
|-<br />
|gemver || Vector Multiplication and Matrix Addition<br />
|-<br />
|gesummv || Scalar, Vector and Matrix Multiplication<br />
|-<br />
|gramschmidt || Gram-Schmidt decomposition<br />
|-<br />
|jacobi-1D || 1-D Jacobi stencil computation<br />
|-<br />
|jacobi-2D || 2-D Jacobi stencil computation<br />
|-<br />
|lu || LU decomposition<br />
|-<br />
|ludcmp || LU decomposition<br />
|-<br />
|mvt || Matrix Vector Product and Transpose<br />
|-<br />
|reg-detect || 2-D Image processing<br />
|-<br />
|seidel || 2-D Seidel stencil computation<br />
|-<br />
|symm || Symmetric matrix-multiply<br />
|-<br />
|syr2k || Symmetric rank-2k operations<br />
|-<br />
|syrk || Symmetric rank-k operations<br />
|-<br />
|trisolv || Triangular solver<br />
|-<br />
|trmm || Triangular matrix-multiply <br />
|-<br />
|}<br />
<br />
== Download ==<br />
<br />
* Download Polybench/Fortran 1.0: [http://hpcrl.cse.ohio-state.edu/downloads/polybench-fortran-1.0.tar.gz polybench-fortran-1.0.tar.gz]<br />
<br />
== Documentation ==<br />
<br />
<br />
Copyright (c) 2011-2012 the Ohio State University.<br />
<br />
==== Contact ====<br />
* [mailto:pouchet@cse.ohio-state.edu Louis-Noel Pouchet]<br />
* [mailto:narayanm@cse.ohio-state.edu Mohanish Narayan] <br />
<br />
<br />
==== New in 1.0 ====<br />
* First release of Polybench/Fortran, based on Polybench/C 3.2<br />
<br />
<br />
==== Mailing lists ====<br />
* Announces about releases of PolyBench: [mailto:polybench-announces@lists.sourceforge.net polybench-announces@lists.sourceforge.net]<br />
<br />
* General discussions reg. PolyBench: [mailto:polybench-discussion@lists.sourceforge.net polybench-discussion@lists.sourceforge.net]<br />
<br />
<br />
==== Available benchmarks ====<br />
* '''linear-algebra'''<br />
** linear-algebra/solvers:<br />
*** linear-algebra/kernels/2mm/2mm.F90<br />
*** linear-algebra/kernels/3mm/3mm.F90<br />
*** linear-algebra/kernels/atax/atax.F90<br />
*** linear-algebra/kernels/bicg/bicg.F90<br />
*** linear-algebra/kernels/cholesky/cholesky.F90<br />
*** linear-algebra/kernels/doitgen/doitgen.F90<br />
*** linear-algebra/kernels/gemm/gemm.F90<br />
*** linear-algebra/kernels/gemver/gemver.F90<br />
*** linear-algebra/kernels/gesummv/gesummv.F90<br />
*** linear-algebra/kernels/mvt/mvt.F90<br />
*** linear-algebra/kernels/symm/symm.F90<br />
*** linear-algebra/kernels/syr2k/syr2k.F90<br />
*** linear-algebra/kernels/syrk/syrk.F90<br />
*** linear-algebra/kernels/trisolv/trisolv.F90<br />
*** linear-algebra/kernels/trmm/trmm.F90<br />
** linear-algebra/solvers:<br />
*** linear-algebra/solvers/durbin/durbin.F90<br />
*** linear-algebra/solvers/dynprog/dynprog.F90<br />
*** linear-algebra/solvers/gramschmidt/gramschmidt.F90<br />
*** linear-algebra/solvers/lu/lu.F90<br />
*** linear-algebra/solvers/ludcmp/ludcmp.F90<br />
* '''datamining'''<br />
** datamining/correlation/correlation.F90<br />
** datamining/covariance/covariance.F90<br />
* '''medley'''<br />
** medley/floyd-warshall/floyd-warshall.F90<br />
** medley/reg_detect/reg_detect.F90<br />
* '''stencils'''<br />
** stencils/adi/adi.F90<br />
** stencils/fdtd-2d/fdtd-2d.F90<br />
** stencils/fdtd-apml/fdtd-apml.F90<br />
** stencils/jacobi-1d-imper/jacobi-1d-imper.F90<br />
** stencils/jacobi-2d-imper/jacobi-2d-imper.F90<br />
** stencils/seidel-2d/seidel-2d.F90<br />
<br />
<br />
<br />
==== Sample compilation commands ====<br />
---------------<br />
====== To compile a benchmark without any monitoring ======<br />
<pre><br />
# Build utilities first <br />
$> gcc -c utilities/fpolybench.c -o utilities/fpolybench.o<br />
<br />
# Build the benchmark<br />
$> gfortran -ffree-line-length-none linear-algebra/kernels/atax/atax.F90 -Iutilities utilities/fpolybench.o -o atax_base<br />
</pre><br />
<br />
====== To compile a benchmark with execution time reporting ======<br />
<pre><br />
# Build utilities first <br />
$> gcc -c -DPOLYBENCH_TIME utilities/fpolybench.c -o utilities/fpolybench.o<br />
<br />
# Build the benchmark<br />
$> gfortran -ffree-line-length-none -DPOLYBENCH_TIME linear-algebra/kernels/atax/atax.F90 -Iutilities utilities/fpolybench.o -o atax_time<br />
</pre><br />
<br />
====== To generate the reference output of a benchmark ======<br />
<pre><br />
# Build utilities first <br />
$> gcc -c utilities/fpolybench.c -o utilities/fpolybench.o<br />
<br />
# Build the benchmark<br />
$> gfortran -ffree-line-length-none -O0 -DPOLYBENCH_DUMP_ARRAYS linear-algebra/kernels/atax/atax.F90 -Iutilities utilities/fpolybench.o -o atax_ref<br />
$> ./atax_ref 2>atax_ref.out<br />
</pre><br />
<br />
<br />
==== Some available options ====<br />
---------------<br />
They are all passed as macro definitions during compilation time (e.g,<br />
-Dname_of_the_option).<br />
<!--<br />
* POLYBENCH_TIME: <nowiki>output execution time (gettimeofday) [default: off]</nowiki><br />
* POLYBENCH_NO_FLUSH_CACHE: <nowiki>don't flush the cache before calling the<br />
timer [default: flush the cache]</nowiki><br />
* POLYBENCH_LINUX_FIFO_SCHEDULER: <nowiki>use FIFO real-time scheduler for the<br />
kernel execution, the program must be run as root, under linux only,<br />
and compiled with -lc [default: off]</nowiki><br />
* POLYBENCH_CACHE_SIZE_KB: <nowiki>cache size to flush, in kB [default: 33MB]</nowiki><br />
* POLYBENCH_STACK_ARRAYS: <nowoki>use stack allocation instead of malloc [default: off]</nowiki><br />
* POLYBENCH_DUMP_ARRAYS: <nowiki>dump all live-out arrays on stderr [default: off]</nowiki><br />
* POLYBENCH_CYCLE_ACCURATE_TIMER: <nowiki>Use Time Stamp Counter to monitor<br />
the execution time of the kernel [default: off]</nowiki><br />
* POLYBENCH_PAPI: <nowiki>turn on papi timing (see below).<br />
* MINI_DATASET, SMALL_DATASET, STANDARD_DATASET, LARGE_DATASET,<br />
EXTRALARGE_DATASET: set the dataset size to be used<br />
[default: STANDARD_DATASET]</nowiki><br />
* POLYBENCH_USE_SCALAR_LB: Use scalar loop bounds instead of parametric ones.--><br />
<br />
====== POLYBENCH_TIME ====== <br />
<nowiki>Output execution time (gettimeofday) [default: off]</nowiki><br />
<br />
====== POLYBENCH_NO_FLUSH_CACHE ======<br />
<nowiki>Don't flush the cache before calling the<br />
timer [default: flush the cache]</nowiki><br />
<br />
====== POLYBENCH_LINUX_FIFO_SCHEDULER ====== <br />
<nowiki>Use FIFO real-time scheduler for the<br />
kernel execution, the program must be run as root, under linux only,<br />
and compiled with -lc [default: off]</nowiki><br />
<br />
====== POLYBENCH_CACHE_SIZE_KB ====== <br />
<nowiki>Cache size to flush, in kB [default: 33MB]</nowiki><br />
<br />
====== POLYBENCH_STACK_ARRAYS ====== <br />
<nowiki>Use stack allocation instead of malloc [default: off]</nowiki><br />
<br />
====== POLYBENCH_DUMP_ARRAYS ====== <br />
<nowiki>Dump all live-out arrays on stderr [default: off]</nowiki><br />
<br />
====== POLYBENCH_CYCLE_ACCURATE_TIMER ====== <br />
<nowiki>Use Time Stamp Counter to monitor<br />
the execution time of the kernel [default: off]</nowiki><br />
<br />
====== POLYBENCH_PAPI ====== <br />
<nowiki>Turn on papi timing (see below).</nowiki><br />
<br />
====== MINI_DATASET, SMALL_DATASET, STANDARD_DATASET, LARGE_DATASET, EXTRALARGE_DATASET ====== <br />
<nowiki>Set the dataset size to be used<br />
[default: STANDARD_DATASET]</nowiki><br />
<br />
====== POLYBENCH_USE_SCALAR_LB ======<br />
Use scalar loop bounds instead of parametric ones.<br />
<br />
==== PAPI support ====<br />
---------------<br />
====== To compile a benchmark with PAPI support ======<br />
<pre><br />
# Build utilities first <br />
$> gcc -c utilities/fpolybench.c -o utilities/fpolybench.o -DPOLYBENCH_PAPI<br />
<br />
# Build the benchmark<br />
$> gfortran -ffree-line-length-none -O3 -DPOLYBENCH_PAPI linear-algebra/kernels/atax/atax.F90 -Iutilities utilities/fpolybench.o -o atax_papi<br />
</pre><br />
<br />
====== To specify which counter(s) to monitor ======<br />
Edit utilities/papi_counters.list, and add 1 line per event to<br />
monitor. Each line (including the last one) must finish with a ',' and<br />
both native and standard events are supported.<br />
<br />
The whole kernel is run one time per counter (no multiplexing) and<br />
there is no sampling being used for the counter value.<br />
<br />
<br />
==== Accurate performance timing ====<br />
---------------<br />
With kernels that have an execution time in the orders of a few tens<br />
of milliseconds, it is critical to validate any performance number by<br />
repeating several times the experiment. A companion script is<br />
available to perform reasonable performance measurement of a PolyBench.<br />
<br />
<pre><br />
# Build utilities first <br />
$> gcc -c -O3 utilities/fpolybench.c -o utilities/fpolybench.o -DPOLYBENCH_TIME<br />
<br />
# Build the benchmark<br />
$> gfortran -ffree-line-length-none -O3 -DPOLYBENCH_TIME linear-algebra/kernels/atax/atax.F90 -Iutilities utilities/fpolybench.o -o atax_time<br />
<br />
# Run the benchmark using the companion script.<br />
$> ./utilities/time_benchmark.sh ./atax_time<br />
</pre><br />
<br />
This script will run five times the benchmark (that must be a<br />
PolyBench compiled with -DPOLYBENCH_TIME), eliminate the two extremal<br />
times, and check that the deviation of the three remaining does not<br />
exceed a given thresold, set to 5%.<br />
<br />
It is also possible to use POLYBENCH_CYCLE_ACCURATE_TIMER to use the<br />
Time Stamp Counter instead of gettimeofday() to monitor the number of<br />
elapsed cycles.<br />
<br />
<br />
<br />
==== Generating macro-free benchmark suite ====<br />
---------------<br />
<pre><br />
(from the root of the archive:)<br />
$> PARGS="-I utilities -DPOLYBENCH_TIME";<br />
$> for i in `cat utilities/benchmark_list`; do create_pped_version.sh $i "$PARGS"; done<br />
</pre><br />
<br />
This create for each benchmark file 'xxx.F' a new file<br />
'xxx.preproc.F'. The PARGS variable in the above example can be set to<br />
the desired configuration.<br />
<br />
e.g<br />
<pre><br />
$> PARGS="-I utilities -DPOLYBENCH_STACK_ARRAYS -DPOLYBENCH_USE_SCALAR_LB -DLARGE_DATASET -DPOLYBENCH_TIME";<br />
$> for i in `cat utilities/benchmark_list`; do ./utilities/create_pped_version.sh "$i" "$PARGS"; done<br />
</pre><br />
<br />
==== Acknowledgements ====<br />
---------------<br />
This software was produced with support from the Department of Energy's<br />
Office of Advanced Scientific Computing under grant DE-SC0005033 and by the<br />
National Science Foundation under grant CCF-0811781. Nothing in this work<br />
should be construed as reflecting the official policy or position of the<br />
Department of Energy, the National Science Foundation, the United States<br />
government, or the Ohio State University.</div>Rountevhttp://hpcrl.cse.ohio-state.edu/wiki/index.php/Polyhedral_CompilationPolyhedral Compilation2012-08-30T17:43:11Z<p>Rountev: /* Packages */</p>
<hr />
<div>== Overview ==<br />
<br />
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 [http://www.rosecompiler.org ROSE] compiler; and a collection of benchmarks.<br />
<br />
<br />
== People ==<br />
<br />
=== Faculty ===<br />
<br />
* [http://www.cse.ohio-state.edu/~saday/ Prof. P. Sadayappan]<br />
* [http://www.cse.ohio-state.edu/~rountev/ Prof. Atanas Rountev]<br />
<br />
=== Post-doc ===<br />
<br />
* [http://www.cse.ohio-state.edu/~pouchet/ Dr. Louis-Noel Pouchet]<br />
<br />
=== Current students ===<br />
<br />
* [http://www.cse.ohio-state.edu/~kongm/ Martin Kong]<br />
* [http://www.cse.ohio-state.edu/~narayanm/ Mohanish Narayan]<br />
* [http://www.cse.ohio-state.edu/~tavarage/ Sanket Tavarageri]<br />
<br />
== PolyOpt ==<br />
<br />
=== Description ===<br />
<br />
PolyOpt is a polyhedral loop optimization framework, integrated in the [http://www.rosecompiler.org ROSE] compiler. The main features are:<br />
* Automatic extraction of regions that can be optimized in the polyhedral model<br />
* Full support of PoCC (the Polyhedral Compiler Collection) analysis and optimizations:<br />
** dependence analysis with Candl,<br />
** program transformations for tiling and parallelism with Pluto,<br />
** code generation with CLooG,<br />
** parametric tiling with PTile.<br />
* Numerous under-the-hood functionalities and optimizations.<br />
<br />
=== Packages ===<br />
<br />
We currently provide two packages:<br />
* [[PolyOpt/C]]: targeting C/C++ program optimization.<br />
* [[PolyOpt/Fortran]]: targeting Fortan program optimization.<br />
<br />
== Polybench ==<br />
<br />
=== Description ===<br />
<br />
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:<br />
* 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.<br />
* Non-null data initialization, and live-out data dump.<br />
* Syntactic constructs to prevent any dead code elimination on the kernel.<br />
* Parametric loop bounds in the kernels, for general-purpose implementation.<br />
* Clear kernel marking, using #pragma scop and #pragma endscop delimiters.<br />
<br />
=== Packages ===<br />
<br />
* [http://www.cse.ohio-state.edu/~pouchet/software/polybench Polybench/C]: a collection of 30 kernels (mostly linear algebra and stencils), written in C.<br />
* [[Polybench/Fortran]]: a port of Polybench/C in Fortran.<br />
<br />
== PoCC ==<br />
<br />
[http://pocc.sourceforge.net 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.<br />
<br />
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:<br />
* Clan, the Chunky loop analyzer, to extract a polyhedral intermediate representation from the source code<br />
* Candl, the Chunky analyzer for dependences in loops, to compute polyhedral dependences from the polyhedral IR<br />
* LetSee, the Legal transformation Space explorator, for iterative compilation using affine multidimensional schedules<br />
* PLuTo, an automatic parallelizer and locality optimizer for multicores, for powerful optimization with tiling and parallelism in the polyhedral model<br />
* CLooG, the Chunky Loop Generator, to generate syntactic code from the polyhedral representation<br />
* PIPLib, the Parametric Integer Programming Library<br />
* PolyLib, the Polyhedral Library<br />
* ISL, the Integer Set Library<br />
* FM, the Fourier-Motzkin library</div>Rountevhttp://hpcrl.cse.ohio-state.edu/wiki/index.php/Polyhedral_CompilationPolyhedral Compilation2012-08-30T17:42:52Z<p>Rountev: /* Packages */</p>
<hr />
<div>== Overview ==<br />
<br />
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 [http://www.rosecompiler.org ROSE] compiler; and a collection of benchmarks.<br />
<br />
<br />
== People ==<br />
<br />
=== Faculty ===<br />
<br />
* [http://www.cse.ohio-state.edu/~saday/ Prof. P. Sadayappan]<br />
* [http://www.cse.ohio-state.edu/~rountev/ Prof. Atanas Rountev]<br />
<br />
=== Post-doc ===<br />
<br />
* [http://www.cse.ohio-state.edu/~pouchet/ Dr. Louis-Noel Pouchet]<br />
<br />
=== Current students ===<br />
<br />
* [http://www.cse.ohio-state.edu/~kongm/ Martin Kong]<br />
* [http://www.cse.ohio-state.edu/~narayanm/ Mohanish Narayan]<br />
* [http://www.cse.ohio-state.edu/~tavarage/ Sanket Tavarageri]<br />
<br />
== PolyOpt ==<br />
<br />
=== Description ===<br />
<br />
PolyOpt is a polyhedral loop optimization framework, integrated in the [http://www.rosecompiler.org ROSE] compiler. The main features are:<br />
* Automatic extraction of regions that can be optimized in the polyhedral model<br />
* Full support of PoCC (the Polyhedral Compiler Collection) analysis and optimizations:<br />
** dependence analysis with Candl,<br />
** program transformations for tiling and parallelism with Pluto,<br />
** code generation with CLooG,<br />
** parametric tiling with PTile.<br />
* Numerous under-the-hood functionalities and optimizations.<br />
<br />
=== Packages ===<br />
<br />
We currently provide two packages:<br />
* [[PolyOpt/C]]: targeting C/C++ program optimization.<br />
* [[PolyOpt/Fortran]]: targeting Fortan program optimization.<br />
<br />
== Polybench ==<br />
<br />
=== Description ===<br />
<br />
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:<br />
* 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.<br />
* Non-null data initialization, and live-out data dump.<br />
* Syntactic constructs to prevent any dead code elimination on the kernel.<br />
* Parametric loop bounds in the kernels, for general-purpose implementation.<br />
* Clear kernel marking, using #pragma scop and #pragma endscop delimiters.<br />
<br />
=== Packages ===<br />
<br />
* [http://www.cse.ohio-state.edu/~pouchet/software/polybench Polybench/C]: a collection of 30 kernels (mostly linear algebra and stencils), written in C.<br />
* [[Polybench/Fortran]]: a port of Polybench/C to Fortran.<br />
<br />
== PoCC ==<br />
<br />
[http://pocc.sourceforge.net 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.<br />
<br />
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:<br />
* Clan, the Chunky loop analyzer, to extract a polyhedral intermediate representation from the source code<br />
* Candl, the Chunky analyzer for dependences in loops, to compute polyhedral dependences from the polyhedral IR<br />
* LetSee, the Legal transformation Space explorator, for iterative compilation using affine multidimensional schedules<br />
* PLuTo, an automatic parallelizer and locality optimizer for multicores, for powerful optimization with tiling and parallelism in the polyhedral model<br />
* CLooG, the Chunky Loop Generator, to generate syntactic code from the polyhedral representation<br />
* PIPLib, the Parametric Integer Programming Library<br />
* PolyLib, the Polyhedral Library<br />
* ISL, the Integer Set Library<br />
* FM, the Fourier-Motzkin library</div>Rountevhttp://hpcrl.cse.ohio-state.edu/wiki/index.php/Polyhedral_CompilationPolyhedral Compilation2012-08-30T17:42:30Z<p>Rountev: /* Packages */</p>
<hr />
<div>== Overview ==<br />
<br />
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 [http://www.rosecompiler.org ROSE] compiler; and a collection of benchmarks.<br />
<br />
<br />
== People ==<br />
<br />
=== Faculty ===<br />
<br />
* [http://www.cse.ohio-state.edu/~saday/ Prof. P. Sadayappan]<br />
* [http://www.cse.ohio-state.edu/~rountev/ Prof. Atanas Rountev]<br />
<br />
=== Post-doc ===<br />
<br />
* [http://www.cse.ohio-state.edu/~pouchet/ Dr. Louis-Noel Pouchet]<br />
<br />
=== Current students ===<br />
<br />
* [http://www.cse.ohio-state.edu/~kongm/ Martin Kong]<br />
* [http://www.cse.ohio-state.edu/~narayanm/ Mohanish Narayan]<br />
* [http://www.cse.ohio-state.edu/~tavarage/ Sanket Tavarageri]<br />
<br />
== PolyOpt ==<br />
<br />
=== Description ===<br />
<br />
PolyOpt is a polyhedral loop optimization framework, integrated in the [http://www.rosecompiler.org ROSE] compiler. The main features are:<br />
* Automatic extraction of regions that can be optimized in the polyhedral model<br />
* Full support of PoCC (the Polyhedral Compiler Collection) analysis and optimizations:<br />
** dependence analysis with Candl,<br />
** program transformations for tiling and parallelism with Pluto,<br />
** code generation with CLooG,<br />
** parametric tiling with PTile.<br />
* Numerous under-the-hood functionalities and optimizations.<br />
<br />
=== Packages ===<br />
<br />
We currently provide two packages:<br />
* [[PolyOpt/C]]: targeting C/C++ program optimization.<br />
* [[PolyOpt/Fortran]]: targeting Fortan program optimization.<br />
<br />
== Polybench ==<br />
<br />
=== Description ===<br />
<br />
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:<br />
* 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.<br />
* Non-null data initialization, and live-out data dump.<br />
* Syntactic constructs to prevent any dead code elimination on the kernel.<br />
* Parametric loop bounds in the kernels, for general-purpose implementation.<br />
* Clear kernel marking, using #pragma scop and #pragma endscop delimiters.<br />
<br />
=== Packages ===<br />
<br />
* [http://www.cse.ohio-state.edu/~pouchet/software/polybench Polybench/C]: a collection of 30 kernels (mostly linear algebra and stencils), written in C.<br />
* [[Polybench/Fortran]]: a port of Polybench/C to Fortran<br />
<br />
== PoCC ==<br />
<br />
[http://pocc.sourceforge.net 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.<br />
<br />
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:<br />
* Clan, the Chunky loop analyzer, to extract a polyhedral intermediate representation from the source code<br />
* Candl, the Chunky analyzer for dependences in loops, to compute polyhedral dependences from the polyhedral IR<br />
* LetSee, the Legal transformation Space explorator, for iterative compilation using affine multidimensional schedules<br />
* PLuTo, an automatic parallelizer and locality optimizer for multicores, for powerful optimization with tiling and parallelism in the polyhedral model<br />
* CLooG, the Chunky Loop Generator, to generate syntactic code from the polyhedral representation<br />
* PIPLib, the Parametric Integer Programming Library<br />
* PolyLib, the Polyhedral Library<br />
* ISL, the Integer Set Library<br />
* FM, the Fourier-Motzkin library</div>Rountevhttp://hpcrl.cse.ohio-state.edu/wiki/index.php/Polyhedral_CompilationPolyhedral Compilation2012-08-30T17:40:59Z<p>Rountev: /* Packages */</p>
<hr />
<div>== Overview ==<br />
<br />
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 [http://www.rosecompiler.org ROSE] compiler; and a collection of benchmarks.<br />
<br />
<br />
== People ==<br />
<br />
=== Faculty ===<br />
<br />
* [http://www.cse.ohio-state.edu/~saday/ Prof. P. Sadayappan]<br />
* [http://www.cse.ohio-state.edu/~rountev/ Prof. Atanas Rountev]<br />
<br />
=== Post-doc ===<br />
<br />
* [http://www.cse.ohio-state.edu/~pouchet/ Dr. Louis-Noel Pouchet]<br />
<br />
=== Current students ===<br />
<br />
* [http://www.cse.ohio-state.edu/~kongm/ Martin Kong]<br />
* [http://www.cse.ohio-state.edu/~narayanm/ Mohanish Narayan]<br />
* [http://www.cse.ohio-state.edu/~tavarage/ Sanket Tavarageri]<br />
<br />
== PolyOpt ==<br />
<br />
=== Description ===<br />
<br />
PolyOpt is a polyhedral loop optimization framework, integrated in the [http://www.rosecompiler.org ROSE] compiler. The main features are:<br />
* Automatic extraction of regions that can be optimized in the polyhedral model<br />
* Full support of PoCC (the Polyhedral Compiler Collection) analysis and optimizations:<br />
** dependence analysis with Candl,<br />
** program transformations for tiling and parallelism with Pluto,<br />
** code generation with CLooG,<br />
** parametric tiling with PTile.<br />
* Numerous under-the-hood functionalities and optimizations.<br />
<br />
=== Packages ===<br />
<br />
We currently provide two packages:<br />
* [[PolyOpt/C]]: dedicated C/C++ program optimization.<br />
* [[PolyOpt/Fortran]]: dedicated to Fortan program optimization.<br />
<br />
<br />
== Polybench ==<br />
<br />
=== Description ===<br />
<br />
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:<br />
* 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.<br />
* Non-null data initialization, and live-out data dump.<br />
* Syntactic constructs to prevent any dead code elimination on the kernel.<br />
* Parametric loop bounds in the kernels, for general-purpose implementation.<br />
* Clear kernel marking, using #pragma scop and #pragma endscop delimiters.<br />
<br />
=== Packages ===<br />
<br />
* [http://www.cse.ohio-state.edu/~pouchet/software/polybench Polybench/C]: a collection of 30 kernels (mostly linear algebra and stencils), written in C.<br />
* [[Polybench/Fortran]]: a port of Polybench/C to Fortran<br />
<br />
== PoCC ==<br />
<br />
[http://pocc.sourceforge.net 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.<br />
<br />
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:<br />
* Clan, the Chunky loop analyzer, to extract a polyhedral intermediate representation from the source code<br />
* Candl, the Chunky analyzer for dependences in loops, to compute polyhedral dependences from the polyhedral IR<br />
* LetSee, the Legal transformation Space explorator, for iterative compilation using affine multidimensional schedules<br />
* PLuTo, an automatic parallelizer and locality optimizer for multicores, for powerful optimization with tiling and parallelism in the polyhedral model<br />
* CLooG, the Chunky Loop Generator, to generate syntactic code from the polyhedral representation<br />
* PIPLib, the Parametric Integer Programming Library<br />
* PolyLib, the Polyhedral Library<br />
* ISL, the Integer Set Library<br />
* FM, the Fourier-Motzkin library</div>Rountev