54 void Init(
int argc,
char **argv);
106 void Send(
double val,
int dst,
int tag)
const;
114 void Send(
float val,
int dst,
int tag)
const;
122 void Send(
int val,
int dst,
int tag)
const;
130 void Send(
size_t val,
int dst,
int tag)
const;
138 void Send(std::vector<double> &vec,
int dst,
int tag)
const;
146 void Send(std::vector<float> &vec,
int dst,
int tag)
const;
154 void Send(std::vector<int> &vec,
int dst,
int tag)
const;
162 void Send(std::vector<size_t> &vec,
int dst,
int tag)
const;
298 void Isend(
double val,
int dst,
int tag);
312 void Isend(
float val,
int dst,
int tag);
326 void Isend(
int val,
int dst,
int tag);
340 void Isend(
size_t val,
int dst,
int tag);
354 void Isend(
const std::vector<double> &vec,
int dst,
int tag);
368 void Isend(
const std::vector<float> &vec,
int dst,
int tag);
382 void Isend(
const std::vector<int> &vec,
int dst,
int tag);
396 void Isend(
const std::vector<size_t> &vec,
int dst,
int tag);
441 void Irecv(
double val,
int src,
int tag);
454 void Irecv(
float val,
int src,
int tag);
467 void Irecv(
int val,
int src,
int tag);
480 void Irecv(
size_t val,
int src,
int tag);
493 void Irecv(std::vector<double> &vec,
int src,
int tag);
506 void Irecv(std::vector<float> &vec,
int src,
int tag);
519 void Irecv(std::vector<int> &vec,
int src,
int tag);
532 void Irecv(std::vector<size_t> &vec,
int src,
int tag);
715 void Bcast(
double &val,
int root)
const;
723 void Bcast(
float &val,
int root)
const;
731 void Bcast(
int &val,
int root)
const;
739 void Bcast(
size_t &val,
int root)
const;
763 void Bcast(std::vector<double> &vec,
int root)
const;
771 void Bcast(std::vector<float> &vec,
int root)
const;
779 void Bcast(std::vector<int> &vec,
int root)
const;
787 void Bcast(std::vector<size_t> &vec,
int root)
const;
824 void Gather(std::vector<double> &sendvec, std::vector<double> &recvvec,
834 void Gather(std::vector<float> &sendvec, std::vector<float> &recvvec,
844 void Gather(std::vector<int> &sendvec, std::vector<int> &recvvec,
854 void Gather(std::vector<size_t> &sendvec, std::vector<size_t> &recvvec,
892 void Scatter(std::vector<double> &sendvec, std::vector<double> &recvvec,
902 void Scatter(std::vector<float> &sendvec, std::vector<float> &recvvec,
912 void Scatter(std::vector<int> &sendvec, std::vector<int> &recvvec,
922 void Scatter(std::vector<size_t> &sendvec, std::vector<size_t> &recvvec,
bool Initialized() const
Indicates whether MPI_Init has been called.
void Barrier() const
Blocks until all processes in the communicator have reached this routine.
void Irecv(std::vector< size_t > &vec, int src, int tag)
MPI_Irecv for std::vector. Performs a nonblocking recv.
void Gather(std::vector< size_t > &sendvec, std::vector< size_t > &recvvec, int root) const
MPI_Gather, Gathers vector from all processes The data is evenly divided and transmitted to each proc...
void Isend(const std::vector< size_t > &vec, int dst, int tag)
MPI_Isend for std::vector. Performs a nonblocking send. Requests are stored internally....
void Isend(const std::vector< int > &vec, int dst, int tag)
MPI_Isend for std::vector. Performs a nonblocking send. Requests are stored internally....
MPI_Status Recv(double val, int src, int tag) const
MPI_Recv for scalar. Performs a blocking recv.
void Gather(std::vector< double > &sendvec, std::vector< double > &recvvec, int root) const
MPI_Gather, Gathers vector from all processes The data is evenly divided and transmitted to each proc...
void Bcast(std::vector< float > &vec, int root) const
MPI_Bcast, Broadcasts a message from the process with rank root to all other processes.
void Gather(monolish::vector< float > &sendvec, monolish::vector< float > &recvvec, int root) const
MPI_Gather, Gathers vector from all processes The data is evenly divided and transmitted to each proc...
void set_comm(MPI_Comm external_comm)
set communicator
size_t Allreduce_prod(size_t val) const
MPI_Allreduce (MPI_PROD) for scalar. Combines values from all processes and distributes the result ba...
void Waitall()
Waits for all communications to complete.
void Isend(float val, int dst, int tag)
MPI_Isend for scalar. Performs a nonblocking send. Requests are stored internally....
void Irecv(double val, int src, int tag)
MPI_Irecv for scalar. Performs a nonblocking recv.
void Bcast(monolish::vector< double > &vec, int root) const
MPI_Bcast, Broadcasts a message from the process with rank root to all other processes.
void Bcast(double &val, int root) const
MPI_Bcast, Broadcasts a message from the process with rank root to all other processes.
double Allreduce_max(double val) const
MPI_Allreduce (MPI_MAX) for scalar. Combines values from all processes and distributes the result bac...
void Isend(size_t val, int dst, int tag)
MPI_Isend for scalar. Performs a nonblocking send. Requests are stored internally....
void Bcast(float &val, int root) const
MPI_Bcast, Broadcasts a message from the process with rank root to all other processes.
int Allreduce_prod(int val) const
MPI_Allreduce (MPI_PROD) for scalar. Combines values from all processes and distributes the result ba...
void Irecv(size_t val, int src, int tag)
MPI_Irecv for scalar. Performs a nonblocking recv.
void Scatter(std::vector< double > &sendvec, std::vector< double > &recvvec, int root) const
MPI_Scatter, Sends data from one task to all tasks. The data is evenly divided and transmitted to eac...
void Isend(int val, int dst, int tag)
MPI_Isend for scalar. Performs a nonblocking send. Requests are stored internally....
float Allreduce_min(float val) const
MPI_Allreduce (MPI_MIN) for scalar. Combines values from all processes and distributes the result bac...
size_t Allreduce(size_t val) const
MPI_Allreduce (MPI_SUM) for scalar. Combines values from all processes and distributes the result bac...
float Allreduce(float val) const
MPI_Allreduce (MPI_SUM) for scalar. Combines values from all processes and distributes the result bac...
MPI_Status Recv(std::vector< int > &vec, int src, int tag) const
MPI_Recv for std::vector. Performs a blocking recv.
void Isend(const monolish::vector< float > &vec, int dst, int tag)
MPI_Isend for monolish::vector. Performs a nonblocking send. Requests are stored internally....
void Scatter(std::vector< size_t > &sendvec, std::vector< size_t > &recvvec, int root) const
MPI_Scatter, Sends data from one task to all tasks. The data is evenly divided and transmitted to eac...
void Isend(const monolish::vector< double > &vec, int dst, int tag)
MPI_Isend for monolish::vector. Performs a nonblocking send. Requests are stored internally....
static comm & get_instance()
void Send(size_t val, int dst, int tag) const
MPI_Send for scalar. Performs a blocking send.
MPI_Comm my_comm
MPI communicator, MPI_COMM_WORLD.
void Gather(std::vector< int > &sendvec, std::vector< int > &recvvec, int root) const
MPI_Gather, Gathers vector from all processes The data is evenly divided and transmitted to each proc...
void Send(std::vector< double > &vec, int dst, int tag) const
MPI_Send for std::vector. Performs a blocking send.
void Bcast(std::vector< double > &vec, int root) const
MPI_Bcast, Broadcasts a message from the process with rank root to all other processes.
size_t Allreduce_min(size_t val) const
MPI_Allreduce (MPI_MIN) for scalar. Combines values from all processes and distributes the result bac...
MPI_Status Recv(std::vector< size_t > &vec, int src, int tag) const
MPI_Recv for std::vector. Performs a blocking recv.
void Scatter(monolish::vector< float > &sendvec, monolish::vector< float > &recvvec, int root) const
MPI_Scatter, Sends data from one task to all tasks. The data is evenly divided and transmitted to eac...
void Irecv(std::vector< double > &vec, int src, int tag)
MPI_Irecv for std::vector. Performs a nonblocking recv.
void Irecv(int val, int src, int tag)
MPI_Irecv for scalar. Performs a nonblocking recv.
void Bcast(size_t &val, int root) const
MPI_Bcast, Broadcasts a message from the process with rank root to all other processes.
double Allreduce(double val) const
MPI_Allreduce (MPI_SUM) for scalar. Combines values from all processes and distributes the result bac...
void Init(int argc, char **argv)
Initialize the MPI execution environment.
int Allreduce_sum(int val) const
MPI_Allreduce (MPI_SUM) for scalar. Combines values from all processes and distributes the result bac...
void Send(std::vector< float > &vec, int dst, int tag) const
MPI_Send for std::vector. Performs a blocking send.
void Gather(monolish::vector< double > &sendvec, monolish::vector< double > &recvvec, int root) const
MPI_Gather, Gathers vector from all processes The data is evenly divided and transmitted to each proc...
void Bcast(monolish::vector< float > &vec, int root) const
MPI_Bcast, Broadcasts a message from the process with rank root to all other processes.
void Irecv(std::vector< float > &vec, int src, int tag)
MPI_Irecv for std::vector. Performs a nonblocking recv.
MPI_Status Recv(size_t val, int src, int tag) const
MPI_Recv for scalar. Performs a blocking recv.
double Allreduce_prod(double val) const
MPI_Allreduce (MPI_PROD) for scalar. Combines values from all processes and distributes the result ba...
void Isend(double val, int dst, int tag)
MPI_Isend for scalar. Performs a nonblocking send. Requests are stored internally....
void Send(std::vector< int > &vec, int dst, int tag) const
MPI_Send for std::vector. Performs a blocking send.
double Allreduce_min(double val) const
MPI_Allreduce (MPI_MIN) for scalar. Combines values from all processes and distributes the result bac...
MPI_Status Recv(float val, int src, int tag) const
MPI_Recv for scalar. Performs a blocking recv.
void Irecv(float val, int src, int tag)
MPI_Irecv for scalar. Performs a nonblocking recv.
int Allreduce_max(int val) const
MPI_Allreduce (MPI_MAX) for scalar. Combines values from all processes and distributes the result bac...
void Send(float val, int dst, int tag) const
MPI_Send for scalar. Performs a blocking send.
int Allreduce(int val) const
MPI_Allreduce (MPI_SUM) for scalar. Combines values from all processes and distributes the result bac...
void Bcast(std::vector< size_t > &vec, int root) const
MPI_Bcast, Broadcasts a message from the process with rank root to all other processes.
void Send(monolish::vector< double > &vec, int dst, int tag) const
MPI_Send for monolish::vector. Performs a blocking send.
void Send(int val, int dst, int tag) const
MPI_Send for scalar. Performs a blocking send.
MPI_Status Recv(monolish::vector< double > &vec, int src, int tag) const
MPI_Recv for monolish::vector. Performs a blocking recv.
float Allreduce_max(float val) const
MPI_Allreduce (MPI_MAX) for scalar. Combines values from all processes and distributes the result bac...
void Send(double val, int dst, int tag) const
MPI_Send for scalar. Performs a blocking send.
int get_size()
get the number of processes
void Send(monolish::vector< float > &vec, int dst, int tag) const
MPI_Send for monolish::vector. Performs a blocking send.
int Allreduce_min(int val) const
MPI_Allreduce (MPI_MIN) for scalar. Combines values from all processes and distributes the result bac...
comm(const comm &)=delete
MPI_Comm get_comm() const
get communicator
void Finalize()
Terminates MPI execution environment.
void Send(std::vector< size_t > &vec, int dst, int tag) const
MPI_Send for std::vector. Performs a blocking send.
void Isend(const std::vector< double > &vec, int dst, int tag)
MPI_Isend for std::vector. Performs a nonblocking send. Requests are stored internally....
void Bcast(int &val, int root) const
MPI_Bcast, Broadcasts a message from the process with rank root to all other processes.
size_t Allreduce_max(size_t val) const
MPI_Allreduce (MPI_MAX) for scalar. Combines values from all processes and distributes the result bac...
MPI_Status Recv(int val, int src, int tag) const
MPI_Recv for scalar. Performs a blocking recv.
MPI_Status Recv(std::vector< float > &vec, int src, int tag) const
MPI_Recv for std::vector. Performs a blocking recv.
float Allreduce_prod(float val) const
MPI_Allreduce (MPI_PROD) for scalar. Combines values from all processes and distributes the result ba...
size_t Allreduce_sum(size_t val) const
MPI_Allreduce (MPI_SUM) for scalar. Combines values from all processes and distributes the result bac...
void Scatter(std::vector< int > &sendvec, std::vector< int > &recvvec, int root) const
MPI_Scatter, Sends data from one task to all tasks. The data is evenly divided and transmitted to eac...
std::vector< MPI_Request > requests
double Allreduce_sum(double val) const
MPI_Allreduce (MPI_SUM) for scalar. Combines values from all processes and distributes the result bac...
void Init()
Initialize the MPI execution environment.
comm & operator=(comm &&)=delete
int get_rank()
get my rank number
void Irecv(monolish::vector< float > &vec, int src, int tag)
MPI_Irecv for monolish::vector. Performs a nonblocking recv.
MPI_Status Recv(monolish::vector< float > &vec, int src, int tag) const
MPI_Recv for monolish::vector. Performs a blocking recv.
void Irecv(std::vector< int > &vec, int src, int tag)
MPI_Irecv for std::vector. Performs a nonblocking recv.
void Scatter(std::vector< float > &sendvec, std::vector< float > &recvvec, int root) const
MPI_Scatter, Sends data from one task to all tasks. The data is evenly divided and transmitted to eac...
void Bcast(std::vector< int > &vec, int root) const
MPI_Bcast, Broadcasts a message from the process with rank root to all other processes.
void Gather(std::vector< float > &sendvec, std::vector< float > &recvvec, int root) const
MPI_Gather, Gathers vector from all processes The data is evenly divided and transmitted to each proc...
void Scatter(monolish::vector< double > &sendvec, monolish::vector< double > &recvvec, int root) const
MPI_Scatter, Sends data from one task to all tasks. The data is evenly divided and transmitted to eac...
comm & operator=(const comm &)=delete
MPI_Status Recv(std::vector< double > &vec, int src, int tag) const
MPI_Recv for std::vector. Performs a blocking recv.
float Allreduce_sum(float val) const
MPI_Allreduce (MPI_SUM) for scalar. Combines values from all processes and distributes the result bac...
void Isend(const std::vector< float > &vec, int dst, int tag)
MPI_Isend for std::vector. Performs a nonblocking send. Requests are stored internally....
void Irecv(monolish::vector< double > &vec, int src, int tag)
MPI_Irecv for monolish::vector. Performs a nonblocking recv.
struct ompi_communicator_t * MPI_Comm