Skip to content

Commit af855e2

Browse files
committed
Add tests for precompilation support
1 parent c14685c commit af855e2

File tree

3 files changed

+62
-0
lines changed

3 files changed

+62
-0
lines changed

Project.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ LLVM = "929cbde3-209d-540e-8aea-75f648917ca0"
1212
Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
1313
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
1414
ObjectFile = "d8793406-e978-5875-9003-1fc021f44a92"
15+
PrecompileTools = "aea7be01-6a6a-4083-8856-8a6e6704d82a"
1516
Preferences = "21216c6a-2e73-6563-6e65-726566657250"
1617
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
1718
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
@@ -34,6 +35,7 @@ Enzyme_jll = "0.0.123"
3435
GPUCompiler = "0.21, 0.22, 0.23, 0.24, 0.25, 0.26"
3536
LLVM = "6.1, 7"
3637
ObjectFile = "0.4"
38+
PrecompileTools = "1.2"
3739
Preferences = "1.4"
3840
SpecialFunctions = "1, 2"
3941
StaticArrays = "1"

test/Project.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ LLVM = "929cbde3-209d-540e-8aea-75f648917ca0"
1212
LLVM_jll = "86de99a1-58d6-5da7-8064-bd56ce2e322c"
1313
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
1414
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
15+
PrecompileTools = "aea7be01-6a6a-4083-8856-8a6e6704d82a"
1516
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
1617
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
1718
SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b"

test/precompile.jl

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
using Test
2+
3+
function precompile_test_harness(@nospecialize(f), testset::String)
4+
@testset "$testset" begin
5+
precompile_test_harness(f, true)
6+
end
7+
end
8+
function precompile_test_harness(@nospecialize(f), separate::Bool)
9+
load_path = mktempdir()
10+
load_cache_path = separate ? mktempdir() : load_path
11+
try
12+
pushfirst!(LOAD_PATH, load_path)
13+
pushfirst!(DEPOT_PATH, load_cache_path)
14+
f(load_path)
15+
finally
16+
try
17+
rm(load_path, force=true, recursive=true)
18+
catch err
19+
@show err
20+
end
21+
if separate
22+
try
23+
rm(load_cache_path, force=true, recursive=true)
24+
catch err
25+
@show err
26+
end
27+
end
28+
filter!(()(load_path), LOAD_PATH)
29+
separate && filter!(()(load_cache_path), DEPOT_PATH)
30+
end
31+
nothing
32+
end
33+
34+
precompile_test_harness("Inference caching") do load_path
35+
write(joinpath(load_path, "InferenceCaching.jl"), :(module InferenceCaching
36+
using Enzyme
37+
using PrecompileTools
38+
39+
function mul(x, y)
40+
return x * y
41+
end
42+
43+
@setup_workload begin
44+
@compile_workload begin
45+
autodiff(Reverse, mul, Active, Active(1.0), Active(2.0))
46+
autodiff(Forward, mul, Duplicated, Duplicated(1.0, 1.0), Const(2.0))
47+
end
48+
end
49+
end) |> string)
50+
51+
Base.compilecache(Base.PkgId("InferenceCaching"))
52+
@eval let
53+
using InferenceCaching
54+
using Enzyme
55+
56+
autodiff(Reverse, InferenceCaching.mul, Active, Active(1.0), Active(2.0))
57+
autodiff(Forward, InferenceCaching.mul, Duplicated, Duplicated(1.0, 1.0), Const(2.0))
58+
end
59+
end

0 commit comments

Comments
 (0)