5#ifndef GKO_PUBLIC_CORE_DISTRIBUTED_COLLECTIVE_COMMUNICATOR_HPP_
6#define GKO_PUBLIC_CORE_DISTRIBUTED_COLLECTIVE_COMMUNICATOR_HPP_
9#include <ginkgo/config.hpp>
15#include <ginkgo/core/base/mpi.hpp>
16#include <ginkgo/core/distributed/index_map_fwd.hpp>
20namespace experimental {
36 [[nodiscard]]
const communicator& get_base_communicator()
const;
54 template <
typename SendType,
typename RecvType>
56 const SendType* send_buffer,
57 RecvType* recv_buffer)
const;
64 const void* send_buffer, MPI_Datatype send_type,
65 void* recv_buffer, MPI_Datatype recv_type)
const;
75 [[nodiscard]]
virtual std::unique_ptr<CollectiveCommunicator>
77 const distributed::index_map_variant& imap)
const = 0;
86 [[nodiscard]]
virtual std::unique_ptr<CollectiveCommunicator>
106 virtual request i_all_to_all_v_impl(std::shared_ptr<const Executor> exec,
107 const void* send_buffer,
108 MPI_Datatype send_type,
110 MPI_Datatype recv_type)
const = 0;
117template <
typename SendType,
typename RecvType>
119 std::shared_ptr<const Executor> exec,
const SendType* send_buffer,
120 RecvType* recv_buffer)
const
Definition collective_communicator.hpp:30
virtual std::unique_ptr< CollectiveCommunicator > create_inverse() const =0
virtual comm_index_type get_recv_size() const =0
request i_all_to_all_v(std::shared_ptr< const Executor > exec, const void *send_buffer, MPI_Datatype send_type, void *recv_buffer, MPI_Datatype recv_type) const
request i_all_to_all_v(std::shared_ptr< const Executor > exec, const SendType *send_buffer, RecvType *recv_buffer) const
Definition collective_communicator.hpp:118
virtual comm_index_type get_send_size() const =0
virtual std::unique_ptr< CollectiveCommunicator > create_with_same_type(communicator base, const distributed::index_map_variant &imap) const =0
The Ginkgo namespace.
Definition abstract_factory.hpp:20