Celeritas  0.5.0-86+4a8eea4
Public Member Functions | Static Public Member Functions | List of all members
celeritas::MpiCommunicator Class Reference

Wrap an MPI communicator. More...

#include <MpiCommunicator.hh>

Public Types

Type aliases
using MpiComm = detail::MpiComm
 

Public Member Functions

 MpiCommunicator (MpiComm comm)
 Construct with a native MPI communicator. More...
 
MpiComm mpi_comm () const
 Get the MPI communicator for low-level MPI calls.
 
int rank () const
 Get the local process ID.
 
int size () const
 Get the number of total processors.
 
 operator bool () const
 True if non-null communicator.
 

Static Public Member Functions

static MpiCommunicator self ()
 Construct a communicator with MPI_COMM_SELF. More...
 
static MpiCommunicator world ()
 Construct a communicator with MPI_COMM_WORLD. More...
 
static MpiCommunicator world_if_enabled ()
 Construct a communicator with MPI_COMM_WORLD or null if disabled.
 

Detailed Description

Wrap an MPI communicator.

This class uses ScopedMpiInit to determine whether MPI is available and enabled. As many instances as desired can be created, but Celeritas by default will share the instance returned by comm_world , which defaults to MPI_COMM_WORLD if MPI has been initialized, or a "self" comm if it has not.

A "null" communicator (the default) does not use MPI calls and can be constructed without calling MPI_Init or having MPI compiled. It will act like MPI_Comm_Self but will not actually use MPI calls.

Note
This does not perform any copying or freeing of MPI communiators.

Constructor & Destructor Documentation

◆ MpiCommunicator()

celeritas::MpiCommunicator::MpiCommunicator ( MpiComm  comm)
explicit

Construct with a native MPI communicator.

This will fail with a NotConfigured error if MPI is disabled.

Member Function Documentation

◆ self()

MpiCommunicator celeritas::MpiCommunicator::self ( )
inlinestatic

Construct a communicator with MPI_COMM_SELF.

Each process sees itself as rank zero in size zero, thus operating independently.

◆ world()

MpiCommunicator celeritas::MpiCommunicator::world ( )
inlinestatic

Construct a communicator with MPI_COMM_WORLD.

Each process sees every other process in MPI's domain, operating at the maximum level of interprocess cooperation.


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