-
Notifications
You must be signed in to change notification settings - Fork 32
Expand file tree
/
Copy pathDifferentiationInterface.jl
More file actions
135 lines (109 loc) · 3.13 KB
/
DifferentiationInterface.jl
File metadata and controls
135 lines (109 loc) · 3.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
"""
DifferentiationInterface
An interface to various automatic differentiation backends in Julia.
"""
module DifferentiationInterface
using ADTypes:
ADTypes,
AbstractADType,
AbstractSparsityDetector,
AutoSparse,
ForwardMode,
ForwardOrReverseMode,
ReverseMode,
SymbolicMode,
dense_ad,
mode,
jacobian_sparsity,
hessian_sparsity
using ADTypes:
AutoChainRules,
AutoDiffractor,
AutoEnzyme,
AutoFastDifferentiation,
AutoFiniteDiff,
AutoFiniteDifferences,
AutoForwardDiff,
AutoGTPSA,
AutoMooncake,
AutoPolyesterForwardDiff,
AutoReverseDiff,
AutoSymbolics,
AutoTracker,
AutoZygote
using LinearAlgebra: dot
include("compat.jl")
include("docstrings.jl")
include("first_order/mixed_mode.jl")
include("second_order/second_order.jl")
include("utils/prep.jl")
include("utils/traits.jl")
include("utils/basis.jl")
include("utils/batchsize.jl")
include("utils/check.jl")
include("utils/errors.jl")
include("utils/context.jl")
include("utils/linalg.jl")
include("utils/sparse.jl")
include("first_order/pushforward.jl")
include("first_order/pullback.jl")
include("first_order/derivative.jl")
include("first_order/gradient.jl")
include("first_order/jacobian.jl")
include("second_order/second_derivative.jl")
include("second_order/hvp.jl")
include("second_order/hessian.jl")
include("fallbacks/no_prep.jl")
include("fallbacks/change_prep.jl")
include("misc/differentiate_with.jl")
include("misc/from_primitive.jl")
include("misc/sparsity_detector.jl")
include("misc/simple_finite_diff.jl")
include("misc/zero_backends.jl")
include("misc/overloading.jl")
## Exported
export Context, Constant, Cache
export MixedMode, SecondOrder
export value_and_pushforward!, value_and_pushforward
export value_and_pullback!, value_and_pullback
export value_and_derivative!, value_and_derivative
export value_and_gradient!, value_and_gradient
export value_and_jacobian!, value_and_jacobian
export pushforward!, pushforward
export pullback!, pullback
export derivative!, derivative
export gradient!, gradient
export jacobian!, jacobian
export second_derivative!, second_derivative
export value_derivative_and_second_derivative, value_derivative_and_second_derivative!
export hvp!, hvp, gradient_and_hvp, gradient_and_hvp!
export hessian!, hessian
export value_gradient_and_hessian, value_gradient_and_hessian!
export prepare_pushforward, prepare_pushforward_same_point
export prepare_pullback, prepare_pullback_same_point
export prepare_hvp, prepare_hvp_same_point
export prepare_derivative, prepare_gradient, prepare_jacobian
export prepare_second_derivative, prepare_hessian
export DifferentiateWith
export DenseSparsityDetector
export check_available, check_inplace
## Re-exported from ADTypes
export AutoChainRules
export AutoDiffractor
export AutoEnzyme
export AutoFastDifferentiation
export AutoFiniteDiff
export AutoFiniteDifferences
export AutoForwardDiff
export AutoGTPSA
export AutoMooncake
export AutoPolyesterForwardDiff
export AutoReverseDiff
export AutoSymbolics
export AutoTracker
export AutoZygote
export AutoSparse
## Public but not exported
@public inner, outer
include("init.jl")
end # module