Skip to main content
`Ctrl`+`K`

# KSPPIPEFGMRES

Implements the Pipelined (1-stage) Flexible Generalized Minimal Residual method [SSM16]. Pipelined Krylov Methods. Flexible Krylov Methods

## Options Database Keys

- -ksp_gmres_restart <restart> - the number of Krylov directions to orthogonalize against

- -ksp_gmres_haptol <tol> - sets the tolerance for “happy ending” (exact convergence)

- -ksp_gmres_preallocate - preallocate all the Krylov search directions initially (otherwise groups of vectors are allocated as needed)

- -ksp_pipefgmres_shift - the shift to use (defaults to 1. See `KSPPIPEFGMRESSetShift()`

- -ksp_gmres_krylov_monitor - plot the Krylov space generated

## Notes

Compare to `KSPPGMRES` and `KSPFGMRES`

This variant is not “explicitly normalized” like `KSPPGMRES`, and requires a shift parameter.

A heuristic for choosing the shift parameter is the largest eigenvalue of the preconditioned operator.

Only right preconditioning is supported (but this preconditioner may be nonlinear/variable/inexact, as with `KSPFGMRES`).

MPI configuration may be necessary for reductions to make asynchronous progress, which is important for performance of pipelined methods. See What steps are necessary to make the pipelined solvers execute efficiently?

## Developer Note

This class is subclassed off of `KSPGMRES`, see the source code in src/ksp/ksp/impls/gmres for comments on the structure of the code

## Contributed by

P. Sanan and S.M. Schnepp

## References

[SSM16]

P. Sanan, S. M. Schnepp, and D. A. May. Pipelined, flexible Krylov subspace methods. SIAM Journal on Scientific Computing, 38(5):C441–C470, 2016. doi:10.1137/15M1049130.

## See Also

KSP: Linear System Solvers, What steps are necessary to make the pipelined solvers execute efficiently?, Pipelined Krylov Methods, Flexible Krylov Methods, `KSPCreate()`, `KSPSetType()`, `KSPType`, `KSP`, `KSPLGMRES`, `KSPPIPECG`, `KSPPIPECR`, `KSPPGMRES`, `KSPFGMRES` `KSPGMRESSetRestart()`, `KSPGMRESSetHapTol()`, `KSPGMRESSetPreAllocateVectors()`, `KSPGMRESMonitorKrylov()`, `KSPPIPEFGMRESSetShift()`

## Level

intermediate

## Location

src/ksp/ksp/impls/gmres/pipefgmres/pipefgmres.c

Index of all KSP routines
Table of Contents for all manual pages
Index of all manual pages