A different kind of lagged preconditioner
bsmith at mcs.anl.gov
Mon Mar 23 13:12:51 CDT 2009
Lagging the preconditioner does NOT mean applying the
preconditioner every p non-linear iterations. It means RECOMPUTING the
preconditioner (with LU that means doing a new LU numerical
factorization) every p nonlinear iterations. The preconditioner is
still APPLIED at every iteration of the Krylov method.
Within the linear solve inside Newton there is never a
recomputation of the preconditioner (because the matrix stays the same
inside the linear solve) so lagging inside the linear solve doesn't
The work and memory requirements of LU factorization scales more
than linearly with the problem size so eventually for really large
problems the cost becomes prohibative, but if no iterative solver
works then you have to use LU and lag as much as you can. Are you
running in parallel? You will need to for larger problems.
On Mar 23, 2009, at 11:06 AM, Rafael Santos Coelho wrote:
> Hello everyone,
> Lately I've been running some tests with a matrix-free LU-SGS-like
> preconditioner and I've noticed that although, broadly speaking, it
> has shown very good improvements on the convergence rate of my
> program, it does not decrease the runtime. Quite the opposite, the
> bigger the problem (mesh size), the more computational costlier it
> gets to be applied to the system, which is fairly natural to expect.
> So I've tried using the -snes_lag_preconditioner command-line
> option, and it did help in a way to alleviate the "numerical effort"
> of the preconditioner, but the overall runtime, in comparison with
> the matrix-free unpreconditioned tests, is still prohibitive.
> Given that, I was thinking of modifying the concept of "lagged
> preconditioning" in PETSc, I mean, instead of applying the
> preconditioner every "p" non-linear iterations, I want to apply it
> every "p" linear iterations within each non-linear iteration. How
> can I do that?
> Thanks in advance,
More information about the petsc-users