Skip to content
Snippets Groups Projects
Commit 83231a84 authored by Dominic Kempf's avatar Dominic Kempf
Browse files

[bugfix] have the index update instructions depend on the writers

parent 4443087f
No related branches found
No related tags found
No related merge requests found
......@@ -54,6 +54,7 @@ def collect_vector_data_rotate(knl, insns, inames):
knl = lp.tag_inames(knl, [(new_iname, "vec")])
new_insns = []
all_writers = []
#
# Inspect the given instructions for dependent quantities
......@@ -79,6 +80,7 @@ def collect_vector_data_rotate(knl, insns, inames):
write_match = lp.match.Writes(quantity)
match = lp.match.And((iname_match, write_match))
write_insns = lp.find_instructions(knl, match)
all_writers.extend([i.id for i in write_insns])
if write_insns:
arrname = quantity + '_buffered_arr'
......@@ -142,7 +144,7 @@ def collect_vector_data_rotate(knl, insns, inames):
prim.Sum((prim.Variable("total_index"), 1)), # expression
within_inames=common_inames.union(inames),
within_inames_is_final=True,
depends_on=frozenset([i.id for i in write_insns]).union(frozenset({"assign_total_index"})),
depends_on=frozenset(all_writers).union(frozenset({"assign_total_index"})),
depends_on_is_final=True,
id="update_total_index",
))
......@@ -162,7 +164,7 @@ def collect_vector_data_rotate(knl, insns, inames):
prim.Remainder(prim.Sum((prim.Variable("rotate_index"), 1)), vec_size), # expression
within_inames=common_inames.union(inames),
within_inames_is_final=True,
depends_on=frozenset([i.id for i in write_insns]).union(frozenset({"assign_rotate_index"})),
depends_on=frozenset(all_writers).union(frozenset({"assign_rotate_index"})),
depends_on_is_final=True,
id="update_rotate_index",
))
......@@ -184,7 +186,7 @@ def collect_vector_data_rotate(knl, insns, inames):
new_insns.append(lp.CInstruction((), # iname exprs that the code needs access to
"continue;", # the code
predicates=frozenset({check}),
depends_on=frozenset({"update_rotate_index", "update_total_index"}).union(frozenset([i.id for i in write_insns])),
depends_on=frozenset({"update_rotate_index", "update_total_index"}).union(frozenset(all_writers)),
depends_on_is_final=True,
within_inames=common_inames.union(inames),
within_inames_is_final=True,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment