@@ -582,29 +582,26 @@ DVector(A::AbstractVector{T}, ::AutoBlocks, assignment::AssignmentType{1} = :arb
582582DMatrix (A:: AbstractMatrix{T} , :: AutoBlocks , assignment:: AssignmentType{2} = :arbitrary ) where T = DMatrix (A, auto_blocks (A), assignment)
583583DArray (A:: AbstractArray , :: AutoBlocks , assignment:: AssignmentType = :arbitrary ) = DArray (A, auto_blocks (A), assignment)
584584
585- struct AllocateUndef{S} end
586- (:: AllocateUndef{S} )(T, dims:: Dims{N} ) where {S,N} = Array {S,N} (undef, dims)
587-
588- function DArray {T,N} (:: UndefInitializer , dist:: Blocks{N} , dims:: NTuple{N,Int} ; assignment:: AssignmentType{N} = :arbitrary ) where {T,N}
589- domain = ArrayDomain (map (x-> 1 : x, dims))
585+ @warn " Add assignment to undef initializer" maxlog= 1
586+ function DArray {T,N} (:: UndefInitializer , dims:: NTuple{N,Int} ) where {T,N}
587+ dist = auto_blocks (dims)
588+ return DArray {T,N} (undef, dist, dims... )
589+ end
590+ function DArray {T,N} (:: UndefInitializer , dist:: Blocks{N} , dims:: NTuple{N,Int} ) where {T,N}
591+ domain = ArrayDomain (ntuple (i-> 1 : dims[i], N))
590592 subdomains = partition (dist, domain)
591- a = AllocateArray (T, AllocateUndef {T} (), false , domain, subdomains, dist, assignment)
592- return _to_darray (a)
593- end
594- DArray {T,N} (:: UndefInitializer , dist:: Blocks{N} , dims:: Vararg{Int,N} ; assignment:: AssignmentType{N} = :arbitrary ) where {T,N} =
595- DArray {T,N} (undef, dist, (dims... ,); assignment)
596- DArray {T,N} (:: UndefInitializer , dims:: NTuple{N,Int} ; assignment:: AssignmentType{N} = :arbitrary ) where {T,N} =
597- DArray {T,N} (undef, auto_blocks (dims), dims; assignment)
598- DArray {T,N} (:: UndefInitializer , dims:: Vararg{Int,N} ; assignment:: AssignmentType{N} = :arbitrary ) where {T,N} =
599- DArray {T,N} (undef, auto_blocks ((dims... ,)), (dims... ,); assignment)
600- DArray {T} (:: UndefInitializer , dist:: Blocks{N} , dims:: NTuple{N,Int} ; assignment:: AssignmentType{N} = :arbitrary ) where {T,N} =
601- DArray {T,N} (undef, dist, dims; assignment)
602- DArray {T} (:: UndefInitializer , dist:: Blocks{N} , dims:: Vararg{Int,N} ; assignment:: AssignmentType{N} = :arbitrary ) where {T,N} =
603- DArray {T,N} (undef, dist, (dims... ,); assignment)
604- DArray {T} (:: UndefInitializer , dims:: NTuple{N,Int} ; assignment:: AssignmentType{N} = :arbitrary ) where {T,N} =
605- DArray {T,N} (undef, auto_blocks (dims), dims; assignment)
606- DArray {T} (:: UndefInitializer , dims:: Vararg{Int,N} ; assignment:: AssignmentType{N} = :arbitrary ) where {T,N} =
607- DArray {T,N} (undef, auto_blocks ((dims... ,)), (dims... ,); assignment)
593+ tasks = Array {DTask,N} (undef, size (subdomains)... )
594+ Dagger. spawn_datadeps () do
595+ for (i, x) in enumerate (subdomains)
596+ tasks[i] = Dagger. @spawn allocate_array_undef (T, size (x))
597+ end
598+ end
599+ return DArray (T, domain, subdomains, tasks, dist)
600+ end
601+ DArray {T,N} (:: UndefInitializer , dims:: Vararg{Int,N} ) where {T,N} =
602+ DArray {T,N} (undef, auto_blocks ((dims... ,)), (dims... ,))
603+ DArray {T,N} (:: UndefInitializer , dist:: Blocks{N} , dims:: Vararg{Int,N} ) where {T,N} =
604+ DArray {T,N} (undef, dist, (dims... ,))
608605
609606function Base.:(== )(x:: ArrayOp{T,N} , y:: AbstractArray{S,N} ) where {T,S,N}
610607 collect (x) == y
0 commit comments