Classes | Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
PLMD::Communicator Class Reference

Class containing wrappers to MPI. More...

#include <Communicator.h>

Inheritance diagram for PLMD::Communicator:
Inheritance graph
[legend]

Classes

struct  ConstData
 Const version of Communicator::Data See Communicator::Data documentation. More...
 
struct  Data
 Structure defining a buffer for MPI. More...
 
class  Request
 Wrapper class for MPI_Request. More...
 
class  Status
 Wrapper class for MPI_Status. More...
 

Public Member Functions

 Communicator ()
 Default constructor. More...
 
 Communicator (const Communicator &)
 Copy constructor. More...
 
virtual ~Communicator ()
 Destructor. More...
 
void Abort (int code)
 Wrapper to MPI_Abort. More...
 
void Allgather (ConstData in, Data out)
 Wrapper for MPI_Allgather (data struct) More...
 
template<class T , class S >
void Allgather (const T *sendbuf, int sendcount, S *recvbuf, int recvcount)
 Wrapper for MPI_Allgatherv (pointer) More...
 
template<class T , class S >
void Allgather (const T &sendbuf, S &recvbuf)
 Wrapper for MPI_Allgatherv (reference) More...
 
void Allgatherv (ConstData in, Data out, const int *, const int *)
 Wrapper for MPI_Allgatherv (data struct) More...
 
template<class T , class S >
void Allgatherv (const T *sendbuf, int sendcount, S *recvbuf, const int *recvcounts, const int *displs)
 Wrapper for MPI_Allgatherv (pointer) More...
 
template<class T , class S >
void Allgatherv (const T &sendbuf, S &recvbuf, const int *recvcounts, const int *displs)
 Wrapper for MPI_Allgatherv (reference) More...
 
void Barrier () const
 Wrapper to MPI_Barrier. More...
 
void Bcast (Data, int)
 Wrapper for MPI_Bcast (data struct) More...
 
template<class T >
void Bcast (T *buf, int count, int root)
 Wrapper for MPI_Bcast (pointer) More...
 
template<class T >
void Bcast (T &buf, int root)
 Wrapper for MPI_Bcast (reference) More...
 
MPI_CommGet_comm ()
 Reference to MPI communicator. More...
 
int Get_rank () const
 Obtain the rank of the present process. More...
 
int Get_size () const
 Obtain the number of processes. More...
 
Request Isend (ConstData, int, int)
 Wrapper for MPI_Isend (data struct) More...
 
template<class T >
Request Isend (const T *buf, int count, int source, int tag)
 Wrapper for MPI_Isend (pointer) More...
 
template<class T >
Request Isend (const T &buf, int source, int tag)
 Wrapper for MPI_Isend (reference) More...
 
void Max (Data)
 Wrapper for MPI_Allreduce with MPI_MAX (data struct) More...
 
template<class T >
void Max (T *buf, int count)
 Wrapper for MPI_Allreduce with MPI_MAX (pointer) More...
 
template<class T >
void Max (T &buf)
 Wrapper for MPI_Allreduce with MPI_MAX (reference) More...
 
void Min (Data)
 Wrapper for MPI_Allreduce with MPI_MIN (data struct) More...
 
template<class T >
void Min (T *buf, int count)
 Wrapper for MPI_Allreduce with MPI_MIN (pointer) More...
 
template<class T >
void Min (T &buf)
 Wrapper for MPI_Allreduce with MPI_MIN (reference) More...
 
Communicatoroperator= (const Communicator &)
 Assignment operator. More...
 
void Prod (Data)
 Wrapper for MPI_Allreduce with MPI_PROD (data struct) More...
 
template<class T >
void Prod (T *buf, int count)
 Wrapper for MPI_Allreduce with MPI_PROD (pointer) More...
 
template<class T >
void Prod (T &buf)
 Wrapper for MPI_Allreduce with MPI_PROD (reference) More...
 
void Recv (Data, int, int, Status &s=StatusIgnore)
 Wrapper for MPI_Recv (data struct) More...
 
template<class T >
void Recv (T *buf, int count, int source, int tag, Status &s=StatusIgnore)
 Wrapper for MPI_Recv (pointer) More...
 
template<class T >
void Recv (T &buf, int source, int tag, Status &s=StatusIgnore)
 Wrapper for MPI_Recv (reference) More...
 
void Set_comm (MPI_Comm comm)
 Set from a real MPI communicator. More...
 
void Set_comm (void *comm)
 Set from a pointer to a real MPI communicator (C). More...
 
void Set_fcomm (void *comm)
 Set from a pointer to a real MPI communicator (FORTRAN). More...
 
void Split (int, int, Communicator &) const
 Wrapper to MPI_Comm_split. More...
 
void Sum (Data)
 Wrapper for MPI_Allreduce with MPI_SUM (data struct) More...
 
template<class T >
void Sum (T *buf, int count)
 Wrapper for MPI_Allreduce with MPI_SUM (pointer) More...
 
