from os import path
import logging
from benchbuild.utils.wrapping import wrap
from benchbuild.projects.benchbuild.group import BenchBuildGroup
from benchbuild.settings import CFG
from benchbuild.utils.compiler import lt_clang, lt_clang_cxx
from benchbuild.utils.downloader import Git, Wget
from benchbuild.utils.run import run
from benchbuild.utils.cmd import make, tar
from plumbum import local
[docs]class OpenBlas(BenchBuildGroup):
NAME = 'openblas'
DOMAIN = 'scientific'
SRC_FILE = 'OpenBLAS'
src_uri = "https://github.com/xianyi/" + SRC_FILE
[docs] def download(self):
Git(self.src_uri, self.SRC_FILE)
[docs] def build(self):
clang = lt_clang(self.cflags, self.ldflags, self.compiler_extension)
with local.cwd(self.SRC_FILE):
run(make["CC=" + str(clang)])
[docs] def run_tests(self, experiment, run):
log = logging.getLogger(__name__)
log.warn('Not implemented')
[docs]class Lapack(BenchBuildGroup):
NAME = 'lapack'
DOMAIN = 'scientific'
VERSION = '3.2.1'
SRC_FILE = "clapack.tgz"
def __init__(self, exp):
super(Lapack, self).__init__(exp)
self.sourcedir = path.join(
str(CFG["src_dir"]), "src", "lapack", self.name)
self.testdir = path.join(
str(CFG["test_dir"]), self.domain, "lapack", "tests")
self.setup_derived_filenames()
self.tests = []
src_dir = "CLAPACK-{0}".format(VERSION)
src_uri = "http://www.netlib.org/clapack/clapack.tgz"
[docs] def download(self):
Wget(self.src_uri, self.SRC_FILE)
tar("xfz", self.SRC_FILE)
[docs] def build(self):
with local.cwd(self.src_dir):
run(make["-j", CFG["jobs"], "f2clib", "blaslib"])
with local.cwd(path.join("BLAS", "TESTING")):
run(make["-j", CFG["jobs"], "-f", "Makeblat2"])
run(make["-j", CFG["jobs"], "-f", "Makeblat3"])
[docs] def run_tests(self, experiment, run):
with local.cwd(self.src_dir):
with local.cwd(path.join("BLAS")):
xblat2s = wrap("xblat2s", experiment)
xblat2d = wrap("xblat2d", experiment)
xblat2c = wrap("xblat2c", experiment)
xblat2z = wrap("xblat2z", experiment)
xblat3s = wrap("xblat3s", experiment)
xblat3d = wrap("xblat3d", experiment)
xblat3c = wrap("xblat3c", experiment)
xblat3z = wrap("xblat3z", experiment)
run((xblat2s < "sblat2.in"))
run((xblat2d < "dblat2.in"))
run((xblat2c < "cblat2.in"))
run((xblat2z < "zblat2.in"))
run((xblat3s < "sblat3.in"))
run((xblat3d < "dblat3.in"))
run((xblat3c < "cblat3.in"))
run((xblat3z < "zblat3.in"))