Boost-Geometry-Utils
view release on metacpan or search on metacpan
src/boost/mpi/communicator.hpp view on Meta::CPAN
* @brief A constant representing "any tag."
*
* This constant may be used for the @c tag parameter of @c receive
* operations to indicate that a @c send with any tag will be matched
* by the receive.
*/
const int any_tag = MPI_ANY_TAG;
/**
* @brief Enumeration used to describe how to adopt a C @c MPI_Comm into
* a Boost.MPI communicator.
*
* The values for this enumeration determine how a Boost.MPI
* communicator will behave when constructed with an MPI
* communicator. The options are:
*
* - @c comm_duplicate: Duplicate the MPI_Comm communicator to
* create a new communicator (e.g., with MPI_Comm_dup). This new
* MPI_Comm communicator will be automatically freed when the
* Boost.MPI communicator (and all copies of it) is destroyed.
*
* - @c comm_take_ownership: Take ownership of the communicator. It
* will be freed automatically when all of the Boost.MPI
* communicators go out of scope. This option must not be used with
* MPI_COMM_WORLD.
*
* - @c comm_attach: The Boost.MPI communicator will reference the
* existing MPI communicator but will not free it when the Boost.MPI
* communicator goes out of scope. This option should only be used
* when the communicator is managed by the user or MPI library
* (e.g., MPI_COMM_WORLD).
*/
enum comm_create_kind { comm_duplicate, comm_take_ownership, comm_attach };
/**
* INTERNAL ONLY
*
* Forward declaration of @c group needed for the @c group
* constructor and accessor.
*/
class group;
/**
* INTERNAL ONLY
*
* Forward declaration of @c intercommunicator needed for the "cast"
* from a communicator to an intercommunicator.
*/
class intercommunicator;
/**
* INTERNAL ONLY
*
* Forward declaration of @c graph_communicator needed for the "cast"
* from a communicator to a graph communicator.
*/
class graph_communicator;
/**
* @brief A communicator that permits communication and
* synchronization among a set of processes.
*
* The @c communicator class abstracts a set of communicating
* processes in MPI. All of the processes that belong to a certain
* communicator can determine the size of the communicator, their rank
* within the communicator, and communicate with any other processes
* in the communicator.
*/
class BOOST_MPI_DECL communicator
{
public:
/**
* Build a new Boost.MPI communicator for @c MPI_COMM_WORLD.
*
* Constructs a Boost.MPI communicator that attaches to @c
* MPI_COMM_WORLD. This is the equivalent of constructing with
* @c (MPI_COMM_WORLD, comm_attach).
*/
communicator();
/**
* Build a new Boost.MPI communicator based on the MPI communicator
* @p comm.
*
* @p comm may be any valid MPI communicator. If @p comm is
* MPI_COMM_NULL, an empty communicator (that cannot be used for
* communication) is created and the @p kind parameter is
* ignored. Otherwise, the @p kind parameters determines how the
* Boost.MPI communicator will be related to @p comm:
*
* - If @p kind is @c comm_duplicate, duplicate @c comm to create
* a new communicator. This new communicator will be freed when
* the Boost.MPI communicator (and all copies of it) is destroyed.
* This option is only permitted if @p comm is a valid MPI
* intracommunicator or if the underlying MPI implementation
* supports MPI 2.0 (which supports duplication of
* intercommunicators).
*
* - If @p kind is @c comm_take_ownership, take ownership of @c
* comm. It will be freed automatically when all of the Boost.MPI
* communicators go out of scope. This option must not be used
* when @c comm is MPI_COMM_WORLD.
*
* - If @p kind is @c comm_attach, this Boost.MPI communicator
* will reference the existing MPI communicator @p comm but will
* not free @p comm when the Boost.MPI communicator goes out of
* scope. This option should only be used when the communicator is
* managed by the user or MPI library (e.g., MPI_COMM_WORLD).
*/
communicator(const MPI_Comm& comm, comm_create_kind kind);
/**
* Build a new Boost.MPI communicator based on a subgroup of another
* MPI communicator.
*
* This routine will construct a new communicator containing all of
* the processes from communicator @c comm that are listed within
* the group @c subgroup. Equivalent to @c MPI_Comm_create.
*
* @param comm An MPI communicator.
*
( run in 1.170 second using v1.01-cache-2.11-cpan-39bf76dae61 )