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 each rank exchanges off-rank columns through halo communication
during apply. Matrix and 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; everything else on this page requires the build to include
MPI (GINKGO_BUILD_MPI).
For background and a worked example see the Distributed concept page.
Distributed types#
Matrix: distributed sparse matrix, stored as an on-rank local block plus a compressed non-local block of remote columns.Vector: distributed dense vector; each rank owns the rows that the partition assigns to it.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 non-local 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#
assemble_rows_from_neighbors: sums up per-rank contributions to globally-owned rows so amatrix_dataassembled independently on each rank can be used to build a distributed matrix.