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#
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.build_partition_from_local_range,build_partition_from_local_size: collective helpers that build aPartitionfrom each rank’s own range or size.