diff --git a/loopy/codegen/__init__.py b/loopy/codegen/__init__.py index b093c44df718ac381c6cb3744804dde885a6e5ef..dd4b4dec5cb6c030864fd9ebed649caf8f075ff7 100644 --- a/loopy/codegen/__init__.py +++ b/loopy/codegen/__init__.py @@ -283,7 +283,7 @@ def generate_code(kernel): from loopy.symbolic import pw_aff_to_expr for l in storage_shape: - temp_var_decl = ArrayOf(temp_var_decl, int(pw_aff_to_expr(l))) + temp_var_decl = ArrayOf(temp_var_decl, l) if tv.is_local: temp_var_decl = CLLocal(temp_var_decl) diff --git a/loopy/kernel.py b/loopy/kernel.py index 2a56ff7181c626002a8a1ab06d88908d503639d6..52974a83c359113596b9365d8a3b19c397f49037 100644 --- a/loopy/kernel.py +++ b/loopy/kernel.py @@ -203,8 +203,7 @@ class TemporaryVariable(Record): @property def nbytes(self): from pytools import product - from loopy.symbolic import pw_aff_to_expr - return product(pw_aff_to_expr(si) for si in self.shape)*self.dtype.itemsize + return product(si for si in self.shape)*self.dtype.itemsize # }}} @@ -858,8 +857,8 @@ def find_var_base_indices_and_shape_from_inames(domain, inames): from loopy.isl_helpers import static_max_of_pw_aff from loopy.symbolic import pw_aff_to_expr - shape.append(static_max_of_pw_aff( - upper_bound_pw_aff - lower_bound_pw_aff + 1, constants_only=True)) + shape.append(pw_aff_to_expr(static_max_of_pw_aff( + upper_bound_pw_aff - lower_bound_pw_aff + 1, constants_only=True))) base_indices.append(pw_aff_to_expr(lower_bound_pw_aff)) return base_indices, shape diff --git a/loopy/symbolic.py b/loopy/symbolic.py index 8f28afb33c1e45f0cbec609ed907567d2ee745fd..ba4f05b4f0cb54b9e5f9f3ad61147c2d9c9376b0 100644 --- a/loopy/symbolic.py +++ b/loopy/symbolic.py @@ -432,6 +432,11 @@ def aff_to_expr(aff, except_name=None, error_on_name=None): def pw_aff_to_expr(pw_aff): + if isinstance(pw_aff, int): + from warnings import warn + warn("expected PwAff, got int", stacklevel=2) + return pw_aff + pieces = pw_aff.get_pieces() if len(pieces) != 1: