Alltoallv#
- event CCL_API alltoallv (const void *send_buf, const vector_class< size_t > &send_counts, void *recv_buf, const vector_class< size_t > &recv_counts, datatype dtype, const communicator &comm, const stream &stream, const alltoallv_attr &attr=default_alltoallv_attr, const vector_class< event > &deps={})
Alltoallv is a collective communication operation in which each rank sends distinct blocks of data to each rank. Block sizes may differ. The j-th block of
send_buf
sent from the i-th rank is received by the j-th rank and is placed in the i-th block ofrecvbuf
.- Parameters
send_buf – the buffer with elements of
dtype
that stores local blocks to be sent to each ranksend_bufs – array of buffers to store send blocks, one buffer per rank
recv_buf – [out] the buffer to store received result, must be large enough to hold blocks from all ranks
recv_bufs – [out] array of buffers to store receive blocks, one buffer per rank
send_counts – array with the number of elements of type
dtype
in send blocks for each rankrecv_counts – array with the number of elements of type
dtype
in receive blocks from each rankdtype – the datatype of elements in
send_buf
andrecv_buf
comm – the communicator for which the operation will be performed
stream – abstraction over a device queue constructed via ccl::create_stream
attr – optional attributes to customize operation
deps – an optional vector of the events that the operation should depend on
- Returns
ccl::event an object to track the progress of the operation
- event CCL_API alltoallv (const void *send_buf, const vector_class< size_t > &send_counts, void *recv_buf, const vector_class< size_t > &recv_counts, datatype dtype, const communicator &comm, const alltoallv_attr &attr=default_alltoallv_attr, const vector_class< event > &deps={})
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
- event CCL_API alltoallv (const vector_class< void * > &send_bufs, const vector_class< size_t > &send_counts, const vector_class< void * > &recv_bufs, const vector_class< size_t > &recv_counts, datatype dtype, const communicator &comm, const stream &stream, const alltoallv_attr &attr=default_alltoallv_attr, const vector_class< event > &deps={})
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Type-safe version.
- event CCL_API alltoallv (const vector_class< void * > &send_bufs, const vector_class< size_t > &send_counts, const vector_class< void * > &recv_bufs, const vector_class< size_t > &recv_counts, datatype dtype, const communicator &comm, const alltoallv_attr &attr=default_alltoallv_attr, const vector_class< event > &deps={})
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Type-safe version.
- template<class BufferType, class = typename std::enable_if<is_native_type_supported<BufferType>(), event>::type> event CCL_API alltoallv (const BufferType *send_buf, const vector_class< size_t > &send_counts, BufferType *recv_buf, const vector_class< size_t > &recv_counts, const communicator &comm, const stream &stream, const alltoallv_attr &attr=default_alltoallv_attr, const vector_class< event > &deps={})
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Type-safe version.
- template<class BufferType, class = typename std::enable_if<is_native_type_supported<BufferType>(), event>::type> event CCL_API alltoallv (const BufferType *send_buf, const vector_class< size_t > &send_counts, BufferType *recv_buf, const vector_class< size_t > &recv_counts, const communicator &comm, const alltoallv_attr &attr=default_alltoallv_attr, const vector_class< event > &deps={})
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Type-safe version.
- template<class BufferType, class = typename std::enable_if<is_native_type_supported<BufferType>(), event>::type> event CCL_API alltoallv (const vector_class< BufferType * > &send_bufs, const vector_class< size_t > &send_counts, const vector_class< BufferType * > &recv_bufs, const vector_class< size_t > &recv_counts, const communicator &comm, const stream &stream, const alltoallv_attr &attr=default_alltoallv_attr, const vector_class< event > &deps={})
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Type-safe version.
- template<class BufferType, class = typename std::enable_if<is_native_type_supported<BufferType>(), event>::type> event CCL_API alltoallv (const vector_class< BufferType * > &send_bufs, const vector_class< size_t > &send_counts, const vector_class< BufferType * > &recv_bufs, const vector_class< size_t > &recv_counts, const communicator &comm, const alltoallv_attr &attr=default_alltoallv_attr, const vector_class< event > &deps={})
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Type-safe version.
- template<class BufferObjectType, class = typename std::enable_if<is_class_supported<BufferObjectType>(), event>::type> event CCL_API alltoallv (const BufferObjectType &send_buf, const vector_class< size_t > &send_counts, BufferObjectType &recv_buf, const vector_class< size_t > &recv_counts, const communicator &comm, const stream &stream, const alltoallv_attr &attr=default_alltoallv_attr, const vector_class< event > &deps={})
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Type-safe version.
- template<class BufferObjectType, class = typename std::enable_if<is_class_supported<BufferObjectType>(), event>::type> event CCL_API alltoallv (const BufferObjectType &send_buf, const vector_class< size_t > &send_counts, BufferObjectType &recv_buf, const vector_class< size_t > &recv_counts, const communicator &comm, const alltoallv_attr &attr=default_alltoallv_attr, const vector_class< event > &deps={})
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Type-safe version.
- template<class BufferObjectType, class = typename std::enable_if<is_class_supported<BufferObjectType>(), event>::type> event CCL_API alltoallv (const vector_class< reference_wrapper_class< BufferObjectType >> &send_bufs, const vector_class< size_t > &send_counts, const vector_class< reference_wrapper_class< BufferObjectType >> &recv_bufs, const vector_class< size_t > &recv_counts, const communicator &comm, const stream &stream, const alltoallv_attr &attr=default_alltoallv_attr, const vector_class< event > &deps={})
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Type-safe version.
- template<class BufferObjectType, class = typename std::enable_if<is_class_supported<BufferObjectType>(), event>::type> event CCL_API alltoallv (const vector_class< reference_wrapper_class< BufferObjectType >> &send_bufs, const vector_class< size_t > &send_counts, const vector_class< reference_wrapper_class< BufferObjectType >> &recv_bufs, const vector_class< size_t > &recv_counts, const communicator &comm, const alltoallv_attr &attr=default_alltoallv_attr, const vector_class< event > &deps={})
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Type-safe version.