-
-
Notifications
You must be signed in to change notification settings - Fork 10
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
Integrate SciMLOperators with rest of the ecosystem #142
Comments
CC: @ChrisRackauckas, @xtalax |
Ready to help, but not sure how helpful I can be towards operator translation as I don't fully understand their requirements |
@ChrisRackauckas LMK when you register sparsedifftools v2.0, and I'll start with SciMLSensitivity, OrdinaryDiffEq |
It should be hopefully alter this week. It needs JuliaDiff/SparseDiffTools.jl#215 to be completed first, but I can help with the bits there. Note that the ArrayInterface overhaul "comes first" and may clog up the pipeline this week, hopefully that moves fast. |
@gaurav-arya do you wanna take a stab at OrdinaryDiffeq |
yes, happy to since I've already looked at a lot of the operator code there. Would need a merge of #143 though |
there are many things to do in OrdinaryDiffEq. while the kwargs PR is in review can you do a small PR in OrdinaryDiffEq to support Sparsedifftools v2? that's blocking the scimlsensitivity pr. |
Sounds good, I'll get to it Friday/Saturday |
I had to pull back on OrdinaryDiffEq.jl for now because it needs to update |
No it's a different one, the one associated with the SparseDiffTools v2 update. |
@ChrisRackauckas , is there an issue/PR for that? |
There is not, I just noticed it this morning. https://github.com/SciML/SciMLBase.jl/actions/runs/4492177118/jobs/7901701557?pr=422#step:6:667 https://github.com/SciML/OrdinaryDiffEq.jl/actions/runs/4500174230/jobs/7918956800#step:5:8 |
Thanks for sharing. I see that both are using SparseDiffTools v2. A quick fix would be to restrict compatibility to 1.x. We can then have PRs to update to v2. |
Yup so I rolled it back this morning and it'll need some real updates for compatability. |
Thanks. So @gaurav-arya, if you have time this weekend, can you update OrdinaryDiffEq to work with sparsedifftools v2? |
Man that checklist is looking like it's got momentum, good work so far. |
Tracking DEO in the docs: SciML/DiffEqDocs.jl#678 |
Previous attempts to integrate
SciMLOperators
into the ecosystem broke everything. This was because we coupled together two separate tasks:SciMLOperators
AbstractDiffEqOperator, DiffEqLinearOperator, AbstractDiffEqCompositeOperator
, and the concrete types.So we were never able to get anywhere because errors (in downstream packages) from the deprecations in step 2 were too many to handle. This time we shall do the integration step-by-step.
SciMLOperators
SciMLBase
reexportSciMLOperators
. Do NOT deprecate diffeqoperator familyDiffEqBase.jl
*DiffEqOperators
toAbstractSciMLOperators
. Do NOT remove support forDiffEqOperators
. Order below:LinearSolve.jl
- make preconditionersAbstractSciMLOperators
Sundials.jl
DiffEqOperators.jl
SparseDiffTools.jl
- make AD operatorsAbstractSciMLOperators
DiffEqSensitivity.jl
- use SparseDiffTools AD operators in SteadyStateAdjoint. Useadjoint(A)
ifislinear(A) = true, has_adjoint(A) = true
.OrdinaryDiffEq.jl
- formWOperator
just by composingAbstractSciMLOperator
:W = 1/gamma * M - J
or the oppStochasticDiffEq.jl
DiffEqOperators
starting from downstream packages to upstream packages.AbstractDiffEqOperator
family inSciMLBase.jl
EDITS -
TODOs
SciMLBase.jl
deprecate all diffeqoperator subtypes
LinearSolve.jl
nothing
.src/common.jl
,set_A
also modifycache.OperatorAssumptions
.src/default.jl
, remove methoddefaultalg(A::Diagonal, b, ::OperatorAssumptions{false})
because diagonal matrices are always squaresrc/factorization.jl
,DiagonalFactorization
should ideally preinvert theD.diag
ininit_cacheval
, and thenmul!
inSciMLBase.solve
. Create a separate PRIterativeSolvers: Identity
inOrdinaryDiffEq
with IdentityOperator.DiffEqBase.jl
In
test/basic_operator_tests.jl, test/affine_operator_tests.jl
, there are tests for DiffEqOperators. Let's leave that as it is till DiffEqOps are remove from downstream packages.SparseDiffTools.jl
OrdinaryDiffEq.jl - InterfaceII
to downstream tests. Same forSciMLSensitivity.jl
when we get done with that.JacVec ODE tests
The text was updated successfully, but these errors were encountered: