-
-
Notifications
You must be signed in to change notification settings - Fork 211
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
OrdinaryDiffEq v7 #2310
Comments
I would also like to see #1570 completed to the point that we can change defaults to nonlinearsolve, but we need to make sure that doesn't have a performance regression (needs some jac reuse work in that interface). I don't know if that will be done in time @termi-official @oscardssmith |
I don't think #1570 is required for v7. It's not a breaking change. |
As far as DifferentiationInterface is concerned, multi-argument support may not be available right away (JuliaDiff/DifferentiationInterface.jl#311). Is it necessary for OrdinaryDiffEq, or would single-argument functions suffice in most cases? |
Only single argument here. |
I mean this can just fall back to doing There are separate questions about an optimization-aware preallocation tools [since presently preallocationtools caches appear as existing allocations which could alias with all data] |
Apart from the discussion around constant functions in Enzyme, I would say single-argument DI is pretty much ready for ODE adoption. Either way, I can help review the DI insertion but I can't launch the PRs from scratch. I have never solved an ODE in Julia, let alone peeked at the code base, so I'll need someone else to give it a first shot before I can be useful. |
Is there some kind of overview of the distribution of individual ODE solvers to subpackages? |
Another aspect to consider might be the adaptivity/controller approach |
Same here with integrating Enzyme FWD mode. If you have any code which does this or issues, I can try to resolve and/or comment best usage practices |
How difficult would it be to enable the usage of arrays of CC @jlchan |
Since the split is "complete", you can look at the current We did get the load and deps pretty minimal: https://sciml.ai/news/2024/08/10/sciml_small_grants_successes/ which should help the HPC use cases, but there's still a few bits I'm going to be exploring in there like making SparseArrays always an extension down the stack. I'm hoping we can get Tsit5 first run to 0.2 seconds. |
Could you describe what you had in mind?
I'm still a bit weary of this because it's a breakage from the other interface-level tests https://docs.sciml.ai/SciMLBase/stable/interfaces/Array_and_Number/ that are starting to be imposed. I think it makes it quite difficult to enforce interfaces if we have a subset of algorithms that are allowing an interface break. I think the questions I have there are:
|
The discussion we had on Slack with Théo Duez |
@jlchan would be the best to tell more about this. Right now, we still limit DiffEqBase.jl in Trixi.jl because of this. Maybe it's better now since LoopVectorization.jl continues to work in Juli v1.11 - there were several issues at once @jlchan wanted to fix if I remember correctly |
I can't guarantee that it's 100% correct, but something along the following lines should be what we need from our site ((abstract) arrays of
From a mathematical point of view, we need the operations available in a normed vector space:
|
I found some methods that appear to be in the wrong sub-package: #2373 I don't have time for a PR right now but maybe later this week |
Other than that, it looks like a nice improvement in a first test 👍 I'm still wondering why some packages like |
I made a few PRs to RecursiveArrayTools.jl, but stopped at SciML/RecursiveArrayTools.jl#378 when things got busy. I also stopped because I wasn't sure how many |
See my #gripes in the Julia Slack on that. It'll probably take a bit of time to battle against all of those little dependencies, but that's the next phase of the war. |
OrdinaryDiffEq v7 is close. This means that all breaking changes need to make it in by this time. Here's the list right now:
autodiff
specification to using ADTypes. @gdalle and @avik-pal have already kind of been pushing things down this route. This will make changes to use Enzyme and DifferentiationInterface be non-breaking. Since this has been around for so long, we should have a 2 year deprecation period on the booleans though, but in the constructors we can just change the booleans to AutoForwardDiff and AutoFiniteDiff as a simple path. But with everything ADTypes the integration with NonlinearSolve is simpler as well.lazy
to a Val so we can removef
from non-lazy interpolations, making Leaner serialization for solution types SciMLBase.jl#629 simpler and more robust. I don't think this is necessary breaking?Any other major changes to consider @devmotion @YingboMa @ranocha @oscardssmith
For reference, the other big thing is SciMLOperators, but those changes are breaking there and non-breaking here.
Closes #1886
The text was updated successfully, but these errors were encountered: