diff --git a/python/dune/perftool/generation/__init__.py b/python/dune/perftool/generation/__init__.py index 758602a99b508587edc232f2fd27dd28d7fde349..40d92670b3524be708d41ad75e5e40aa051bc6ab 100644 --- a/python/dune/perftool/generation/__init__.py +++ b/python/dune/perftool/generation/__init__.py @@ -33,6 +33,7 @@ from dune.perftool.generation.loopy import (constantarg, iname, instruction, pymbolic_expr, + silenced_warning, temporary_variable, valuearg, ) diff --git a/python/dune/perftool/generation/loopy.py b/python/dune/perftool/generation/loopy.py index 2e0cd5fb00d2bb17710d0c67321d9550e7111ab3..0fbbfbfc222599371c8feaff98754b275d19c3d9 100644 --- a/python/dune/perftool/generation/loopy.py +++ b/python/dune/perftool/generation/loopy.py @@ -13,6 +13,7 @@ import numpy iname = generator_factory(item_tags=("iname",)) pymbolic_expr = generator_factory(item_tags=("kernel", "pymbolic")) function_mangler = generator_factory(item_tags=("mangler",)) +silenced_warning = generator_factory(item_tags=("silenced_warning",), no_deco=True) @generator_factory(item_tags=("argument", "globalarg"), diff --git a/python/dune/perftool/pdelab/localoperator.py b/python/dune/perftool/pdelab/localoperator.py index 702e8ff9a81c8af52f15fe0c38bded1a5b9086f3..3fbb2595bc71898592cb180ee5f073cbdb27d2ea 100644 --- a/python/dune/perftool/pdelab/localoperator.py +++ b/python/dune/perftool/pdelab/localoperator.py @@ -470,6 +470,7 @@ def generate_kernel(integrals): temporaries = {i.name: i for i in retrieve_cache_items("temporary")} arguments = [i for i in retrieve_cache_items("argument")] manglers = retrieve_cache_functions("mangler") + silenced = [l for l in retrieve_cache_items("silenced_warning")] # Construct an options object from loopy import Options @@ -484,6 +485,7 @@ def generate_kernel(integrals): function_manglers=manglers, target=DuneTarget(), options=opt, + silenced_warnings=silenced, ) from loopy import make_reduction_inames_unique diff --git a/python/dune/perftool/sumfact/sumfact.py b/python/dune/perftool/sumfact/sumfact.py index 6345a02938daaa523aff548767a6346e07851c99..8585f15357cd2a8e03b956c73a967c151c67d67b 100644 --- a/python/dune/perftool/sumfact/sumfact.py +++ b/python/dune/perftool/sumfact/sumfact.py @@ -2,6 +2,7 @@ from dune.perftool.generation import (domain, get_counter, iname, instruction, + silenced_warning, ) from dune.perftool.loopy.buffer import (get_buffer_temporary, initialize_buffer, @@ -53,6 +54,7 @@ def start_sumfactorization(): inp = get_buffer_temporary("buffer", shape=shape, dim_tags="f,f") + silenced_warning('read_no_write({})'.format(inp)) return sum_factorization_kernel(a_matrices, inp, "buffer") @@ -83,6 +85,9 @@ def sum_factorization_kernel(a_matrices, inp, buffer): shape=inp_shape, dim_tags="f,f") + # The input temporary will only be read from, so we need to silence the loopy warning + silenced_warning('read_no_write({})'.format(inp)) + switch_base_storage(buffer) # Get a temporary that interprets the base storage of the output