From a7dc8f8b6b315cac63db5b4c6d383b4725ca1126 Mon Sep 17 00:00:00 2001 From: Alexandru Fikl <alexfikl@gmail.com> Date: Wed, 17 Jun 2020 19:41:14 -0500 Subject: [PATCH] use ArrayContext as a code cache in execution --- grudge/execution.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/grudge/execution.py b/grudge/execution.py index 0104584e..3d5f430d 100644 --- a/grudge/execution.py +++ b/grudge/execution.py @@ -118,7 +118,8 @@ class ExecutionMapper(mappers.Evaluator, # {{{ elementwise reductions def _map_elementwise_reduction(self, op_name, field_expr, dd): - @memoize_in(self, "elementwise_%s_prg" % op_name) + @memoize_in(self.array_context, + (ExecutionMapper, "elementwise_%s_prg" % op_name)) def prg(): return make_loopy_program( "{[iel, idof, jdof]: 0<=iel<nelements and 0<=idof, jdof<ndofs}", @@ -235,7 +236,7 @@ class ExecutionMapper(mappers.Evaluator, raise TypeError( "Expected 'else' to be of type np.number or DOFArray") - @memoize_in(self.bound_op, "map_if_knl") + @memoize_in(self.array_context, (ExecutionMapper, "map_if_knl")) def knl(sym_then, sym_else): return make_loopy_program( "{[iel, idof]: 0<=iel<nelements and 0<=idof<nunit_dofs}", @@ -265,7 +266,7 @@ class ExecutionMapper(mappers.Evaluator, if is_zero(field): return 0 - @memoize_in(self.bound_op, "elwise_linear_knl") + @memoize_in(self.array_context, (ExecutionMapper, "elwise_linear_knl")) def prg(): result = make_loopy_program( """{[iel, idof, j]: @@ -329,7 +330,7 @@ class ExecutionMapper(mappers.Evaluator, if is_zero(field): return 0 - @memoize_in(self.bound_op, "face_mass_knl") + @memoize_in(self.array_context, (ExecutionMapper, "face_mass_knl")) def prg(): return make_loopy_program( """{[iel,idof,f,j]: @@ -496,7 +497,8 @@ class ExecutionMapper(mappers.Evaluator, assert repr_op.dd_in.domain_tag == repr_op.dd_out.domain_tag - @memoize_in(self.discrwb, "reference_derivative_prg") + @memoize_in(self.array_context, + (ExecutionMapper, "reference_derivative_prg")) def prg(nmatrices): result = make_loopy_program( """{[imatrix, iel, idof, j]: -- GitLab