Open jsbryaniv opened 2 years ago
I ran into an issue when running this block of code:
using Distributed if nprocs() == 1 addprocs() end @everywhere using DistributedArrays a = dfill([], 20) @sync @distributed for i in 1:20 b = (i, myid()) push!(localpart(a)[1], b) end a
I would expect a to be
a
[(1,2), (2,2), (3,2)] [] [] [(4, 3), (5, 3), (6, 3)] [] ⋮
because I am only pushing to the first local part of a. But what I get is this:
[(1, 2), (2, 2), (3, 2)] [(1, 2), (2, 2), (3, 2)] [(1, 2), (2, 2), (3, 2)] [(4, 3), (5, 3), (6, 3)] [(4, 3), (5, 3), (6, 3)] ⋮ [(17, 8), (18, 8)] [(17, 8), (18, 8)] [(19, 9), (20, 9)] [(19, 9), (20, 9)]
It seems that i am pushing to all local parts of a, not just the first one.
A simpler minimal working example is this:
using Distributed addprocs(4) @everywhere using DistributedArrays a = dfill([], 10) s = @spawnat 2 push!(localpart(a)[1], 999) a
I ran into an issue when running this block of code:
I would expect
a
to bebecause I am only pushing to the first local part of
a
. But what I get is this:It seems that i am pushing to all local parts of
a
, not just the first one.