From 84603db153d7ca3fcf2519c1dab33a0dccd8e0f1 Mon Sep 17 00:00:00 2001
From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de>
Date: Wed, 28 Nov 2018 14:08:51 +0100
Subject: [PATCH] Fix another occurence of direct cache usage

---
 python/dune/codegen/sumfact/vectorization.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/python/dune/codegen/sumfact/vectorization.py b/python/dune/codegen/sumfact/vectorization.py
index 674078fd..0b6b3a23 100644
--- a/python/dune/codegen/sumfact/vectorization.py
+++ b/python/dune/codegen/sumfact/vectorization.py
@@ -13,6 +13,7 @@ from dune.codegen.generation import (backend,
                                      get_counted_variable,
                                      get_global_context_value,
                                      kernel_cached,
+                                     retrieve_cache_items,
                                      )
 from dune.codegen.pdelab.restriction import (Restriction,
                                              restricted_name,
@@ -151,7 +152,7 @@ class PrimitiveApproximateOpcounter(FlopCounter):
         raise NotImplementedError("The class {} should implement a symbolic flopcounter.".format(type(expr)))
 
 
-@kernel_cached
+@generator_factory(item_tags=("opcounts",), context_tags="kernel")
 def store_operation_count(expr, count):
     return count
 
@@ -183,7 +184,7 @@ def quadrature_penalized_strategy_cost(strat_tuple):
 
     # Determine the number of floating point operations per quadrature point.
     # This flop counting is a very crude approximation, but that is totally sufficient here.
-    ops_per_qp = sum(i.value for i in store_operation_count._memoize_cache.values())
+    ops_per_qp = sum(i for i in retrieve_cache_items("opcounts"))
 
     # Do the actual scaling.
     return float((sf_flops + ops_per_qp * num_qp_new) / (sf_flops + ops_per_qp * num_qp_old)) * cost
-- 
GitLab