KaMPIng 0.1.1
Flexible and (near) zero-overhead C++ bindings for MPI
|
KaMPIng's named paramter approach is enabled by factory function which construct lightweight parameter objects encapsulating the parameter type (i.e., send buffer, send counts, ...) and the corresponding data. More...
Functions | |
template<typename Data > | |
auto | kamping::send_buf (internal::ignore_t< Data > ignore) |
Generates a dummy send buf that wraps a nullptr . | |
template<typename Data , typename Enable = std::enable_if_t<!internal::is_serialization_buffer_v<Data>>> | |
auto | kamping::send_buf (Data &&data) |
Passes a container/single value as a send buffer to the underlying MPI call. | |
template<typename SerializationBufferType , std::enable_if_t< internal::is_serialization_buffer_v< SerializationBufferType >, bool > = true> | |
auto | kamping::send_buf (SerializationBufferType &&data) |
Passes a container/single value as a send buffer to the underlying MPI call. Additionally indicates to use serialization to transfer the data. | |
template<typename T > | |
auto | kamping::send_buf (std::initializer_list< T > data) |
Passes the data provided as an initializer list as a send buffer to the underlying MPI call. | |
template<typename Data , typename Enable = std::enable_if_t<std::is_rvalue_reference_v<Data&&>>> | |
auto | kamping::send_buf_out (Data &&data) |
Passes a container/single value as rvalue as a send buffer to the underlying MPI call. This transfers ownership of the data to the call and re-returns ownership to the caller as part of the result object. | |
template<BufferResizePolicy resize_policy = BufferResizePolicy::no_resize, typename Data , typename Enable = std::enable_if_t<!internal::is_serialization_buffer_v<Data>>> | |
auto | kamping::send_recv_buf (Data &&data) |
Passes a container/single value as a send or receive buffer to the underlying MPI call. | |
template<typename SerializationBufferType , typename Enable = std::enable_if_t<internal::is_serialization_buffer_v<SerializationBufferType>>> | |
auto | kamping::send_recv_buf (SerializationBufferType &&buffer) |
Passes a container/single value as a send or receive buffer to the underlying MPI call. Additionally indicates to use serialization to transfer the data. | |
template<typename Container > | |
auto | kamping::send_recv_buf (AllocNewT< Container >) |
Indicates to use an object of type. | |
template<typename ValueType > | |
auto | kamping::send_recv_buf (AllocContainerOfT< ValueType >) |
Indicates to use a parameter object encapsulating an underlying container with a value_type . | |
template<typename Container > | |
auto | kamping::send_counts (Container &&container) |
Passes a container as send counts to the underlying call, i.e. the container's storage must contain the send count to each relevant PE. | |
template<typename T > | |
auto | kamping::send_counts (std::initializer_list< T > counts) |
Passes the initializer list as send counts to the underlying call. | |
template<BufferResizePolicy resize_policy = BufferResizePolicy::no_resize, typename Container > | |
auto | kamping::send_counts_out (Container &&container) |
Passes a container , into which the send counts deduced by KaMPIng will be written, to the underlying call. Container must satisfy the following constraints: | |
template<typename Container > | |
auto | kamping::send_counts_out (AllocNewT< Container >) |
Indicates to construct an object of type Container , into which the send counts deduced by KaMPIng will be written, in the underlying call. Container must satisfy the following constraints: | |
template<template< typename... > typename Container> | |
auto | kamping::send_counts_out (AllocNewUsingT< Container >) |
Indicates to construct a container with type Container<int> , into which the send counts deduced by KaMPIng will be written, in the underlying call. | |
auto | kamping::send_counts_out () |
Indicates to construct a container with type kamping::Communicator::default_container_type<int>, into which the send counts deduced by KaMPIng will be written, in the underlying call. | |
auto | kamping::send_count (int count) |
Passes count as send count to the underlying call. | |
auto | kamping::send_count_out (int &count) |
Passes count , into which the send count deduced by KaMPIng will be written, to the underlying call. | |
auto | kamping::send_count_out () |
Indicates to deduce the send count and return it to the caller as part of the underlying call's result object. | |
template<typename Container > | |
auto | kamping::recv_counts (Container &&container) |
Passes a container as recv counts to the underlying call, i.e. the container's storage must contain the recv count from each relevant PE. | |
template<typename T > | |
auto | kamping::recv_counts (std::initializer_list< T > counts) |
Passes the initializer list as recv counts to the underlying call. | |
auto | kamping::recv_counts (internal::ignore_t< void > ignore) |
Indicates that the recv counts are ignored. | |
template<BufferResizePolicy resize_policy = BufferResizePolicy::no_resize, typename Container > | |
auto | kamping::recv_counts_out (Container &&container) |
Passes a container , into which the recv counts deduced by KaMPIng will be written, to the underlying call. Container must satisfy the following constraints: | |
template<typename Data > | |
auto | kamping::recv_counts_out (AllocNewT< Data > container) |
Indicates to construct an object of type Container , into which the recv counts deduced by KaMPIng will be written, in the underlying call. Container must satisfy the following constraints: | |
template<template< typename... > typename Data> | |
auto | kamping::recv_counts_out (AllocNewUsingT< Data > container) |
Indicates to construct a container with type Container<int> , into which the recv counts deduced by KaMPIng will be written, in the underlying call. | |
auto | kamping::recv_counts_out () |
Indicates to construct a container with type kamping::Communicator::default_container_type<int>, into which the recv counts deduced by KaMPIng will be written, in the underlying call. | |
auto | kamping::recv_count (int count) |
Passes count as recv count to the underlying call. | |
auto | kamping::recv_count_out (int &count) |
Passes count , into which the recv count deduced by KaMPIng will be written, to the underlying call. | |
auto | kamping::recv_count_out () |
Indicates to deduce the recv count and return it to the caller as part of the underlying call's result object. | |
auto | kamping::send_recv_count (int count) |
Passes count as send/recv count to the underlying call. | |
auto | kamping::send_recv_count_out (int &count) |
Passes count , into which the send/recv count deduced by KaMPIng will be written, to the underlying call. | |
auto | kamping::send_recv_count_out () |
Indicates to deduce the send/recv count and return it to the caller as part of the underlying call's result object. | |
template<typename Container > | |
auto | kamping::send_displs (Container &&container) |
Passes a container as send displacements to the underlying call, i.e. the container's storage must contain the send displacement for each relevant PE. | |
template<typename T > | |
auto | kamping::send_displs (std::initializer_list< T > displs) |
Passes the initializer list as send displacements to the underlying call. | |
template<BufferResizePolicy resize_policy = BufferResizePolicy::no_resize, typename Container > | |
auto | kamping::send_displs_out (Container &&container) |
Passes a container , into which the send displacements deduced by KaMPIng will be written, to the underlying call. Container must satisfy the following constraints: | |
template<typename Container > | |
auto | kamping::send_displs_out (AllocNewT< Container >) |
Indicates to construct an object of type Container , into which the send displacements deduced by KaMPIng will be written, in the underlying call. Container must satisfy the following constraints: | |
template<template< typename... > typename Container> | |
auto | kamping::send_displs_out (AllocNewUsingT< Container >) |
Indicates to construct a container with type Container<int> , into which the send displacements deduced by KaMPIng will be written, in the underlying call. | |
auto | kamping::send_displs_out () |
Indicates to construct a container with type kamping::Communicator::default_container_type<int>, into which the send displacements deduced by KaMPIng will be written, in the underlying call. | |
template<typename Container > | |
auto | kamping::recv_displs (Container &&container) |
Passes a container as receive displacements to the underlying call, i.e. the container's storage must contain the receive displacement for each relevant PE. | |
template<typename T > | |
auto | kamping::recv_displs (std::initializer_list< T > displs) |
Passes the initializer list as receive displacements to the underlying call. | |
template<BufferResizePolicy resize_policy = BufferResizePolicy::no_resize, typename Container > | |
auto | kamping::recv_displs_out (Container &&container) |
Passes a container , into which the receive displacements deduced by KaMPIng will be written, to the underlying call. Container must satisfy the following constraints: | |
template<typename Container > | |
auto | kamping::recv_displs_out (AllocNewT< Container >) |
Indicates to construct an object of type Container , into which the receive displacements deduced by KaMPIng will be written, in the underlying call. Container must satisfy the following constraints: | |
template<template< typename... > typename Container> | |
auto | kamping::recv_displs_out (AllocNewUsingT< Container >) |
Indicates to construct a container with type Container<int> , into which the receive displacements deduced by KaMPIng will be written, in the underlying call. | |
auto | kamping::recv_displs_out () |
Indicates to construct a container with type kamping::Communicator::default_container_type<int>, into which the receive displacements deduced by KaMPIng will be written, in the underlying call. | |
template<BufferResizePolicy resize_policy = BufferResizePolicy::no_resize, typename Container , typename Enable = std::enable_if_t<!internal::is_serialization_buffer_v<Container>>> | |
auto | kamping::recv_buf_out (Container &&container) |
Passes a container , into which the received elements will be written, to the underlying call. Container must satisfy the following constraints: | |
template<BufferResizePolicy resize_policy = BufferResizePolicy::no_resize, typename Container , typename Enable = std::enable_if_t<!internal::is_serialization_buffer_v<Container>>> | |
auto | kamping::recv_buf (Container &&container) |
Passes a container , into which the received elements will be written, to the underlying call. Container must satisfy the following constraints: | |
template<typename SerializationBufferType , typename Enable = std::enable_if_t<internal::is_serialization_buffer_v<SerializationBufferType>>> | |
auto | kamping::recv_buf_out (SerializationBufferType &&buffer) |
Indicates to deserialize the received elements in the underlying call. | |
template<typename SerializationBufferType , typename Enable = std::enable_if_t<internal::is_serialization_buffer_v<SerializationBufferType>>> | |
auto | kamping::recv_buf (SerializationBufferType &&buffer) |
Indicates to deserialize the received elements in the underlying call. | |
template<typename Container > | |
auto | kamping::recv_buf_out (AllocNewT< Container >) |
Indicates to construct a container of type Container , into which the received elements will be written, in the underlying call. | |
template<typename Container > | |
auto | kamping::recv_buf (AllocNewT< Container > tag) |
Indicates to construct a container of type Container , into which the received elements will be written, in the underlying call. | |
template<typename ValueType > | |
auto | kamping::recv_buf_out (AllocContainerOfT< ValueType >) |
Indicates to construct a container with type kamping::Communicator::default_container_type<ValueType> , into which the received elements will be written, in the underlying call. | |
template<typename ValueType > | |
auto | kamping::recv_buf (AllocContainerOfT< ValueType > tag) |
Indicates to construct a container with type kamping::Communicator::default_container_type<ValueType> , into which the received elements will be written, in the underlying call. | |
auto | kamping::root (int rank) |
Passes rank as root rank to the underlying call. This parameter is needed in functions like MPI_Gather . | |
auto | kamping::root (size_t rank) |
Passes rank as root rank to the underlying call. This parameter is needed in functions like MPI_Gather . | |
auto | kamping::destination (int rank) |
Passes rank as destination rank to the underlying call. This parameter is needed in point-to-point exchange routines like MPI_Send . | |
auto | kamping::destination (size_t rank) |
Passes rank as destination rank to the underlying call. This parameter is needed in point-to-point exchange routines like MPI_Send . | |
auto | kamping::destination (internal::rank_null_t) |
Passes MPI_PROC_NULL as destination rank to the underlying call. This parameter is needed in point-to-point exchange routines like MPI_Send . | |
auto | kamping::source (int rank) |
Passes rank as source rank to the underlying call. This parameter is needed in point-to-point exchange routines like MPI_Recv . | |
auto | kamping::source (size_t rank) |
Passes rank as source rank to the underlying call. This parameter is needed in point-to-point exchange routines like MPI_Recv . | |
auto | kamping::source (internal::rank_any_t) |
Indicates to use MPI_ANY_SOURCE as source rank in the underlying call, i.e. accepting any rank as source rank. This parameter is needed in point-to-point exchange routines like MPI_Recv . | |
auto | kamping::source (internal::rank_null_t) |
Passes MPI_PROC_NULL as source rank to the underlying call. This parameter is needed in point-to-point exchange routines like MPI_Recv . | |
auto | kamping::tag (internal::any_tag_t) |
Indicates to use MPI_ANY_TAG as tag in the underlying call. | |
auto | kamping::tag (int value) |
Passes value as tag to the underlying call. | |
template<typename EnumType , typename = std::enable_if_t<std::is_enum_v<EnumType>>> | |
auto | kamping::tag (EnumType value) |
Converts the passed enum value to its integer representaiton and passes this value to the underlying call. | |
auto | kamping::request (Request &request) |
Passes a request handle to the underlying MPI call. | |
template<typename IndexType > | |
auto | kamping::request (PooledRequest< IndexType > request) |
Passes a request from a RequestPool to the underlying MPI call. | |
auto | kamping::request () |
Internally allocate a request object and return it to the user. | |
template<typename SendModeTag > | |
auto | kamping::send_mode (SendModeTag) |
Passes the send mode parameter for point to point communication to the underlying call. Pass any of the tags from the kamping::send_modes namespace. | |
template<typename Op , typename Commutative = ops::internal::undefined_commutative_tag> | |
internal::OperationBuilder< Op, Commutative > | kamping::op (Op &&op, Commutative commute=ops::internal::undefined_commutative_tag{}) |
Passes a reduction operation to ther underlying call. Accepts function objects, lambdas, function pointers or native MPI_Op as argument. | |
template<typename Container > | |
auto | kamping::values_on_rank_0 (Container &&container) |
Passes a container containing the value(s) to return on the first rank to kamping::Communicator::exscan(). | |
template<typename T > | |
auto | kamping::values_on_rank_0 (std::initializer_list< T > values) |
Passes the data to be returned on the first rank in MPI_Exscan which is provided as an initializer list to kamping::Communicator::exscan(). | |
auto | kamping::send_type (MPI_Datatype send_type) |
Passes send_type as send type to the underlying call. | |
auto | kamping::send_type_out () |
Indicates to deduce the send type in the underlying call and return it as part of underlying call's result object. | |
auto | kamping::send_type_out (MPI_Datatype &send_type) |
Passes send_type , into which the send type deduced by KaMPIng will be written, to the underlying call. The type will be stored at the location referred to by the provided reference. | |
auto | kamping::recv_type (MPI_Datatype recv_type) |
Passes recv_type as recv type to the underlying call. | |
auto | kamping::recv_type_out () |
Indicates to deduce the receive type in the underlying call and return it as part of underlying call's result object. | |
auto | kamping::recv_type_out (MPI_Datatype &recv_type) |
Passes recv_type , into which the recv type deduced by KaMPIng will be written, to the underlying call. The type will be stored at the location referred to by the provided reference. | |
auto | kamping::send_recv_type (MPI_Datatype send_recv_type) |
Passes send_recv_type as send/recv type to the underlying call. (This parameter is in MPI routines such as MPI_Bcast , ... .) | |
auto | kamping::send_recv_type_out () |
Indicates to deduce the send/recv type in the underlying call and return it as part of underlying call's result object. (This parameter is used in MPI routines such as MPI_Bcast , ... .) | |
auto | kamping::send_recv_type_out (MPI_Datatype &send_recv_type) |
Passes send_recv_type , into which the send/recv type deduced by KaMPIng will be written, to the underlying call. The type will be stored at the location referred to by the provided reference. (This parameter is used in MPI routines such as MPI_Bcast , ... .) | |
KaMPIng's named paramter approach is enabled by factory function which construct lightweight parameter objects encapsulating the parameter type (i.e., send buffer, send counts, ...) and the corresponding data.
Passes rank
as destination rank to the underlying call. This parameter is needed in point-to-point exchange routines like MPI_Send
.
rank | The destination rank. |
|
inline |
Passes MPI_PROC_NULL
as destination rank to the underlying call. This parameter is needed in point-to-point exchange routines like MPI_Send
.
Passes rank
as destination rank to the underlying call. This parameter is needed in point-to-point exchange routines like MPI_Send
.
rank | The destination rank. |
internal::OperationBuilder< Op, Commutative > kamping::op | ( | Op && | op, |
Commutative | commute = ops::internal::undefined_commutative_tag{} ) |
Passes a reduction operation to ther underlying call. Accepts function objects, lambdas, function pointers or native MPI_Op
as argument.
Op | the type of the operation |
Commutative | tag whether the operation is commutative |
op | the operation |
commute | the commutativity tag May be any instance of commutative , or non_commutative. Passing undefined_commutative is only supported for builtin and native operations. This is used to streamline the interface so that the use does not have to provide commutativity info when the operation is builtin. |
auto kamping::recv_buf | ( | AllocContainerOfT< ValueType > | tag | ) |
Indicates to construct a container with type kamping::Communicator::default_container_type<ValueType>
, into which the received elements will be written, in the underlying call.
The receive buffer will be returned as part of the underlying call's result object.
defaults to Communicator::default_container_type.
ValueType | The type of the elements in the buffer. |
Indicates to construct a container of type Container
, into which the received elements will be written, in the underlying call.
Container<int>
must satisfy the following constraints:
data()
member functionsize()
member functionresize(unsigned int)
member functionvalue_type
.The receive buffer will be returned as part of the underlying call's result object.
Container | Container type which will contains the send displacements. |
auto kamping::recv_buf | ( | Container && | container | ) |
Passes a container
, into which the received elements will be written, to the underlying call. Container
must satisfy the following constraints:
data()
member functionsize()
member functionvalue_type
(which must be int).resize_policy
is not BufferResizePolicy::no_resize, container
additionally has to expose a resize(unsigned int)
member function.The receive buffer will be returned as part of the underlying call's result object if it is moved/passed by value (e.g. recv_buf(std::move(container))
).
resize_policy | Policy specifying whether (and if so, how) the underlying buffer shall be resized. The default resize policy is BufferResizePolicy::no_resize, indicating that the buffer should not be resized by KaMPIng. |
Container | Container type which will contain the send displacements. |
container | Container which will contain the send displacements. |
auto kamping::recv_buf | ( | SerializationBufferType && | buffer | ) |
Indicates to deserialize the received elements in the underlying call.
Example usage:
auto kamping::recv_buf_out | ( | AllocContainerOfT< ValueType > | ) |
Indicates to construct a container with type kamping::Communicator::default_container_type<ValueType>
, into which the received elements will be written, in the underlying call.
The receive buffer will be returned as part of the underlying call's result object.
defaults to Communicator::default_container_type.
ValueType | The type of the elements in the buffer. |
Indicates to construct a container of type Container
, into which the received elements will be written, in the underlying call.
Container<int>
must satisfy the following constraints:
data()
member functionsize()
member functionresize(unsigned int)
member functionvalue_type
.The receive buffer will be returned as part of the underlying call's result object
Container | Container type which will contains the send displacements. |
auto kamping::recv_buf_out | ( | Container && | container | ) |
Passes a container
, into which the received elements will be written, to the underlying call. Container
must satisfy the following constraints:
data()
member functionsize()
member functionvalue_type
(which must be int).resize_policy
is not BufferResizePolicy::no_resize, container
additionally has to expose a resize(unsigned int)
member function.The receive buffer will be returned as part of the underlying call's result object if it is moved/passed by value (e.g. recv_buf_out(std::move(container))
).
resize_policy | Policy specifying whether (and if so, how) the underlying buffer shall be resized. The default resize policy is BufferResizePolicy::no_resize, indicating that the buffer should not be resized by KaMPIng. |
Container | Container type which will contain the send displacements. |
container | Container which will contain the send displacements. |
auto kamping::recv_buf_out | ( | SerializationBufferType && | buffer | ) |
Indicates to deserialize the received elements in the underlying call.
Example usage:
Passes count
as recv count to the underlying call.
count | The recv count. |
|
inline |
Indicates to deduce the recv count and return it to the caller as part of the underlying call's result object.
Passes count
, into which the recv count deduced by KaMPIng will be written, to the underlying call.
count | Reference to the location at which the recv count will be stored. |
Passes a container as recv counts to the underlying call, i.e. the container's storage must contain the recv count from each relevant PE.
The underlying container must provide data()
and size()
member functions and expose the contained value_type
.
Container | Container type which contains the send counts. |
container | Container which contains the recv counts. |
Passes the initializer list as recv counts to the underlying call.
Type | The type of the initializer list. |
counts | The recv counts. |
|
inline |
Indicates to construct a container with type kamping::Communicator::default_container_type<int>, into which the recv counts deduced by KaMPIng will be written, in the underlying call.
The recv counts container will be returned as part of the underlying call's result object.
Container | Container type which will contains the recv counts. |
Indicates to construct an object of type Container
, into which the recv counts deduced by KaMPIng will be written, in the underlying call. Container
must satisfy the following constraints:
data()
member functionsize()
member functionresize(unsigned int)
member functionvalue_type
(which must be int).The recv counts container will be returned as part of the underlying call's result object.
Container | Container type which will contains the recv counts. |
auto kamping::recv_counts_out | ( | AllocNewUsingT< Data > | container | ) |
Indicates to construct a container with type Container<int>
, into which the recv counts deduced by KaMPIng will be written, in the underlying call.
Container<int>
must satisfy the following constraints:
data()
member functionsize()
member functionresize(unsigned int)
member functionvalue_type
.The recv counts container will be returned as part of the underlying call's result object.
Container | Container type which will contains the recv counts. |
Passes a container
, into which the recv counts deduced by KaMPIng will be written, to the underlying call. Container
must satisfy the following constraints:
data()
member functionsize()
member functionvalue_type
(which must be int).resize_policy
is not BufferResizePolicy::no_resize, container
additionally has to expose a resize(unsigned int)
member function.The recv counts container will be returned as part of the underlying call's result object if it is moved/passed by value (e.g. recv_counts_out(std::move(container))
).
resize_policy | Policy specifying whether (and if so, how) the underlying buffer shall be resized. The default resize policy is BufferResizePolicy::no_resize, indicating that the buffer should not be resized by KaMPIng. |
Container | Container type which will contain the recv counts. |
container | Container which will contain the recv counts. |
Passes a container as receive displacements to the underlying call, i.e. the container's storage must contain the receive displacement for each relevant PE.
The underlying container must provide data()
and size()
member functions and expose the contained value_type
.
Container | Container type which contains the receive displacements. |
container | Container which contains the receive displacements. |
Passes the initializer list as receive displacements to the underlying call.
Type | The type of the initializer list. |
displs | The receive displacements. |
|
inline |
Indicates to construct a container with type kamping::Communicator::default_container_type<int>, into which the receive displacements deduced by KaMPIng will be written, in the underlying call.
The receive displacements container will be returned as part of the underlying call's result object.
Container | Container type which will contains the receive displacements. |
Indicates to construct an object of type Container
, into which the receive displacements deduced by KaMPIng will be written, in the underlying call. Container
must satisfy the following constraints:
data()
member functionsize()
member functionresize(unsigned int)
member functionvalue_type
(which must be int).The receive displacements container will be returned as part of the underlying call's result object.
Container | Container type which will contains the receive displacements. |
auto kamping::recv_displs_out | ( | AllocNewUsingT< Container > | ) |
Indicates to construct a container with type Container<int>
, into which the receive displacements deduced by KaMPIng will be written, in the underlying call.
Container<int>
must satisfy the following constraints:
data()
member functionsize()
member functionresize(unsigned int)
member functionvalue_type
.The receive displacements container will be returned as part of the underlying call's result object.
Container | Container type which will contains the receive displacements. |
Passes a container
, into which the receive displacements deduced by KaMPIng will be written, to the underlying call. Container
must satisfy the following constraints:
data()
member functionsize()
member functionvalue_type
(which must be int).resize_policy
is not BufferResizePolicy::no_resize, container
additionally has to expose a resize(unsigned int)
member function.The receive displacements container will be returned as part of the underlying call's result object if it is moved/passed by value (e.g. receive_displs_out(std::move(container))
).
resize_policy | Policy specifying whether (and if so, how) the underlying buffer shall be resized. The default resize policy is BufferResizePolicy::no_resize, indicating that the buffer should not be resized by KaMPIng. |
Container | Container type which will contain the receive displacements. |
container | Container which will contain the receive displacements. |
|
inline |
Passes recv_type
as recv type to the underlying call.
recv_type | MPI_Datatype to use in the wrapped MPI function. |
|
inline |
Indicates to deduce the receive type in the underlying call and return it as part of underlying call's result object.
|
inline |
Passes recv_type
, into which the recv type deduced by KaMPIng will be written, to the underlying call. The type will be stored at the location referred to by the provided reference.
recv_type | Reference to the location at which the deduced MPI_Datatype will be stored. |
|
inline |
Internally allocate a request object and return it to the user.
|
inline |
Passes a request from a RequestPool to the underlying MPI call.
request | The request handle. |
IndexType | The type of the index used by the RequestPool for requests. |
Passes a request handle to the underlying MPI call.
request | The request handle. |
Passes rank
as root rank to the underlying call. This parameter is needed in functions like MPI_Gather
.
rank | The root rank. |
Passes rank
as root rank to the underlying call. This parameter is needed in functions like MPI_Gather
.
rank | The root rank. |
auto kamping::send_buf | ( | Data && | data | ) |
Passes a container/single value as a send buffer to the underlying MPI call.
If data provides data()
, it is assumed that it is a container and all elements in the container are considered for the operation. In this case, the container has to provide a size()
member functions and expose the contained value_type
. If no data()
member function exists, a single value is assumed
Data | Data type representing the element(s) to send. |
data | Data (either a container which contains the elements or the element directly) to send |
auto kamping::send_buf | ( | internal::ignore_t< Data > | ignore | ) |
Generates a dummy send buf that wraps a nullptr
.
This is useful for operations where a send_buf is required on some PEs, such as the root PE, but not all PEs that participate in the collective communication.
Data | Data type for elements in the send buffer. This must be the same type as in the actual send_buf. |
ignore | Tag parameter for overload dispatching, pass in kamping::ignore<Data> . |
nullptr
as a send buffer. auto kamping::send_buf | ( | SerializationBufferType && | data | ) |
Passes a container/single value as a send buffer to the underlying MPI call. Additionally indicates to use serialization to transfer the data.
Passes the data provided as an initializer list as a send buffer to the underlying MPI call.
T | The type of the elements in the initializer list. |
data | An initializer list of the data elements. |
Passes a container/single value as rvalue as a send buffer to the underlying MPI call. This transfers ownership of the data to the call and re-returns ownership to the caller as part of the result object.
If data provides data()
, it is assumed that it is a container and all elements in the container are considered for the operation. In this case, the container has to provide a size()
member functions and expose the contained value_type
. If no data()
member function exists, a single value is assumed
Data | Data type representing the element(s) to send. |
data | Data (either a container which contains the elements or the element directly) to send |
Passes count
as send count to the underlying call.
count | The send count. |
|
inline |
Indicates to deduce the send count and return it to the caller as part of the underlying call's result object.
Passes count
, into which the send count deduced by KaMPIng will be written, to the underlying call.
count | Reference to the location at which the send count will be stored. |
Passes a container as send counts to the underlying call, i.e. the container's storage must contain the send count to each relevant PE.
The underlying container must provide data()
and size()
member functions and expose the contained value_type
.
Container | Container type which contains the send counts. |
container | Container which contains the send counts. |
Passes the initializer list as send counts to the underlying call.
Type | The type of the initializer list. |
counts | The send counts. |
|
inline |
Indicates to construct a container with type kamping::Communicator::default_container_type<int>, into which the send counts deduced by KaMPIng will be written, in the underlying call.
The send counts container will be returned as part of the underlying call's result object.
Container | Container type which will contains the send counts. |
Indicates to construct an object of type Container
, into which the send counts deduced by KaMPIng will be written, in the underlying call. Container
must satisfy the following constraints:
data()
member functionsize()
member functionresize(unsigned int)
member functionvalue_type
(which must be int).The send counts container will be returned as part of the underlying call's result object.
Container | Container type which will contains the send counts. |
auto kamping::send_counts_out | ( | AllocNewUsingT< Container > | ) |
Indicates to construct a container with type Container<int>
, into which the send counts deduced by KaMPIng will be written, in the underlying call.
Container<int>
must satisfy the following constraints:
data()
member functionsize()
member functionresize(unsigned int)
member functionvalue_type
.The send counts container will be returned as part of the underlying call's result object.
Container | Container type which will contains the send counts. |
Passes a container
, into which the send counts deduced by KaMPIng will be written, to the underlying call. Container
must satisfy the following constraints:
data()
member functionsize()
member functionvalue_type
(which must be int).resize_policy
is not BufferResizePolicy::no_resize, container
additionally has to expose a resize(unsigned int)
member function.The send counts container will be returned as part of the underlying call's result object if it is moved/passed by value (e.g. send_counts_out(std::move(container))
).
resize_policy | Policy specifying whether (and if so, how) the underlying buffer shall be resized. The default resize policy is BufferResizePolicy::no_resize, indicating that the buffer should not be resized by KaMPIng. |
Container | Container type which will contain the send counts. |
container | Container which will contain the send counts. |
Passes a container as send displacements to the underlying call, i.e. the container's storage must contain the send displacement for each relevant PE.
The underlying container must provide data()
and size()
member functions and expose the contained value_type
.
Container | Container type which contains the send displacements. |
container | Container which contains the send displacements. |
Passes the initializer list as send displacements to the underlying call.
Type | The type of the initializer list. |
displs | The send displacements. |
|
inline |
Indicates to construct a container with type kamping::Communicator::default_container_type<int>, into which the send displacements deduced by KaMPIng will be written, in the underlying call.
The send displacements container will be returned as part of the underlying call's result object.
Container | Container type which will contains the send displacements. |
Indicates to construct an object of type Container
, into which the send displacements deduced by KaMPIng will be written, in the underlying call. Container
must satisfy the following constraints:
data()
member functionsize()
member functionresize(unsigned int)
member functionvalue_type
(which must be int).The send displacements container will be returned as part of the underlying call's result object.
Container | Container type which will contains the send displacements. |
auto kamping::send_displs_out | ( | AllocNewUsingT< Container > | ) |
Indicates to construct a container with type Container<int>
, into which the send displacements deduced by KaMPIng will be written, in the underlying call.
Container<int>
must satisfy the following constraints:
data()
member functionsize()
member functionresize(unsigned int)
member functionvalue_type
.The send displacements container will be returned as part of the underlying call's result object.
Container | Container type which will contains the send displacements. |
Passes a container
, into which the send displacements deduced by KaMPIng will be written, to the underlying call. Container
must satisfy the following constraints:
data()
member functionsize()
member functionvalue_type
(which must be int).resize_policy
is not BufferResizePolicy::no_resize, container
additionally has to expose a resize(unsigned int)
member function.The send displacements container will be returned as part of the underlying call's result object if it is moved/passed by value (e.g. send_displs_out(std::move(container))
).
resize_policy | Policy specifying whether (and if so, how) the underlying buffer shall be resized. The default resize policy is BufferResizePolicy::no_resize, indicating that the buffer should not be resized by KaMPIng. |
Container | Container type which will contain the send displacements. |
container | Container which will contain the send displacements. |
|
inline |
Passes the send mode parameter for point to point communication to the underlying call. Pass any of the tags from the kamping::send_modes
namespace.
auto kamping::send_recv_buf | ( | AllocContainerOfT< ValueType > | ) |
Indicates to use a parameter object encapsulating an underlying container with a value_type
.
ValueType | as send_recv_buf . The type of the underlying container is determined by the MPI operation and usually defaults to Communicator::default_container_type. |
ValueType | The type of the elements in the buffer. |
Indicates to use an object of type.
Container | as send_recv_buf . Container must provide data() , size() , resize(unsigned int) member functions and expose the contained value_type . |
auto kamping::send_recv_buf | ( | Data && | data | ) |
Passes a container/single value as a send or receive buffer to the underlying MPI call.
resize_policy | Policy specifying whether (and if so, how) the underlying container shall be resized. If omitted, the resize policy is BufferResizePolicy::no_resize, indicating that the container should not be resized by kamping. |
Data | Data type representing the element(s) to send/receive. |
data | Data (either a container which contains the elements or the element directly) to send or the buffer to receive into. |
auto kamping::send_recv_buf | ( | SerializationBufferType && | buffer | ) |
Passes a container/single value as a send or receive buffer to the underlying MPI call. Additionally indicates to use serialization to transfer the data.
Passes count
as send/recv count to the underlying call.
count | The send/recv count. |
|
inline |
Indicates to deduce the send/recv count and return it to the caller as part of the underlying call's result object.
Passes count
, into which the send/recv count deduced by KaMPIng will be written, to the underlying call.
count | Reference to the location at which the send/recv count will be stored. |
|
inline |
Passes send_recv_type
as send/recv type to the underlying call. (This parameter is in MPI
routines such as MPI_Bcast
, ... .)
send_recv_type | MPI_Datatype to use in the wrapped MPI operation. |
|
inline |
Indicates to deduce the send/recv type in the underlying call and return it as part of underlying call's result object. (This parameter is used in MPI
routines such as MPI_Bcast
, ... .)
|
inline |
Passes send_recv_type
, into which the send/recv type deduced by KaMPIng will be written, to the underlying call. The type will be stored at the location referred to by the provided reference. (This parameter is used in MPI
routines such as MPI_Bcast
, ... .)
send_recv_type | Reference to the location at which the deduced MPI_Datatype will be stored. |
|
inline |
Passes send_type
as send type to the underlying call.
send_type | MPI_Datatype to use in the wrapped MPI operation. |
|
inline |
Indicates to deduce the send type in the underlying call and return it as part of underlying call's result object.
|
inline |
Passes send_type
, into which the send type deduced by KaMPIng will be written, to the underlying call. The type will be stored at the location referred to by the provided reference.
send_type | Reference to the location at which the deduced MPI_Datatype will be stored. |
Passes rank
as source rank to the underlying call. This parameter is needed in point-to-point exchange routines like MPI_Recv
.
rank | The source rank. |
|
inline |
Indicates to use MPI_ANY_SOURCE
as source rank in the underlying call, i.e. accepting any rank as source rank. This parameter is needed in point-to-point exchange routines like MPI_Recv
.
|
inline |
Passes MPI_PROC_NULL
as source rank to the underlying call. This parameter is needed in point-to-point exchange routines like MPI_Recv
.
Passes rank
as source rank to the underlying call. This parameter is needed in point-to-point exchange routines like MPI_Recv
.
rank | The source rank. |
Converts the passed enum value
to its integer representaiton and passes this value to the underlying call.
value | The tag value. |
Passes value
as tag to the underlying call.
value | The tag value. |
|
inline |
Indicates to use MPI_ANY_TAG
as tag in the underlying call.
Passes a container containing the value(s) to return on the first rank to kamping::Communicator::exscan().
Container | Container type. |
container | Value(s) to return on the first rank. |
Passes the data to be returned on the first rank in MPI_Exscan
which is provided as an initializer list to kamping::Communicator::exscan().
values | Value(s) to return on the first rank. |