JuliaParallel / JuliaParallel/DistributedArrays.jl
Issue with OffsetArrays
- 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