English

The Adaptive $s$-step Conjugate Gradient Method

Numerical Analysis 2017-02-12 v1 Numerical Analysis

Abstract

On modern large-scale parallel computers, the performance of Krylov subspace iterative methods is limited by global synchronization. This has inspired the development of ss-step Krylov subspace method variants, in which iterations are computed in blocks of ss, which can reduce the number of global synchronizations per iteration by a factor of O(s)O(s). Although the ss-step variants are mathematically equivalent to their classical counterparts, they can behave quite differently in finite precision depending on the parameter ss. If ss is chosen too large, the ss-step method can suffer a convergence delay and a decrease in attainable accuracy relative to the classical method. This makes it difficult for a potential user of such methods - the ss value that minimizes the time per iteration may not be the best ss for minimizing the overall time-to-solution, and further may cause an unacceptable decrease in accuracy. Towards improving the reliability and usability of ss-step Krylov subspace methods, in this work we derive the \emph{adaptive ss-step CG method}, a variable ss-step CG method where in block kk, the parameter sks_k is determined automatically such that a user-specified accuracy is attainable. The method for determining sks_k is based on a bound on growth of the residual gap within block kk, from which we derive a constraint on the condition numbers of the computed O(sk)O(s_k)-dimensional Krylov subspace bases. The computations required for determining the block size sks_k can be performed without increasing the number of global synchronizations per block. Our numerical experiments demonstrate that the adaptive ss-step CG method is able to attain up to the same accuracy as classical CG while still significantly reducing the total number of global synchronizations.

Cite

@article{arxiv.1701.03989,
  title  = {The Adaptive $s$-step Conjugate Gradient Method},
  author = {Erin Carson},
  journal= {arXiv preprint arXiv:1701.03989},
  year   = {2017}
}
R2 v1 2026-06-22T17:50:23.469Z