Open
Description
Hello,
Consider the following example:
@everywhere struct SS1
v::Vector{Float64}
m::Vector{Float64}
end
dSS=@DArray [SS1(rand(10),i*ones(10)) for i in 1:10]
dSS2=@DArray [SS1(rand(10^6),i*ones(10)) for i in 1:10];
@time dSS[2].m
@time dSS2[2].m;
0.004819 seconds (81 allocations: 4.094 KiB)
0.005085 seconds (210 allocations: 7.634 MiB)
As you see, the whole struct gets serialized (7 mb) and then v
(small vector) can be accessed. Is there a way to implement this so that dS[2].v
is sent without the whole struct
.
Put in another way, is there a generic way to have dS[i].m
mean something like getm(dS,i)
where:
@everywhere function getm(dS,i)
indi=DistributedArrays.locate(dS,i)
pidi=procs(dS)[indi...]
lindi=i-dS.cuts[1][indi...]+1
@fetchfrom pidi dS[:L][lindi].m
end
Is this possible? Is it a reasonable feature to ask for :)?
Thanks!
Metadata
Metadata
Assignees
Labels
No labels