Source code for benchbuild.projects.apollo.rodinia

import os

from benchbuild.utils.compiler import lt_clang, lt_clang_cxx
from benchbuild.utils.downloader import Wget
from benchbuild.project import Project
from benchbuild.utils.cmd import sh, tar
from benchbuild.utils.run import run
from benchbuild.utils.wrapping import wrap
from plumbum import local


[docs]class RodiniaGroup(Project): DOMAIN = 'rodinia' GROUP = 'rodinia' VERSION = '3.1' config = {} def __init__(self, exp): super(RodiniaGroup, self).__init__(exp, "rodinia") self.in_src_dir = os.path.join( self.src_dir, self.config["dir"] ) self.setup_derived_filenames() src_dir = "rodinia_{0}".format(VERSION) SRC_FILE = "{0}.tar.bz2".format(src_dir) src_uri = ("http://www.cs.virginia.edu/~kw5na/lava/Rodinia/Packages/" "Current/{0}".format(SRC_FILE))
[docs] def download(self): Wget(self.src_uri, self.SRC_FILE) tar("xf", os.path.join('.', self.SRC_FILE))
[docs] def configure(self): pass
[docs] def select_compiler(self, cc, cxx): return cc
[docs] def build(self): c_compiler = lt_clang(self.cflags, self.ldflags, self.compiler_extension) cxx_compiler = lt_clang_cxx(self.cflags, self.ldflags, self.compiler_extension) with local.cwd(self.in_src_dir): for outfile, srcfiles in self.config['src'].items(): compiler = self.select_compiler(c_compiler, cxx_compiler) if "flags" in self.config: compiler = compiler[self.config["flags"]] compiler = compiler[srcfiles] compiler = compiler["-o", outfile] run(compiler)
[docs] def run_tests(self, experiment, runner): for outfile in self.config['src']: wrap(os.path.join(self.in_src_dir, outfile), experiment) with local.cwd(self.in_src_dir): test_runner = sh["./run"] runner(test_runner)
[docs]class Backprop(RodiniaGroup): NAME = 'backprop' config = { "dir": "openmp/backprop", "src": { NAME: [ "backprop_kernel.c", "imagenet.c", "facetrain.c", "backprop.c" ] }, "flags": [ "-fopenmp", "-lm" ] }
[docs]class BFS(RodiniaGroup): NAME = 'bfs' config = { "dir": "openmp/bfs", "src": { NAME: [ "bfs.cpp" ] }, "flags": [ "-fopenmp", "-UOPEN" ] }
[docs] def select_compiler(self, _, cxx): return cxx
[docs]class BPlusTree(RodiniaGroup): NAME = 'b+tree' config = { "dir": "openmp/b+tree", "src": { "b+tree.out": [ "./main.c", "./kernel/kernel_cpu.c", "./kernel/kernel_cpu_2.c", "./util/timer/timer.c", "./util/num/num.c" ] }, "flags": [ "-fopenmp", "-lm" ] }
[docs]class CFD(RodiniaGroup): NAME = 'cfd' config = { "dir": "openmp/cfd", "src": { "euler3d_cpu": [ "euler3d_cpu.cpp" ] } }
[docs] def select_compiler(self, _, cxx): return cxx
[docs]class HeartWall(RodiniaGroup): NAME = 'heartwall' config = { "dir": "openmp/heartwall", "src": { NAME: [ "./AVI/avimod.c", "./AVI/avilib.c", "./main.c" ] }, "flags": [ "-I./AVI", "-fopenmp", "-lm" ] }
[docs]class Hotspot(RodiniaGroup): NAME = 'hotspot' config = { "dir": "openmp/hotspot", "src": { NAME: [ "hotspot_openmp.cpp" ] }, "flags": [ "-fopenmp" ] }
[docs] def select_compiler(self, _, cxx): return cxx
[docs]class Hotspot3D(RodiniaGroup): NAME = 'hotspot3D' config = { "dir": "openmp/hotspot3D", "src": { "3D": [ "./3D.c" ] }, "flags": [ "-fopenmp", "-lm" ] }
[docs]class KMeans(RodiniaGroup): NAME = 'kmeans' config = { "dir": "openmp/kmeans", "src": { "./kmeans_serial/kmeans": [ "./kmeans_serial/kmeans_clustering.c", "./kmeans_serial/kmeans.c", "./kmeans_serial/getopt.c", "./kmeans_serial/cluster.c" ], "./kmeans_openmp/kmeans": [ "./kmeans_openmp/kmeans_clustering.c", "./kmeans_openmp/kmeans.c", "./kmeans_openmp/getopt.c", "./kmeans_openmp/cluster.c" ] }, "flags": [ "-lm", "-fopenmp" ] }
[docs]class LavaMD(RodiniaGroup): NAME = 'lavaMD' config = { "dir": "openmp/lavaMD", "src": { NAME: [ "./main.c", "./util/timer/timer.c", "./util/num/num.c", "./kernel/kernel_cpu.c" ] }, "flags": [ "-lm", "-fopenmp" ] }
[docs]class Leukocyte(RodiniaGroup): NAME = 'leukocyte' config = { "dir": "openmp/leukocyte", "src": { NAME: [ "./meschach_lib/memstat.c", "./meschach_lib/meminfo.c", "./meschach_lib/version.c", "./meschach_lib/ivecop.c", "./meschach_lib/matlab.c", "./meschach_lib/machine.c", "./meschach_lib/otherio.c", "./meschach_lib/init.c", "./meschach_lib/submat.c", "./meschach_lib/pxop.c", "./meschach_lib/matop.c", "./meschach_lib/vecop.c", "./meschach_lib/memory.c", "./meschach_lib/matrixio.c", "./meschach_lib/err.c", "./meschach_lib/copy.c", "./meschach_lib/bdfactor.c", "./meschach_lib/mfunc.c", "./meschach_lib/fft.c", "./meschach_lib/svd.c", "./meschach_lib/schur.c", "./meschach_lib/symmeig.c", "./meschach_lib/hessen.c", "./meschach_lib/norm.c", "./meschach_lib/update.c", "./meschach_lib/givens.c", "./meschach_lib/hsehldr.c", "./meschach_lib/solve.c", "./meschach_lib/qrfactor.c", "./meschach_lib/chfactor.c", "./meschach_lib/bkpfacto.c", "./meschach_lib/lufactor.c", "./meschach_lib/iternsym.c", "./meschach_lib/itersym.c", "./meschach_lib/iter0.c", "./meschach_lib/spswap.c", "./meschach_lib/spbkp.c", "./meschach_lib/splufctr.c", "./meschach_lib/spchfctr.c", "./meschach_lib/sparseio.c", "./meschach_lib/sprow.c", "./meschach_lib/sparse.c", "./meschach_lib/zfunc.c", "./meschach_lib/znorm.c", "./meschach_lib/zmatop.c", "./meschach_lib/zvecop.c", "./meschach_lib/zmemory.c", "./meschach_lib/zmatio.c", "./meschach_lib/zcopy.c", "./meschach_lib/zmachine.c", "./meschach_lib/zschur.c", "./meschach_lib/zhessen.c", "./meschach_lib/zgivens.c", "./meschach_lib/zqrfctr.c", "./meschach_lib/zhsehldr.c", "./meschach_lib/zmatlab.c", "./meschach_lib/zsolve.c", "./meschach_lib/zlufctr.c", "./OpenMP/detect_main.c", "./OpenMP/misc_math.c", "./OpenMP/track_ellipse.c", "./OpenMP/find_ellipse.c", "./OpenMP/avilib.c" ] }, "flags": [ "-DSPARSE", "-DCOMPLEX", "-DREAL_FLT", "-DREAL_DBL", "-I./meschach_lib", "-lm", "-lpthread", "-fopenmp" ] }
[docs]class LUD(RodiniaGroup): NAME = 'lud' config = { "dir": "openmp/lud", "src": { "./omp/lud_omp": [ "./common/common.c", "./omp/lud_omp.c", "./omp/lud.c" ] }, "flags": [ "-I./common", "-lm", "-fopenmp" ] }
#TODO: class MummerGPU(RodiniaGroup): #TODO: NAME = 'mummergpu' #TODO: #FIXME: Compiles, but SIGABRT class Myocyte(RodiniaGroup): #FIXME: Compiles, but SIGABRT NAME = 'myocyte' #FIXME: Compiles, but SIGABRT #FIXME: Compiles, but SIGABRT config = { #FIXME: Compiles, but SIGABRT "dir": "openmp/myocyte", #FIXME: Compiles, but SIGABRT "src": { #FIXME: Compiles, but SIGABRT "./myocyte.out": [ #FIXME: Compiles, but SIGABRT "main.c" #FIXME: Compiles, but SIGABRT ] #FIXME: Compiles, but SIGABRT }, #FIXME: Compiles, but SIGABRT "flags": [ #FIXME: Compiles, but SIGABRT "-lm", #FIXME: Compiles, but SIGABRT "-fopenmp" #FIXME: Compiles, but SIGABRT ] #FIXME: Compiles, but SIGABRT }
[docs]class NN(RodiniaGroup): NAME = 'nn' config = { "dir": "openmp/nn", "src": { NAME: [ "./nn_openmp.c" ] }, "flags": [ "-lm", "-fopenmp" ] }
[docs]class NW(RodiniaGroup): NAME = 'nw' config = { "dir": "openmp/nw", "src": { "needle": [ "./needle.cpp" ] }, "flags": [ "-lm", "-fopenmp" ] }
[docs] def select_compiler(self, _, cxx): return cxx
[docs]class ParticleFilter(RodiniaGroup): NAME = 'particlefilter' config = { "dir": "openmp/particlefilter", "src": { "particle_filter": [ "./ex_particle_OPENMP_seq.c" ] }, "flags": [ "-lm", "-fopenmp" ] }
[docs]class PathFinder(RodiniaGroup): NAME = 'pathfinder' config = { "dir": "openmp/pathfinder", "src": { "pathfinder": [ "./pathfinder.cpp" ] }, "flags": [ "-fopenmp" ] }
[docs] def select_compiler(self, _, cxx): return cxx
[docs]class SRAD1(RodiniaGroup): NAME = 'srad-1' config = { "dir": "openmp/srad/srad_v1", "src": { "srad": [ "./main.c" ] }, "flags": [ "-I.", "-lm", "-fopenmp" ] }
[docs]class SRAD2(RodiniaGroup): NAME = 'srad-2' config = { "dir": "openmp/srad/srad_v2", "src": { "srad": [ "./srad.cpp" ] }, "flags": [ "-lm", "-fopenmp" ] }
[docs] def select_compiler(self, _, cxx): return cxx
[docs]class StreamCluster(RodiniaGroup): NAME = 'streamcluster' config = { "dir": "openmp/streamcluster", "src": { "./sc_omp": [ "./streamcluster_omp.cpp" ] }, "flags": [ "-lpthread", "-fopenmp" ] }
[docs] def select_compiler(self, _, cxx): return cxx