|
DOLFINx 0.12.0.0
DOLFINx C++
|
Functions | |
| std::tuple< graph::AdjacencyList< std::int64_t >, std::vector< int >, std::vector< std::int64_t >, std::vector< int > > | distribute (MPI_Comm comm, const graph::AdjacencyList< std::int64_t > &list, const graph::AdjacencyList< std::int32_t > &destinations) |
| Distribute adjacency list nodes to destination ranks. | |
| std::tuple< std::vector< std::int64_t >, std::vector< int >, std::vector< std::int64_t >, std::vector< int > > | distribute (MPI_Comm comm, std::span< const std::int64_t > list, std::array< std::size_t, 2 > shape, const graph::AdjacencyList< std::int32_t > &destinations) |
| Distribute rows of a fixed-degree array to destination ranks. | |
| std::vector< std::int64_t > | compute_ghost_indices (MPI_Comm comm, std::span< const std::int64_t > owned_indices, std::span< const std::int64_t > ghost_indices, std::span< const int > ghost_owners, int num_threads) |
| Take a set of distributed input global indices, including ghosts, and determine the new global indices after remapping. | |
| std::vector< std::int64_t > | compute_local_to_global (std::span< const std::int64_t > global, std::span< const std::int32_t > local) |
| std::vector< std::int32_t > | compute_local_to_local (std::span< const std::int64_t > local0_to_global, std::span< const std::int64_t > local1_to_global) |
| Compute a local0-to-local1 map from two local-to-global maps with common global indices. | |
Tools for distributed graphs
| std::vector< std::int64_t > compute_ghost_indices | ( | MPI_Comm | comm, |
| std::span< const std::int64_t > | owned_indices, | ||
| std::span< const std::int64_t > | ghost_indices, | ||
| std::span< const int > | ghost_owners, | ||
| int | num_threads ) |
Take a set of distributed input global indices, including ghosts, and determine the new global indices after remapping.
Each rank receive 'input' global indices [i0, i1, ..., i(m-1), im, ..., i(n-1)], where the first m indices are owned by the caller and the remainder are 'ghosts' indices that are owned by other ranks.
Each rank assigns new global indices to its owned indices. The new index is the rank offset (scan of the number of indices owned by the lower rank processes, typically computed using MPI_Exscan with MPI_SUM), i.e. i1 -> offset + 1, i2 -> offset + 2, etc. Ghost indices are number by the remote owning processes. The function returns the new ghost global indices by retrieving the new indices from the owning ranks.
| [in] | comm | MPI communicator |
| [in] | owned_indices | List of owned global indices. It should not contain duplicates, and these indices must not appear in owned_indices on other ranks. |
| [in] | ghost_indices | List of ghost global indices. |
| [in] | ghost_owners | The owning rank for each entry in ghost_indices. |
| [in] | num_threads | Number of threads to use. |
| std::vector< std::int64_t > compute_local_to_global | ( | std::span< const std::int64_t > | global, |
| std::span< const std::int32_t > | local ) |
Given an adjacency list with global, possibly non-contiguous, link indices and a local adjacency list with contiguous link indices starting from zero, compute a local-to-global map for the links. Both adjacency lists must have the same shape.
| [in] | global | Adjacency list with global link indices. |
| [in] | local | Adjacency list with local, contiguous link indices. |
| std::vector< std::int32_t > compute_local_to_local | ( | std::span< const std::int64_t > | local0_to_global, |
| std::span< const std::int64_t > | local1_to_global ) |
Compute a local0-to-local1 map from two local-to-global maps with common global indices.
| [in] | local0_to_global | Map from local0 indices to global indices |
| [in] | local1_to_global | Map from local1 indices to global indices |
| std::tuple< graph::AdjacencyList< std::int64_t >, std::vector< int >, std::vector< std::int64_t >, std::vector< int > > distribute | ( | MPI_Comm | comm, |
| const graph::AdjacencyList< std::int64_t > & | list, | ||
| const graph::AdjacencyList< std::int32_t > & | destinations ) |
Distribute adjacency list nodes to destination ranks.
The global index of the ith node (row) in list is assumed to be i plus the offset for this rank, i.e. the number of nodes owned by lower-ranked processes.
| [in] | comm | MPI Communicator that list/destinations are distributed across. |
| [in] | list | The adjacency list to distribute. |
| [in] | destinations | Destination rank(s) for the ith node in list. The first rank is the 'owner' of the node; any further ranks receive it as a ghost. |
| std::tuple< std::vector< std::int64_t >, std::vector< int >, std::vector< std::int64_t >, std::vector< int > > distribute | ( | MPI_Comm | comm, |
| std::span< const std::int64_t > | list, | ||
| std::array< std::size_t, 2 > | shape, | ||
| const graph::AdjacencyList< std::int32_t > & | destinations ) |
Distribute rows of a fixed-degree array to destination ranks.
The global index of the ith row of list is assumed to be i plus the offset for this rank, i.e. the number of rows owned by lower-ranked processes.
| [in] | comm | MPI Communicator that list/destinations are distributed across. |
| [in] | list | Constant degree (valency) data, flattened row-major with shape shape. |
| [in] | shape | Shape (num_nodes, degree) of list. |
| [in] | destinations | Destination rank(s) for the ith row of list. The first rank is the 'owner' of the row; any further ranks receive it as a ghost. |