JuliaSIMD / JuliaSIMD/LoopVectorization.jl
Division by Inf is sometimes producing NaN's
- Vorherrschende Sprache
- Julia
- Sterne
- 789
- Forks
- 73
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
This problem does not occur on my laptop, just a cluster I am using. On the cluster
```
julia> versioninfo()
Julia Version 1.11.1
Commit 8f5b7ca12ad (2024-10-16 10:53 UTC)
Build Info:
Official https://julialang.org/ release
Platform Info:
OS: Linux (x86_64-linux-gnu)
CPU: 36 × Intel(R) Xeon(R) Gold 6140 CPU @ 2.30GHz
WORD_SIZE: 64
LLVM: libLLVM-16.0.6 (ORCJIT, skylake-avx512)
Threads: 1 default, 0 interactive, 1 GC (on 36 virtual cores)
```
If I do the following
```
using LoopVectorization
x = ones(32) * Inf
y = similar(x)
@turbo for ix in eachindex(x)
y[ix] = 1 / x[ix]
end
```
Then the `y` vector is
```
julia> y
32-element Vector{Float64}:
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
```
I was expecting that all the elements of `y` would be zero.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Beginnen Sie damit, den gemeldeten LoopVectorization-Reproducer mit Julia 1.11.1 unter Linux x86_64 und der aufgeführten Skylake-AVX512-CPU auszuführen. Vergleichen Sie die skalare Division mit der @turbo-Schleife und untersuchen Sie, warum nur einige Vektor-Lanes für 1 / Inf NaN erzeugen. Als erledigt gilt die Aufgabe, wenn der Reproducer für jedes Element von y den Wert null erzeugt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- julia
- Bereich
- compilers, performance
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 42/100