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, KSPCG, KSPPIPECG, KSPPIPECGRR, KSPPGMRES, KSPPIPEBCGS, KSPSetPCSide()

Level#

advanced

Location#

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


Edit on GitLab

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