JuliaSIMD / JuliaSIMD/LoopVectorization.jl

LoadError: BoundsError: attempt to access 2-element Vector{LoopVectorization.ArrayReferenceMeta} at index [0]

Aperta
#527 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
Julia
Stelle
789
Fork
73
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Hi,

I am working with Julia v1.6.2 with LoopVectorization v0.12.166. I am new to LoopVectorization, and I cannot figure out the problem after searching online for quite a while.

Here is a MWE of the error that I encounter.

using LoopVectorization
function test(a, b)
    @turbo for i in axes(a,1)
        a[i, 1] = 0.0
        for j in axes(a,2)
            a[i, 1] += b[i,j]
        end
    end
    return nothing
end

a = rand(256, 256)
b = rand(256, 256)
test(a, b)

will give me ($HOMEFOLDER is used below for privacy)
ERROR: LoadError: BoundsError: attempt to access 2-element Vector{LoopVectorization.ArrayReferenceMeta} at index [0]
Stacktrace:
[1] getindex
@ .\array.jl:801 [inlined]
[2] getindex
@ .\abstractarray.jl:1173 [inlined]
[3] mref_elbytes
@ $HOMEFOLDER.julia\packages\LoopVectorization\7gWfp\src\reconstruct_loopset.jl:675 [inlined]
[4] add_op!(ls::LoopVectorization.LoopSet, instr::LoopVectorization.Instruction, ops::Vector{LoopVectorization.OperationStruct}, nopsv::Vector{Int64}, expandedv::Vector{Bool}, i::Int64, mrefs::Vector{LoopVectorization.ArrayReferenceMeta}, opsymbol::Symbol, elementbytes::Vector{Int64})
@ LoopVectorization $HOMEFOLDER.julia\packages\LoopVectorization\7gWfp\src\reconstruct_loopset.jl:69

However, if I remove the line a[i, 1] = 0.0, it works well. The original also works if I don't use @turbo.

Could you help me understand this error message? And how should I implement such a task using @turbo? Thanks very much!

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Riprodurre il MWE con Julia v1.6.2 e LoopVectorization v0.12.166, confrontando la forma che fallisce con la versione senza a[i, 1] = 0.0. Iniziare in src/reconstruct_loopset.jl da mref_elbytes e add_op!; il lavoro è completato quando il ciclo @turbo mostrato non solleva più un BoundsError oppure esiste un'alternativa supportata documentata.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
julia
Ambito
performance
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.