diff --git a/python/dune/perftool/pdelab/localoperator.py b/python/dune/perftool/pdelab/localoperator.py index 853ca80c4e783fdc7901effecc3d6581a8ab1623..7a9f4169c837f019d5af2842875c3ef39d2eb133 100644 --- a/python/dune/perftool/pdelab/localoperator.py +++ b/python/dune/perftool/pdelab/localoperator.py @@ -471,6 +471,10 @@ def generate_kernel(integrals): knl = extract_kernel_from_cache("kernel_default") delete_cache_items("kernel_default") + # Reset the quadrature degree + from dune.perftool.sumfact.tabulation import set_quadrature_points + set_quadrature_points(None) + # Clean the cache from any data collected after the dry run delete_cache_items("dryrundata") diff --git a/python/dune/perftool/sumfact/tabulation.py b/python/dune/perftool/sumfact/tabulation.py index b56ac4625ce8fd5cf30caa3141c8d18c4c3d177f..e9af4d94426e97527a44b182ff88de097f4cd678 100644 --- a/python/dune/perftool/sumfact/tabulation.py +++ b/python/dune/perftool/sumfact/tabulation.py @@ -206,16 +206,19 @@ class BasisTabulationMatrixArray(BasisTabulationMatrixBase): return True -@generator_factory(context_tags=("kernel",), - cache_key_generator=lambda q: 0 if q is None else 1) -def set_quadrature_points_per_direction(quad): - return quad +_quad = None + + +def set_quadrature_points(quad): + assert quad is None or isinstance(quad, tuple) + global _quad + _quad = quad def quadrature_points_per_direction(): - custom = set_quadrature_points_per_direction(None) - if custom is not None: - return custom + global _quad + if _quad is not None: + return _quad # Quadrature order per direction q = quadrature_order() diff --git a/python/dune/perftool/sumfact/vectorization.py b/python/dune/perftool/sumfact/vectorization.py index af92c6967388cca9679829d7805803011def4108..a8cd0189e3ff460e0dc7cde570e3c051fda68888 100644 --- a/python/dune/perftool/sumfact/vectorization.py +++ b/python/dune/perftool/sumfact/vectorization.py @@ -13,7 +13,7 @@ from dune.perftool.pdelab.restriction import (Restriction, ) from dune.perftool.sumfact.tabulation import (BasisTabulationMatrixArray, quadrature_points_per_direction, - set_quadrature_points_per_direction, + set_quadrature_points, ) from dune.perftool.error import PerftoolError from dune.perftool.options import get_option @@ -74,7 +74,7 @@ def vertical_vectorization_strategy(sumfact, depth): elif get_option("vectorize_allow_quadrature_changes") and mat.quadrature_size != 1: quad = list(quadrature_points_per_direction()) quad[i] = round_to_multiple(quad[i], depth) - set_quadrature_points_per_direction(tuple(quad)) + set_quadrature_points(tuple(quad)) return i elif mat.quadrature_size != 1: raise PerftoolError("Vertical vectorization is not possible!")