Polybench/Fortran
Contents |
News
- 03/28/12: Public release of PolyBench/Fortran 1.0 Download. PolyBench/Fortran is a port of PolyBench/C 3.2 in Fortran, written by Mohanish Narayan.
Description
PolyBench is a collection of benchmarks containing static control parts. The purpose is to uniformize the execution and monitoring of kernels, typically used in past and current publications. PolyBench features include:
- A single file, tunable at compile-time, used for the kernel instrumentation. It performs extra operations such as cache flushing before the kernel execution, and can set real-time scheduling to prevent OS interference.
- Non-null data initialization, and live-out data dump.
- Syntactic constructs to prevent any dead code elimination on the kernel.
- Parametric loop bounds in the kernels, for general-purpose implementation.
- Clear kernel marking, using !$pragma scop and !$pragma endscop delimiters.
Benchmark | Description |
---|---|
Cell 1 | Cell 2 |
Cell A | Cell B |
Download
Copyright notice
This software was produced with support from the Defense Advanced Research Projects Agency (DARPA) through AFRL Contract FA8650-09-C-1915 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 Defense Department, the Department of Energy, the United States government, Ohio State University, or Rice University. THIS SOFTWARE HAS BEEN APPROVED FOR PUBLIC RELEASE, UNLIMITED DISTRIBUTION.
Documentation
Please note that the following document is preliminary. The documentation will be improved soon. In the meantime, don't hesitate to contact the author for any question.
PolyOpt manual: polyopt.pdf.
Installation
The installation of PolyOpt/Fortran is packaged in an installer script install.sh. It assumes ROSE is built, and will download and install a local copy of PoCC.
$> tar xzf polyopt-fortran-0.1.0.tar.gz $> cd polyopt-fortran-0.1.0 $> export ROSE_ROOT=/path/to/rose/install $> export BOOST_ROOT=/path/to/boost/install $> ./install.sh $> export PATH=$PATH:`pwd`/src
For a test run of the compiler:
$> PolyRose --polyopt-help
To inspect the available options:
$> PolyRose --polyopt-help Available options for PolyOpt/Fortran: --polyopt-help Verbosity options: --polyopt-verbose --polyopt-quiet Main optimization paths: --polyopt-fixed-tiling --polyopt-parametric-tiling --polyopt-parallel-only Scop extraction related options: --polyopt-generic-scop-extractor --polyopt-approximate-scop-extractor --polyopt-safe-math-func --polyopt-scop-extractor-verbose=1 --polyopt-scop-extractor-verbose=2 --polyopt-scop-extractor-verbose=3 --polyopt-scop-extractor-verbose=4 Main driver related options: --polyopt-generate-pragmas Codegen related options: --polyopt-codegen-use-past --polyopt-codegen-use-ptile --polyopt-codegen-insert-ptile-api Dependence analysis options: --polyopt-scalar-privatization PoCC related options: --polyopt-pocc-verbose --polyopt-pluto --polyopt-pluto-tile --polyopt-pluto-parallel --polyopt-pluto-prevector --polyopt-pluto-fuse-<maxfuse,smartfuse,nofuse>