Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Division by Inf is sometimes producing NaN's #539

Open
ajshephard opened this issue Dec 9, 2024 · 1 comment
Open

Division by Inf is sometimes producing NaN's #539

ajshephard opened this issue Dec 9, 2024 · 1 comment

Comments

@ajshephard
Copy link

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.

@chriselrod
Copy link
Member

That's it's pipelined division method that mixes divisions with fast-inversions, multiplies, and Newton Raphson.
It's the latter that produces NaN.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants