#include "petscksp.h" PetscErrorCode KSPCGUseSingleReduction(KSP ksp,PetscBool flg)Logically Collective on ksp
|ksp||- the iterative context|
|flg||- turn on or off the single reduction|
|-ksp_cg_single_reduction <bool>||- Merge inner products into single MPI_Allreduce|
The algorithm used in this case is described as Method 1 in Lapack Working Note 56, "Conjugate Gradient Algorithms with Reduced Synchronization Overhead Distributed Memory Multiprocessors", by E. F. D'Azevedo, V. L. Eijkhout, and C. H. Romine, December 3, 1999. V. Eijkhout credits the algorithm initially to Chronopoulos and Gear.
It requires two extra work vectors than the conventional implementation in PETSc.
See also KSPPIPECG, KSPPIPECR, and KSPGROPPCG that use non-blocking reductions.