diff --git a/MEMO b/MEMO index 56bc50c2a38dfcb62d23d82bad1df67ab69cc3f4..1e12de69ab1bf0a2be324bf2a0ad134134296236 100644 --- a/MEMO +++ b/MEMO @@ -58,6 +58,8 @@ Things to consider TODO ^^^^ +- assert dependencies <= parent_inames in loopy/__init__.py + ??? - FIXME: Deal with insns losing a seq iname dep in a CSE realization diff --git a/loopy/__init__.py b/loopy/__init__.py index 1f73e0409eb7122599ebe1d4c85b6c7170ab8003..3c43339a48c65cd4193efd754fc639e109a2af01 100644 --- a/loopy/__init__.py +++ b/loopy/__init__.py @@ -15,11 +15,6 @@ import numpy as np -# TODO list moved to MEMO in root - - - - class LoopyAdvisory(UserWarning): pass @@ -284,7 +279,7 @@ def realize_cse(kernel, cse_tag, dtype, duplicate_inames=[], parallel_inames=Non # the iname is *not* a dependency of the fetch expression if iname in duplicate_inames: - raise RuntimeError("duplicating an iname ('%s')" + raise RuntimeError("duplicating an iname ('%s') " "that the CSE ('%s') does not depend on " "does not make sense" % (iname, expr.child)) diff --git a/loopy/kernel.py b/loopy/kernel.py index 0ee99b860b1cf6829d44865dc8a4cf09f4c89dec..cf4219bf188c842415e5df002f6021f43ce2444b 100644 --- a/loopy/kernel.py +++ b/loopy/kernel.py @@ -625,8 +625,9 @@ class LoopKernel(Record): all_inames_by_insns |= insn.all_inames() if all_inames_by_insns != self.all_inames(): - raise RuntimeError("inames collected from instructions " - "do not match domain inames") + raise RuntimeError("inames collected from instructions (%s) " + "do not match domain inames (%s)" + % (", ".join(all_inames_by_insns), ", ".join(self.all_inames()))) global_sizes = {} local_sizes = {} @@ -676,8 +677,8 @@ class LoopKernel(Record): while cur_axis > len(size_list): from loopy import LoopyAdvisory from warnings import warn - warn("%s axis %d unassigned--assuming length 1" % len(size_list), - LoopyAdvisory) + warn("%s axis %d unassigned--assuming length 1" % ( + which, len(size_list)), LoopyAdvisory) size_list.append(1) size_list.append(size_dict[cur_axis]) diff --git a/loopy/symbolic.py b/loopy/symbolic.py index 725fbad3be4a6e77c990a987f299fe29c9fff2b6..816b607512b938850f4195d2cf6f8b16133e0cb9 100644 --- a/loopy/symbolic.py +++ b/loopy/symbolic.py @@ -336,12 +336,15 @@ class LoopyCCodeMapper(CCodeMapper): ary_strides, index_expr))), enclosing_prec) - if expr.aggregate.name in self.kernel.temporary_variables: + elif expr.aggregate.name in self.kernel.temporary_variables: temp_var = self.kernel.temporary_variables[expr.aggregate.name] return (temp_var.name + "".join("[%s]" % self.rec(idx, PREC_NONE) for idx in expr.index)) + else: + raise RuntimeError("nothing known about variable '%s'" % expr.aggregate.name) + def map_floor_div(self, expr, prec): if isinstance(expr.denominator, int) and expr.denominator > 0: return ("int_floor_div_pos_b(%s, %s)"