Skip to content

Commit 1778091

Browse files
authored
Add rollout information (#514)
1 parent f9304b3 commit 1778091

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

docs/src/index.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,28 @@ They should also have a test-only dependency on [ChainRulesTestUtils.jl](https:/
2626

2727
Note that the packages with rules do not have to depend on AD systems, and neither do the AD systems have to depend on individual packages.
2828

29+
## ChainRules roll-out status
30+
31+
Numerous [packages](https://juliahub.com/ui/Packages/ChainRulesCore/G6ax7/?page=2) depend on ChainRulesCore to define rules for their functions.
32+
33+
6 AD engines currently use ChainRules to get access to rules:
34+
35+
[Zygote.jl](https://github.com/FluxML/Zygote.jl) is a reverse-mode AD that supports using `rrule`s, calling back into AD, and opting out of rules.
36+
However, its own [ZygoteRules.jl](https://github.com/FluxML/ZygoteRules.jl/) primitives (`@adjoint`s) take precedence before `rrule`s when both are defined -- even if the `@adjoint` is less specific than the `rrule`.
37+
Internally it uses its own set of tangent types, e.g. `nothing` instead of `NoTangent`/`ZeroTangent`.
38+
It also `unthunk`s every tangent.
39+
40+
[Diffractor.jl](https://github.com/JuliaDiff/Diffractor.jl) is a forward- and reverse-mode AD that fully supports ChainRules, including calling back into AD, opting out of rules, and uses tangent types internally.
41+
42+
[Yota](https://github.com/dfdx/Yota.jl) is a reverse-mode AD that fully supports ChainRules, including calling back into AD, opting out of rules, and uses tangent types internally.
43+
44+
[ReverseDiff](https://github.com/JuliaDiff/ReverseDiff.jl) is a reverse-mode AD that supports using `rrule`s, but not calling back into AD and opting out of rules.
45+
46+
[Nabla.jl](https://github.com/invenia/Nabla.jl) is a reverse-mode AD that supports using `rrule`s, but not opting out of rules, nor calling back into AD.
47+
48+
[ReversePropagation.jl](https://github.com/dpsanders/ReversePropagation.jl) is a reverse-mode AD that supports using `rrule`s for scalar functions, but not calling back into AD and opting out of rules.
49+
50+
2951
## Key functionality
3052

3153
Consider a relationship $y = f(x)$, where $f$ is some function.

0 commit comments

Comments
 (0)