Skip to content

Commit a0ef6a2

Browse files
Merge pull request #58 from SciML/reversediff
Add ReverseDiff weak dep
2 parents 2bb940b + df41948 commit a0ef6a2

File tree

3 files changed

+33
-0
lines changed

3 files changed

+33
-0
lines changed

Project.toml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,21 @@ version = "0.4.8"
77
Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
88
ArrayInterfaceCore = "30b0a656-2188-435a-8636-2ec0e6a096e2"
99
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
10+
Requires = "ae029012-a4dd-5104-9daa-d747884805df"
1011

1112
[compat]
1213
Adapt = "3"
1314
ArrayInterfaceCore = "0.1.1"
1415
ForwardDiff = "0.10.3"
16+
Requires = "1.0"
1517
julia = "1.6"
1618

19+
[weakdeps]
20+
ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267"
21+
22+
[extensions]
23+
PreallocationToolsReverseDiffExt = "ReverseDiff"
24+
1725
[extras]
1826
LabelledArrays = "2ee39098-c373-598a-b85f-a56591580800"
1927
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
@@ -23,6 +31,7 @@ OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed"
2331
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
2432
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
2533
RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd"
34+
ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267"
2635
SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"
2736
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
2837
Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
module PreallocationToolsReverseDiffExt
2+
3+
using PreallocationTools
4+
import ReverseDiff
5+
6+
# PreallocationTools https://github.com/SciML/PreallocationTools.jl/issues/39
7+
function Base.getindex(b::PreallocationTools.LazyBufferCache, u::ReverseDiff.TrackedArray)
8+
s = b.sizemap(size(u)) # required buffer size
9+
T = ReverseDiff.TrackedArray
10+
buf = get!(b.bufs, (T, s)) do
11+
# declare type since b.bufs dictionary is untyped
12+
similar(u, s)
13+
end
14+
return buf
15+
end
16+
17+
end

src/PreallocationTools.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,4 +214,11 @@ end
214214
export GeneralLazyBufferCache, FixedSizeDiffCache, DiffCache, LazyBufferCache, dualcache
215215
export get_tmp
216216

217+
import Requires
218+
@static if !isdefined(Base, :get_extension)
219+
function __init__()
220+
Requires.@require ReverseDiff="37e2e3b7-166d-5795-8a7a-e32c996b4267" begin include("../ext/PreallocationToolsReverseDiffExt.jl") end
221+
end
222+
end
223+
217224
end

0 commit comments

Comments
 (0)