JuliaSIMD / JuliaSIMD/LoopVectorization.jl

Reduction not found

Ouverte
#528 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Julia
Étoiles
789
Forks
73
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

Hi, here is a MWE of an unexpected error:

```
using LoopVectorization

function test(a, b)
#s = 0.0
@turbo for i in axes(a,1)
ai = 0.0
for j in axes(b,2)
bij = b[i, j]
ai += bij^2
end
ai = exp(ai)
a[i] = ai
end
return nothing
end

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

LoadError: LoadError: "Reduction not found."
Stacktrace:
[1] reduction_zero
@ $HOME\.julia\packages\LoopVectorization\7gWfp\src\modeling\costs.jl:649 [inlined]
[2] add_reduction_update_parent!(vparents::Vector{LoopVectorization.Operation}, deps::Vector{Symbol}, reduceddeps::Vector{Symbol}, ls::LoopVectorization.LoopSet, parent::LoopVectorization.Operation, instr::LoopVectorization.Instruction, reduction_ind::Int64, elementbytes::Int64)
@ LoopVectorization $HOME\.julia\packages\LoopVectorization\7gWfp\src\parse\add_compute.jl:255



If I use `a[i] = exp(ai)` instead of the last two lines, it works. It also works if the last two lines are `ai = exp(ai/2); a[i] = ai`. I feel the issue is related to your explanation in #498, but honestly I don't fully understand that. My general feeling there is that the error it gives is unnecessary and can be ignored if it can run... Is that correct?

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Run the supplied Julia MWE with LoopVectorization and start by reading reduction_zero in src/modeling/costs.jl around line 649, then add_reduction_update_parent! in src/parse/add_compute.jl around line 255. Compare the failing assignment with the working variants and determine whether the reduction error is expected; done means the behavior is explained and the MWE no longer produces an unjustified error.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
julia
Domaine
performance
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
30/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.