Closed johnbcoughlin closed 2 years ago
I should note, I'm also observing that the CholeskyPreconditioner
object requires more conjugate gradient iterations to converge on this problem. It suggests that the wrapper may be implementing the preconditioner interface incorrectly?
using IterativeSolvers
x, hist = cg(A, b, Pl=pslow, log=true, verbose=true)
# 102 iterations
x, hist = cg(A, b, Pl=p, log=true, verbose=true)
# 32 iterations
Thanks for the detailed report! Looks like LimitedLDLFactorizations got an efficient implementation for sparse lower triangular solves. I changed the implementation of CholeskyPreconditioner to become a light wrapper of LimitedLDLFactorizations instead to make use of their efficient implementations. https://github.com/mohamed82008/Preconditioners.jl/pull/24
The
CholeskyPreconditioner
wrapper is about 600 times slower on a moderately sized problem:It seems that wrapping its L factor in a LowerTriangular type is not the way to go:
Any reason for wrapping it like this, or should it just be removed?