Skip to content

Maybe AbstractDifferentiation should shrink to a collection of names? #129

Open
@gdalle

Description

@gdalle

I increasingly feel like all the heavy lifting should be done by backends, and AbstractDifferentiation.jl should just define common names.

Whenever we do something that a backend does not support, or when we recode it instead of letting the package do it, we introduce correctness, readability or performance issues. Some examples:

Moreover, the complexity of the package also makes it very hard to push Enzyme support over the finish line (#84), which is arguably the biggest missing feature.

@adrhill and I are working on a prototype to play with this idea:

https://github.com/gdalle/DifferentiationInterface.jl

It may or may not be merged into AbstractDifferentiation, depending on what the team here thinks. The main caveat I see is that higher order cannot be well supported with an empty shell, but for gradients and JVPs/VJPs it should be close to optimal.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions