@@ -61,9 +61,18 @@ function stage(ctx::Context, r::MapReduce{T,N}) where {T,N}
6161
6262 # Tree-reduce intermediate reductions
6363 dims_materialized = dims === Colon () ? ntuple (identity, ndims (inp)) : dims
64- treered_f (op, x, y) = op .(x, y)
64+ function to_array (x, N)
65+ A = Array {typeof(x),N} (undef, ntuple (i-> 1 , N))
66+ A[1 ] = x
67+ return A
68+ end
69+ to_array (x:: Array , N) = x
70+ function treered_f (op, x, y, N)
71+ value = op .(x, y)
72+ return to_array (value, N)
73+ end
6574 thunks = treereducedim (reduced_parts, dims_materialized) do x, y
66- Dagger. @spawn treered_f (r. op_outer, x, y)
75+ Dagger. @spawn treered_f (r. op_outer, x, y, length (dims_materialized) )
6776 end
6877
6978 c = domainchunks (inp)
@@ -86,7 +95,7 @@ _mapreduce_maybesync(f, op_inner, op_outer, x, ::Colon, init) =
8695 _mapreduce_maybesync (f, op_inner, op_outer, x, nothing , init)
8796function _mapreduce_maybesync (f, op_inner, op_outer, x:: DArray{T,N} , dims:: Nothing , init) where {T,N}
8897 Dx = _to_darray (MapReduce (f, op_inner, op_outer, x, dims, init))
89- return collect (Dx)
98+ return only ( collect (Dx) )
9099end
91100
92101function Base. size (r:: MapReduce )
0 commit comments