diff --git a/loopy/expression.py b/loopy/expression.py index 7cf719f8d806d0f7d2de9471d41a559643ea2f11..3194ac571b1959dca77f6451c78a29096824ed48 100644 --- a/loopy/expression.py +++ b/loopy/expression.py @@ -342,8 +342,10 @@ class VectorizabilityChecker(RecursiveMapper): else: if self.vec_iname in get_dependencies(index[i]): - raise Unvectorizable("other vectorization iname " - "dependencies in subscript") + raise Unvectorizable("vectorizing iname '%s' occurs in " + "unvectorized subscript axis %d (1-based) of " + "expression '%s'" + % (self.vec_iname, i+1, expr)) break return bool(possible) diff --git a/loopy/frontend/fortran/__init__.py b/loopy/frontend/fortran/__init__.py index ed228ebc137d8727c7f90b7a5ce618a9bc70fb6c..1cd7aa6f3e4945c306442ec09f4077d65759050d 100644 --- a/loopy/frontend/fortran/__init__.py +++ b/loopy/frontend/fortran/__init__.py @@ -177,7 +177,6 @@ def parse_transformed_fortran(source, free_form=True, strict=True, transform_code, require_leading_newline=False, ignore_lines_starting_with="#") - print(transform_code) if transform_code_context is None: proc_dict = {} diff --git a/loopy/kernel/creation.py b/loopy/kernel/creation.py index 70f7069bcabe87422a9cfd3752fd6fbc766fd52e..7442609a2c7c79c2f3ac270564c61031ec946bc5 100644 --- a/loopy/kernel/creation.py +++ b/loopy/kernel/creation.py @@ -1088,7 +1088,7 @@ def make_kernel(domains, instructions, kernel_data=["..."], **kwargs): kernel_data = kernel_data.split(",") kernel_args = [] - temporary_variables = {} + temporary_variables = kwargs.pop("temporary_variables", {}).copy() for dat in kernel_data: if dat is Ellipsis or isinstance(dat, str): kernel_args.append(dat) diff --git a/loopy/kernel/data.py b/loopy/kernel/data.py index adffe418e9e533cde8b5d274b6a82ab509fa60a2..24851690583a33cd9a4ce8bbb7fbe59ced7f4b66 100644 --- a/loopy/kernel/data.py +++ b/loopy/kernel/data.py @@ -372,6 +372,16 @@ class TemporaryVariable(ArrayBase): def __str__(self): return self.stringify(include_typename=False) + def update_persistent_hash(self, key_hash, key_builder): + """Custom hash computation function for use with + :class:`pytools.persistent_dict.PersistentDict`. + """ + + super(TemporaryVariable, self).update_persistent_hash(key_hash, key_builder) + key_builder.rec(key_hash, self.storage_shape) + key_builder.rec(key_hash, self.base_indices) + key_builder.rec(key_hash, self.is_local) + # }}} diff --git a/loopy/preprocess.py b/loopy/preprocess.py index abd9b770ca5c449b1e774b4eccbe3bd314ff7b6a..14940b529378a2caac44c2bf9f45180f51952ebc 100644 --- a/loopy/preprocess.py +++ b/loopy/preprocess.py @@ -575,6 +575,9 @@ def duplicate_private_temporaries_for_ilp_and_vec(kernel): new_ilp_inames = ilp_inames - referenced_ilp_inames + if not new_ilp_inames: + break + if tv.name in var_to_new_ilp_inames: if new_ilp_inames != set(var_to_new_ilp_inames[tv.name]): raise LoopyError("instruction '%s' requires adding "