template<class T >
void Sum (T &buf)
 Wrapper for MPI_Allreduce with MPI_SUM (reference) More...
 

Static Public Member Functions

static bool initialized ()
 Tests if MPI library is initialized. More...
 

Static Public Attributes

static Status StatusIgnore
 Special status used when status should be ignored. More...
 

Private Member Functions

template<>
MPI_Datatype getMPIType ()
 
template<>
MPI_Datatype getMPIType ()
 
template<>
MPI_Datatype getMPIType ()
 
template<>
MPI_Datatype getMPIType ()
 
template<>
MPI_Datatype getMPIType ()
 
template<>
MPI_Datatype getMPIType ()
 

Static Private Member Functions

template<class T >
static MPI_Datatype getMPIType ()
 Function returning the MPI type. More...
 

Private Attributes

MPI_Comm communicator
 Communicator. More...
 

Detailed Description

Class containing wrappers to MPI.

All the MPI related stuff is relegated here.

Constructor & Destructor Documentation

◆ Communicator() [1/2]

PLMD::Communicator::Communicator ( )

Default constructor.

◆ Communicator() [2/2]

PLMD::Communicator::Communicator ( const Communicator pc)

Copy constructor.

It effectively "clones" the communicator, providing a new one acting on the same group

◆ ~Communicator()

PLMD::Communicator::~Communicator ( )
virtual

Destructor.

Member Function Documentation

◆ Abort()

void PLMD::Communicator::Abort ( int  code)

Wrapper to MPI_Abort.

Parameters
codeError code

◆ Allgather() [1/3]

void PLMD::Communicator::Allgather ( ConstData  in,
Data  out 
)

Wrapper for MPI_Allgather (data struct)

◆ Allgather() [2/3]

template<class T , class S >
void PLMD::Communicator::Allgather ( const T *  sendbuf,
int  sendcount,
S *  recvbuf,
int  recvcount 
)
inline

Wrapper for MPI_Allgatherv (pointer)

◆ Allgather() [3/3]

template<class T , class S >
void PLMD::Communicator::Allgather ( const T &  sendbuf,
S &  recvbuf 
)
inline

Wrapper for MPI_Allgatherv (reference)

◆ Allgatherv() [1/3]

void PLMD::Communicator::Allgatherv ( ConstData  in,
Data  out,
const int *  recvcounts,
const int *  displs 
)

Wrapper for MPI_Allgatherv (data struct)

◆ Allgatherv() [2/3]

template<class T , class S >
void PLMD::Communicator::Allgatherv ( const T *  sendbuf,
int  sendcount,
S *  recvbuf,
const int *  recvcounts,
const int *  displs 
)
inline

Wrapper for MPI_Allgatherv (pointer)

◆ Allgatherv() [3/3]

template<class T , class S >
void PLMD::Communicator::Allgatherv ( const T &  sendbuf,
S &  recvbuf,
const int *  recvcounts,
const int *  displs 
)
inline

Wrapper for MPI_Allgatherv (reference)

◆ Barrier()

void PLMD::Communicator::Barrier ( ) const

Wrapper to MPI_Barrier.

◆ Bcast() [1/3]

void PLMD::Communicator::Bcast ( Data  data,
int  root 
)

Wrapper for MPI_Bcast (data struct)

◆ Bcast() [2/3]

template<class T >
void PLMD::Communicator::Bcast ( T *  buf,
int  count,
int  root 
)
inline

Wrapper for MPI_Bcast (pointer)

◆ Bcast() [3/3]

template<class T >
void PLMD::Communicator::Bcast ( T &  buf,
int  root 
)
inline

Wrapper for MPI_Bcast (reference)

◆ Get_comm()

MPI_Comm & PLMD::Communicator::Get_comm ( )

Reference to MPI communicator.

◆ Get_rank()

int PLMD::Communicator::Get_rank ( ) const

Obtain the rank of the present process.

◆ Get_size()

int PLMD::Communicator::Get_size ( ) const

Obtain the number of processes.

◆ getMPIType() [1/7]

template<class T >
static MPI_Datatype PLMD::Communicator::getMPIType ( )
staticprivate

Function returning the MPI type.

You can use it to access to the MPI type of a C++ type, e.g. MPI_Datatype type=getMPIType<double>();

◆ getMPIType() [2/7]

template<>
MPI_Datatype PLMD::Communicator::getMPIType ( )
private

◆ getMPIType() [3/7]

template<>
MPI_Datatype PLMD::Communicator::getMPIType ( )
private

◆ getMPIType() [4/7]

template<>
MPI_Datatype PLMD::Communicator::getMPIType ( )
private

◆ getMPIType() [5/7]

template<>
MPI_Datatype PLMD::Communicator::getMPIType ( )
private

◆ getMPIType() [6/7]

template<>
MPI_Datatype PLMD::Communicator::getMPIType ( )
private

◆ getMPIType() [7/7]

