LinearSolve.jl: High-Performance Unified Interface for Linear Solvers in Julia. Easily switch between factorization and Krylov methods, add preconditioners, and all in one interface.
Right now in order to make the first pass of the Enzyme rule there's a lot of defensive copying. I think we can get away with less by putting a good rule over setproperty!(linsolve, ...), since if it knows just when to copy there, it can ensure that the linsolve in reverse is "fixed" as it goes backwards. That would mean that the other rules would not need to copy each time in case of a change, since we would instead be public API point where it can change.
Right now in order to make the first pass of the Enzyme rule there's a lot of defensive copying. I think we can get away with less by putting a good rule over
setproperty!(linsolve, ...)
, since if it knows just when to copy there, it can ensure that thelinsolve
in reverse is "fixed" as it goes backwards. That would mean that the other rules would not need to copy each time in case of a change, since we would instead be public API point where it can change.