JuliaParallel / JuliaParallel/DistributedArrays.jl

Issue with OffsetArrays

Abierto
#186 4 comentarios 0 reacciones 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

I was getting nervous about the communication costs of being imprecise with communications outside of the localpart of the array, so I figured I'd build a halo exchange system by combining OffsetArrays and DistributedArrays.

I intended for that to look like the following, where each array has a 4x4 block of purely local data and a surrounding 1-cell halo to cache remote data pulled using DistributedArrays.

```julia
@everywhere using DistributedArrays
@everywhere using OffsetArrays

r1 = @spawnat 2 OffsetArray(zeros(6,6), 0:5, 0:5)
r2 = @spawnat 3 OffsetArray(zeros(6,6), 0:5, 0:5)
r3 = @spawnat 4 OffsetArray(zeros(6,6), 0:5, 0:5)
r4 = @spawnat 5 OffsetArray(zeros(6,6), 0:5, 0:5)
ras = [r1 r2; r3 r4]
D = DArray(ras)
```

Unfortunately, when I try to run this, I get:

```
julia> D = DArray(ras)
ERROR: MethodError: no method matching OffsetArray{Float64,2,Array{Float64,2}}(::Array{Float64,2})
Closest candidates are:
OffsetArray{Float64,2,Array{Float64,2}}(::Any, ::Any) where {T, N, AA<:AbstractArray} at /home/rick/.julia/packages/OffsetArrays/ICRTb/src/OffsetArrays.jl:10
Stacktrace:
[1] empty_localpart(::Type, ::Int64, ::Type) at /home/rick/.julia/packages/DistributedArrays/XV7NS/src/darray.jl:66
[2] macro expansion at ./task.jl:264 [inlined]
[3] macro expansion at /home/rick/.julia/packages/DistributedArrays/XV7NS/src/darray.jl:84 [inlined]
[4] macro expansion at ./task.jl:244 [inlined]
[5] DArray(::Tuple{Int64,Int64}, ::Array{Future,2}, ::Tuple{Int64,Int64}, ::Array{Int64,2}, ::Array{Tuple{UnitRange{Int64},UnitRange{Int64}},2}, ::Array{Array{Int64,1},1}) at /home/rick/.julia/packages/DistributedArrays/XV7NS/src/darray.jl:82
[6] macro expansion at ./task.jl:266 [inlined]
[7] macro expansion at /home/rick/.julia/packages/DistributedArrays/XV7NS/src/darray.jl:194 [inlined]
[8] macro expansion at ./task.jl:244 [inlined]
[9] DArray(::Array{Future,2}) at /home/rick/.julia/packages/DistributedArrays/XV7NS/src/darray.jl:192
[10] top-level scope at none:0
```
which doesn't seem like an issue with OffsetArrays because using SparseArrays in an analogous way produces no problems:
```julia
@everywhere using DistributedArrays
@everywhere using SparseArrays

r1 = @spawnat 2 sparse(zeros(6,6))
r2 = @spawnat 3 sparse(zeros(6,6))
r3 = @spawnat 4 sparse(zeros(6,6))
r4 = @spawnat 5 sparse(zeros(6,6))
ras = [r1 r2; r3 r4]
D = DArray(ras)
```

Sadly, I'm not familiar enough with Julia to know why the interaction of OffsetArrays and DistributedArrays is problematic.

I've got:
```
[aaf54ef3] DistributedArrays v0.5.1
[6fe1bfb0] OffsetArrays v0.8.1
```

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.