@@ -30,42 +30,71 @@ function stage(ctx, a::AllocateArray)
30
30
return DArray (a. eltype, a. domain, a. domainchunks, thunks, a. partitioning)
31
31
end
32
32
33
- function Base. rand (p:: Blocks , eltype:: Type , dims)
33
+ const BlocksOrAuto = Union{Blocks{N} where N, AutoBlocks}
34
+
35
+ function Base. rand (p:: Blocks , eltype:: Type , dims:: Dims )
34
36
d = ArrayDomain (map (x-> 1 : x, dims))
35
37
a = AllocateArray (eltype, (_, x... ) -> rand (x... ), d, partition (p, d), p)
36
38
return _to_darray (a)
37
39
end
40
+ Base. rand (p:: BlocksOrAuto , T:: Type , dims:: Integer... ) = rand (p, T, dims)
41
+ Base. rand (p:: BlocksOrAuto , T:: Type , dims:: Dims ) = rand (p, T, dims)
42
+ Base. rand (p:: BlocksOrAuto , dims:: Integer... ) = rand (p, Float64, dims)
43
+ Base. rand (p:: BlocksOrAuto , dims:: Dims ) = rand (p, Float64, dims)
44
+ Base. rand (:: AutoBlocks , eltype:: Type , dims:: Dims ) =
45
+ rand (auto_blocks (dims), eltype, dims)
38
46
39
- Base. rand (p:: Blocks , t:: Type , dims:: Integer... ) = rand (p, t, dims)
40
- Base. rand (p:: Blocks , dims:: Integer... ) = rand (p, Float64, dims)
41
- Base. rand (p:: Blocks , dims:: Tuple ) = rand (p, Float64, dims)
47
+ function Base. randn (p:: Blocks , eltype:: Type , dims:: Dims )
48
+ d = ArrayDomain (map (x-> 1 : x, dims))
49
+ a = AllocateArray (eltype, (_, x... ) -> randn (x... ), d, partition (p, d), p)
50
+ return _to_darray (a)
51
+ end
52
+ Base. randn (p:: BlocksOrAuto , T:: Type , dims:: Integer... ) = randn (p, T, dims)
53
+ Base. randn (p:: BlocksOrAuto , T:: Type , dims:: Dims ) = randn (p, T, dims)
54
+ Base. randn (p:: BlocksOrAuto , dims:: Integer... ) = randn (p, Float64, dims)
55
+ Base. randn (p:: BlocksOrAuto , dims:: Dims ) = randn (p, Float64, dims)
56
+ Base. randn (:: AutoBlocks , eltype:: Type , dims:: Dims ) =
57
+ randn (auto_blocks (dims), eltype, dims)
42
58
43
- function Base . randn (p:: Blocks , eltype:: Type , dims)
59
+ function sprand (p:: Blocks , eltype:: Type , dims:: Dims , sparsity :: AbstractFloat )
44
60
d = ArrayDomain (map (x-> 1 : x, dims))
45
- a = AllocateArray (Float64 , (_, x ... ) -> randn (x ... ), d, partition (p, d), p)
61
+ a = AllocateArray (eltype , (_, T, _dims ) -> sprand (T, _dims ... , sparsity ), d, partition (p, d), p)
46
62
return _to_darray (a)
47
63
end
48
- Base. randn (p:: Blocks , t:: Type , dims:: Integer... ) = randn (p, t, dims)
49
- Base. randn (p:: Blocks , dims:: Integer... ) = randn (p, dims)
50
- Base. randn (p:: Blocks , dims:: Tuple ) = randn (p, Float64, dims)
64
+ sprand (p:: BlocksOrAuto , T:: Type , dims_and_sparsity:: Real... ) =
65
+ sprand (p, T, dims_and_sparsity[1 : end - 1 ], dims_and_sparsity[end ])
66
+ sprand (p:: BlocksOrAuto , T:: Type , dims:: Dims , sparsity:: AbstractFloat ) =
67
+ sprand (p, T, dims, sparsity)
68
+ sprand (p:: BlocksOrAuto , dims_and_sparsity:: Real... ) =
69
+ sprand (p, Float64, dims_and_sparsity[1 : end - 1 ], dims_and_sparsity[end ])
70
+ sprand (p:: BlocksOrAuto , dims:: Dims , sparsity:: AbstractFloat ) =
71
+ sprand (p, Float64, dims, sparsity)
72
+ sprand (:: AutoBlocks , eltype:: Type , dims:: Dims , sparsity:: AbstractFloat ) =
73
+ sprand (auto_blocks (dims), eltype, dims, sparsity)
51
74
52
- function Base. ones (p:: Blocks , eltype:: Type , dims)
75
+ function Base. ones (p:: Blocks , eltype:: Type , dims:: Dims )
53
76
d = ArrayDomain (map (x-> 1 : x, dims))
54
77
a = AllocateArray (eltype, (_, x... ) -> ones (x... ), d, partition (p, d), p)
55
78
return _to_darray (a)
56
79
end
57
- Base. ones (p:: Blocks , t:: Type , dims:: Integer... ) = ones (p, t, dims)
58
- Base. ones (p:: Blocks , dims:: Integer... ) = ones (p, Float64, dims)
59
- Base. ones (p:: Blocks , dims:: Tuple ) = ones (p, Float64, dims)
80
+ Base. ones (p:: BlocksOrAuto , T:: Type , dims:: Integer... ) = ones (p, T, dims)
81
+ Base. ones (p:: BlocksOrAuto , T:: Type , dims:: Dims ) = ones (p, T, dims)
82
+ Base. ones (p:: BlocksOrAuto , dims:: Integer... ) = ones (p, Float64, dims)
83
+ Base. ones (p:: BlocksOrAuto , dims:: Dims ) = ones (p, Float64, dims)
84
+ Base. ones (:: AutoBlocks , eltype:: Type , dims:: Dims ) =
85
+ ones (auto_blocks (dims), eltype, dims)
60
86
61
- function Base. zeros (p:: Blocks , eltype:: Type , dims)
87
+ function Base. zeros (p:: Blocks , eltype:: Type , dims:: Dims )
62
88
d = ArrayDomain (map (x-> 1 : x, dims))
63
89
a = AllocateArray (eltype, (_, x... ) -> zeros (x... ), d, partition (p, d), p)
64
90
return _to_darray (a)
65
91
end
66
- Base. zeros (p:: Blocks , t:: Type , dims:: Integer... ) = zeros (p, t, dims)
67
- Base. zeros (p:: Blocks , dims:: Integer... ) = zeros (p, Float64, dims)
68
- Base. zeros (p:: Blocks , dims:: Tuple ) = zeros (p, Float64, dims)
92
+ Base. zeros (p:: BlocksOrAuto , T:: Type , dims:: Integer... ) = zeros (p, T, dims)
93
+ Base. zeros (p:: BlocksOrAuto , T:: Type , dims:: Dims ) = zeros (p, T, dims)
94
+ Base. zeros (p:: BlocksOrAuto , dims:: Integer... ) = zeros (p, Float64, dims)
95
+ Base. zeros (p:: BlocksOrAuto , dims:: Dims ) = zeros (p, Float64, dims)
96
+ Base. zeros (:: AutoBlocks , eltype:: Type , dims:: Dims ) =
97
+ zeros (auto_blocks (dims), eltype, dims)
69
98
70
99
function Base. zero (x:: DArray{T,N} ) where {T,N}
71
100
dims = ntuple (i-> x. domain. indexes[i]. stop, N)
@@ -83,22 +112,3 @@ function Base.view(A::AbstractArray{T,N}, p::Blocks{N}) where {T,N}
83
112
chunks = [tochunk (view (A, x. indexes... )) for x in dc]
84
113
return DArray (T, d, dc, chunks, p)
85
114
end
86
-
87
- function sprand (p:: Blocks , m:: Integer , n:: Integer , sparsity:: Real )
88
- s = rand (UInt)
89
- f = function (idx, t,sz)
90
- sprand (MersenneTwister (s+ idx), sz... ,sparsity)
91
- end
92
- d = ArrayDomain ((1 : m, 1 : n))
93
- a = AllocateArray (Float64, f, d, partition (p, d), p)
94
- return _to_darray (a)
95
- end
96
-
97
- function sprand (p:: Blocks , n:: Integer , sparsity:: Real )
98
- s = rand (UInt)
99
- f = function (idx,t,sz)
100
- sprand (MersenneTwister (s+ idx), sz... ,sparsity)
101
- end
102
- a = AllocateArray (Float64, f, d, partition (p, ArrayDomain ((1 : n,))), p)
103
- return _to_darray (a)
104
- end
0 commit comments