From bf4bc9e871f0e4c699ef0d18b671f809ac2e448d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20H=C3=B6nig?= <jan.hoenig@fau.de> Date: Fri, 3 Nov 2017 16:22:02 +0100 Subject: [PATCH] Fixing and benchmarking --- kerncraft_coupling/generate_benchmark.py | 3 ++- kerncraft_coupling/kerncraft_interface.py | 19 ++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/kerncraft_coupling/generate_benchmark.py b/kerncraft_coupling/generate_benchmark.py index ede96d12b..8bff2b0c3 100644 --- a/kerncraft_coupling/generate_benchmark.py +++ b/kerncraft_coupling/generate_benchmark.py @@ -60,7 +60,7 @@ int main(int argc, char **argv) for (; repeat > 0; --repeat) { - kernel({{callArgumentList}}); + {{kernelName}}({{callArgumentList}}); // Dummy calls {%- for fieldName, dataType, size in fields %} @@ -103,6 +103,7 @@ def generateBenchmark(ast, likwid=False): args = { 'likwid': likwid, 'kernelCode': generateC(ast), + 'kernelName': ast.functionName, 'fields': fields, 'constants': constants, 'callArgumentList': ",".join(callParameters), diff --git a/kerncraft_coupling/kerncraft_interface.py b/kerncraft_coupling/kerncraft_interface.py index 47c6a2c2d..0b63d9151 100644 --- a/kerncraft_coupling/kerncraft_interface.py +++ b/kerncraft_coupling/kerncraft_interface.py @@ -23,8 +23,8 @@ class PyStencilsKerncraftKernel(kerncraft.kernel.Kernel): """ LIKWID_BASE = '/usr/local/likwid' - def __init__(self, ast): - super(PyStencilsKerncraftKernel, self).__init__() + def __init__(self, ast, machine=None): + super(PyStencilsKerncraftKernel, self).__init__(machine) self.ast = ast self.temporaryDir = TemporaryDirectory() @@ -87,9 +87,9 @@ class PyStencilsKerncraftKernel(kerncraft.kernel.Kernel): self.check() - def iaca_analysis(self, compiler, compiler_args, micro_architecture, **kwargs): - if compiler_args is None: - compiler_args = [] + def iaca_analysis(self, micro_architecture, asm_block='auto', + pointer_increment='auto_with_manual_fallback', verbose=False): + compiler, compiler_args = self._machine.get_compiler() if '-std=c99' not in compiler_args: compiler_args += ['-std=c99'] headerPath = kerncraft.get_header_path() @@ -119,9 +119,8 @@ class PyStencilsKerncraftKernel(kerncraft.kernel.Kernel): return result, instrumentedAsmBlock - def build(self, compiler, compiler_args, **kwargs): - if compiler_args is None: - compiler_args = [] + def build(self, lflags=None, verbose=False): + compiler, compiler_args = self._machine.get_compiler() if '-std=c99' not in compiler_args: compiler_args.append('-std=c99') headerPath = kerncraft.get_header_path() @@ -140,6 +139,8 @@ class PyStencilsKerncraftKernel(kerncraft.kernel.Kernel): with open(srcFile, 'w') as f: f.write(generateBenchmark(self.ast, likwid=True)) + print(generateBenchmark(self.ast, likwid=True)) + subprocess.check_output(cmd + [srcFile, dummySrcFile, '-pthread', '-llikwid', '-o', binFile]) return binFile @@ -160,7 +161,7 @@ class Analysis(object): if not isinstance(kerncraftMachineModel, MachineModel): kerncraftMachineModel = MachineModel(kerncraftMachineModel) - self.analysis = AnalysisClass(PyStencilsKerncraftKernel(self.ast), + self.analysis = AnalysisClass(PyStencilsKerncraftKernel(self.ast, kerncraftMachineModel), kerncraftMachineModel, args=args) self.analysis.analyze() -- GitLab