Skip to content

All localparts of DArray are updated when only one is specified #238

@jsbryaniv

Description

@jsbryaniv

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

[(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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions