AbstractDifferentiation.jl: Backend-Agnostic Differentiable Programming in Julia
Not on the map. Why?
Abstract (arXiv)
No single Automatic Differentiation (AD) system is the optimal choice for all problems. This means informed selection of an AD system and combinations can be a problem-specific variable that can greatly impact performance. In the Julia programming language, the major AD systems target the same input and thus in theory can compose. Hitherto, switching between AD packages in the Julia Language required end-users to familiarize themselves with the user-facing API of the respective packages. Furthermore, implementing a new, usable AD package required AD package developers to write boilerplate code to define convenience API functions for end-users. As a response to these issues, we present AbstractDifferentiation.jl for the automatized generation of an extensive, unified, user-facing API for any AD package. By splitting the complexity between AD users and AD developers, AD package developers only need to implement one or two primitive definitions to support various utilities for AD users like Jacobians, Hessians and lazy product operators from native primitives such as pullbacks or pushforwards, thus removing tedious -- but so far inevitable -- boilerplate code, and enabling the easy switching and composing between AD implementations for end-users.
Key facts. Cited by 2 papers in the map (data through 7 Oct 2026). Builds on 11 of its 39 references that are in the map. First posted on arXiv 25 Sep 2021.
Builds on
11 of 39 references.
References · 11
- 2018Neural Ordinary Differential Equationscited by 3,733
- 2020Universal Differential Equations for Scientific Machine Learningcited by 345
- 2019A Differentiable Programming System to Bridge Machine Learning and Scientific Computingcited by 81
- 2018SPNets: Differentiable Fluid Dynamics for Deep Neural Networkscited by 62
- 2015JuMP: A Modeling Language for Mathematical Optimizationcited by 49
- 2020Instead of Rewriting Foreign Code for Machine Learning, Automatically Synthesize Fast Gradientscited by 26
- 2017Effective Extensible Programming: Unleashing Julia on GPUscited by 16
- 2014Convex Optimization in Juliacited by 9
- 2020MathOptInterface: a data structure for mathematical optimization problemscited by 9
- 2021Control of Stochastic Quantum Dynamics by Differentiable Programmingcited by 4
- 2018A Benchmark of Selected Algorithmic Differentiation Tools on Some Problems in Computer Vision and Machine Learningcited by 3
Built on by
Citing papers per year: 2022: 1; 2023: 1.
2 papers.