template<>
MPI_Datatype PLMD::Communicator::getMPIType ( )
private

◆ initialized()

bool PLMD::Communicator::initialized ( )
static

Tests if MPI library is initialized.

◆ Isend() [1/3]

Communicator::Request PLMD::Communicator::Isend ( ConstData  data,
int  source,
int  tag 
)

Wrapper for MPI_Isend (data struct)

◆ Isend() [2/3]

template<class T >
Request PLMD::Communicator::Isend ( const T *  buf,
int  count,
int  source,
int  tag 
)
inline

Wrapper for MPI_Isend (pointer)

◆ Isend() [3/3]

template<class T >
Request PLMD::Communicator::Isend ( const T &  buf,
int  source,
int  tag 
)
inline

Wrapper for MPI_Isend (reference)

◆ Max() [1/3]

void PLMD::Communicator::Max ( Data  data)

Wrapper for MPI_Allreduce with MPI_MAX (data struct)

◆ Max() [2/3]

template<class T >
void PLMD::Communicator::Max ( T *  buf,
int  count 
)
inline

Wrapper for MPI_Allreduce with MPI_MAX (pointer)

◆ Max() [3/3]

template<class T >
void PLMD::Communicator::Max ( T &  buf)
inline

Wrapper for MPI_Allreduce with MPI_MAX (reference)

◆ Min() [1/3]

void PLMD::Communicator::Min ( Data  data)

Wrapper for MPI_Allreduce with MPI_MIN (data struct)

◆ Min() [2/3]

template<class T >
void PLMD::Communicator::Min ( T *  buf,
int  count 
)
inline

Wrapper for MPI_Allreduce with MPI_MIN (pointer)

◆ Min() [3/3]

template<class T >
void PLMD::Communicator::Min ( T &  buf)
inline

Wrapper for MPI_Allreduce with MPI_MIN (reference)

◆ operator=()

Communicator & PLMD::Communicator::operator= ( const Communicator pc)

Assignment operator.

It effectively "clones" the communicator, providing a new one acting on the same group

◆ Prod() [1/3]

void PLMD::Communicator::Prod ( Data  data)

Wrapper for MPI_Allreduce with MPI_PROD (data struct)

◆ Prod() [2/3]

template<class T >
void PLMD::Communicator::Prod ( T *  buf,
int  count 
)
inline

Wrapper for MPI_Allreduce with MPI_PROD (pointer)

◆ Prod() [3/3]

template<class T >
void PLMD::Communicator::Prod ( T &  buf)
inline

Wrapper for MPI_Allreduce with MPI_PROD (reference)

◆ Recv() [1/3]

void PLMD::Communicator::Recv ( Data  data,
int  source,
int  tag,
Status s = StatusIgnore 
)

Wrapper for MPI_Recv (data struct)

◆ Recv() [2/3]

template<class T >
void PLMD::Communicator::Recv ( T *  buf,
int  count,
int  source,
int  tag,
Status s = StatusIgnore 
)
inline

Wrapper for MPI_Recv (pointer)

◆ Recv() [3/3]

template<class T >
void PLMD::Communicator::Recv ( T &  buf,
int  source,
int  tag,
Status s = StatusIgnore 
)
inline

Wrapper for MPI_Recv (reference)

◆ Set_comm() [1/2]

void PLMD::Communicator::Set_comm ( MPI_Comm  comm)

Set from a real MPI communicator.

Parameters
commMPI communicator

◆ Set_comm() [2/2]

void PLMD::Communicator::Set_comm ( void *  comm)

Set from a pointer to a real MPI communicator (C).

Parameters
commPointer to a C MPI communicator

◆ Set_fcomm()

void PLMD::Communicator::Set_fcomm ( void *  comm)

Set from a pointer to a real MPI communicator (FORTRAN).

Parameters
commPointer to a FORTRAN MPI communicator (INTEGER)

◆ Split()

void PLMD::Communicator::Split ( int  color,
int  key,
Communicator pc 
) const

Wrapper to MPI_Comm_split.

◆ Sum() [1/3]

void PLMD::Communicator::Sum ( Data  data)

Wrapper for MPI_Allreduce with MPI_SUM (data struct)

◆ Sum() [2/3]

template<class T >
void PLMD::Communicator::Sum ( T *  buf,
int  count 
)
inline

Wrapper for MPI_Allreduce with MPI_SUM (pointer)

◆ Sum() [3/3]

template<class T >
void PLMD::Communicator::Sum ( T &  buf)
inline

Wrapper for MPI_Allreduce with MPI_SUM (reference)

Member Data Documentation

◆ communicator

MPI_Comm PLMD::Communicator::communicator
private

◆ StatusIgnore

Communicator::Status PLMD::Communicator::StatusIgnore
static

Special status used when status should be ignored.

E.g. Recv(a,0,1,Communicator::StatusIgnore); Notice that this is the default for Recv, so this is equivalent to Recv(a,0,1);


The documentation for this class was generated from the following files: