gko::experimental::distributed#

Distributed-memory linear algebra primitives. Every type here is partitioned across MPI ranks: each rank owns a contiguous slice of the global rows and exchanges off-rank columns through halo communication during apply. All types are templated on (ValueType, LocalIndexType, GlobalIndexType) and require 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 “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: 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#

  • assemble_rows_from_neighbors — sums up per-rank contributions to globally-owned rows so a matrix_data assembled independently on each rank can be used to build a distributed matrix.