From 01d103c2a1b4178ab83cee36257021f7bbbfda9b Mon Sep 17 00:00:00 2001 From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de> Date: Fri, 24 Nov 2017 09:29:52 +0100 Subject: [PATCH] Beautify the storage mechanism of custom quadrature order a bit Still not beautiful... --- python/dune/perftool/pdelab/localoperator.py | 4 ++++ python/dune/perftool/sumfact/tabulation.py | 17 ++++++++++------- python/dune/perftool/sumfact/vectorization.py | 4 ++-- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/python/dune/perftool/pdelab/localoperator.py b/python/dune/perftool/pdelab/localoperator.py index 853ca80c..7a9f4169 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 b56ac462..e9af4d94 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 af92c696..a8cd0189 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!") -- GitLab