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 at https://geopm.github.io/doxall/classgeopm_1_1_m_p_i_comm.html.

See Also

geopm(7), geopm::Comm(3)