From 94b65d29ee2868abc1068adee0dc5273dcf0e5ac Mon Sep 17 00:00:00 2001 From: Matt Wala <wala1@illinois.edu> Date: Sat, 20 May 2017 19:06:57 -0500 Subject: [PATCH] get_usable_inames_for_conditional(): Fix inames finding in the case that we are outside a subkernel (closes #65). --- loopy/codegen/bounds.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/loopy/codegen/bounds.py b/loopy/codegen/bounds.py index 7cc381f11..ae91abd56 100644 --- a/loopy/codegen/bounds.py +++ b/loopy/codegen/bounds.py @@ -65,11 +65,20 @@ def get_usable_inames_for_conditional(kernel, sched_index): # Find our containing subkernel, grab inames for all insns from there. - subkernel_index = sched_index - from loopy.schedule import CallKernel - - while not isinstance(kernel.schedule[subkernel_index], CallKernel): - subkernel_index -= 1 + within_subkernel = False + + for prev_sched_index, sched_item in enumerate(kernel.schedule): + if prev_sched_index == sched_index: + if not within_subkernel: + # Outside all subkernels - use only inames available to device. + return frozenset(result) + + from loopy.schedule import CallKernel, ReturnFromKernel + if isinstance(sched_item, CallKernel): + within_subkernel = True + subkernel_index = prev_sched_index + elif isinstance(sched_item, ReturnFromKernel): + within_subkernel = False insn_ids_for_subkernel = get_insn_ids_for_block_at( kernel.schedule, subkernel_index) -- GitLab