diff --git a/python/dune/perftool/loopy/mangler.py b/python/dune/perftool/loopy/mangler.py index ba5b24aef7bf259c95f98bc5018b1f527c613864..337205b3a5d285005288afed3bab845547cd5065 100644 --- a/python/dune/perftool/loopy/mangler.py +++ b/python/dune/perftool/loopy/mangler.py @@ -2,6 +2,7 @@ from dune.perftool.generation import (function_mangler, include_file, + post_include ) from loopy import CallMangleInfo @@ -9,35 +10,38 @@ from loopy import CallMangleInfo import numpy as np -def add_std(name, dtype): - if dtype.dtype.kind == "f": - return "std::{}".format(name) +def using_std_statement(name): + post_include("using std::{};".format(name), filetag="operatorfile") @function_mangler def dune_math_manglers(kernel, name, arg_dtypes): dt = arg_dtypes[0] if name == "exp": + using_std_statement(name) include_file("dune/perftool/common/vectorclass.hh", filetag="operatorfile") - return CallMangleInfo(add_std("exp", dt), + return CallMangleInfo("exp", arg_dtypes, arg_dtypes, ) if name == "sqrt": - return CallMangleInfo(add_std("sqrt", dt), + using_std_statement(name) + return CallMangleInfo("sqrt", arg_dtypes, arg_dtypes, ) if name == "max": - return CallMangleInfo(add_std("min", dt), + using_std_statement(name) + return CallMangleInfo("max", (dt,), arg_dtypes, ) if name == "min": - return CallMangleInfo(add_std("min", dt), + using_std_statement(name) + return CallMangleInfo("min", (dt,), arg_dtypes, ) diff --git a/python/dune/perftool/loopy/target.py b/python/dune/perftool/loopy/target.py index f08f3fadc445bb774c6f750e521e448daddbc03f..f0e50e8f8718d4e31e5c6e5e8509fe98901e3c4d 100644 --- a/python/dune/perftool/loopy/target.py +++ b/python/dune/perftool/loopy/target.py @@ -170,7 +170,7 @@ class DuneTarget(TargetBase): return numpy_to_cpp_dtype(dtype.dtype.name) def is_vector_dtype(self, dtype): - return False + return dtype.dtype.kind == "V" def vector_dtype(self, base, count): return NumpyType(VCLTypeRegistry.types[base.numpy_dtype, count], diff --git a/python/dune/perftool/loopy/vcl.py b/python/dune/perftool/loopy/vcl.py index b50a4226fdc7869b29d357ec89d0caa5cb316865..d994dbb32ab4b6a6a1673fb04ce0ca7b62756af4 100644 --- a/python/dune/perftool/loopy/vcl.py +++ b/python/dune/perftool/loopy/vcl.py @@ -34,7 +34,7 @@ def _populate_vcl_type_registry(): name = "Vec{}{}".format(count, abbrev) # Construct the numpy dtype! - fieldnames = tuple("x" + str(i) for i in range(count)) + fieldnames = tuple(chr(ord("x") + i) for i in range(count)) dtype = np.dtype(dict(names=fieldnames, formats=[base_type] * count, )