Template Numerical Library version\ main:47c9bc3e
|
An RAII wrapper for custom MPI communicators. More...
#include <TNL/MPI/Comm.h>
Public Member Functions | |
Comm ()=default | |
Constructs an empty communicator with a null handle (MPI_COMM_NULL). | |
Comm (Comm &&other)=default | |
Default move-constructor. | |
Comm (const Comm &other)=default | |
Default copy-constructor. | |
Comm (MPI_Comm comm) | |
Constructs a communicator initialized by given predefined communicator. | |
void | barrier () const |
Wait for all processes within a communicator to reach the barrier. | |
int | compare (MPI_Comm comm2) const |
Compares two communicators – wrapper for MPI_Comm_compare. | |
Comm | duplicate () const |
Non-static factory method – wrapper for MPI_Comm_dup | |
operator const MPI_Comm & () const | |
Access the MPI communicator associated with this object. | |
Comm & | operator= (Comm &&other)=default |
Default move-assignment operator. | |
Comm & | operator= (const Comm &other)=default |
Default copy-assignment operator. | |
int | rank () const |
Determines the rank of the calling process in the communicator. | |
int | size () const |
Returns the size of the group associated with a communicator. | |
Comm | split (int color, int key) const |
Non-static factory method – wrapper for MPI_Comm_split | |
Comm | split_type (int split_type, int key, MPI_Info info) const |
Non-static factory method – wrapper for MPI_Comm_split_type |
Static Public Member Functions | |
static Comm | duplicate (MPI_Comm comm) |
Factory method – wrapper for MPI_Comm_dup | |
static Comm | split (MPI_Comm comm, int color, int key) |
Factory method – wrapper for MPI_Comm_split | |
static Comm | split_type (MPI_Comm comm, int split_type, int key, MPI_Info info) |
Factory method – wrapper for MPI_Comm_split_type |
An RAII wrapper for custom MPI communicators.
This is an RAII wrapper for custom MPI communicators created by calls to MPI_Comm_create, MPI_Comm_split, or similar functions. It is based on std::shared_ptr so copy-constructible and copy-assignable, copies of the object represent the same communicator that is deallocated only when the internal reference counter drops to zero.
Note that predefined communicators (i.e. MPI_COMM_WORLD, MPI_COMM_NULL and MPI_COMM_SELF) can be used to initialize this class, but other handles of the MPI_Comm type cannot be used to initialize this class.
This class follows the factory pattern, i.e. it provides static methods such as Comm::duplicate or Comm::split that return an instance of a new communicator.
|
inline |
Constructs a communicator initialized by given predefined communicator.
Note that only predefined communicators (i.e. MPI_COMM_WORLD, MPI_COMM_NULL and MPI_COMM_SELF) can be used to initialize this class. Other handles of the MPI_Comm type cannot be used to initialize this class.
std::logic_error | when the comm handle is not a predefined communicator. |
|
inline |
Wait for all processes within a communicator to reach the barrier.
This routine is a collective operation that blocks each process until all processes have entered it, then releases all of the processes "simultaneously". It is equivalent to calling MPI_Barrier with the MPI communicator associated with this object.
|
inline |
Access the MPI communicator associated with this object.
This routine permits the implicit conversion from Comm to MPI_Comm.