Polybench/Fortran

From HPCRL Wiki
Revision as of 18:16, 29 March 2012 by Mohanish (Talk | contribs)
Jump to: navigation, search

Contents

News


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.


Available benchmarks (PolyBench/Fortran version 1.0)
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

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


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
  • 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).

Personal tools