from benchbuild.project import Project
from benchbuild.settings import CFG
from benchbuild.utils.compiler import lt_clang
from benchbuild.utils.downloader import Wget
from benchbuild.utils.run import run
from benchbuild.utils.cmd import tar, cp
from os import path
[docs]class PolyBenchGroup(Project):
DOMAIN = 'polybench'
GROUP = 'polybench'
VERSION = '4.2'
path_dict = {
"correlation": "datamining",
"covariance": "datamining",
"2mm": "linear-algebra/kernels",
"3mm": "linear-algebra/kernels",
"atax": "linear-algebra/kernels",
"bicg": "linear-algebra/kernels",
"doitgen": "linear-algebra/kernels",
"mvt": "linear-algebra/kernels",
"cholesky": "linear-algebra/solvers",
"durbin": "linear-algebra/solvers",
"lu": "linear-algebra/solvers",
"ludcmp": "linear-algebra/solvers",
"gramschmidt": "linear-algebra/solvers",
"trisolv": "linear-algebra/solvers",
"gemm": "linear-algebra/blas",
"gemver": "linear-algebra/blas",
"gesummv": "linear-algebra/blas",
"symm": "linear-algebra/blas",
"syr2k": "linear-algebra/blas",
"syrk": "linear-algebra/blas",
"trmm": "linear-algebra/blas",
"adi": "stencils",
"fdtd-2d": "stencils",
"heat-3d": "stencils",
"jacobi-1d": "stencils",
"jacobi-2d": "stencils",
"seidel-2d": "stencils",
"nussinov": "medley",
"deriche": "medley",
"floyd-warshall": "medley",
}
def __init__(self, exp):
super(PolyBenchGroup, self).__init__(exp, "polybench")
self.sourcedir = path.join(
str(CFG["src_dir"]), "polybench", self.path_dict[self.name],
self.name)
self.setup_derived_filenames()
src_dir = "polybench-c-{0}".format(VERSION)
SRC_FILE = src_dir + ".tar.gz"
src_uri = "http://downloads.sourceforge.net/project/polybench/" + SRC_FILE
[docs] def download(self):
Wget(self.src_uri, self.src_file)
tar('xfz', path.join(self.builddir, self.src_file))
[docs] def build(self):
src_file = path.join(self.name + ".dir", self.name + ".c")
clang = lt_clang(self.cflags, self.ldflags, self.compiler_extension)
run(clang["-I", "utilities", "-I", self.name,
"-DPOLYBENCH_USE_C99_PROTO",
"-DEXTRALARGE_DATASET",
"-DPOLYBENCH_USE_RESTRICT",
"utilities/polybench.c", src_file, "-lm", "-o", self.run_f])
# Datamining
[docs]class Correlation(PolyBenchGroup):
NAME = 'correlation'
[docs]class Covariance(PolyBenchGroup):
NAME = 'covariance'
[docs]class TwoMM(PolyBenchGroup):
NAME = '2mm'
[docs]class ThreeMM(PolyBenchGroup):
NAME = '3mm'
[docs]class Atax(PolyBenchGroup):
NAME = 'atax'
[docs]class BicG(PolyBenchGroup):
NAME = 'bicg'
[docs]class Doitgen(PolyBenchGroup):
NAME = 'doitgen'
[docs]class Mvt(PolyBenchGroup):
NAME = 'mvt'
[docs]class Gemm(PolyBenchGroup):
NAME = 'gemm'
[docs]class Gemver(PolyBenchGroup):
NAME = 'gemver'
[docs]class Gesummv(PolyBenchGroup):
NAME = 'gesummv'
[docs]class Symm(PolyBenchGroup):
NAME = 'symm'
[docs]class Syr2k(PolyBenchGroup):
NAME = 'syr2k'
[docs]class Syrk(PolyBenchGroup):
NAME = 'syrk'
[docs]class Trmm(PolyBenchGroup):
NAME = 'trmm'
[docs]class Cholesky(PolyBenchGroup):
NAME = 'cholesky'
[docs]class Durbin(PolyBenchGroup):
NAME = 'durbin'
[docs]class Gramschmidt(PolyBenchGroup):
NAME = 'gramschmidt'
[docs]class Lu(PolyBenchGroup):
NAME = 'lu'
[docs]class LuDCMP(PolyBenchGroup):
NAME = 'ludcmp'
[docs]class Trisolv(PolyBenchGroup):
NAME = 'trisolv'
[docs]class Deriche(PolyBenchGroup):
NAME = 'deriche'
[docs]class FloydWarshall(PolyBenchGroup):
NAME = 'floyd-warshall'
[docs]class Nussinov(PolyBenchGroup):
NAME = 'nussinov'
[docs]class Adi(PolyBenchGroup):
NAME = 'adi'
[docs]class FDTD2D(PolyBenchGroup):
NAME = 'fdtd-2d'
[docs]class Jacobi1D(PolyBenchGroup):
NAME = 'jacobi-1d'
[docs]class Jacobi2Dimper(PolyBenchGroup):
NAME = 'jacobi-2d'
[docs]class Seidel2D(PolyBenchGroup):
NAME = 'seidel-2d'
[docs]class Heat3D(PolyBenchGroup):
NAME = 'heat-3d'