JuliaParallel / JuliaParallel/DistributedArrays.jl

Transfer of distributed structs when members are accessed

Abierto
#203 1 comentario 1 reacción 0 asignados Ver en GitHub
Lenguaje dominante
Julia
Estrellas
205
Forks
34
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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!

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.