PETSc version 3.17.0
Fix/Edit manual page

# KSPPIPELCG

Deep pipelined (length l) Conjugate Gradient method. This method has only a single non-blocking global reduction per iteration, compared to 2 blocking reductions for standard CG. 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.

### 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

see KSPSolve() for additional options

### Notes

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.

### Contributed by

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

### Example usage

### [*] KSP 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 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

### References

| * | - J. Cornelis, S. Cools and W. Vanroose, "The Communication-Hiding Conjugate Gradient Method with Deep Pipelines" Submitted to SIAM Journal on Scientific Computing (SISC), 2018.
| * | - S. Cools, J. Cornelis and W. Vanroose, "Numerically Stable Recurrence Relations for the Communication Hiding Pipelined Conjugate Gradient Method" Submitted to IEEE Transactions on Parallel and Distributed Systems, 2019.

### See Also

KSPCreate(), KSPSetType(), KSPType (for list of available types), KSPCG, KSPPIPECG, KSPPIPECGRR, KSPPGMRES,
KSPPIPEBCGS, KSPSetPCSide()

### 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