PETSc version 3.17.0
Fix/Edit manual page

# KSPPIPEFGMRES

Implements the Pipelined Generalized Minimal Residual method. A flexible, 1-stage pipelined variant of GMRES.

### 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
| -ksp_pipefgmres_shift | - the shift to use (defaults to 1. See KSPPIPEFGMRESSetShift() vectors are allocated as needed)
| -ksp_gmres_krylov_monitor | - plot the Krylov space generated

### Notes

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 the FAQ on the PETSc website for details.

### Developer Notes

This class is subclassed off of KSPGMRES.

### Reference

P. Sanan, S.M. Schnepp, and D.A. May, "Pipelined, Flexible Krylov Subspace Methods," SIAM Journal on Scientific Computing 2016 38:5, C441-C470, DOI: 10.1137/15M1049130

### See Also

KSPCreate(), KSPSetType(), KSPType (for list of available types), 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