diff --git a/doc/reference.rst b/doc/reference.rst index 9aa9727cdd1253d0834e006149bf99db186172cc..52cd92bb8812565e71ba4cedf1826bf64633f247 100644 --- a/doc/reference.rst +++ b/doc/reference.rst @@ -430,6 +430,8 @@ Influencing data access .. autofunction:: tag_data_axes +.. autofunction:: remove_unused_arguments + Padding ^^^^^^^ diff --git a/loopy/__init__.py b/loopy/__init__.py index 77da1e40ec9b66df15aa6bfe32eb31ad99a45358..10fac9cfce3eb5a9a1bb6686fabf453ec6b83a8d 100644 --- a/loopy/__init__.py +++ b/loopy/__init__.py @@ -2090,4 +2090,22 @@ def to_batched(knl, nbatches, batch_varying_args, batch_iname_prefix="ibatch"): # }}} + +# {{{ remove_unused_arguments + +def remove_unused_arguments(knl): + new_args = [] + + refd_vars = set(knl.all_params()) + for insn in knl.instructions: + refd_vars.update(insn.dependency_names()) + + for arg in knl.args: + if arg.name in refd_vars: + new_args.append(arg) + + return knl.copy(args=new_args) + +# }}} + # vim: foldmethod=marker