KaMPIng 0.1.1
Flexible and (near) zero-overhead C++ bindings for MPI
Loading...
Searching...
No Matches
Named Parameters

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, Commutativekamping::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, ... .)
 

Detailed Description

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.

Function Documentation

◆ destination() [1/3]

auto kamping::destination ( int rank)
inline

Passes rank as destination rank to the underlying call. This parameter is needed in point-to-point exchange routines like MPI_Send.

Parameters
rankThe destination rank.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ destination() [2/3]

auto kamping::destination ( internal::rank_null_t )
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.

Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ destination() [3/3]

auto kamping::destination ( size_t rank)
inline

Passes rank as destination rank to the underlying call. This parameter is needed in point-to-point exchange routines like MPI_Send.

Parameters
rankThe destination rank.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ op()

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 Parameters
Opthe type of the operation
Commutativetag whether the operation is commutative
Parameters
opthe operation
commutethe 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.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_buf() [1/4]

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.

The receive buffer will be returned as part of the underlying call's result object.

defaults to Communicator::default_container_type.

Template Parameters
ValueTypeThe type of the elements in the buffer.
See also
Alias for recv_buf_out(Container&&).
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_buf() [2/4]

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.

Container<int> must satisfy the following constraints:

  • provide a data() member function
  • provide a size() member function
  • provide a resize(unsigned int) member function
  • expose value_type.

The receive buffer will be returned as part of the underlying call's result object.

Template Parameters
ContainerContainer type which will contains the send displacements.
Returns
Parameter object referring to the storage which will contain the received elements.
See also
Alias for recv_buf_out(Container&&).
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_buf() [3/4]

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:

  • provide a data() member function
  • provide a size() member function
  • expose value_type (which must be int).
  • if 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))).

Template Parameters
resize_policyPolicy 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.
ContainerContainer type which will contain the send displacements.
Parameters
containerContainer which will contain the send displacements.
See also
Alias for recv_buf_out(Container&&).
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_buf() [4/4]

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.

Example usage:

using dict_type = std::unordered_map<int, double>;
STL-compatible allocator for requesting memory using the builtin MPI allocator.
Definition allocator.hpp:32
auto recv_buf(Container &&container)
Passes a container, into which the received elements will be written, to the underlying call....
Definition named_parameters.hpp:859
See also
Alias for recv_buf_out(Container&&).
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_buf_out() [1/4]

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.

The receive buffer will be returned as part of the underlying call's result object.

defaults to Communicator::default_container_type.

Template Parameters
ValueTypeThe type of the elements in the buffer.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_buf_out() [2/4]

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.

Container<int> must satisfy the following constraints:

  • provide a data() member function
  • provide a size() member function
  • provide a resize(unsigned int) member function
  • expose value_type.

The receive buffer will be returned as part of the underlying call's result object

Template Parameters
ContainerContainer type which will contains the send displacements.
Returns
Parameter object referring to the storage which will contain the received elements.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_buf_out() [3/4]

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:

  • provide a data() member function
  • provide a size() member function
  • expose value_type (which must be int).
  • if 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))).

Template Parameters
resize_policyPolicy 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.
ContainerContainer type which will contain the send displacements.
Parameters
containerContainer which will contain the send displacements.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_buf_out() [4/4]

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.

Example usage:

using dict_type = std::unordered_map<int, double>;
auto recv_buf_out(Container &&container)
Passes a container, into which the received elements will be written, to the underlying call....
Definition named_parameters.hpp:830
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_count()

auto kamping::recv_count ( int count)
inline

Passes count as recv count to the underlying call.

Parameters
countThe recv count.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_count_out() [1/2]

auto kamping::recv_count_out ( )
inline

Indicates to deduce the recv count and return it to the caller as part of the underlying call's result object.

Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_count_out() [2/2]

auto kamping::recv_count_out ( int & count)
inline

Passes count, into which the recv count deduced by KaMPIng will be written, to the underlying call.

Parameters
countReference to the location at which the recv count will be stored.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_counts() [1/2]

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.

The underlying container must provide data() and size() member functions and expose the contained value_type.

Template Parameters
ContainerContainer type which contains the send counts.
Parameters
containerContainer which contains the recv counts.
Returns
Parameter object referring to the storage containing the recv counts.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_counts() [2/2]

template<typename T >
auto kamping::recv_counts ( std::initializer_list< T > counts)

Passes the initializer list as recv counts to the underlying call.

Template Parameters
TypeThe type of the initializer list.
Parameters
countsThe recv counts.
Returns
Parameter object referring to the storage containing the recv counts.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_counts_out() [1/4]

auto kamping::recv_counts_out ( )
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.

