@@ -29,42 +29,71 @@ function stage(ctx, a::AllocateArray)
29
29
return DArray (a. eltype, a. domain, a. domainchunks, thunks, a. partitioning)
30
30
end
31
31
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 )
33
35
d = ArrayDomain (map (x-> 1 : x, dims))
34
36
a = AllocateArray (eltype, (_, x... ) -> rand (x... ), d, partition (p, d), p)
35
37
return _to_darray (a)
36
38
end
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)
37
45
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)
41
57
42
- function Base . randn (p:: Blocks , eltype:: Type , dims)
58
+ function sprand (p:: Blocks , eltype:: Type , dims:: Dims , sparsity :: AbstractFloat )
43
59
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)
45
61
return _to_darray (a)
46
62
end
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)
50
73
51
- function Base. ones (p:: Blocks , eltype:: Type , dims)
74
+ function Base. ones (p:: Blocks , eltype:: Type , dims:: Dims )
52
75
d = ArrayDomain (map (x-> 1 : x, dims))
53
76
a = AllocateArray (eltype, (_, x... ) -> ones (x... ), d, partition (p, d), p)
54
77
return _to_darray (a)
55
78
end
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)
59
85
60
- function Base. zeros (p:: Blocks , eltype:: Type , dims)
86
+ function Base. zeros (p:: Blocks , eltype:: Type , dims:: Dims )
61
87
d = ArrayDomain (map (x-> 1 : x, dims))
62
88
a = AllocateArray (eltype, (_, x... ) -> zeros (x... ), d, partition (p, d), p)
63
89
return _to_darray (a)
64
90
end
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)
68
97
69
98
function Base. zero (x:: DArray{T,N} ) where {T,N}
70
99
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}
82
111
chunks = [tochunk (view (A, x. indexes... )) for x in dc]
83
112
return DArray (T, d, dc, chunks, p)
84
113
end
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