JuliaSIMD / JuliaSIMD/LoopVectorization.jl
TypeError in typeassert in loop with view
- Vorherrschende Sprache
- Julia
- Sterne
- 789
- Forks
- 73
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
This MWE
```julia
using LoopVectorization
A = [iz*1e2 + iy*1e1 + ix for ix=1:7, iy=1:5, iz=1:6];
sendbuf = zeros(size(A,2), size(A,3));
ix, iy, iz = 2, 1:size(A,2), 1:size(A,3);
dst = view(sendbuf,:);
src = view(view(A,ix, :, :),:);
@tturbo for ix = 1:length(dst)
dst[ix] = src[ix]
end
```
produces the following error:
```julia
julia> using LoopVectorization
julia> A = [iz*1e2 + iy*1e1 + ix for ix=1:7, iy=1:5, iz=1:6];
julia> sendbuf = zeros(size(A,2), size(A,3));
julia> ix, iy, iz = 2, 1:size(A,2), 1:size(A,3);
julia> dst = view(sendbuf,:);
julia> src = view(view(A,ix, :, :),:);
julia> @tturbo for ix = 1:length(dst)
dst[ix] = src[ix]
end
ERROR: TypeError: in typeassert, expected Tuple{Int64}, got a value of type Nothing
Stacktrace:
[1] (ArrayInterface.StrideIndex{1, nothing, nothing, S, O} where {S, O})(s::Tuple{Static.StaticInt{1}}, o::Tuple{Static.StaticInt{1}})
@ ArrayInterface ~/.julia/packages/ArrayInterface/W1AVE/src/array_index.jl:197
[2] (ArrayInterface.StrideIndex{1, nothing, nothing, S, O} where {S, O})(a::SubArray{Float64, 1, Base.ReshapedArray{Float64, 1, SubArray{Float64, 2, Array{Float64, 3}, Tuple{Int64, Base.Slice{Base.OneTo{Int64}}, Base.Slice{Base.OneTo{Int64}}}, true}, Tuple{}}, Tuple{Base.Slice{Base.OneTo{Int64}}}, true})
@ ArrayInterface ~/.julia/packages/ArrayInterface/W1AVE/src/array_index.jl:200
[3] ArrayInterface.StrideIndex(a::SubArray{Float64, 1, Base.ReshapedArray{Float64, 1, SubArray{Float64, 2, Array{Float64, 3}, Tuple{Int64, Base.Slice{Base.OneTo{Int64}}, Base.Slice{Base.OneTo{Int64}}}, true}, Tuple{}}, Tuple{Base.Slice{Base.OneTo{Int64}}}, true})
@ ArrayInterface ~/.julia/packages/ArrayInterface/W1AVE/src/array_index.jl:203
[4] bytestrideindex
@ ~/.julia/packages/LayoutPointers/fHXhH/src/stridedpointers.jl:61 [inlined]
[5] stridedpointer_preserve(A::SubArray{Float64, 1, Base.ReshapedArray{Float64, 1, SubArray{Float64, 2, Array{Float64, 3}, Tuple{Int64, Base.Slice{Base.OneTo{Int64}}, Base.Slice{Base.OneTo{Int64}}}, true}, Tuple{}}, Tuple{Base.Slice{Base.OneTo{Int64}}}, true})
@ LayoutPointers ~/.julia/packages/LayoutPointers/fHXhH/src/stridedpointers.jl:73
[6] top-level scope
@ ./REPL[7]:1
```
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Führen Sie zunächst das bereitgestellte Julia-MWE mit der @tturbo-Schleife aus und untersuchen Sie den Stacktrace über ArrayInterface.StrideIndex und LayoutPointers.stridedpointer_preserve. Verfolgen Sie, wie die verschachtelten Views behandelt werden, und überprüfen Sie anschließend, dass das MWE ohne den gemeldeten TypeError abgeschlossen wird; fügen Sie eine Regressionstestabdeckung hinzu, falls die Tests des Repositorys einen geeigneten Ort dafür bieten.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- julia
- Bereich
- performance
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 35/100