Template Parameters
ContainerContainer type which will contains the recv counts.
Returns
Parameter object referring to the storage which will contain the recv counts.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_counts_out() [2/4]

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:

  • provide a data() member function
  • provide a size() member function
  • provide a resize(unsigned int) member function
  • expose value_type (which must be int).

The recv counts container will be returned as part of the underlying call's result object.

Template Parameters
ContainerContainer type which will contains the recv counts.
Returns
Parameter object referring to the storage which will contain the recv counts.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_counts_out() [3/4]

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.

Container<int> must satisfy the following constraints:

  • provide a data() member function
  • provide a size() member function
  • provide a resize(unsigned int) member function
  • expose value_type.

The recv counts container will be returned as part of the underlying call's result object.

Template Parameters
ContainerContainer type which will contains the recv counts.
Returns
Parameter object referring to the storage which will contain the recv counts.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_counts_out() [4/4]

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:

  • provide a data() member function
  • provide a size() member function
  • expose value_type (which must be int).
  • if 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))).

Template Parameters
resize_policyPolicy 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.
ContainerContainer type which will contain the recv counts.
Parameters
containerContainer which will contain the recv counts.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_displs() [1/2]

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.

The underlying container must provide data() and size() member functions and expose the contained value_type.

Template Parameters
ContainerContainer type which contains the receive displacements.
Parameters
containerContainer which contains the receive displacements.
Returns
Parameter object referring to the storage containing the receive displacements.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_displs() [2/2]

template<typename T >
auto kamping::recv_displs ( std::initializer_list< T > displs)

Passes the initializer list as receive displacements to the underlying call.

Template Parameters
TypeThe type of the initializer list.
Parameters
displsThe receive displacements.
Returns
Parameter object referring to the storage containing the receive displacements.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_displs_out() [1/4]

auto kamping::recv_displs_out ( )
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.

Template Parameters
ContainerContainer type which will contains the receive displacements.
Returns
Parameter object referring to the storage which will contain the receive displacements.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_displs_out() [2/4]

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:

  • provide a data() member function
  • provide a size() member function
  • provide a resize(unsigned int) member function
  • expose value_type (which must be int).

The receive displacements container will be returned as part of the underlying call's result object.

Template Parameters
ContainerContainer type which will contains the receive displacements.
Returns
Parameter object referring to the storage which will contain the receive displacements.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_displs_out() [3/4]

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.

Container<int> must satisfy the following constraints:

  • provide a data() member function
  • provide a size() member function
  • provide a resize(unsigned int) member function
  • expose value_type.

The receive displacements container will be returned as part of the underlying call's result object.

Template Parameters
ContainerContainer type which will contains the receive displacements.
Returns
Parameter object referring to the storage which will contain the receive displacements.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_displs_out() [4/4]

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:

  • provide a data() member function
  • provide a size() member function
  • expose value_type (which must be int).
  • if 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))).

Template Parameters
resize_policyPolicy 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.
ContainerContainer type which will contain the receive displacements.
Parameters
containerContainer which will contain the receive displacements.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_type()

auto kamping::recv_type ( MPI_Datatype recv_type)
inline

Passes recv_type as recv type to the underlying call.

Parameters
recv_typeMPI_Datatype to use in the wrapped MPI function.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_type_out() [1/2]

auto kamping::recv_type_out ( )
inline

Indicates to deduce the receive type in the underlying call and return it as part of underlying call's result object.

Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ recv_type_out() [2/2]

auto kamping::recv_type_out ( MPI_Datatype & recv_type)
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.

Parameters
recv_typeReference to the location at which the deduced MPI_Datatype will be stored.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ request() [1/3]

auto kamping::request ( )
inline

Internally allocate a request object and return it to the user.

Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ request() [2/3]

template<typename IndexType >
auto kamping::request ( PooledRequest< IndexType > request)
inline

Passes a request from a RequestPool to the underlying MPI call.

Parameters
requestThe request handle.
Template Parameters
IndexTypeThe type of the index used by the RequestPool for requests.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ request() [3/3]

auto kamping::request ( Request & request)
inline

Passes a request handle to the underlying MPI call.

Parameters
requestThe request handle.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ root() [1/2]

auto kamping::root ( int rank)
inline

Passes rank as root rank to the underlying call. This parameter is needed in functions like MPI_Gather.

Parameters
rankThe root rank.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ root() [2/2]

auto kamping::root ( size_t rank)
inline

Passes rank as root rank to the underlying call. This parameter is needed in functions like MPI_Gather.

Parameters
rankThe root rank.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_buf() [1/4]

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.

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

Template Parameters
DataData type representing the element(s) to send.
Parameters
dataData (either a container which contains the elements or the element directly) to send
Returns
Parameter object referring to the storage containing the data elements to send.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_buf() [2/4]

template<typename Data >
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.

