Skip to content

Commit f1bb4a7

Browse files
Merge pull request #261 from avik-pal/ap/precompile
Scary Load Times in 1.9
2 parents 786e8d3 + 8e25204 commit f1bb4a7

File tree

2 files changed

+32
-36
lines changed

2 files changed

+32
-36
lines changed

src/NonlinearSolve.jl

Lines changed: 31 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,29 @@ if isdefined(Base, :Experimental) && isdefined(Base.Experimental, Symbol("@max_m
44
@eval Base.Experimental.@max_methods 1
55
end
66

7-
using DiffEqBase, LinearAlgebra, LinearSolve, SparseArrays, SparseDiffTools
8-
import ArrayInterface: restructure
9-
import ForwardDiff
10-
11-
import ADTypes: AbstractFiniteDifferencesMode
12-
import ArrayInterface: undefmatrix, matrix_colors, parameterless_type, ismutable, issingular
13-
import ConcreteStructs: @concrete
14-
import EnumX: @enumx
15-
import ForwardDiff: Dual
16-
import LinearSolve: ComposePreconditioner, InvPreconditioner, needs_concrete_A
17-
import RecursiveArrayTools: ArrayPartition,
18-
AbstractVectorOfArray, recursivecopy!, recursivefill!
197
import Reexport: @reexport
20-
import SciMLBase: AbstractNonlinearAlgorithm, NLStats, _unwrap_val, has_jac, isinplace
21-
import StaticArraysCore: StaticArray, SVector, SArray, MArray
22-
import UnPack: @unpack
8+
import PrecompileTools
9+
10+
PrecompileTools.@recompile_invalidations begin
11+
using DiffEqBase, LinearAlgebra, LinearSolve, SparseArrays, SparseDiffTools
12+
import ArrayInterface: restructure
13+
14+
import ADTypes: AbstractFiniteDifferencesMode
15+
import ArrayInterface: undefmatrix,
16+
matrix_colors, parameterless_type, ismutable, issingular
17+
import ConcreteStructs: @concrete
18+
import EnumX: @enumx
19+
import ForwardDiff
20+
import ForwardDiff: Dual
21+
import LinearSolve: ComposePreconditioner, InvPreconditioner, needs_concrete_A
22+
import RecursiveArrayTools: ArrayPartition,
23+
AbstractVectorOfArray, recursivecopy!, recursivefill!
24+
import SciMLBase: AbstractNonlinearAlgorithm, NLStats, _unwrap_val, has_jac, isinplace
25+
import StaticArraysCore: StaticArray, SVector, SArray, MArray
26+
import UnPack: @unpack
27+
28+
using ADTypes, LineSearches, SciMLBase, SimpleNonlinearSolve
29+
end
2330

2431
@reexport using ADTypes, LineSearches, SciMLBase, SimpleNonlinearSolve
2532

@@ -81,25 +88,17 @@ include("jacobian.jl")
8188
include("ad.jl")
8289
include("default.jl")
8390

84-
import PrecompileTools
85-
86-
@static if VERSION v"1.10-"
87-
PrecompileTools.@compile_workload begin
88-
for T in (Float32, Float64)
89-
prob = NonlinearProblem{false}((u, p) -> u .* u .- p, T(0.1), T(2))
90-
91-
precompile_algs = (NewtonRaphson(), TrustRegion(), LevenbergMarquardt(),
92-
PseudoTransient(), GeneralBroyden(), GeneralKlement(), nothing)
91+
PrecompileTools.@compile_workload begin
92+
for T in (Float32, Float64)
93+
probs = (NonlinearProblem{false}((u, p) -> u .* u .- p, T(0.1), T(2)),
94+
NonlinearProblem{false}((u, p) -> u .* u .- p, T[0.1], T[2]),
95+
NonlinearProblem{true}((du, u, p) -> du .= u .* u .- p, T[0.1], T[2]))
9396

94-
for alg in precompile_algs
95-
solve(prob, alg, abstol = T(1e-2))
96-
end
97+
precompile_algs = (NewtonRaphson(), TrustRegion(), LevenbergMarquardt(),
98+
PseudoTransient(), GeneralBroyden(), GeneralKlement(), nothing)
9799

98-
prob = NonlinearProblem{true}((du, u, p) -> du[1] = u[1] * u[1] - p[1], T[0.1],
99-
T[2])
100-
for alg in precompile_algs
101-
solve(prob, alg, abstol = T(1e-2))
102-
end
100+
for prob in probs, alg in precompile_algs
101+
solve(prob, alg, abstol = T(1e-2))
103102
end
104103
end
105104
end

test/runtests.jl

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,7 @@ end
1717
@time @safetestset "Sparsity Tests" include("sparse.jl")
1818
@time @safetestset "Polyalgs" include("polyalgs.jl")
1919
@time @safetestset "Matrix Resizing" include("matrix_resizing.jl")
20-
if VERSION v"1.10-"
21-
# Takes too long to compile on older versions
22-
@time @safetestset "Nonlinear Least Squares" include("nonlinear_least_squares.jl")
23-
end
20+
@time @safetestset "Nonlinear Least Squares" include("nonlinear_least_squares.jl")
2421
end
2522

2623
if GROUP == "All" || GROUP == "23TestProblems"

0 commit comments

Comments
 (0)