@@ -8,25 +8,24 @@ import Reexport: @reexport
88import PrecompileTools: @recompile_invalidations , @compile_workload , @setup_workload
99
1010@recompile_invalidations begin
11- using DiffEqBase,
12- LazyArrays, LinearAlgebra, LinearSolve, Printf, SparseArrays,
11+ using DiffEqBase, LazyArrays, LinearAlgebra, LinearSolve, Printf, SparseArrays,
1312 SparseDiffTools
14- using FastBroadcast: @. .
15- import ArrayInterface: restructure
1613
1714 import ADTypes: AbstractFiniteDifferencesMode
18- import ArrayInterface: undefmatrix,
15+ import ArrayInterface: undefmatrix, restructure, can_setindex,
1916 matrix_colors, parameterless_type, ismutable, issingular, fast_scalar_indexing
2017 import ConcreteStructs: @concrete
2118 import EnumX: @enumx
19+ import FastBroadcast: @. .
2220 import ForwardDiff
2321 import ForwardDiff: Dual
2422 import LinearSolve: ComposePreconditioner, InvPreconditioner, needs_concrete_A
23+ import MaybeInplace: @bb
2524 import RecursiveArrayTools: ArrayPartition,
2625 AbstractVectorOfArray, recursivecopy!, recursivefill!
2726 import SciMLBase: AbstractNonlinearAlgorithm, NLStats, _unwrap_val, has_jac, isinplace
2827 import SciMLOperators: FunctionOperator
29- import StaticArraysCore: StaticArray, SVector, SArray, MArray
28+ import StaticArraysCore: StaticArray, SVector, SArray, MArray, Size, SMatrix
3029 import UnPack: @unpack
3130
3231 using ADTypes, LineSearches, SciMLBase, SimpleNonlinearSolve
@@ -55,13 +54,13 @@ isinplace(::AbstractNonlinearSolveCache{iip}) where {iip} = iip
5554function Base. show (io:: IO , alg:: AbstractNonlinearSolveAlgorithm )
5655 str = " $(nameof (typeof (alg))) ("
5756 modifiers = String[]
58- if _getproperty (alg, Val (:ad )) != = nothing
57+ if __getproperty (alg, Val (:ad )) != = nothing
5958 push! (modifiers, " ad = $(nameof (typeof (alg. ad))) ()" )
6059 end
61- if _getproperty (alg, Val (:linsolve )) != = nothing
60+ if __getproperty (alg, Val (:linsolve )) != = nothing
6261 push! (modifiers, " linsolve = $(nameof (typeof (alg. linsolve))) ()" )
6362 end
64- if _getproperty (alg, Val (:linesearch )) != = nothing
63+ if __getproperty (alg, Val (:linesearch )) != = nothing
6564 ls = alg. linesearch
6665 if ls isa LineSearch
6766 ls. method != = nothing &&
@@ -70,7 +69,7 @@ function Base.show(io::IO, alg::AbstractNonlinearSolveAlgorithm)
7069 push! (modifiers, " linesearch = $(nameof (typeof (alg. linesearch))) ()" )
7170 end
7271 end
73- if _getproperty (alg, Val (:radius_update_scheme )) != = nothing
72+ if __getproperty (alg, Val (:radius_update_scheme )) != = nothing
7473 push! (modifiers, " radius_update_scheme = $(alg. radius_update_scheme) " )
7574 end
7675 str = str * join (modifiers, " , " )
@@ -107,7 +106,7 @@ function SciMLBase.solve!(cache::AbstractNonlinearSolveCache)
107106 end
108107 end
109108
110- trace = _getproperty (cache, Val {:trace} ())
109+ trace = __getproperty (cache, Val {:trace} ())
111110 if trace != = nothing
112111 update_trace! (trace, cache. stats. nsteps, get_u (cache), get_fu (cache), nothing ,
113112 nothing , nothing ; last = Val (true ))
@@ -134,52 +133,52 @@ include("jacobian.jl")
134133include (" ad.jl" )
135134include (" default.jl" )
136135
137- @setup_workload begin
138- nlfuncs = ((NonlinearFunction {false} ((u, p) -> u .* u .- p), 0.1 ),
139- (NonlinearFunction {false} ((u, p) -> u .* u .- p), [0.1 ]),
140- (NonlinearFunction {true} ((du, u, p) -> du .= u .* u .- p), [0.1 ]))
141- probs_nls = NonlinearProblem[]
142- for T in (Float32, Float64), (fn, u0) in nlfuncs
143- push! (probs_nls, NonlinearProblem (fn, T .(u0), T (2 )))
144- end
145-
146- nls_algs = (NewtonRaphson (), TrustRegion (), LevenbergMarquardt (), PseudoTransient (),
147- GeneralBroyden (), GeneralKlement (), DFSane (), nothing )
148-
149- probs_nlls = NonlinearLeastSquaresProblem[]
150- nlfuncs = ((NonlinearFunction {false} ((u, p) -> (u .^ 2 .- p)[1 : 1 ]), [0.1 , 0.0 ]),
151- (NonlinearFunction {false} ((u, p) -> vcat (u .* u .- p, u .* u .- p)), [0.1 , 0.1 ]),
152- (NonlinearFunction {true} ((du, u, p) -> du[1 ] = u[1 ] * u[1 ] - p,
153- resid_prototype = zeros (1 )), [0.1 , 0.0 ]),
154- (NonlinearFunction {true} ((du, u, p) -> du .= vcat (u .* u .- p, u .* u .- p),
155- resid_prototype = zeros (4 )), [0.1 , 0.1 ]))
156- for (fn, u0) in nlfuncs
157- push! (probs_nlls, NonlinearLeastSquaresProblem (fn, u0, 2.0 ))
158- end
159- nlfuncs = ((NonlinearFunction {false} ((u, p) -> (u .^ 2 .- p)[1 : 1 ]), Float32[0.1 , 0.0 ]),
160- (NonlinearFunction {false} ((u, p) -> vcat (u .* u .- p, u .* u .- p)),
161- Float32[0.1 , 0.1 ]),
162- (NonlinearFunction {true} ((du, u, p) -> du[1 ] = u[1 ] * u[1 ] - p,
163- resid_prototype = zeros (Float32, 1 )), Float32[0.1 , 0.0 ]),
164- (NonlinearFunction {true} ((du, u, p) -> du .= vcat (u .* u .- p, u .* u .- p),
165- resid_prototype = zeros (Float32, 4 )), Float32[0.1 , 0.1 ]))
166- for (fn, u0) in nlfuncs
167- push! (probs_nlls, NonlinearLeastSquaresProblem (fn, u0, 2.0f0 ))
168- end
169-
170- nlls_algs = (LevenbergMarquardt (), GaussNewton (),
171- LevenbergMarquardt (; linsolve = LUFactorization ()),
172- GaussNewton (; linsolve = LUFactorization ()))
173-
174- @compile_workload begin
175- for prob in probs_nls, alg in nls_algs
176- solve (prob, alg, abstol = 1e-2 )
177- end
178- for prob in probs_nlls, alg in nlls_algs
179- solve (prob, alg, abstol = 1e-2 )
180- end
181- end
182- end
136+ # @setup_workload begin
137+ # nlfuncs = ((NonlinearFunction{false}((u, p) -> u .* u .- p), 0.1),
138+ # (NonlinearFunction{false}((u, p) -> u .* u .- p), [0.1]),
139+ # (NonlinearFunction{true}((du, u, p) -> du .= u .* u .- p), [0.1]))
140+ # probs_nls = NonlinearProblem[]
141+ # for T in (Float32, Float64), (fn, u0) in nlfuncs
142+ # push!(probs_nls, NonlinearProblem(fn, T.(u0), T(2)))
143+ # end
144+
145+ # nls_algs = (NewtonRaphson(), TrustRegion(), LevenbergMarquardt(), PseudoTransient(),
146+ # GeneralBroyden(), GeneralKlement(), DFSane(), nothing)
147+
148+ # probs_nlls = NonlinearLeastSquaresProblem[]
149+ # nlfuncs = ((NonlinearFunction{false}((u, p) -> (u .^ 2 .- p)[1:1]), [0.1, 0.0]),
150+ # (NonlinearFunction{false}((u, p) -> vcat(u .* u .- p, u .* u .- p)), [0.1, 0.1]),
151+ # (NonlinearFunction{true}((du, u, p) -> du[1] = u[1] * u[1] - p,
152+ # resid_prototype = zeros(1)), [0.1, 0.0]),
153+ # (NonlinearFunction{true}((du, u, p) -> du .= vcat(u .* u .- p, u .* u .- p),
154+ # resid_prototype = zeros(4)), [0.1, 0.1]))
155+ # for (fn, u0) in nlfuncs
156+ # push!(probs_nlls, NonlinearLeastSquaresProblem(fn, u0, 2.0))
157+ # end
158+ # nlfuncs = ((NonlinearFunction{false}((u, p) -> (u .^ 2 .- p)[1:1]), Float32[0.1, 0.0]),
159+ # (NonlinearFunction{false}((u, p) -> vcat(u .* u .- p, u .* u .- p)),
160+ # Float32[0.1, 0.1]),
161+ # (NonlinearFunction{true}((du, u, p) -> du[1] = u[1] * u[1] - p,
162+ # resid_prototype = zeros(Float32, 1)), Float32[0.1, 0.0]),
163+ # (NonlinearFunction{true}((du, u, p) -> du .= vcat(u .* u .- p, u .* u .- p),
164+ # resid_prototype = zeros(Float32, 4)), Float32[0.1, 0.1]))
165+ # for (fn, u0) in nlfuncs
166+ # push!(probs_nlls, NonlinearLeastSquaresProblem(fn, u0, 2.0f0))
167+ # end
168+
169+ # nlls_algs = (LevenbergMarquardt(), GaussNewton(),
170+ # LevenbergMarquardt(; linsolve = LUFactorization()),
171+ # GaussNewton(; linsolve = LUFactorization()))
172+
173+ # @compile_workload begin
174+ # for prob in probs_nls, alg in nls_algs
175+ # solve(prob, alg, abstol = 1e-2)
176+ # end
177+ # for prob in probs_nlls, alg in nlls_algs
178+ # solve(prob, alg, abstol = 1e-2)
179+ # end
180+ # end
181+ # end
183182
184183export RadiusUpdateSchemes
185184
0 commit comments