From b88c9990ae1c6e21e37e55f2c23186647eaa53b6 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Tue, 1 Mar 2016 17:11:22 -0600 Subject: [PATCH] remove_unused_arguments: Consider uses in data shapes/offsets/strides --- loopy/transform/data.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/loopy/transform/data.py b/loopy/transform/data.py index 643326379..7b1deb795 100644 --- a/loopy/transform/data.py +++ b/loopy/transform/data.py @@ -353,6 +353,26 @@ def remove_unused_arguments(knl): for insn in exp_knl.instructions: refd_vars.update(insn.dependency_names()) + from loopy.kernel.array import ArrayBase, FixedStrideArrayDimTag + from loopy.symbolic import get_dependencies + from itertools import chain + + def tolerant_get_deps(expr): + if expr is None or expr is lp.auto: + return set() + return get_dependencies(expr) + + for ary in chain(knl.args, six.itervalues(knl.temporary_variables)): + if isinstance(ary, ArrayBase): + refd_vars.update( + tolerant_get_deps(ary.shape) + | tolerant_get_deps(ary.offset)) + + for dim_tag in ary.dim_tags: + if isinstance(dim_tag, FixedStrideArrayDimTag): + refd_vars.update( + tolerant_get_deps(dim_tag.stride)) + for arg in knl.args: if arg.name in refd_vars: new_args.append(arg) -- GitLab