Belos: Add Tpetra-only pipelined CG & single all-reduce {CG,GMRES}
Created by: mhoemmen
@trilinos/belos
This closes https://github.com/trilinos/Trilinos/issues/748.
Description
Add Tpetra-specific Belos solvers contributed by Ichitaro Yamazaki (UTK) and edited by Mark Hoemmen (SNL), and make the solvers available through the Tpetra specializations of Belos::SolverFactory. The new solvers include:
- Pipelined CG
- Single all-reduce CG
- Single all-reduce GMRES
The solvers are only available for Tpetra linear algebra. This is because they depend on Tpetra-specific linear algebra operations.
Motivation and Context
The new solvers perform less MPI communication than the corresponding standard CG and GMRES algorithms. The pipelined solvers also have potential to overlap communication and computation. Actual overlap achieved depends on the MPI implementation and the hardware. Right now, the implementations just use MPI_Iallreduce
for communication-computation overlap, and make no special effort to drive MPI progress. We may optimize this in the future.
How Has This Been Tested?
Mac, Clang, OpenMPI.
Checklist
-
My commit messages mention the appropriate GitHub issue numbers. -
My code follows the code style of the affected package(s). -
I have read the code contribution guidelines for this project. -
I have added tests to cover my changes. -
All new and existing tests passed. -
No new compiler warnings were introduced.