Open gdalle opened 6 months ago
Thanks for the summary. I will respond to each point below.
ADTypes.jl
, AbstractDifferentiation.jl
predates that package. But we can of course support their AD types with an extension if needed or vice versa.@primitive
macro is a feature but it is not essential to use. You can use method implementation to define the behaviour for a new AD backend.I just updated the comparison to include the new features we added these past few weeks (mutating functions, second order, testing and benchmarking utilities)
Hi there,
Adrian Hill (@adrhill) and I recently started a new unified differentiation package called DifferentiationInterface.jl:
I'm gonna try to show why we did that, how we proceeded, and what we expect to gain from it. The discussion had started in #129 but did not go very far.
The main idea was to be less generic than AbstractDifferentiation from the start, in order to reduce the surface of error and focus on testing + performance. This led to severe feature regressions and a complete rewrite, which is why I felt it was best to start a new project.
Whenever I say below that something is not implemented in AbstractDifferentiation, I don't mean it can never be. I just mean it might require significant changes, not unlike the ones Adrian and I proposed.
Design principles
@primitive
macrojacobian
pushforward
/pullback
AbstractArray
orNumber
Features
Performance comparison
I'm gonna add AbstractDifferentiation as an extension to DifferentiationInterface, so that we can include its backends in our benchmark suite and compare. The results will be posted here in the coming days.