JuliaSIMD / JuliaSIMD/LoopVectorization.jl

Division by Inf is sometimes producing NaN's

Offen
#539 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.