DistributedArrays.jl icon indicating copy to clipboard operation
DistributedArrays.jl copied to clipboard

master_slave DArray copy

Open raminammour opened this issue 7 years ago • 1 comments

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!

raminammour avatar Apr 06 '17 15:04 raminammour

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.

amitmurthy avatar May 06 '17 15:05 amitmurthy