The Polyhedral Benchmark Suite Targeting Multicore CPUs, GPUs, and Accelerators

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.

We have modified the original PolyBench Suite to run on GPUs and accelerators by using different programming languages.

Features:

  • A single file, tunable at compile-time, used for the kernel instrumentation.
  • 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.

Benchmarks

linear-algebra/kernels
  • 2mm
  • 3mm
  • atax
  • bicg
  • cholesky
  • doitgen
  • gemm
  • gemver
  • gesummv
  • mvt
  • symm
  • syr2k
  • syrk
  • trisolv
  • trmm
linear-algebra/solvers
  • durbin
  • dynprog
  • gramschmidt
  • lu
  • ludcmp
datamining
  • correlation
  • covariance
stencils
  • adi
  • convolution-2d
  • convolution-3d
  • fdtd-2d
  • jacobi-1d-imper
  • jacobi-2d-imper
  • seidel-2d
Languages
  • CUDA
  • OpenCL
  • HMPP
  • OpenACC
  • OpenMP

Download

Contributors

Related Research

Any work that uses these codes should cite the following paper:

S. Grauer-Gray, L. Xu, R. Searles, S. Ayalasomayajula, J. Cavazos. "Auto-tuning a High-Level Language Targeted to GPU Codes." In Proceedings of Innovative Parallel Computing (InPar) 2012.

Individuals

Acknowledgements

This work derives from the original PolyBench Suite created by Louis-Noël Pouchet.

This work was funded in part by:

U.S. National Science Foundation through the NSF Career award 0953667

and

DARPA Computer Science Study Group (CSSG)