Skip to main content
`Ctrl`+`K`

# KSPPIPEFCG

Implements a Pipelined, Flexible Conjugate Gradient method [SSM16]. Pipelined Krylov Methods. Flexible Krylov Methods

## Options Database Keys

- -ksp_pipefcg_mmax <N> - The number of previous search directions to store

- -ksp_pipefcg_nprealloc <N> - The number of previous search directions to preallocate

- -ksp_pipefcg_truncation_type <standard,notay> - which stored search directions to orthogonalize against

## Notes

Compare to `KSPFCG`

Supports left preconditioning only.

The natural “norm” for this method is \((u,Au)\), where \(u\) is the preconditioned residual. As with standard `KSPCG`, this norm is available at no additional computational cost. Choosing preconditioned or unpreconditioned norms involve an extra blocking global reduction, thus removing any benefit from pipelining.

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?

## Contributed by

Patrick Sanan and Sascha 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, `KSPFCG`, `KSPPIPECG`, `KSPPIPECR`, `KSPGCR`, `KSPPIPEGCR`, `KSPFGMRES`, `KSPCG`, `KSPPIPEFCGSetMmax()`, `KSPPIPEFCGGetMmax()`, `KSPPIPEFCGSetNprealloc()`, `KSPPIPEFCGGetNprealloc()`, `KSPPIPEFCGSetTruncationType()`, `KSPPIPEFCGGetTruncationType()`

## Level

intermediate

## Location

src/ksp/ksp/impls/fcg/pipefcg/pipefcg.c

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