Loading [MathJax]/extensions/tex2jax.js
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
PLMD::Communicator Class Reference

Class containing wrappers to MPI. More...

#include <Communicator.h>

Inheritance diagram for PLMD::Communicator:

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

Static Public Member Functions

static bool initialized ()
 Tests if MPI library is initialized.
 
static bool plumedHasMPI ()
 Runtime acces to the __PLUMED_HAS_MPI definition.
 

Static Public Attributes

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

Static 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 ()
 
template<>
MPI_Datatype getMPIType ()
 
template<>
MPI_Datatype getMPIType ()
 
template<>
MPI_Datatype getMPIType ()
 
template<class T>
static MPI_Datatype getMPIType ()
 Function returning the MPI type.
 

Private Attributes

MPI_Comm communicator
 Communicator.
 

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]

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

Wrapper for MPI_Allgatherv (reference)

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

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

Wrapper for MPI_Allgather (data struct)

◆ Allgatherv() [1/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)

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

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

Wrapper for MPI_Allgatherv (data struct)

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

Wrapper for MPI_Bcast (reference)

◆ Bcast() [3/3]

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

Wrapper for MPI_Bcast (pointer)

◆ 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/10]

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

◆ getMPIType() [2/10]

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

◆ getMPIType() [3/10]

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

◆ getMPIType() [4/10]

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

◆ getMPIType() [5/10]

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

◆ getMPIType() [6/10]

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

◆ getMPIType() [7/10]

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

◆ getMPIType() [8/10]

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

◆ getMPIType() [9/10]

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

◆ getMPIType() [10/10]

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>();

◆ initialized()

bool PLMD::Communicator::initialized ( )
static

Tests if MPI library is initialized.

◆ Isend() [1/3]

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

Wrapper for MPI_Isend (reference)

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

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

Wrapper for MPI_Isend (data struct)

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

Wrapper for MPI_Allreduce with MPI_MAX (reference)

◆ Max() [3/3]

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

Wrapper for MPI_Allreduce with MPI_MAX (pointer)

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

Wrapper for MPI_Allreduce with MPI_MIN (reference)

◆ Min() [3/3]

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

Wrapper for MPI_Allreduce with MPI_MIN (pointer)

◆ operator=()

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

Assignment operator.

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

◆ plumedHasMPI()

bool PLMD::Communicator::plumedHasMPI ( )
static

Runtime acces to the __PLUMED_HAS_MPI definition.

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

Wrapper for MPI_Allreduce with MPI_PROD (reference)

◆ Prod() [3/3]

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

Wrapper for MPI_Allreduce with MPI_PROD (pointer)

◆ 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 source,
int tag,
Status & s = StatusIgnore )
inline

Wrapper for MPI_Recv (reference)

◆ Recv() [3/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)

◆ Set_comm() [1/2]

void PLMD::Communicator::Set_comm ( const TypesafePtr & comm)

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

Parameters
commPointer to a C MPI communicator

◆ Set_comm() [2/2]

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

Set from a real MPI communicator.

Parameters
commMPI communicator

◆ Set_fcomm()

void PLMD::Communicator::Set_fcomm ( const TypesafePtr & 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)
inline

Wrapper for MPI_Allreduce with MPI_SUM (reference)

◆ Sum() [3/3]

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

Wrapper for MPI_Allreduce with MPI_SUM (pointer)

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: