JuliaParallel / JuliaParallel/DistributedArrays.jl

Issue with OffsetArrays

Đang mở
#186 4 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Julia
Star
205
Fork
34
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

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
```

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

Start with the failing OffsetArray and SparseArrays reproductions, then read DistributedArrays/src/darray.jl around empty_localpart and the DArray constructor shown in the stack trace. Determine whether the interaction should be supported or documented as incompatible, and add a regression test or documentation that captures the expected behavior.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
julia
Lĩnh vực
distributed-systems
Loại issue
Lỗi
Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.