diff --git a/loopy/check.py b/loopy/check.py index 0d2bbff7cf8d6f9e63a33dc2c8814f29afae70f0..1acb2242ed141f38ac0dee8abe7f12d2c6dfd96d 100644 --- a/loopy/check.py +++ b/loopy/check.py @@ -184,6 +184,16 @@ def check_for_inactive_iname_access(kernel): ", ".join(expression_inames - kernel.insn_inames(insn)))) +def check_for_unused_inames(kernel): + # don't linearize if kernel has unused inames + from loopy.transform.iname import get_used_inames + unused_inames = kernel.all_inames() - get_used_inames(kernel) + if unused_inames: + raise LoopyError( + "cannot linearize a kernel with unused inames: %s" + % (unused_inames)) + + def _is_racing_iname_tag(tv, tag): from loopy.kernel.data import (AddressSpace, LocalIndexTagBase, GroupIndexTag, ConcurrentTag, auto) @@ -658,6 +668,7 @@ def pre_schedule_checks(kernel): check_loop_priority_inames_known(kernel) check_multiple_tags_allowed(kernel) check_for_inactive_iname_access(kernel) + check_for_unused_inames(kernel) check_for_write_races(kernel) check_for_data_dependent_parallel_bounds(kernel) check_bounds(kernel)