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