-
Notifications
You must be signed in to change notification settings - Fork 256
Update CI to Julia version to 1.12.0 #4836
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
Conversation
|
I am very interested in this. Let's hope it works and we can move on from julia 1.10 |
|
I am disabling the reactant tests for the moment to check if the rest works. |
|
If docs still break on the |
|
Seems that we are hitting the same NaN issue on the internal tide example |
the ghosts of the past still haunt us.... |
|
Apparently also |
|
If I run the example locally, it works. Why would it error on CI? Do we have a way to reproduce this error locally? |
One thing to try might be to run the example locally and on CI using the exact same Manifest.toml if possible. We can commit a Manifest.toml to this branch for debugging. I can't think of which dependency would lead to such a big difference but it's one thing we can control for. |
|
From the Julia v1.11 chat I recall that the error was showing up only for unix, not for mac? |
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
|
The plot thickens: it works correctly in Julia v1.12 on Ampere eMAG (aarch64) with AlmaLinux 8.10 as operating system, which rules out an operating system difference. aarch64 is also the architecture on macOS, so I'm starting to suspect there's an architecture dependence. Can someone point me to the operation performed on the |
Nice work so far though!! The entire time-step is a complex chain of operations. I do think it is a good start to save down all fields every time-step. We may find that differences arise in one field versus another. Note that the NaNChecker checks |
|
To save every iteration chnage this line Oceananigans.jl/examples/internal_tide.jl Line 170 in ea25179
to The difference should arise in the very first time-step? We could compare those. It seems annoying laborious to do this across architectures, but maybe @giordano you have good ideas how to do this efficiently |
|
I think I might have found the reason for the abstract operation test breaking. Apparently, the GPU compiler (and the CPU as well) do not really like this method which leads to dynamic evaluation Oceananigans.jl/src/AbstractOperations/multiary_operations.jl Lines 16 to 17 in 465335b
I have added a workaround that works for multiary operations with up to 6 operands; however, there might be a better (more general) solution? |
|
Anyway, if we agree with this workaround, I am eager to merge this PR and finally Oceananigans can be officially used with julia 1.12! |
|
ntuple + splatting are probably hard to reason about, although N is a static parameter 🤔 |
giordano
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🚀
| Π.op(ntuple(γ -> Π.▶[γ](i, j, k, Π.grid, Π.args[γ]), Val(N))...) | ||
|
|
||
| # Try to improve inferrability by hardcoding methods for small N | ||
| @inline Base.getindex(Π::MultiaryOperation{LX, LY, LZ, 1}, i, j, k) where {LX, LY, LZ} = |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think this is bad, ntuple is implemented with similar manual splitting. This might cause longer compilation latency, but so does Val.
|
There seems to be one last issue connected to the docs deployment. |
Is that a race condition during a push? Can you restart that job? (I can't myself). Side note, in |
|
Ok, let's merge away. |
|
O.M.G.! |
|
I'm changing my |
No description provided.