Polybench/Fortran
From HPCRL Wiki
(Difference between revisions)
(→Some available options) |
(→Some available options) |
||
Line 182: | Line 182: | ||
They are all passed as macro definitions during compilation time (e.g, | They are all passed as macro definitions during compilation time (e.g, | ||
-Dname_of_the_option). | -Dname_of_the_option). | ||
− | + | <!-- | |
* POLYBENCH_TIME: <nowiki>output execution time (gettimeofday) [default: off]</nowiki> | * POLYBENCH_TIME: <nowiki>output execution time (gettimeofday) [default: off]</nowiki> | ||
* POLYBENCH_NO_FLUSH_CACHE: <nowiki>don't flush the cache before calling the | * POLYBENCH_NO_FLUSH_CACHE: <nowiki>don't flush the cache before calling the | ||
Line 198: | Line 198: | ||
EXTRALARGE_DATASET: set the dataset size to be used | EXTRALARGE_DATASET: set the dataset size to be used | ||
[default: STANDARD_DATASET]</nowiki> | [default: STANDARD_DATASET]</nowiki> | ||
− | * POLYBENCH_USE_SCALAR_LB: Use scalar loop bounds instead of parametric ones. | + | * POLYBENCH_USE_SCALAR_LB: Use scalar loop bounds instead of parametric ones.> |
====== POLYBENCH_TIME ====== | ====== POLYBENCH_TIME ====== |
Revision as of 18:16, 29 March 2012
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 |
---|---|
2mm | 2 Matrix Multiplications (D=A.B; E=C.D) |
3mm | 3 Matrix Multiplications (E=A.B; F=C.D; G=E.F) |
adi | Alternating Direction Implicit solver |
atax | Matrix Transpose and Vector Multiplication |
bicg | BiCG Sub Kernel of BiCGStab Linear Solver |
cholesky | Cholesky Decomposition |
correlation | Correlation Computation |
covariance | Covariance Computation |
doitgen | Multiresolution analysis kernel (MADNESS) |
durbin | Toeplitz system solver |
dynprog | Dynamic programming (2D) |
fdtd-2d | 2-D Finite Different Time Domain Kernel |
fdtd-apml | FDTD using Anisotropic Perfectly Matched Layer |
gauss-filter | Gaussian Filter |
gemm | Matrix-multiply C=alpha.A.B+beta.C |
gemver | Vector Multiplication and Matrix Addition |
gesummv | Scalar, Vector and Matrix Multiplication |
gramschmidt | Gram-Schmidt decomposition |
jacobi-1D | 1-D Jacobi stencil computation |
jacobi-2D | 2-D Jacobi stencil computation |
lu | LU decomposition |
ludcmp | LU decomposition |
mvt | Matrix Vector Product and Transpose |
reg-detect | 2-D Image processing |
seidel | 2-D Seidel stencil computation |
symm | Symmetric matrix-multiply |
syr2k | Symmetric rank-2k operations |
syrk | Symmetric rank-k operations |
trisolv | Triangular solver |
trmm | Triangular matrix-multiply |
Download
- Download Polybench/Fortran 1.0: polybench-fortran-1.0.tar.gz
Documentation
Copyright (c) 2011-2012 the Ohio State University.
Contact
New in 1.0
- First release of Polybench/Fortran, based on Polybench/C 3.2
Mailing lists
- Announces about releases of PolyBench: polybench-announces@lists.sourceforge.net
- General discussions reg. PolyBench: polybench-discussion@lists.sourceforge.net
Available benchmarks
- linear-algebra
- linear-algebra/solvers:
- linear-algebra/kernels/2mm/2mm.F90
- linear-algebra/kernels/3mm/3mm.F90
- linear-algebra/kernels/atax/atax.F90
- linear-algebra/kernels/bicg/bicg.F90
- linear-algebra/kernels/cholesky/cholesky.F90
- linear-algebra/kernels/doitgen/doitgen.F90
- linear-algebra/kernels/gemm/gemm.F90
- linear-algebra/kernels/gemver/gemver.F90
- linear-algebra/kernels/gesummv/gesummv.F90
- linear-algebra/kernels/mvt/mvt.F90
- linear-algebra/kernels/symm/symm.F90
- linear-algebra/kernels/syr2k/syr2k.F90
- linear-algebra/kernels/syrk/syrk.F90
- linear-algebra/kernels/trisolv/trisolv.F90
- linear-algebra/kernels/trmm/trmm.F90
- linear-algebra/solvers:
- linear-algebra/solvers/durbin/durbin.F90
- linear-algebra/solvers/dynprog/dynprog.F90
- linear-algebra/solvers/gramschmidt/gramschmidt.F90
- linear-algebra/solvers/lu/lu.F90
- linear-algebra/solvers/ludcmp/ludcmp.F90
- linear-algebra/solvers:
- datamining
- datamining/correlation/correlation.F90
- datamining/covariance/covariance.F90
- medley
- medley/floyd-warshall/floyd-warshall.F90
- medley/reg_detect/reg_detect.F90
- stencils
- stencils/adi/adi.F90
- stencils/fdtd-2d/fdtd-2d.F90
- stencils/fdtd-apml/fdtd-apml.F90
- stencils/jacobi-1d-imper/jacobi-1d-imper.F90
- stencils/jacobi-2d-imper/jacobi-2d-imper.F90
- stencils/seidel-2d/seidel-2d.F90
Sample compilation commands
To compile a benchmark without any monitoring
# Build utilities first $> gcc -c utilities/fpolybench.c -o utilities/fpolybench.o # Build the benchmark $> gfortran -ffree-line-length-none linear-algebra/kernels/atax/atax.F90 -Iutilities utilities/fpolybench.o -o atax_base
To compile a benchmark with execution time reporting
# Build utilities first $> gcc -c -DPOLYBENCH_TIME utilities/fpolybench.c -o utilities/fpolybench.o # Build the benchmark $> gfortran -ffree-line-length-none -DPOLYBENCH_TIME linear-algebra/kernels/atax/atax.F90 -Iutilities utilities/fpolybench.o -o atax_time
To generate the reference output of a benchmark
# Build utilities first $> gcc -c utilities/fpolybench.c -o utilities/fpolybench.o # Build the benchmark $> gfortran -ffree-line-length-none -O0 -DPOLYBENCH_DUMP_ARRAYS linear-algebra/kernels/atax/atax.F90 -Iutilities utilities/fpolybench.o -o atax_ref $> ./atax_ref 2>atax_ref.out
Some available options
They are all passed as macro definitions during compilation time (e.g, -Dname_of_the_option).