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...
 
Communicatoroperator= (const Communicator &)
 Assignment operator. More...
 
virtual ~Communicator ()
 Destructor. More...
 
int Get_rank () const
 Obtain the rank of the present process. More...
 
int Get_size () const
 Obtain the number of processes. More...
 
void Set_comm (MPI_Comm comm)
 Set from a real MPI communicator. More...
 
MPI_CommGet_comm ()
 Reference to 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 Abort (int code)
 Wrapper to MPI_Abort. More...
 
void Barrier () const
 Wrapper to MPI_Barrier. 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...
 
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...
 
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 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 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 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 Split (int, int, Communicator &) const
 Wrapper to MPI_Comm_split. More...
 

Static Public Member Functions

static bool initialized ()
 Tests if MPI library is initialized. More...
 
static CommunicatorGet_world ()
 Returns MPI_COMM_WORLD if MPI is initialized, otherwise the default communicator. 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.

◆ Get_world()

Communicator & PLMD::Communicator::Get_world ( )
static

Returns MPI_COMM_WORLD if MPI is initialized, otherwise the default communicator.

◆ 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)

◆ operator=()

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

Assignment operator.

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

◆ 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: