diff --git a/MEMO b/MEMO index 9c527091411f6047e1f30a7f78c82da47bea3611..a281b98085a5ce9e37102cbf94231596e6563b79 100644 --- a/MEMO +++ b/MEMO @@ -37,14 +37,14 @@ Things to consider To-do ^^^^^ +- Just touching a variable written to by a non-idempotent + instruction makes that instruction also not idempotent + - assert dependencies <= parent_inames in loopy/__init__.py ??? - user interface for dim length prescription -- Give a good error message if a parameter assignment in get_problems() - is missing. - - Deal with equality constraints. (These arise, e.g., when partitioning a loop of length 16 into 16s.) @@ -83,6 +83,9 @@ Future ideas Dealt with ^^^^^^^^^^ +- Give a good error message if a parameter assignment in get_problems() + is missing. + - Slab decomposition for ILP -> I don't think that's possible. diff --git a/loopy/__init__.py b/loopy/__init__.py index 67af82443ec5d87d790cc832e2435f3ce3f7a62b..46f6a76555afcf51c65cb4b2fcc7d7283fbf397a 100644 --- a/loopy/__init__.py +++ b/loopy/__init__.py @@ -411,8 +411,15 @@ def get_problems(kernel, parameters): glens, llens = kernel.get_grid_sizes_as_exprs() from pymbolic import evaluate - glens = evaluate(glens, parameters) - llens = evaluate(llens, parameters) + from pymbolic.mapper.evaluator import UnknownVariableError + try: + glens = evaluate(glens, parameters) + llens = evaluate(llens, parameters) + except UnknownVariableError, name: + raise RuntimeError("When checking your kernel for problems, " + "a value for parameter '%s' was not available. Pass " + "it in the 'parameters' kwarg to check_kernels()." + % name) if (max(len(glens), len(llens)) > kernel.device.max_work_item_dimensions):