diff --git a/loopy/__init__.py b/loopy/__init__.py index 1e9463f23eeb780ffce4d550e2dc71ae10e11c7d..ca18981fae7e7de2139e449485add3340946a62f 100644 --- a/loopy/__init__.py +++ b/loopy/__init__.py @@ -770,10 +770,6 @@ def set_loop_priority(kernel, loop_priority): if isinstance(loop_priority, str): loop_priority = [s.strip() for s in loop_priority.split(",")] - for iname in loop_priority: - if not iname in kernel.all_inames(): - raise LoopyError("iname '%s' not known" % iname) - return kernel.copy(loop_priority=loop_priority) # }}} diff --git a/loopy/check.py b/loopy/check.py index 36a50df48908d8a067b9cbf3e20615a3f9623cc5..b56943918b9fc78ccbaae85ad4be99e41c2c92c9 100644 --- a/loopy/check.py +++ b/loopy/check.py @@ -34,6 +34,12 @@ logger = logging.getLogger(__name__) # {{{ sanity checks run during scheduling +def check_loop_priority_inames_known(kernel): + for iname in kernel.loop_priority: + if not iname in kernel.all_inames(): + raise LoopyError("unknown iname '%s' in loop priorities" % iname) + + def check_for_unused_hw_axes_in_insns(kernel): group_size, local_size = kernel.get_grid_sizes_as_exprs() @@ -316,6 +322,7 @@ def pre_schedule_checks(kernel): check_for_orphaned_user_hardware_axes(kernel) check_for_double_use_of_hw_axes(kernel) + check_loop_priority_inames_known(kernel) check_for_unused_hw_axes_in_insns(kernel) check_for_inactive_iname_access(kernel) check_for_write_races(kernel) diff --git a/test/test_loopy.py b/test/test_loopy.py index 5bccdd5dc093704546ed582e3afdbf63d5725cb6..dd8249143e4fd0ff7c4dfd82b784e70f59813b6f 100644 --- a/test/test_loopy.py +++ b/test/test_loopy.py @@ -293,7 +293,7 @@ def test_stencil(ctx_factory): knl = lp.split_iname(knl, "i", 16, outer_tag="g.1", inner_tag="l.1") knl = lp.split_iname(knl, "j", 16, outer_tag="g.0", inner_tag="l.0") knl = lp.add_prefetch(knl, "a", ["i_inner", "j_inner"]) - knl = lp.set_loop_priority(knl, ["i_outer", "i_inner_0", "j_0"]) + knl = lp.set_loop_priority(knl, ["a_dim_0_outer", "a_dim_1_outer"]) return knl def variant_2(knl): @@ -301,7 +301,7 @@ def test_stencil(ctx_factory): knl = lp.split_iname(knl, "j", 16, outer_tag="g.0", inner_tag="l.0") knl = lp.add_prefetch(knl, "a", ["i_inner", "j_inner"], fetch_bounding_box=True) - knl = lp.set_loop_priority(knl, ["i_outer", "i_inner_0", "j_0"]) + knl = lp.set_loop_priority(knl, ["a_dim_0_outer", "a_dim_1_outer"]) return knl for variant in [variant_1, variant_2]: @@ -341,7 +341,7 @@ def test_stencil_with_overfetch(ctx_factory): slabs=(1, 1)) knl = lp.add_prefetch(knl, "a", ["i_inner", "j_inner"], fetch_bounding_box=True) - knl = lp.set_loop_priority(knl, ["i_outer", "i_inner_0", "j_0"]) + knl = lp.set_loop_priority(knl, ["a_dim_0_outer", "a_dim_1_outer"]) return knl for variant in [variant_overfetch]: