gko::experimental::distributed#

Distributed-memory linear algebra primitives. The data is partitioned across MPI ranks: a Partition assigns ranges of global rows to ranks, and off-rank columns are exchanged through halo communication during apply. Matrix and preconditioner::Schwarz are templated on (ValueType, LocalIndexType, GlobalIndexType), Vector on ValueType, Partition and index_map on the two index types, and RowGatherer on LocalIndexType. Partition and index_map are part of every build; the remaining types and functions on this page require the build to include MPI (GINKGO_BUILD_MPI).

Attention

Everything in gko::experimental::distributed is experimental: the interfaces may change between releases.

For background and a worked example see the Distributed concept page.

Distributed types#

  • Matrix: distributed sparse matrix, stored as an on-rank “diagonal” block plus a compressed “off-diagonal” block of remote columns.

  • Vector: distributed dense vector; each rank owns the rows that match the partition.

  • Partition: ownership mapping that records which global rows / columns belong to which rank.

  • index_map: translation between global and local indices for the partitioned space.

  • RowGatherer: communication primitive that fetches remote rows for the off-diagonal SpMV.

  • DistributedBase: mixin that gives a type access to its MPI communicator.

Preconditioners#

  • preconditioner::Schwarz: additive Schwarz; applies any local solver per subdomain (rank), optionally with an L1 smoother and an algebraic coarse-grid correction.

Free functions#