From d7385fd156d78e54cf9c3fdfd35855e4b4f56c15 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Mon, 6 Jul 2015 02:01:37 -0500 Subject: [PATCH] Avoid redundant checks in check_implemented_domains --- loopy/check.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/loopy/check.py b/loopy/check.py index 266aa7201..3401f7b8d 100644 --- a/loopy/check.py +++ b/loopy/check.py @@ -450,11 +450,27 @@ def check_implemented_domains(kernel, implemented_domains, code=None): from islpy import align_two + last_idomains = None + last_insn_inames = None + for insn_id, idomains in six.iteritems(implemented_domains): insn = kernel.id_to_insn[insn_id] assert idomains + insn_inames = kernel.insn_inames(insn) + + # {{{ if we've checked the same thing before, no need to check it again + + if last_idomains is not None and last_insn_inames is not None: + if idomains == last_idomains and insn_inames == last_insn_inames: + continue + + last_idomains = idomains + last_insn_inames = insn_inames + + # }}} + insn_impl_domain = idomains[0] for idomain in idomains[1:]: insn_impl_domain = insn_impl_domain | idomain @@ -463,13 +479,12 @@ def check_implemented_domains(kernel, implemented_domains, code=None): assumption_non_param, insn_impl_domain) insn_impl_domain = ( (insn_impl_domain & assumptions) - .project_out_except(kernel.insn_inames(insn), [dim_type.set])) + .project_out_except(insn_inames, [dim_type.set])) - insn_inames = kernel.insn_inames(insn) insn_domain = kernel.get_inames_domain(insn_inames) assumptions, insn_domain = align_two(assumption_non_param, insn_domain) desired_domain = ((insn_domain & assumptions) - .project_out_except(kernel.insn_inames(insn), [dim_type.set])) + .project_out_except(insn_inames, [dim_type.set])) insn_impl_domain, desired_domain = align_two( insn_impl_domain, desired_domain) -- GitLab