 |
Ginkgo
Generated from pipelines/1706354773 branch based on develop. Ginkgo version 1.10.0
A numerical linear algebra library targeting many-core architectures
|
5 #ifndef GKO_PUBLIC_CORE_DISTRIBUTED_NEIGHBORHOOD_COMMUNICATOR_HPP_
6 #define GKO_PUBLIC_CORE_DISTRIBUTED_NEIGHBORHOOD_COMMUNICATOR_HPP_
9 #include <ginkgo/config.hpp>
15 #include <ginkgo/core/base/mpi.hpp>
16 #include <ginkgo/core/distributed/collective_communicator.hpp>
17 #include <ginkgo/core/distributed/index_map.hpp>
21 namespace experimental {
66 template <
typename LocalIndexType,
typename GlobalIndexType>
73 const distributed::index_map_variant& imap)
const override;
81 [[nodiscard]] std::unique_ptr<CollectiveCommunicator>
create_inverse()
115 request i_all_to_all_v_impl(std::shared_ptr<const Executor> exec,
116 const void* send_buffer, MPI_Datatype send_type,
118 MPI_Datatype recv_type)
const override;
123 std::vector<comm_index_type> send_sizes_;
124 std::vector<comm_index_type> send_offsets_;
125 std::vector<comm_index_type> recv_sizes_;
126 std::vector<comm_index_type> recv_offsets_;
136 #endif // GKO_PUBLIC_CORE_DISTRIBUTED_NEIGHBORHOOD_COMMUNICATOR_HPP_
comm_index_type get_send_size() const override
Get the total number of sent elements this communication patterns expects.
request i_all_to_all_v(std::shared_ptr< const Executor > exec, const SendType *send_buffer, RecvType *recv_buffer) const
Non-blocking all-to-all communication.
Definition: collective_communicator.hpp:118
The request class is a light, move-only wrapper around the MPI_Request handle.
Definition: mpi.hpp:327
Interface for a collective communicator.
Definition: collective_communicator.hpp:30
comm_index_type get_recv_size() const override
Get the total number of received elements this communication patterns expects.
The Ginkgo namespace.
Definition: abstract_factory.hpp:20
A thin wrapper of MPI_Comm that supports most MPI calls.
Definition: mpi.hpp:416
int comm_index_type
Index type for enumerating processes in a distributed application.
Definition: types.hpp:967
std::unique_ptr< CollectiveCommunicator > create_inverse() const override
Creates the inverse NeighborhoodCommunicator by switching sources and destinations.
A CollectiveCommunicator that uses a neighborhood topology.
Definition: neighborhood_communicator.hpp:33
friend bool operator==(const NeighborhoodCommunicator &a, const NeighborhoodCommunicator &b)
Compares two communicators for equality locally.
std::unique_ptr< CollectiveCommunicator > create_with_same_type(communicator base, const distributed::index_map_variant &imap) const override
Creates a new CollectiveCommunicator with the same dynamic type.
This class defines mappings between global and local indices.
Definition: index_map.hpp:68
friend bool operator!=(const NeighborhoodCommunicator &a, const NeighborhoodCommunicator &b)
Compares two communicators for inequality.