Skip to main content
`Ctrl`+`K`

# KSPPIPELCG

Deep pipelined (length l) Conjugate Gradient method [CCV18] and [CCV19]. This method has only a single non-blocking global reduction per iteration, compared to 2 blocking reductions for standard `KSPCG`. The reduction is overlapped by the matrix-vector product and preconditioner application of the next l iterations. The pipeline length l is a parameter of the method. Pipelined Krylov Methods

## Options Database Keys

- -ksp_pipelcg_pipel - pipelined length

- -ksp_pipelcg_lmin - approximation to the smallest eigenvalue of the preconditioned operator (default: 0.0)

- -ksp_pipelcg_lmax - approximation to the largest eigenvalue of the preconditioned operator (default: 0.0)

- -ksp_pipelcg_monitor - output where/why the method restarts when a sqrt breakdown occurs

## Example usage

        KSP tutorials ex2, no preconditioner, pipel = 2, lmin = 0.0, lmax = 8.0 :
            $mpiexec -n 14 ./ex2 -m 1000 -n 1000 -ksp_type pipelcg -pc_type none -ksp_norm_type natural
               -ksp_rtol 1e-10 -ksp_max_it 1000 -ksp_pipelcg_pipel 2 -ksp_pipelcg_lmin 0.0 -ksp_pipelcg_lmax 8.0 -log_view
        SNES tutorials ex48, bjacobi preconditioner, pipel = 3, lmin = 0.0, lmax = 2.0, show restart information :
            $mpiexec -n 14 ./ex48 -M 150 -P 100 -ksp_type pipelcg -pc_type bjacobi -ksp_rtol 1e-10 -ksp_pipelcg_pipel 3
               -ksp_pipelcg_lmin 0.0 -ksp_pipelcg_lmax 2.0 -ksp_pipelcg_monitor -log_view

## Notes

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

Siegfried Cools, University of Antwerp, Dept. Mathematics and Computer Science, funded by Flemish Research Foundation (FWO) grant number 12H4617N.

## References

[CCV19]

Siegfried Cools, Jeffrey Cornelis, and Wim Vanroose. Numerically stable recurrence relations for the communication hiding pipelined conjugate gradient method. IEEE Transactions on Parallel and Distributed Systems, 30(11):2507–2522, 2019.

[CCV18]

Jeffrey Cornelis, Siegfried Cools, and Wim Vanroose. The communication-hiding conjugate gradient method with deep pipelines. arXiv preprint arXiv:1801.04728, 2018.

## See Also

KSP: Linear System Solvers, Pipelined Krylov Methods, What steps are necessary to make the pipelined solvers execute efficiently?, `KSPCreate()`, `KSPSetType()`, `KSPType`, `KSPCG`, `KSPPIPECG`, `KSPPIPECGRR`, `KSPPGMRES`, `KSPPIPEBCGS`, `KSPSetPCSide()`, `KSPGROPPCG`

## Level

advanced

## Location

src/ksp/ksp/impls/cg/pipelcg/pipelcg.c

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