Skip to content

Commit 50bff02

Browse files
Merge pull request #595 from amontoison/upgrade_krylov
Support Krylov.jl v0.10
2 parents bd3f99d + 67cfd4e commit 50bff02

File tree

2 files changed

+48
-48
lines changed

2 files changed

+48
-48
lines changed

Diff for: Project.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ InteractiveUtils = "1.10"
8787
IterativeSolvers = "0.9.3"
8888
JET = "0.8.28, 0.9"
8989
KernelAbstractions = "0.9.27"
90-
Krylov = "0.9"
90+
Krylov = "0.10"
9191
KrylovKit = "0.8, 0.9"
9292
KrylovPreconditioners = "0.3"
9393
LazyArrays = "1.8, 2"

Diff for: src/iterative_wrappers.jl

+47-47
Original file line numberDiff line numberDiff line change
@@ -109,73 +109,73 @@ end
109109

110110
function get_KrylovJL_solver(KrylovAlg)
111111
KS = if (KrylovAlg === Krylov.lsmr!)
112-
Krylov.LsmrSolver
112+
Krylov.LsmrWorkspace
113113
elseif (KrylovAlg === Krylov.cgs!)
114-
Krylov.CgsSolver
114+
Krylov.CgsWorkspace
115115
elseif (KrylovAlg === Krylov.usymlq!)
116-
Krylov.UsymlqSolver
116+
Krylov.UsymlqWorkspace
117117
elseif (KrylovAlg === Krylov.lnlq!)
118-
Krylov.LnlqSolver
118+
Krylov.LnlqWorkspace
119119
elseif (KrylovAlg === Krylov.bicgstab!)
120-
Krylov.BicgstabSolver
120+
Krylov.BicgstabWorkspace
121121
elseif (KrylovAlg === Krylov.crls!)
122-
Krylov.CrlsSolver
122+
Krylov.CrlsWorkspace
123123
elseif (KrylovAlg === Krylov.lsqr!)
124-
Krylov.LsqrSolver
124+
Krylov.LsqrWorkspace
125125
elseif (KrylovAlg === Krylov.minres!)
126-
Krylov.MinresSolver
126+
Krylov.MinresWorkspace
127127
elseif (KrylovAlg === Krylov.cgne!)
128-
Krylov.CgneSolver
128+
Krylov.CgneWorkspace
129129
elseif (KrylovAlg === Krylov.dqgmres!)
130-
Krylov.DqgmresSolver
130+
Krylov.DqgmresWorkspace
131131
elseif (KrylovAlg === Krylov.symmlq!)
132-
Krylov.SymmlqSolver
132+
Krylov.SymmlqWorkspace
133133
elseif (KrylovAlg === Krylov.trimr!)
134-
Krylov.TrimrSolver
134+
Krylov.TrimrWorkspace
135135
elseif (KrylovAlg === Krylov.usymqr!)
136-
Krylov.UsymqrSolver
136+
Krylov.UsymqrWorkspace
137137
elseif (KrylovAlg === Krylov.bilqr!)
138-
Krylov.BilqrSolver
138+
Krylov.BilqrWorkspace
139139
elseif (KrylovAlg === Krylov.cr!)
140-
Krylov.CrSolver
140+
Krylov.CrWorkspace
141141
elseif (KrylovAlg === Krylov.craigmr!)
142-
Krylov.CraigmrSolver
142+
Krylov.CraigmrWorkspace
143143
elseif (KrylovAlg === Krylov.tricg!)
144-
Krylov.TricgSolver
144+
Krylov.TricgWorkspace
145145
elseif (KrylovAlg === Krylov.craig!)
146-
Krylov.CraigSolver
146+
Krylov.CraigWorkspace
147147
elseif (KrylovAlg === Krylov.diom!)
148-
Krylov.DiomSolver
148+
Krylov.DiomWorkspace
149149
elseif (KrylovAlg === Krylov.lslq!)
150-
Krylov.LslqSolver
150+
Krylov.LslqWorkspace
151151
elseif (KrylovAlg === Krylov.trilqr!)
152-
Krylov.TrilqrSolver
152+
Krylov.TrilqrWorkspace
153153
elseif (KrylovAlg === Krylov.crmr!)
154-
Krylov.CrmrSolver
154+
Krylov.CrmrWorkspace
155155
elseif (KrylovAlg === Krylov.cg!)
156-
Krylov.CgSolver
156+
Krylov.CgWorkspace
157157
elseif (KrylovAlg === Krylov.cg_lanczos!)
158-
Krylov.CgLanczosShiftSolver
158+
Krylov.CgLanczosShiftWorkspace
159159
elseif (KrylovAlg === Krylov.cgls!)
160-
Krylov.CglsSolver
160+
Krylov.CglsWorkspace
161161
elseif (KrylovAlg === Krylov.cg_lanczos!)
162-
Krylov.CgLanczosSolver
162+
Krylov.CgLanczosWorkspace
163163
elseif (KrylovAlg === Krylov.bilq!)
164-
Krylov.BilqSolver
164+
Krylov.BilqWorkspace
165165
elseif (KrylovAlg === Krylov.minres_qlp!)
166-
Krylov.MinresQlpSolver
166+
Krylov.MinresQlpWorkspace
167167
elseif (KrylovAlg === Krylov.qmr!)
168-
Krylov.QmrSolver
168+
Krylov.QmrWorkspace
169169
elseif (KrylovAlg === Krylov.gmres!)
170-
Krylov.GmresSolver
170+
Krylov.GmresWorkspace
171171
elseif (KrylovAlg === Krylov.fgmres!)
172-
Krylov.FgmresSolver
172+
Krylov.FgmresWorkspace
173173
elseif (KrylovAlg === Krylov.gpmr!)
174-
Krylov.GpmrSolver
174+
Krylov.GpmrWorkspace
175175
elseif (KrylovAlg === Krylov.fom!)
176-
Krylov.FomSolver
176+
Krylov.FomWorkspace
177177
elseif (KrylovAlg === Krylov.minares!)
178-
Krylov.MinaresSolver
178+
Krylov.MinaresWorkspace
179179
else
180180
error("Invalid Krylov method detected")
181181
end
@@ -196,11 +196,11 @@ function init_cacheval(alg::KrylovJL, A, b, u, Pl, Pr, maxiters::Int, abstol, re
196196
alg.KrylovAlg === Krylov.gpmr! ||
197197
alg.KrylovAlg === Krylov.fom!)
198198
if issparsematrixcsc(A)
199-
KS(makeempty_SparseMatrixCSC(A), eltype(b)[], 1)
199+
KS(makeempty_SparseMatrixCSC(A), eltype(b)[]; memory = 1)
200200
elseif A isa Matrix
201-
KS(Matrix{eltype(A)}(undef, 0, 0), eltype(b)[], 1)
201+
KS(Matrix{eltype(A)}(undef, 0, 0), eltype(b)[]; memory = 1)
202202
else
203-
KS(A, b, 1)
203+
KS(A, b; memory = 1)
204204
end
205205
else
206206
if issparsematrixcsc(A)
@@ -220,7 +220,7 @@ function init_cacheval(alg::KrylovJL, A, b, u, Pl, Pr, maxiters::Int, abstol, re
220220
alg.KrylovAlg === Krylov.fgmres! ||
221221
alg.KrylovAlg === Krylov.gpmr! ||
222222
alg.KrylovAlg === Krylov.fom!)
223-
KS(A, b, memory)
223+
KS(A, b; memory)
224224
elseif (alg.KrylovAlg === Krylov.minres! ||
225225
alg.KrylovAlg === Krylov.symmlq! ||
226226
alg.KrylovAlg === Krylov.lslq! ||
@@ -288,20 +288,20 @@ function SciMLBase.solve!(cache::LinearCache, alg::KrylovJL; kwargs...)
288288
kwargs = (atol = atol, rtol, itmax, verbose,
289289
ldiv = true, history = true, alg.kwargs...)
290290

291-
if cache.cacheval isa Krylov.CgSolver
291+
if cache.cacheval isa Krylov.CgWorkspace
292292
N !== I &&
293293
@warn "$(alg.KrylovAlg) doesn't support right preconditioning."
294-
Krylov.solve!(args...; M, kwargs...)
295-
elseif cache.cacheval isa Krylov.GmresSolver
296-
Krylov.solve!(args...; M, N, restart = alg.gmres_restart > 0, kwargs...)
297-
elseif cache.cacheval isa Krylov.BicgstabSolver
298-
Krylov.solve!(args...; M, N, kwargs...)
299-
elseif cache.cacheval isa Krylov.MinresSolver
294+
Krylov.krylov_solve!(args...; M, kwargs...)
295+
elseif cache.cacheval isa Krylov.GmresWorkspace
296+
Krylov.krylov_solve!(args...; M, N, restart = alg.gmres_restart > 0, kwargs...)
297+
elseif cache.cacheval isa Krylov.BicgstabWorkspace
298+
Krylov.krylov_solve!(args...; M, N, kwargs...)
299+
elseif cache.cacheval isa Krylov.MinresWorkspace
300300
N !== I &&
301301
@warn "$(alg.KrylovAlg) doesn't support right preconditioning."
302-
Krylov.solve!(args...; M, kwargs...)
302+
Krylov.krylov_solve!(args...; M, kwargs...)
303303
else
304-
Krylov.solve!(args...; kwargs...)
304+
Krylov.krylov_solve!(args...; kwargs...)
305305
end
306306

307307
stats = @get_cacheval(cache, :KrylovJL_GMRES).stats

0 commit comments

Comments
 (0)