From c7e1e44d4b22e6c41f9ae91be4d0341aa1249f02 Mon Sep 17 00:00:00 2001 From: Marcel Koch <marcel.koch@uni-muenster.de> Date: Wed, 3 Apr 2019 15:54:51 +0200 Subject: [PATCH] prohibit single writer dependeny heuristic form adding wrong dependencies --- python/dune/codegen/blockstructured/vectorization.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/python/dune/codegen/blockstructured/vectorization.py b/python/dune/codegen/blockstructured/vectorization.py index 7c30f810..94bc4875 100644 --- a/python/dune/codegen/blockstructured/vectorization.py +++ b/python/dune/codegen/blockstructured/vectorization.py @@ -250,6 +250,7 @@ def add_vcl_access(knl, inner_iname, vcl_size, level=0): load_insns.append(lp.CallInstruction(assignees=(), expression=call_load, id=load_id, within_inames=insn.within_inames | insn.reduction_inames(), depends_on=insn.depends_on | write_ids, + depends_on_is_final=True, tags=frozenset({'vectorized_{}'.format(level)}))) read_dependencies.setdefault(id, set()) read_dependencies[id].add(load_id) @@ -279,6 +280,7 @@ def add_vcl_access(knl, inner_iname, vcl_size, level=0): id=store_id, within_inames=insn.within_inames, depends_on=(insn.depends_on | frozenset({id}) | read_dependencies[id] | write_ids), + depends_on_is_final=True, tags=frozenset({'vectorized_{}'.format(level)}))) # replace alias with vcl vector, except for accumulation assignee @@ -343,10 +345,12 @@ def add_vcl_access(knl, inner_iname, vcl_size, level=0): new_insns.append(insn.copy(assignee=assignee_vec, depends_on=(insn.depends_on | read_dependencies[insn.id] | write_ids), + depends_on_is_final=True, tags=insn.tags | frozenset({'vectorized_{}'.format(level)}))) else: new_insns.append(insn.copy(depends_on=(insn.depends_on | read_dependencies[insn.id] | write_ids), + depends_on_is_final=True, tags=insn.tags | frozenset({'vectorized_{}'.format(level)}))) return knl.copy(instructions=new_insns + load_insns + store_insns) -- GitLab