From ecfbe719d443a0a1f5504da4bf7f329d372a4bde Mon Sep 17 00:00:00 2001 From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de> Date: Tue, 29 Nov 2016 13:26:09 +0100 Subject: [PATCH] Fix dependencies of contrib instructions --- python/dune/perftool/sumfact/sumfact.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/python/dune/perftool/sumfact/sumfact.py b/python/dune/perftool/sumfact/sumfact.py index 2d981f07..35cb783e 100644 --- a/python/dune/perftool/sumfact/sumfact.py +++ b/python/dune/perftool/sumfact/sumfact.py @@ -195,6 +195,12 @@ def generate_accumulation_instruction(visitor, accterm, measure, subdomain_id): replace_dict[Variable(iname)] = i expression = substitute(pymbolic_expr, replace_dict) + # Determine dependencies + from loopy.match import Or, Writes + from pymbolic.mapper.dependency import DependencyMapper + from dune.perftool.tools import get_pymbolic_basename + deps = Or(tuple(Writes(get_pymbolic_basename(expr)) for expr in DependencyMapper()(expression))) + # Issue an instruction in the quadrature loop that fills the buffer # with the evaluation of the contribution at all quadrature points assignee = Subscript(Variable(temp), tuple(Variable(i) for i in quadrature_inames())) @@ -203,6 +209,7 @@ def generate_accumulation_instruction(visitor, accterm, measure, subdomain_id): forced_iname_deps=frozenset(quadrature_inames() + visitor.inames), forced_iname_deps_is_final=True, tags=frozenset({"quadvec"}), + depends_on=frozenset({deps}) ) contribution_ids.append(contrib_dep) -- GitLab