Template Parameters
DataData type for elements in the send buffer. This must be the same type as in the actual send_buf.
Parameters
ignoreTag parameter for overload dispatching, pass in kamping::ignore<Data>.
Returns
Object wrapping a nullptr as a send buffer.

◆ send_buf() [3/4]

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.

See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_buf() [4/4]

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 Parameters
TThe type of the elements in the initializer list.
Parameters
dataAn initializer list of the data elements.
Returns
Parameter object referring to the storage containing the data elements to send.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_buf_out()

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.

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

Template Parameters
DataData type representing the element(s) to send.
Parameters
dataData (either a container which contains the elements or the element directly) to send
Returns
Parameter object referring to the storage containing the data elements to send.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_count()

auto kamping::send_count ( int count)
inline

Passes count as send count to the underlying call.

Parameters
countThe send count.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_count_out() [1/2]

auto kamping::send_count_out ( )
inline

Indicates to deduce the send count and return it to the caller as part of the underlying call's result object.

Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_count_out() [2/2]

auto kamping::send_count_out ( int & count)
inline

Passes count, into which the send count deduced by KaMPIng will be written, to the underlying call.

Parameters
countReference to the location at which the send count will be stored.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_counts() [1/2]

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.

The underlying container must provide data() and size() member functions and expose the contained value_type.

Template Parameters
ContainerContainer type which contains the send counts.
Parameters
containerContainer which contains the send counts.
Returns
Parameter object referring to the storage containing the send counts.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_counts() [2/2]

template<typename T >
auto kamping::send_counts ( std::initializer_list< T > counts)

Passes the initializer list as send counts to the underlying call.

Template Parameters
TypeThe type of the initializer list.
Parameters
countsThe send counts.
Returns
Parameter object referring to the storage containing the send counts.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_counts_out() [1/4]

auto kamping::send_counts_out ( )
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.

Template Parameters
ContainerContainer type which will contains the send counts.
Returns
Parameter object referring to the storage which will contain the send counts.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_counts_out() [2/4]

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:

  • provide a data() member function
  • provide a size() member function
  • provide a resize(unsigned int) member function
  • expose value_type (which must be int).

The send counts container will be returned as part of the underlying call's result object.

Template Parameters
ContainerContainer type which will contains the send counts.
Returns
Parameter object referring to the storage which will contain the send counts.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_counts_out() [3/4]

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.

Container<int> must satisfy the following constraints:

  • provide a data() member function
  • provide a size() member function
  • provide a resize(unsigned int) member function
  • expose value_type.

The send counts container will be returned as part of the underlying call's result object.

Template Parameters
ContainerContainer type which will contains the send counts.
Returns
Parameter object referring to the storage which will contain the send counts.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_counts_out() [4/4]

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:

  • provide a data() member function
  • provide a size() member function
  • expose value_type (which must be int).
  • if 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))).

Template Parameters
resize_policyPolicy 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.
ContainerContainer type which will contain the send counts.
Parameters
containerContainer which will contain the send counts.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_displs() [1/2]

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.

The underlying container must provide data() and size() member functions and expose the contained value_type.

Template Parameters
ContainerContainer type which contains the send displacements.
Parameters
containerContainer which contains the send displacements.
Returns
Parameter object referring to the storage containing the send displacements.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_displs() [2/2]

template<typename T >
auto kamping::send_displs ( std::initializer_list< T > displs)

Passes the initializer list as send displacements to the underlying call.

Template Parameters
TypeThe type of the initializer list.
Parameters
displsThe send displacements.
Returns
Parameter object referring to the storage containing the send displacements.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_displs_out() [1/4]

auto kamping::send_displs_out ( )
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.

Template Parameters
ContainerContainer type which will contains the send displacements.
Returns
Parameter object referring to the storage which will contain the send displacements.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_displs_out() [2/4]

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:

  • provide a data() member function
  • provide a size() member function
  • provide a resize(unsigned int) member function
  • expose value_type (which must be int).

The send displacements container will be returned as part of the underlying call's result object.

Template Parameters
ContainerContainer type which will contains the send displacements.
Returns
Parameter object referring to the storage which will contain the send displacements.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_displs_out() [3/4]

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.

Container<int> must satisfy the following constraints:

  • provide a data() member function
  • provide a size() member function
  • provide a resize(unsigned int) member function
  • expose value_type.

The send displacements container will be returned as part of the underlying call's result object.

Template Parameters
ContainerContainer type which will contains the send displacements.
Returns
Parameter object referring to the storage which will contain the send displacements.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_displs_out() [4/4]

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:

  • provide a data() member function
  • provide a size() member function
  • expose value_type (which must be int).
  • if 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))).

Template Parameters
resize_policyPolicy 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.
ContainerContainer type which will contain the send displacements.
Parameters
containerContainer which will contain the send displacements.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_mode()

