30template <
typename send_value_type,
typename... Args>
35 .construct_buffer_or_rebind()) {
43 "If a custom send type is provided, the send count has to be provided, too."
53 internal::select_parameter_type_or_default<internal::ParameterType::send_type, default_mpi_send_type>(
57 .construct_buffer_or_rebind();
64 "mpi_send_type is either a lvalue reference (in this case it returned by reference), or a non-reference type "
66 "this case it is returned by value)."
92 .construct_buffer_or_rebind()) {
100 internal::select_parameter_type_or_default<internal::ParameterType::recv_type, default_mpi_recv_type>(
104 .construct_buffer_or_rebind();
111 "mpi_recv_type is either a lvalue reference (in this case it returned by reference), or a non-reference type "
113 "this case it is returned by value)."
121 "If a custom recv type is given, kamping is not able to deduce the correct size of the "
123 "Therefore, a sufficiently large recv buffer (with resize policy \"no_resize\") must be provided by "
STL-compatible allocator for requesting memory using the builtin MPI allocator.
Definition allocator.hpp:32
constexpr BufferResizePolicy no_resize
Definition data_buffer.hpp:299
auto recv_type_out()
Indicates to deduce the receive type in the underlying call and return it as part of underlying call'...
Definition named_parameters.hpp:1252
auto send_type_out()
Indicates to deduce the send type in the underlying call and return it as part of underlying call's r...
Definition named_parameters.hpp:1209
decltype(auto) select_parameter_type_or_default(std::tuple< DefaultArguments... > default_arguments, Args &... args)
Checks if parameter with requested parameter type exists, if not constructs a default value.
Definition named_parameter_selection.hpp:239
@ recv_type
Tag used to represent a recv type in an MPI call.
@ send_type
Tag used to represent a send type in an MPI call.
@ send_count
Tag used to represent the number of elements to be sent.
Template magic to check named parameters passed to wrappers at compile time.
Factory methods for buffer wrappers.
Internal namespace marking the code that is not user-facing.
Definition collectives_helpers.hpp:20
static constexpr bool is_parameter_given_as_in_buffer
Checks if a data buffer with requested parameter type exists and it is an input parameter (i....
Definition named_parameter_check.hpp:384
constexpr auto determine_mpi_recv_datatype(Args &... args) -> decltype(internal::select_parameter_type_or_default< internal::ParameterType::recv_type, decltype(kamping::recv_type_out())>(std::make_tuple(), args...) .construct_buffer_or_rebind())
Deduce the MPI_Datatype to use as recv_type in a p2p recv operation.If kamping::recv_type() is given,...
Definition helpers.hpp:88
constexpr auto determine_mpi_send_datatype(Args &... args) -> decltype(internal::select_parameter_type_or_default< internal::ParameterType::send_type, decltype(kamping::send_type_out())>(std::make_tuple(), args...) .construct_buffer_or_rebind())
Deduce the MPI_Datatype to use as send_type in a p2p send operation.If kamping::send_type() is given,...
Definition helpers.hpp:31