oschulz / AutoDiffOperators.jl

Operators based on automatic differentiation in Julia
Other
4 stars 0 forks source link

DifferentiationInterface #17

Open gdalle opened 1 month ago

gdalle commented 1 month ago

Hi @oschulz! Now that DifferentiationInterface.jl is getting more and more mature, would you be interested in switching this package and its dependents to our autodiff framework? Happy to help you make the necessary changes if you deem it relevant

oschulz commented 1 month ago

Hi @gdalle - yes, that's definitely the plan, or at least to use DifferentiationInterface.jl as the default for all backends and then only specialize a few things if necessary. AutoDiffOperator will then mostly focus on the "multiplicative operator" aspect, and will (like now) mostly be limited to vector-like values (but offer some added type stability in some cases, like with Zygote, in exchange).

AbstractADType will likely also play a more central role then - when I started AutoDiffOperators, there was no central implementations for ADTypes yet, that's entirely different now, of course.

I had planned for to wait until the (probably not too distant) next Julia LTS release, I hadn't realised that DifferentiationInterface now supports Julia v1.6 - are there some strings attached to this?

gdalle commented 1 month ago

No strings attached, except that I was only able to test on 1.6 with a narrow subset of backends:

The others may work or may fail, but I can't make any promises

oschulz commented 1 month ago

The others may work or may fail, but I can't make any promises

No worries @gdalle , it's not like a have a large number of backends in AutoDiffOperators so far (and thanks to DifferentiationInterface I hopefully don't have to add more in the future, they'll just "be there"). :-)

I have some other urgent things pending at the moment, but I'll try to do this sometime soonish. I'll let you know if I need anything additional in DifferentiationInterface, though from what I've seen so far it's probably already fine.

Also, thank you for creating DifferentiationInterface, I think it fills a critical hole in the ecosystem!

As far as AutoDiffOperators is concerned, it's long-term role was intended to be the "operator" part, the backend implementations here were mostly a stopgap anyway.

gdalle commented 1 month ago

I'm glad we can be of use! Good luck with the refactor. I thought about adding lazy matrix stuff in DifferentiationInterface, but I don't think most people need it, so it's great if you take care of it as an additional layer

oschulz commented 1 month ago

lazy matrix stuff in DifferentiationInterface, but I don't think most people need it, so it's great if you take care of it as an additional layer

True, and also this way we can be a bit more opinionated about the details of that in AutoDiffOperators than would be appropriate in DifferentiationInterface (which I expect will very soon become a central package).

gdalle commented 1 month ago

which I expect will very soon become a central package

I certainly hope so. My arrogant take is that people don't yet realize the range of stuff it can do, and how efficient it is at doing them. But we have already convinced all of SciML, and hopefully more users are on the way.

oschulz commented 1 month ago

Yes, that fact that SciML has adopted it is a clear statement by itself. :-)