geopm::MPIComm(3) – implementation of Comm using MPI
Namespaces
The MPIComm
class is a member of the namespace geopm
, but the
full name, geopm::MPIComm
, has been abbreviated in this manual.
Similarly, the std::
namespace specifier has been omitted from the
interface definitions for the following standard types: std::vector
,
std::string
, and std::set
, to enable better rendering of this
manual.
Note that the MPIComm
class is derived from geopm::Comm(3) class.
Synopsis
#include <geopm/MPIComm.hpp>
Link with -lgeopm
(MPI)
static string MPIComm::plugin_name(void);
static unique_ptr<Comm> MPIComm::make_plugin(void);
static MPIComm& MPIComm::comm_world(void);
virtual shared_ptr<Comm> MPIComm::split() const override;
virtual shared_ptr<Comm> MPIComm::split(int color, int key) const override;
virtual shared_ptr<Comm> MPIComm::split(const string &tag, int split_type) const override;
virtual shared_ptr<Comm> MPIComm::split(vector<int> dimensions, vector<int> periods, bool is_reorder) const override;
virtual shared_ptr<Comm> MPIComm::split_cart(vector<int> dimensions) const override;
virtual bool MPIComm::comm_supported(const string &description) const override;
virtual int MPIComm::cart_rank(const vector<int> &coords) const override;
virtual int MPIComm::rank(void) const override;
virtual int MPIComm::num_rank(void) const override;
virtual void MPIComm::dimension_create(int num_ranks, vector<int> &dimension) const override;
virtual void MPIComm::alloc_mem(size_t size, void **base) override;
virtual void MPIComm::free_mem(void *base) override;
virtual size_t MPIComm::window_create(size_t size, void *base) override;
virtual void MPIComm::window_destroy(size_t window_id) override;
virtual void MPIComm::coordinate(int rank, vector<int> &coord) const override;
virtual vector<int> MPIComm::coordinate(int rank) const override;
virtual void MPIComm::window_lock(size_t window_id, bool is_exclusive, int rank, int assert) const override;
virtual void MPIComm::window_unlock(size_t window_id, int rank) const override;
virtual void MPIComm::barrier(void) const override;
virtual void MPIComm::broadcast(void *buffer, size_t size, int root) const override;
virtual bool MPIComm::test(bool is_true) const override;
virtual void MPIComm::reduce_max(double *send_buf, double *recv_buf, size_t count, int root) const override;
virtual void MPIComm::gather(const void *send_buf, size_t send_size, void *recv_buf,
size_t recv_size, int root) const override;
virtual void MPIComm::gatherv(const void *send_buf, size_t send_size, void *recv_buf,
const vector<size_t> &recv_sizes, const vector<off_t> &rank_offset, int root) const override;
virtual void MPIComm::window_put(const void *send_buf, size_t send_size, int rank, off_t disp, size_t window_id) const override;
void MPIComm::tear_down(void) override;
Description
This class implements the Comm abstraction (geopm::Comm(3)) using MPI as the underlying communication mechanism.
For more details, see the doxygen page.