diff --git a/loopy/kernel/tools.py b/loopy/kernel/tools.py index cbacf5e284fe42ae2b5605d12fa3582bcf0ac4fd..7545070261a9be7a8b5e3e5dde4fdce3e815f44a 100644 --- a/loopy/kernel/tools.py +++ b/loopy/kernel/tools.py @@ -1139,7 +1139,7 @@ def find_reverse_dependencies(kernel, insn_ids): # {{{ draw_dependencies_as_unicode_arrows def draw_dependencies_as_unicode_arrows( - instructions, fore, style, flag_downward=True): + instructions, fore, style, flag_downward=True, max_columns=20): """ :arg instructions: an ordered iterable of :class:`loopy.InstructionBase` instances @@ -1222,12 +1222,17 @@ def draw_dependencies_as_unicode_arrows( # }}} - def extend_to_uniform_length(s): - return s + " "*(n_columns[0]-len(s)) + uniform_length = min(n_columns[0], max_columns) + + def conform_to_uniform_length(s): + if len(s) <= uniform_length: + return s + " "*(uniform_length-len(s)) + else: + return s[:uniform_length] + "..." return [ - (extend_to_uniform_length(row), - extend_to_uniform_length(extender)) + (conform_to_uniform_length(row), + conform_to_uniform_length(extender)) for row, extender in rows] # }}} diff --git a/loopy/schedule/__init__.py b/loopy/schedule/__init__.py index c8174d94cf9f86bde574b3e1eff353d26438cab8..9342fedb67a675012e3fcdf39a5a9fdb1a4999da 100644 --- a/loopy/schedule/__init__.py +++ b/loopy/schedule/__init__.py @@ -1758,6 +1758,17 @@ def insert_barriers(kernel, schedule, reverse, kind, verify_only, level=0): # {{{ main scheduling entrypoint def generate_loop_schedules(kernel, debug_args={}): + import sys + rec_limit = sys.getrecursionlimit() + new_limit = max(rec_limit, len(kernel.instructions) * 2) + sys.setrecursionlimit(new_limit) + try: + return generate_loop_schedules_inner(kernel, debug_args=debug_args) + finally: + sys.setrecursionlimit(rec_limit) + + +def generate_loop_schedules_inner(kernel, debug_args={}): from loopy.kernel import kernel_state if kernel.state not in (kernel_state.PREPROCESSED, kernel_state.SCHEDULED): raise LoopyError("cannot schedule a kernel that has not been "