diff --git a/loopy/kernel/tools.py b/loopy/kernel/tools.py index 44f3025fddb89f70ec3eaabdc0a018e43d1f5015..dd1da75324f0994e460ce8eef38851eff5cbd5b3 100644 --- a/loopy/kernel/tools.py +++ b/loopy/kernel/tools.py @@ -296,7 +296,7 @@ def get_dot_dependency_graph(kernel, iname_cluster=False, iname_edge=True): # {{{ domain parameter finder -class DomainParameterFinder: +class DomainParameterFinder(object): """Finds parameters from shapes of passed arguments.""" def __init__(self, kernel): @@ -343,8 +343,15 @@ class DomainParameterFinder: if param_name not in kwargs: for arg_name, axis_nr, shape_func in sources: if arg_name in kwargs: - result[param_name] = shape_func( - kwargs[arg_name].shape[axis_nr]) + try: + shape_axis = kwargs[arg_name].shape[axis_nr] + except IndexError: + raise RuntimeError("Argument '%s' has unexpected shape. " + "Tried to access axis %d (0-based), only %d " + "axes present." % + (arg_name, axis_nr, len(kwargs[arg_name].shape))) + + result[param_name] = shape_func(shape_axis) continue return result