DistributedArrays.jl
DistributedArrays.jl copied to clipboard
master_slave DArray copy
Hello,
First, thank you for a great package!
I have had an issue with copy
of DArray
when connected in master_slave
topology.
julia> addprocs(2,topology=:master_slave)
2-element Array{Int64,1}:
2
3
julia> nprocs()
3
julia> using DistributedArrays
julia> dd=drand((11,21,2,13),workers(),[1,1,1,2]);
julia> @eval @everywhere println(localindexes($dd))
(1:0,1:0,1:0,1:0)
From worker 2: (1:11,1:21,1:2,1:7)
From worker 3: (1:11,1:21,1:2,8:13)
julia> ddc=copy(dd);
ERROR: On worker 2:
peer 3 is not connected to 2. Topology : master_slave
...
I have shortened the error output, surely you can reproduce it.
Is there a reason why this is an error?
Especially that this works...
julia> dd=drand((11,21,2,13),workers(),[1,1,1,2]);
julia> @everywhere using DistributedArrays
julia> @eval ddc2=DArray(I->copy(localpart($dd)),$dd);
julia> sumabs2(ddc2-dd)
0.0
julia> @eval @everywhere println(localindexes($ddc2))
(1:0,1:0,1:0,1:0)
From worker 2: (1:11,1:21,1:2,1:7)
From worker 3: (1:11,1:21,1:2,8:13)
julia> @eval @everywhere println(localindexes($dd))
(1:0,1:0,1:0,1:0)
From worker 3: (1:11,1:21,1:2,8:13)
From worker 2: (1:11,1:21,1:2,1:7)
Finally, is there a reason why similar
does not yield a DArray
with the same distribution?
julia> dd=drand((11,21,2,13),workers(),[1,1,1,2]);
julia> @eval @everywhere println(localindexes($dd))
(1:0,1:0,1:0,1:0)
From worker 2: (1:11,1:21,1:2,1:7)
From worker 3: (1:11,1:21,1:2,8:13)
julia> ddc=similar(dd);
julia> @eval @everywhere println(localindexes($ddc))
(1:0,1:0,1:0,1:0)
From worker 2: (1:11,1:11,1:2,1:13)
From worker 3: (1:11,12:21,1:2,1:13)
I appreciate any help on this, and again thanks for the effort with this package!
Yes the bug is that similar
is not having the same distribution. A workaround is to use the default distribution or explicitly create the second darray and copy!
into it.