Skip to content
Snippets Groups Projects
Commit 906e7b6a authored by Andreas Klöckner's avatar Andreas Klöckner
Browse files

Re-fix scalar parallel reductions

parent da493b5d
No related branches found
No related tags found
No related merge requests found
...@@ -455,6 +455,12 @@ def realize_reduction(kernel, insn_id_filter=None, unknown_types_ok=True): ...@@ -455,6 +455,12 @@ def realize_reduction(kernel, insn_id_filter=None, unknown_types_ok=True):
depends_on=frozenset()) depends_on=frozenset())
generated_insns.append(init_insn) generated_insns.append(init_insn)
def _strip_if_scalar(c):
if len(acc_vars) == 1:
return c[0]
else:
return c
init_neutral_id = insn_id_gen("%s_%s_init_neutral" % (insn.id, red_iname)) init_neutral_id = insn_id_gen("%s_%s_init_neutral" % (insn.id, red_iname))
init_neutral_insn = make_assignment( init_neutral_insn = make_assignment(
id=init_neutral_id, id=init_neutral_id,
...@@ -473,7 +479,7 @@ def realize_reduction(kernel, insn_id_filter=None, unknown_types_ok=True): ...@@ -473,7 +479,7 @@ def realize_reduction(kernel, insn_id_filter=None, unknown_types_ok=True):
for acc_var in acc_vars), for acc_var in acc_vars),
expression=expr.operation( expression=expr.operation(
arg_dtype, arg_dtype,
tuple(var(nvn) for nvn in neutral_var_names), _strip_if_scalar(tuple(var(nvn) for nvn in neutral_var_names)),
expr.expr, expr.inames), expr.expr, expr.inames),
within_inames=( within_inames=(
(outer_insn_inames - frozenset(expr.inames)) (outer_insn_inames - frozenset(expr.inames))
...@@ -483,12 +489,6 @@ def realize_reduction(kernel, insn_id_filter=None, unknown_types_ok=True): ...@@ -483,12 +489,6 @@ def realize_reduction(kernel, insn_id_filter=None, unknown_types_ok=True):
no_sync_with=frozenset([(init_id, "any")])) no_sync_with=frozenset([(init_id, "any")]))
generated_insns.append(transfer_insn) generated_insns.append(transfer_insn)
def _strip_if_scalar(c):
if len(acc_vars) == 1:
return c[0]
else:
return c
cur_size = 1 cur_size = 1
while cur_size < size: while cur_size < size:
cur_size *= 2 cur_size *= 2
......
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