template<typename SendModeTag >
auto kamping::send_mode ( SendModeTag )
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.

Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_recv_buf() [1/4]

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 Parameters
ValueTypeas send_recv_buf. The type of the underlying container is determined by the MPI operation and usually defaults to Communicator::default_container_type.
ValueTypeThe type of the elements in the buffer.
Returns
Parameter object referring to the storage containing the data elements to send or receive.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_recv_buf() [2/4]

template<typename Container >
auto kamping::send_recv_buf ( AllocNewT< Container > )

Indicates to use an object of type.

Template Parameters
Containeras send_recv_buf. Container must provide data(), size(), resize(unsigned int) member functions and expose the contained value_type.
Returns
Parameter object referring to the storage containing the data elements to send or receive.

◆ send_recv_buf() [3/4]

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 Parameters
resize_policyPolicy 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.
DataData type representing the element(s) to send/receive.
Parameters
dataData (either a container which contains the elements or the element directly) to send or the buffer to receive into.
Returns
Parameter object referring to the storage containing the data elements to send or receive.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_recv_buf() [4/4]

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.

See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_recv_count()

auto kamping::send_recv_count ( int count)
inline

Passes count as send/recv count to the underlying call.

Parameters
countThe send/recv count.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_recv_count_out() [1/2]

auto kamping::send_recv_count_out ( )
inline

Indicates to deduce the send/recv count and return it to the caller as part of the underlying call's result object.

Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_recv_count_out() [2/2]

auto kamping::send_recv_count_out ( int & count)
inline

Passes count, into which the send/recv count deduced by KaMPIng will be written, to the underlying call.

Parameters
countReference to the location at which the send/recv count will be stored.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_recv_type()

auto kamping::send_recv_type ( MPI_Datatype send_recv_type)
inline

Passes send_recv_type as send/recv type to the underlying call. (This parameter is in MPI routines such as MPI_Bcast, ... .)

Parameters
send_recv_typeMPI_Datatype to use in the wrapped MPI operation.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_recv_type_out() [1/2]

auto kamping::send_recv_type_out ( )
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, ... .)

Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_recv_type_out() [2/2]

auto kamping::send_recv_type_out ( MPI_Datatype & send_recv_type)
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, ... .)

Parameters
send_recv_typeReference to the location at which the deduced MPI_Datatype will be stored.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_type()

auto kamping::send_type ( MPI_Datatype send_type)
inline

Passes send_type as send type to the underlying call.

Parameters
send_typeMPI_Datatype to use in the wrapped MPI operation.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_type_out() [1/2]

auto kamping::send_type_out ( )
inline

Indicates to deduce the send type in the underlying call and return it as part of underlying call's result object.

Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ send_type_out() [2/2]

auto kamping::send_type_out ( MPI_Datatype & send_type)
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.

Parameters
send_typeReference to the location at which the deduced MPI_Datatype will be stored.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ source() [1/4]

auto kamping::source ( int rank)
inline

Passes rank as source rank to the underlying call. This parameter is needed in point-to-point exchange routines like MPI_Recv.

Parameters
rankThe source rank.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ source() [2/4]

auto kamping::source ( internal::rank_any_t )
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.

Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ source() [3/4]

auto kamping::source ( internal::rank_null_t )
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.

Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ source() [4/4]

auto kamping::source ( size_t rank)
inline

Passes rank as source rank to the underlying call. This parameter is needed in point-to-point exchange routines like MPI_Recv.

Parameters
rankThe source rank.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ tag() [1/3]

template<typename EnumType , typename = std::enable_if_t<std::is_enum_v<EnumType>>>
auto kamping::tag ( EnumType value)
inline

Converts the passed enum value to its integer representaiton and passes this value to the underlying call.

Parameters
valueThe tag value.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ tag() [2/3]

auto kamping::tag ( int value)
inline

Passes value as tag to the underlying call.

Parameters
valueThe tag value.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ tag() [3/3]

auto kamping::tag ( internal::any_tag_t )
inline

Indicates to use MPI_ANY_TAG as tag in the underlying call.

Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ values_on_rank_0() [1/2]

template<typename Container >
auto kamping::values_on_rank_0 ( Container && container)
inline

Passes a container containing the value(s) to return on the first rank to kamping::Communicator::exscan().

Template Parameters
ContainerContainer type.
Parameters
containerValue(s) to return on the first rank.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.

◆ values_on_rank_0() [2/2]

template<typename T >
auto kamping::values_on_rank_0 ( std::initializer_list< T > values)
inline

Passes the data to be returned on the first rank in MPI_Exscan which is provided as an initializer list to kamping::Communicator::exscan().

Parameters
valuesValue(s) to return on the first rank.
Returns
The corresponding parameter object.
See also
docs/parameter_handling.md for general information about parameter handling in KaMPIng.