From fca6404bd6c262bdc70568e97153b10d836613e3 Mon Sep 17 00:00:00 2001 From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de> Date: Mon, 5 Dec 2016 18:08:02 +0100 Subject: [PATCH] Cleanup --- python/dune/perftool/generation/cache.py | 2 +- python/dune/perftool/sumfact/basis.py | 35 ++++++++++-------------- python/dune/perftool/sumfact/sumfact.py | 2 +- 3 files changed, 17 insertions(+), 22 deletions(-) diff --git a/python/dune/perftool/generation/cache.py b/python/dune/perftool/generation/cache.py index e4c3fb59..f0823bb5 100644 --- a/python/dune/perftool/generation/cache.py +++ b/python/dune/perftool/generation/cache.py @@ -120,7 +120,7 @@ class _RegisteredFunction(object): return self._get_content(cache_key) def remove_by_value(self, val): - self._memoize_cache = {k:v for k, v in self._memoize_cache.items() if v != val} + self._memoize_cache = {k: v for k, v in self._memoize_cache.items() if v != val} def generator_factory(**factory_kwargs): diff --git a/python/dune/perftool/sumfact/basis.py b/python/dune/perftool/sumfact/basis.py index 62077833..fda761c7 100644 --- a/python/dune/perftool/sumfact/basis.py +++ b/python/dune/perftool/sumfact/basis.py @@ -69,7 +69,6 @@ def pymbolic_trialfunction_gradient(element, restriction, component, visitor): dim = formdata.geometric_dimension buffers = [] insn_dep = None - ret = False for i in range(dim): a_matrices = [theta_matrix] * dim a_matrices[i] = dtheta_matrix @@ -98,28 +97,19 @@ def pymbolic_trialfunction_gradient(element, restriction, component, visitor): # Add a sum factorization kernel that implements the # evaluation of the gradients of basis functions at quadrature # points (stage 1) - if index: - assert len(visitor.indices) == 1 - var, insn_dep = sum_factorization_kernel(a_matrices, - buffer, - 1, - preferred_position=i, - insn_dep=insn_dep, - ) - ret = True - else: - var, insn_dep = sum_factorization_kernel(a_matrices, - buffer, - 1, - preferred_position=i, - insn_dep=insn_dep, - ) - buffers.append(var) + var, insn_dep = sum_factorization_kernel(a_matrices, + buffer, + 1, + preferred_position=i, + insn_dep=insn_dep, + ) + buffers.append(var) # Check whether we want to return early with something that has the indexing # already handled! This happens with vectorization when the index coincides # with the position in the vector register. - if ret: + if index: + assert len(visitor.indices) == 1 indices = visitor.indices visitor.indices = None return maybe_wrap_subscript(var, tuple(prim.Variable(i) for i in quadrature_inames()) + indices) @@ -179,8 +169,13 @@ def pymbolic_trialfunction(element, restriction, component, visitor): insn_dep=frozenset({Writes(input)}), ) + if index: + index = (index,) + else: + index = () + return prim.Subscript(var, - tuple(prim.Variable(i) for i in quadrature_inames()) + tuple(prim.Variable(i) for i in quadrature_inames() + index) ) diff --git a/python/dune/perftool/sumfact/sumfact.py b/python/dune/perftool/sumfact/sumfact.py index 5787913e..57d25588 100644 --- a/python/dune/perftool/sumfact/sumfact.py +++ b/python/dune/perftool/sumfact/sumfact.py @@ -237,7 +237,7 @@ def generate_accumulation_instruction(visitor, accterm, measure, subdomain_id): transform(nest_quadrature_loops, visitor.inames) -@generator_factory(item_tags=("sumfactkernel",), context_tags=("kernel",), cache_key_generator=lambda a, b, s, **kw: (a,b,s)) +@generator_factory(item_tags=("sumfactkernel",), context_tags=("kernel",), cache_key_generator=lambda a, b, s, **kw: (a, b, s)) def sum_factorization_kernel(a_matrices, buf, stage, insn_dep=frozenset({}), additional_inames=frozenset({}), preferred_position=None): """ Calculate a sum factorization matrix product. -- GitLab