JuliaDiff / JuliaDiff/AbstractDifferentiation.jl

Maybe AbstractDifferentiation should shrink to a collection of names?

Open
#129 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Julia
Stars
138
Forks
18
PR merge metrics
No merged PRs in 30d

Description

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:

  • additional closures with type instabilities (#109, #121)
  • hard-to-parse macros (#123)
  • vicious tuples (#99, #53)
  • no exploitation of optimized backend code (#54)

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.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Read the current AbstractDifferentiation.jl interface and compare it with the linked DifferentiationInterface.jl prototype. The issue names no specific file, test, entry point, or acceptance criterion, so the first step is to resolve the proposed scope and define what a successful backend-focused redesign would include.

Written by the indexing model from the issue text.

Assessment

Tech stack
julia
Domain
backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.