You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/src/index.md
+22Lines changed: 22 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -26,6 +26,28 @@ They should also have a test-only dependency on [ChainRulesTestUtils.jl](https:/
26
26
27
27
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.
28
28
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
+
29
51
## Key functionality
30
52
31
53
Consider a relationship $y = f(x)$, where $f$ is some function.
0 commit comments