LoopVectorization.jl
LoopVectorization.jl copied to clipboard
Division by Inf is sometimes producing NaN's
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.
That's it's pipelined division method that mixes divisions with fast-inversions, multiplies, and Newton Raphson. It's the latter that produces NaN.