Many thanks, Kevin! Sorry if this question's come up before. I read through
the distributed array section, but didn't know where else to look. Perhaps
an example there would help.
Cheers!
On Saturday, March 7, 2015 at 10:03:00 AM UTC-5, Kevin Squire wrote:
>
> Hi Dominique,
>
> You could do this:
>
> julia> d = dones(10)
> 10-element DistributedArrays.DArray{Float64,1,Array{Float64,1}}:
> 1.0
> 1.0
> 1.0
> 1.0
> 1.0
> 1.0
> 1.0
> 1.0
> 1.0
> 1.0
>
> julia> @spawnat 2 begin
> d_loc = localpart(d)
> d_loc[:] += 2
> end
> RemoteRef(2,1,52)
>
> julia> d
> 10-element DistributedArrays.DArray{Float64,1,Array{Float64,1}}:
> 3.0
> 3.0
> 3.0
> 3.0
> 3.0
> 1.0
> 1.0
> 1.0
> 1.0
> 1.0
>
> This type of question has come up often enough that it should probably be
> an FAQ (and the documentation of [:] and += expanded).
>
> Cheers!
> Kevin
>
> On Sat, Mar 7, 2015 at 12:47 AM, Dominique Orban <[email protected]
> <javascript:>> wrote:
>
>> I'd like to modify the chunks of a distributed array in parallel. The
>> following bit of code does not modify the distributed array d:
>>
>> julia> d = dones(10);
>> julia>@spawnat 2 begin
>> d_loc = localpart(d);
>> d_loc = d_loc + 2;
>> end
>>
>> This one does:
>>
>> julia> @spawnat 2 begin
>> d_loc = localpart(d);
>> for i = 1 : size(d_loc, 1)
>> d_loc[i] = d_loc[i] + 2;
>> end
>> end
>>
>> Is there a more convenient syntax that I missed?
>>
>> Thanks.
>>
>
>