From b98794171c6c747db0203688af2dc0eabe151219 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Fri, 2 Dec 2016 18:34:40 -0600 Subject: [PATCH 1/2] Increase Python recursion limit to allow large kernels to be scheduled --- loopy/schedule/__init__.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/loopy/schedule/__init__.py b/loopy/schedule/__init__.py index c8174d94c..9342fedb6 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 " -- GitLab From ee487067b5dd720c792cc9eb4f5c82626ac02751 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Fri, 2 Dec 2016 18:40:10 -0600 Subject: [PATCH 2/2] Limit length of dependency unicode arrow parade --- loopy/kernel/tools.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/loopy/kernel/tools.py b/loopy/kernel/tools.py index cbacf5e28..754507026 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] # }}} -- GitLab