|
|
| Communicator () |
| | Default constructor not specifying any MPI communicator and using MPI_COMM_WORLD by default.
|
| |
| | Communicator (MPI_Comm comm, bool take_ownership=false) |
| | Constructor where an MPI communicator has to be specified.
|
| |
| | Communicator (MPI_Comm comm, int root, bool take_ownership=false) |
| | Constructor where an MPI communicator and the default root have to be specified.
|
| |
| | Communicator (Communicator const &other) |
| | Copy constructor that duplicates the MPI_Comm and takes ownership of the newly created one in the copy.
|
| |
| | Communicator (Communicator &&other) |
| | Move constructor.
|
| |
|
virtual | ~Communicator () |
| | Destructor that frees the contained MPI_Comm if it is owned by the Communicator.
|
| |
| Communicator & | operator= (Communicator &&other) |
| | Move assignment operator.
|
| |
| Communicator & | operator= (Communicator const &other) |
| | Copy assignment operator. Behaves according to the copy constructor.
|
| |
| void | swap (Communicator &other) |
| | Swaps the Communicator with another Communicator.
|
| |
| void | abort (int errorcode=1) const |
| | Terminates MPI execution environment (on all processes in this Communicator). Beware of MPI implementations who might terminate all processes, whether they are in this communicator or not.
|
| |
| int | rank_signed () const |
| | Rank of the current MPI process in the communicator as int.
|
| |
| size_t | rank () const |
| | Rank of the current MPI process in the communicator as size_t.
|
| |
| int | size_signed () const |
| | Number of MPI processes in this communicator as int.
|
| |
| size_t | size () const |
| | Number of MPI processes in this communicator as size_t.
|
| |
| size_t | num_numa_nodes () const |
| | Number of NUMA nodes (different shared memory regions) in this communicator. This operation is expensive (communicator splitting and communication). You should cache the result if you need it multiple times.
|
| |
| std::string | processor_name () const |
| | Get this 'processor's' name using MPI_Get_processor_name.
|
| |
| MPI_Comm | mpi_communicator () const |
| | MPI communicator corresponding to this communicator.
|
| |
| MPI_Comm | disown_mpi_communicator () |
| | Disowns the wrapped MPI_Comm, i.e. it will not be freed in the destructor.
|
| |
|
void | default_tag (int const default_tag) |
| | Set a new default tag used in point to point communication. The initial value is 0.
|
| |
|
int | default_tag () const |
| | Default tag used in point to point communication. The initial value is 0.
|
| |
| void | root (int const new_root) |
| | Set a new root for MPI operations that require a root.
|
| |
| void | root (size_t const new_root) |
| | Set a new root for MPI operations that require a root.
|
| |
| size_t | root () const |
| | Default root for MPI operations that require a root as size_t.
|
| |
| int | root_signed () const |
| | Default root for MPI operations that require a root as int.
|
| |
| bool | is_root (int const root) const |
| | Check if this rank is the root rank.
|
| |
| bool | is_root (size_t const root) const |
| | Check if this rank is the root rank.
|
| |
| bool | is_root () const |
| | Check if this rank is the root rank.
|
| |
| Communicator | split (int const color, int const key=0) const |
| | Split the communicator in different colors.
|
| |
| Communicator | split_by_type (int const type) const |
| | Split the communicator by the specified type (e.g., shared memory)
|
| |
| Communicator | split_to_shared_memory () const |
| | Split the communicator into NUMA nodes.
|
| |
| Group | group () const |
| | Return the group associated with this communicator.
|
| |
| template<typename Ranks > |
| Communicator | create_subcommunicators (Ranks const &ranks_in_own_group) const |
| | Create subcommunicators.
|
| |
| Communicator | create_subcommunicators (RankRanges const &rank_ranges) const |
| | Create (sub-)communicators using a sparse representation for the ranks contained in the subcommunicators.
|
| |
| CommunicatorComparisonResult | compare (Communicator const &other_comm) const |
| | Compare this communicator with another given communicator. Uses MPI_Comm_compare internally.
|
| |
| int | convert_rank_to_communicator (int const rank, Communicator const &other_comm) const |
| | Convert a rank from this communicator to the rank in another communicator.
|
| |
| int | convert_rank_from_communicator (int const rank, Communicator const &other_comm) const |
| | Convert a rank from another communicator to the rank in this communicator.
|
| |
| size_t | rank_shifted_checked (int const distance) const |
| | Computes a rank that is distance ranks away from this MPI thread's current rank and checks if this is valid rank in this communicator.
|
| |
| size_t | rank_shifted_cyclic (int const distance) const |
| | Computes a rank that is some ranks apart from this MPI thread's rank modulo the communicator's size.
|
| |
| bool | is_valid_rank (int const rank) const |
| | Checks if a rank is a valid rank for this communicator, i.e., if the rank is in [0, size).
|
| |
| bool | is_valid_rank (size_t const rank) const |
| | Checks if a rank is a valid rank for this communicator, i.e., if the rank is in [0, size).
|
| |
|
void | mpi_error_hook (int const error_code, std::string const &callee) const |
| | If error_code != MPI_SUCCESS, searchs the plugins for a public mpi_error_handler(const
int error_code, std::string& callee) member. Searches the plugins front to back and calls the first handler found. If no handler is found, calls the default error hook. If error code is MPI_SUCCESS, does nothing.
|
| |
|
void | mpi_error_default_handler (int const error_code, std::string const &function_name) const |
| | Default MPI error callback. Depending on KASSERT_EXCEPTION_MODE either throws a MpiErrorException if error_code != MPI_SUCCESS or fails an assertion.
|
| |
| template<typename... Args> |
| void | send (Args... args) const |
| | Wrapper for MPI_Send.
|
| |
|
template<typename... Args> |
| void | bsend (Args... args) const |
| | Convenience wrapper for MPI_Bsend. Calls kamping::Communicator::send() with the appropriate send mode set.
|
| |
|
template<typename... Args> |
| void | ssend (Args... args) const |
| | Convenience wrapper for MPI_Ssend. Calls kamping::Communicator::send() with the appropriate send mode set.
|
| |
|
template<typename... Args> |
| void | rsend (Args... args) const |
| | Convenience wrapper for MPI_Rsend. Calls kamping::Communicator::send() with the appropriate send mode set.
|
| |
| template<typename... Args> |
| auto | isend (Args... args) const |
| | Wrapper for MPI_Isend.
|
| |
|
template<typename... Args> |
| auto | ibsend (Args... args) const |
| | Convenience wrapper for MPI_Ibsend. Calls kamping::Communicator::isend() with the appropriate send mode set.
|
| |
|
template<typename... Args> |
| auto | issend (Args... args) const |
| | Convenience wrapper for MPI_Issend. Calls kamping::Communicator::isend() with the appropriate send mode set.
|
| |
|
template<typename... Args> |
| auto | irsend (Args... args) const |
| | Convenience wrapper for MPI_Irsend. Calls kamping::Communicator::isend() with the appropriate send mode set.
|
| |
| template<typename... Args> |
| auto | probe (Args... args) const |
| | Wrapper for MPI_Probe.
|
| |
| template<typename... Args> |
| auto | iprobe (Args... args) const |
| | Wrapper for MPI_Iprobe.
|
| |
| template<typename recv_value_type_tparam = kamping::internal::unused_tparam, typename... Args> |
| auto | sendrecv (Args... args) const |
| | Wrapper for MPI_Sendrecv.
|
| |
| template<typename recv_value_type_tparam = kamping::internal::unused_tparam, typename... Args> |
| auto | recv (Args... args) const |
| | Wrapper for MPI_Recv.
|
| |
| template<typename recv_value_type_tparam , typename... Args> |
| auto | recv_single (Args... args) const |
| | Convience wrapper for receiving single values via MPI_Recv.
|
| |
| template<typename recv_value_type_tparam = kamping::internal::unused_tparam, typename... Args> |
| auto | try_recv (Args... args) const |
| | Receives a message if one is available.
|
| |
| template<typename recv_value_type_tparam = kamping::internal::unused_tparam, typename... Args> |
| auto | irecv (Args... args) const |
| | Wrapper for MPI_Recv.
|
| |
| template<typename... Args> |
| auto | alltoall (Args... args) const |
| | Wrapper for MPI_Alltoall.
|
| |
| template<typename... Args> |
| auto | alltoall_inplace (Args... args) const |
| | Wrapper for the in-place version of Communicator::alltoall.
|
| |
| template<typename... Args> |
| auto | alltoallv (Args... args) const |
| | Wrapper for MPI_Alltoallv.
|
| |
| template<typename recv_value_type_tparam = kamping::internal::unused_tparam, typename... Args> |
| auto | scatter (Args... args) const |
| | Wrapper for MPI_Scatter.
|
| |
| template<typename recv_value_type_tparam = kamping::internal::unused_tparam, typename... Args> |
| auto | scatter_single (Args... args) const |
| |
| template<typename recv_value_type_tparam = kamping::internal::unused_tparam, typename... Args> |
| auto | scatterv (Args... args) const |
| | Wrapper for MPI_Scatterv.
|
| |
| template<typename... Args> |
| auto | reduce (Args... args) const |
| | Wrapper for MPI_Reduce.
|
| |
| template<typename... Args> |
| auto | reduce_single (Args... args) const |
| | Wrapper for MPI_Reduce.
|
| |
| template<typename... Args> |
| auto | scan (Args... args) const |
| | Wrapper for MPI_Scan.
|
| |
| template<typename... Args> |
| auto | scan_inplace (Args... args) const |
| | Wrapper for the in-place version of Communicator::scan().
|
| |
| template<typename... Args> |
| auto | scan_single (Args... args) const |
| | Wrapper for MPI_Scan for single elements.
|
| |
| template<typename... Args> |
| auto | exscan (Args... args) const |
| | Wrapper for MPI_Exscan.
|
| |
| template<typename... Args> |
| auto | exscan_inplace (Args... args) const |
| | Wrapper for the in-place version of Communicator::exscan().
|
| |
| template<typename... Args> |
| auto | exscan_single (Args... args) const |
| | Wrapper for MPI_exscan for single elements.
|
| |
| template<typename... Args> |
| auto | allreduce (Args... args) const |
| | Wrapper for MPI_Allreduce; which is semantically a reduction followed by a broadcast.
|
| |
| template<typename... Args> |
| auto | allreduce_inplace (Args... args) const |
| | Wrapper for the in-place version of Communicator::allreduce().
|
| |
| template<typename... Args> |
| auto | allreduce_single (Args... args) const |
| | Wrapper for MPI_Allreduce; which is semantically a reduction followed by a broadcast.
|
| |
| template<typename... Args> |
| auto | iallreduce (Args... args) const |
| | Wrapper for MPI_Iallreduce.
|
| |
| template<typename... Args> |
| auto | gather (Args... args) const |
| | Wrapper for MPI_Gather.
|
| |
| template<typename... Args> |
| auto | gatherv (Args... args) const |
| | Wrapper for MPI_Gatherv.
|
| |
| template<typename... Args> |
| auto | allgather (Args... args) const |
| | Wrapper for MPI_Allgather.
|
| |
| template<typename... Args> |
| auto | allgather_inplace (Args... args) const |
| | Wrapper for the in-place version of MPI_Allgather.
|
| |
| template<typename... Args> |
| auto | allgatherv (Args... args) const |
| | Wrapper for MPI_Allgatherv.
|
| |
| template<typename recv_value_type_tparam = kamping::internal::unused_tparam, typename... Args> |
| auto | bcast (Args... args) const |
| | Wrapper for MPI_Bcast.
|
| |
| template<typename recv_value_type_tparam = kamping::internal::unused_tparam, typename... Args> |
| auto | bcast_single (Args... args) const |
| | Wrapper for MPI_Bcast.
|
| |
| template<typename... Args> |
| void | barrier (Args... args) const |
| | Perform a MPI_Barrier on this communicator.
|
| |
| template<typename... Args> |
| auto | ibarrier (Args... args) const |
| | Perform a non-blocking barrier synchronization on this communicator using MPI_Ibarrier. The call is associated with a kamping::Request (either allocated by KaMPIng or provided by the user). Only when the request has completed, it is guaranteed that all ranks have reached the barrier.
|
| |
| template<typename Value > |
| bool | is_same_on_all_ranks (Value const &value) const |
| | Checks if all ranks provide the same value to this collective.
|
| |