Skip to content

Belos: Add Tpetra-only pipelined CG, single all-reduce {CG,GMRES}, and s-step GMRES

James Willenbring requested to merge mhoemmen:PEEKS-3 into develop

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.

This pull request replaces #3439. Something happened to PR testing with that PR, and we found it easier to close that PR and open a new one, than to try to fight PR testing.

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
  • Linux, GCC 4.8.4, OpenMPI 1.10.1, OpenMP

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.

Merge request reports