KSPPIPECG2#

Pipelined conjugate gradient method with a single non-blocking reduction per two iterations. Pipelined Krylov Methods

Notes#

This method has only a single non-blocking reduction per two iterations, compared to 2 blocking for standard CG. The non-blocking reduction is overlapped by two matrix-vector products and two preconditioner applications.

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#

Manasi Tiwari, Computational and Data Sciences, Indian Institute of Science, Bangalore

Reference#

Manasi Tiwari and Sathish Vadhiyar, “Pipelined Conjugate Gradient Methods for Distributed Memory Systems”, Submitted to International Conference on High Performance Computing, Data and Analytics 2020.

Developer Note#

The implementation code contains a good amount of hand tuned fusion of multiple inner products and similar computations on multiple vectors

See Also#

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

Level#

intermediate

Location#

src/ksp/ksp/impls/cg/pipecg2/pipecg2.c


Edit on GitLab

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