From 147d27f5ecebf5075e2e8600a5d64e1c1382c0ad Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Mon, 21 Mar 2016 22:47:12 -0500 Subject: [PATCH] Type system fixes --- loopy/codegen/__init__.py | 2 ++ loopy/library/reduction.py | 3 ++- loopy/target/c/__init__.py | 4 ++-- loopy/target/opencl.py | 4 ++-- loopy/types.py | 4 ++-- loopy/version.py | 2 +- 6 files changed, 11 insertions(+), 8 deletions(-) diff --git a/loopy/codegen/__init__.py b/loopy/codegen/__init__.py index 59df3af62..4056c0dea 100644 --- a/loopy/codegen/__init__.py +++ b/loopy/codegen/__init__.py @@ -637,6 +637,7 @@ def generate_body(kernel): seen_dtypes = set() seen_functions = set() + seen_atomic_dtypes = set() initial_implemented_domain = isl.BasicSet.from_params(kernel.assumptions) codegen_state = CodeGenerationState( @@ -645,6 +646,7 @@ def generate_body(kernel): implemented_predicates=frozenset(), seen_dtypes=seen_dtypes, seen_functions=seen_functions, + seen_atomic_dtypes=seen_atomic_dtypes, var_subst_map={}, allow_complex=allow_complex) diff --git a/loopy/library/reduction.py b/loopy/library/reduction.py index 90dd27133..3eb590b80 100644 --- a/loopy/library/reduction.py +++ b/loopy/library/reduction.py @@ -163,7 +163,8 @@ class _ArgExtremumReductionOperation(ReductionOperation): struct_dtype = np.dtype([("value", dtype), ("index", np.int32)]) ARGEXT_STRUCT_DTYPES[dtype] = NumpyType(struct_dtype, target) - target.get_or_register_dtype(self.prefix(dtype)+"_result", struct_dtype) + target.get_or_register_dtype(self.prefix(dtype)+"_result", + NumpyType(struct_dtype)) return ARGEXT_STRUCT_DTYPES[dtype] def neutral_element(self, dtype, inames): diff --git a/loopy/target/c/__init__.py b/loopy/target/c/__init__.py index f9a5e4390..66210bb2a 100644 --- a/loopy/target/c/__init__.py +++ b/loopy/target/c/__init__.py @@ -178,7 +178,7 @@ class CTarget(TargetBase): base_storage_to_is_local = {} base_storage_to_align_bytes = {} - from cgen import ArrayOf, Pointer, Initializer, AlignedAttribute + from cgen import ArrayOf, Pointer, Initializer, AlignedAttribute, Value from loopy.codegen import POD # uses the correct complex type class ConstRestrictPointer(Pointer): @@ -251,7 +251,7 @@ class CTarget(TargetBase): * product(si for si in idi.shape)) for bs_name, bs_sizes in sorted(six.iteritems(base_storage_sizes)): - bs_var_decl = POD(self, np.int8, bs_name) + bs_var_decl = Value("char", bs_name) bs_var_decl = self.wrap_temporary_decl( bs_var_decl, base_storage_to_is_local[bs_name]) bs_var_decl = ArrayOf(bs_var_decl, max(bs_sizes)) diff --git a/loopy/target/opencl.py b/loopy/target/opencl.py index 1e224ff1f..43c4ea7dc 100644 --- a/loopy/target/opencl.py +++ b/loopy/target/opencl.py @@ -44,8 +44,8 @@ class DTypeRegistryWrapperWithAtomics(DTypeRegistryWrapper): return super(self.wrapped_registry.get_or_register_dtype( names, NumpyType(dtype.dtype))) - return super(self.wrapped_registry.get_or_register_dtype( - names, dtype)) + return super(DTypeRegistryWrapperWithAtomics, self).get_or_register_dtype( + names, dtype) class DTypeRegistryWrapperWithCL1Atomics(DTypeRegistryWrapperWithAtomics): diff --git a/loopy/types.py b/loopy/types.py index 21567b9a4..d80650eb6 100644 --- a/loopy/types.py +++ b/loopy/types.py @@ -107,13 +107,13 @@ class NumpyType(LoopyType): if self.target is None: raise RuntimeError("unable to pickle dtype: target not known") - c_name = self.target.dtype_to_typename(self.dtype) + c_name = self.target.dtype_to_typename(NumpyType(self.dtype)) return (self.target, c_name, self.dtype) def __setstate__(self, state): target, name, dtype = state self.target = target - self.dtype = self.target.get_or_register_dtype([name], dtype) + self.dtype = self.target.get_or_register_dtype([name], NumpyType(dtype)) def with_target(self, target): if (self.target is not None diff --git a/loopy/version.py b/loopy/version.py index 2ade5ba54..60e310a7c 100644 --- a/loopy/version.py +++ b/loopy/version.py @@ -32,4 +32,4 @@ except ImportError: else: _islpy_version = islpy.version.VERSION_TEXT -DATA_MODEL_VERSION = "v22-islpy%s" % _islpy_version +DATA_MODEL_VERSION = "v23-islpy%s" % _islpy_version -- GitLab