34#ifndef MPI_COMMUNICATOR_H
35#define MPI_COMMUNICATOR_H
77 virtual std::vector<std::string>
gather(
const std::string &
str) = 0;
78 virtual std::vector<int>
gather(std::vector<int> &values) = 0;
79 virtual std::vector<float>
gather(std::vector<float> &values) = 0;
80 virtual std::vector<double>
gather(std::vector<double> &values) = 0;
81 virtual std::vector<unsigned long long>
gather(std::vector<unsigned long long> &values) = 0;
97 virtual void broadcast(std::vector<int> &values) = 0;
98 virtual void broadcast(std::vector<float> &values) = 0;
99 virtual void broadcast(std::vector<double> &values) = 0;
100 virtual void broadcast(std::vector<long int> &values) = 0;
An abstract class for communication between processes in parallel computation.
virtual void broadcast(float &value)=0
virtual int getNumberOfProcessesInBundle(int bundle) const =0
virtual std::vector< unsigned long long > gather(std::vector< unsigned long long > &values)=0
virtual double reduceSum(double quantityPerProcess) const =0
virtual std::vector< std::string > gather(const std::string &str)=0
virtual void allReduceSum(std::vector< double > &svalues)=0
virtual void sendSerializedObject(std::stringstream &ss, int target)=0
Communicator & operator=(const Communicator &rhs)=delete
virtual void broadcast(std::vector< double > &values)=0
static std::shared_ptr< Communicator > instance
virtual void resetRequests()=0
virtual int getProcessID() const =0
virtual void allGather(std::vector< int > &svalues, std::vector< int > &rvalues)=0
virtual void sendNonBlocking(real *sbuf, int count_s, int destinationRank)=0
virtual std::vector< float > gather(std::vector< float > &values)=0
virtual int getNumberOfBundles() const =0
virtual ~Communicator()=default
virtual void allGather(std::vector< double > &svalues, std::vector< double > &rvalues)=0
static std::mutex instantiation_mutex
virtual void allGather(std::vector< uint > &svalues, std::vector< uint > &rvalues)=0
virtual std::vector< int > gather(std::vector< int > &values)=0
virtual bool isRoot() const =0
virtual void allReduceSum(std::vector< uint > &svalues)=0
virtual void receiveNonBlocking(real *rbuf, int count_r, int sourceRank)=0
virtual int getBundleRoot() const =0
virtual void broadcast(int &value)=0
virtual void receiveSend(uint *buffer_receive, int size_buffer_recv, int neighbor_rank_recv, const uint *buffer_send, int size_buffer_send, int neighbor_rank_send) const =0
virtual void allGather(std::vector< float > &svalues, std::vector< float > &rvalues)=0
virtual void broadcast(long int &value)=0
static std::shared_ptr< Communicator > getInstance()
virtual void abort(int errorcode)=0
virtual void allGather(std::vector< unsigned long long > &svalues, std::vector< unsigned long long > &rvalues)=0
virtual void allReduceSum(std::vector< float > &svalues)=0
virtual void broadcast(double &value)=0
virtual int mapCudaDevicesOnHosts(const std::vector< unsigned int > &devices, int numberOfDevices) const =0
virtual int getBundleID() const =0
virtual int getNumberOfProcesses() const =0
virtual std::vector< double > gather(std::vector< double > &values)=0
virtual void * getNativeCommunicator()=0
virtual void send(real *sbuf, int count_s, int nb_rank) const =0
virtual void broadcast(std::vector< int > &values)=0
virtual int getProcessID(int bundle, int rank) const =0
virtual void send(real *sbuf, int count_s, int destinationRank)=0
virtual void receiveSerializedObject(std::stringstream &ss, int source)=0
virtual int getProcessRoot() const =0
virtual void broadcast(std::vector< long int > &values)=0
Communicator(const Communicator &)=delete
virtual int getRoot() const =0
virtual void broadcast(std::vector< float > &values)=0
virtual void receiveSend(real *buffer_send, int size_buffer_send, real *buffer_receive, int size_buffer_recv, int neighbor_rank) const =0
std::shared_ptr< T > SPtr