KSPPIPECGRR#

Pipelined conjugate gradient method with automated residual replacements. This method has only a single non-blocking reduction per iteration, compared to 2 blocking for standard CG. The non-blocking reduction is overlapped by the matrix-vector product and preconditioner application.

KSPPIPECGRR improves the robustness of KSPPIPECG by adding an automated residual replacement strategy. True residual and other auxiliary variables are computed explicitly in a number of dynamically determined iterations to counteract the accumulation of rounding errors and thus attain a higher maximal final accuracy.

See also KSPPIPECG, which is identical to KSPPIPECGRR without residual replacements. See also KSPPIPECR, where the reduction is only overlapped with the matrix-vector product.

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, Universiteit Antwerpen, Dept. Mathematics & Computer Science, European FP7 Project on EXascale Algorithms and Advanced Computational Techniques (EXA2CT) / Research Foundation Flanders (FWO)

Reference#

S. Cools, E.F. Yetkin, E. Agullo, L. Giraud, W. Vanroose, “Analyzing the effect of local rounding error propagation on the maximal attainable accuracy of the pipelined Conjugate Gradients method”, SIAM Journal on Matrix Analysis and Applications (SIMAX), 39(1):426–450, 2018.

See Also#

KSPCreate(), KSPSetType(), KSPPIPECR, KSPGROPPCG, KSPPIPECG, KSPPGMRES, KSPCG, KSPPIPEBCGS, KSPCGUseSingleReduction()

Level#

intermediate

Location#

src/ksp/ksp/impls/cg/pipecgrr/pipecgrr.c


Edit on GitLab

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