@@ -29,42 +29,71 @@ function stage(ctx, a::AllocateArray)
2929 return DArray (a. eltype, a. domain, a. domainchunks, thunks, a. partitioning)
3030end
3131
32- function Base. rand (p:: Blocks , eltype:: Type , dims)
32+ const BlocksOrAuto = Union{Blocks{N} where N, AutoBlocks}
33+
34+ function Base. rand (p:: Blocks , eltype:: Type , dims:: Dims )
3335 d = ArrayDomain (map (x-> 1 : x, dims))
3436 a = AllocateArray (eltype, (_, x... ) -> rand (x... ), d, partition (p, d), p)
3537 return _to_darray (a)
3638end
39+ Base. rand (p:: BlocksOrAuto , T:: Type , dims:: Integer... ) = rand (p, T, dims)
40+ Base. rand (p:: BlocksOrAuto , T:: Type , dims:: Dims ) = rand (p, T, dims)
41+ Base. rand (p:: BlocksOrAuto , dims:: Integer... ) = rand (p, Float64, dims)
42+ Base. rand (p:: BlocksOrAuto , dims:: Dims ) = rand (p, Float64, dims)
43+ Base. rand (:: AutoBlocks , eltype:: Type , dims:: Dims ) =
44+ rand (auto_blocks (dims), eltype, dims)
3745
38- Base. rand (p:: Blocks , t:: Type , dims:: Integer... ) = rand (p, t, dims)
39- Base. rand (p:: Blocks , dims:: Integer... ) = rand (p, Float64, dims)
40- Base. rand (p:: Blocks , dims:: Tuple ) = rand (p, Float64, dims)
46+ function Base. randn (p:: Blocks , eltype:: Type , dims:: Dims )
47+ d = ArrayDomain (map (x-> 1 : x, dims))
48+ a = AllocateArray (eltype, (_, x... ) -> randn (x... ), d, partition (p, d), p)
49+ return _to_darray (a)
50+ end
51+ Base. randn (p:: BlocksOrAuto , T:: Type , dims:: Integer... ) = randn (p, T, dims)
52+ Base. randn (p:: BlocksOrAuto , T:: Type , dims:: Dims ) = randn (p, T, dims)
53+ Base. randn (p:: BlocksOrAuto , dims:: Integer... ) = randn (p, Float64, dims)
54+ Base. randn (p:: BlocksOrAuto , dims:: Dims ) = randn (p, Float64, dims)
55+ Base. randn (:: AutoBlocks , eltype:: Type , dims:: Dims ) =
56+ randn (auto_blocks (dims), eltype, dims)
4157
42- function Base . randn (p:: Blocks , eltype:: Type , dims)
58+ function sprand (p:: Blocks , eltype:: Type , dims:: Dims , sparsity :: AbstractFloat )
4359 d = ArrayDomain (map (x-> 1 : x, dims))
44- a = AllocateArray (Float64 , (_, x ... ) -> randn (x ... ), d, partition (p, d), p)
60+ a = AllocateArray (eltype , (_, T, _dims ) -> sprand (T, _dims ... , sparsity ), d, partition (p, d), p)
4561 return _to_darray (a)
4662end
47- Base. randn (p:: Blocks , t:: Type , dims:: Integer... ) = randn (p, t, dims)
48- Base. randn (p:: Blocks , dims:: Integer... ) = randn (p, dims)
49- Base. randn (p:: Blocks , dims:: Tuple ) = randn (p, Float64, dims)
63+ sprand (p:: BlocksOrAuto , T:: Type , dims_and_sparsity:: Real... ) =
64+ sprand (p, T, dims_and_sparsity[1 : end - 1 ], dims_and_sparsity[end ])
65+ sprand (p:: BlocksOrAuto , T:: Type , dims:: Dims , sparsity:: AbstractFloat ) =
66+ sprand (p, T, dims, sparsity)
67+ sprand (p:: BlocksOrAuto , dims_and_sparsity:: Real... ) =
68+ sprand (p, Float64, dims_and_sparsity[1 : end - 1 ], dims_and_sparsity[end ])
69+ sprand (p:: BlocksOrAuto , dims:: Dims , sparsity:: AbstractFloat ) =
70+ sprand (p, Float64, dims, sparsity)
71+ sprand (:: AutoBlocks , eltype:: Type , dims:: Dims , sparsity:: AbstractFloat ) =
72+ sprand (auto_blocks (dims), eltype, dims, sparsity)
5073
51- function Base. ones (p:: Blocks , eltype:: Type , dims)
74+ function Base. ones (p:: Blocks , eltype:: Type , dims:: Dims )
5275 d = ArrayDomain (map (x-> 1 : x, dims))
5376 a = AllocateArray (eltype, (_, x... ) -> ones (x... ), d, partition (p, d), p)
5477 return _to_darray (a)
5578end
56- Base. ones (p:: Blocks , t:: Type , dims:: Integer... ) = ones (p, t, dims)
57- Base. ones (p:: Blocks , dims:: Integer... ) = ones (p, Float64, dims)
58- Base. ones (p:: Blocks , dims:: Tuple ) = ones (p, Float64, dims)
79+ Base. ones (p:: BlocksOrAuto , T:: Type , dims:: Integer... ) = ones (p, T, dims)
80+ Base. ones (p:: BlocksOrAuto , T:: Type , dims:: Dims ) = ones (p, T, dims)
81+ Base. ones (p:: BlocksOrAuto , dims:: Integer... ) = ones (p, Float64, dims)
82+ Base. ones (p:: BlocksOrAuto , dims:: Dims ) = ones (p, Float64, dims)
83+ Base. ones (:: AutoBlocks , eltype:: Type , dims:: Dims ) =
84+ ones (auto_blocks (dims), eltype, dims)
5985
60- function Base. zeros (p:: Blocks , eltype:: Type , dims)
86+ function Base. zeros (p:: Blocks , eltype:: Type , dims:: Dims )
6187 d = ArrayDomain (map (x-> 1 : x, dims))
6288 a = AllocateArray (eltype, (_, x... ) -> zeros (x... ), d, partition (p, d), p)
6389 return _to_darray (a)
6490end
65- Base. zeros (p:: Blocks , t:: Type , dims:: Integer... ) = zeros (p, t, dims)
66- Base. zeros (p:: Blocks , dims:: Integer... ) = zeros (p, Float64, dims)
67- Base. zeros (p:: Blocks , dims:: Tuple ) = zeros (p, Float64, dims)
91+ Base. zeros (p:: BlocksOrAuto , T:: Type , dims:: Integer... ) = zeros (p, T, dims)
92+ Base. zeros (p:: BlocksOrAuto , T:: Type , dims:: Dims ) = zeros (p, T, dims)
93+ Base. zeros (p:: BlocksOrAuto , dims:: Integer... ) = zeros (p, Float64, dims)
94+ Base. zeros (p:: BlocksOrAuto , dims:: Dims ) = zeros (p, Float64, dims)
95+ Base. zeros (:: AutoBlocks , eltype:: Type , dims:: Dims ) =
96+ zeros (auto_blocks (dims), eltype, dims)
6897
6998function Base. zero (x:: DArray{T,N} ) where {T,N}
7099 dims = ntuple (i-> x. domain. indexes[i]. stop, N)
@@ -82,22 +111,3 @@ function Base.view(A::AbstractArray{T,N}, p::Blocks{N}) where {T,N}
82111 chunks = [tochunk (view (A, x. indexes... )) for x in dc]
83112 return DArray (T, d, dc, chunks, p)
84113end
85-
86- function sprand (p:: Blocks , m:: Integer , n:: Integer , sparsity:: Real )
87- s = rand (UInt)
88- f = function (idx, t,sz)
89- sprand (MersenneTwister (s+ idx), sz... ,sparsity)
90- end
91- d = ArrayDomain ((1 : m, 1 : n))
92- a = AllocateArray (Float64, f, d, partition (p, d), p)
93- return _to_darray (a)
94- end
95-
96- function sprand (p:: Blocks , n:: Integer , sparsity:: Real )
97- s = rand (UInt)
98- f = function (idx,t,sz)
99- sprand (MersenneTwister (s+ idx), sz... ,sparsity)
100- end
101- a = AllocateArray (Float64, f, d, partition (p, ArrayDomain ((1 : n,))), p)
102- return _to_darray (a)
103- end
0 commit comments