Allgatherv

event allgatherv(const void *send_buf, size_t send_count, void *recv_buf, const vector_class<size_t> &recv_counts, datatype dtype, const communicator &comm, const stream &stream, const allgatherv_attr &attr = default_allgatherv_attr, const vector_class<event> &deps = {})

Allgatherv is a collective communication operation that collects data from all the ranks within a communicator into a single buffer. Different ranks may contribute segments of different sizes. The resulting data in the output buffer must be the same for each rank.

Return

ccl::event an object to track the progress of the operation

Parameters
  • send_buf: the buffer with send_count elements of dtype that stores local data to be gathered

  • send_count: the number of elements of type dtype in send_buf

  • recv_buf: [out] the buffer to store gathered result, should be large enough to hold values from all ranks

  • recv_bufs: [out] array of buffers to store gathered result, one buffer per each rank

  • recv_counts: array with the number of elements of type dtype to be received from each rank

  • dtype: the datatype of elements in send_buf and recv_buf

  • comm: the communicator for which the operation will be performed

  • stream: a stream associated with the operation

  • attr: optional attributes to customize operation

  • deps: an optional vector of the events that the operation should depend on

event allgatherv(const void *send_buf, size_t send_count, void *recv_buf, const vector_class<size_t> &recv_counts, datatype dtype, const communicator &comm, const allgatherv_attr &attr = default_allgatherv_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 allgatherv(const void *send_buf, size_t send_count, const vector_class<void*> &recv_bufs, const vector_class<size_t> &recv_counts, datatype dtype, const communicator &comm, const stream &stream, const allgatherv_attr &attr = default_allgatherv_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 allgatherv(const void *send_buf, size_t send_count, const vector_class<void*> &recv_bufs, const vector_class<size_t> &recv_counts, datatype dtype, const communicator &comm, const allgatherv_attr &attr = default_allgatherv_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.

template<class BufferType, class = typename std::enable_if<is_native_type_supported<BufferType>(), event>::type>
event allgatherv(const BufferType *send_buf, size_t send_count, BufferType *recv_buf, const vector_class<size_t> &recv_counts, const communicator &comm, const stream &stream, const allgatherv_attr &attr = default_allgatherv_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.

template<class BufferType, class = typename std::enable_if<is_native_type_supported<BufferType>(), event>::type>
event allgatherv(const BufferType *send_buf, size_t send_count, BufferType *recv_buf, const vector_class<size_t> &recv_counts, const communicator &comm, const allgatherv_attr &attr = default_allgatherv_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.

template<class BufferType, class = typename std::enable_if<is_native_type_supported<BufferType>(), event>::type>
event allgatherv(const BufferType *send_buf, size_t send_count, vector_class<BufferType*> &recv_bufs, const vector_class<size_t> &recv_counts, const communicator &comm, const stream &stream, const allgatherv_attr &attr = default_allgatherv_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.

template<class BufferType, class = typename std::enable_if<is_native_type_supported<BufferType>(), event>::type>
event allgatherv(const BufferType *send_buf, size_t send_count, vector_class<BufferType*> &recv_bufs, const vector_class<size_t> &recv_counts, const communicator &comm, const allgatherv_attr &attr = default_allgatherv_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.

template<class BufferObjectType, class = typename std::enable_if<is_class_supported<BufferObjectType>(), event>::type>
event allgatherv(const BufferObjectType &send_buf, size_t send_count, BufferObjectType &recv_buf, const vector_class<size_t> &recv_counts, const communicator &comm, const stream &stream, const allgatherv_attr &attr = default_allgatherv_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.

template<class BufferObjectType, class = typename std::enable_if<is_class_supported<BufferObjectType>(), event>::type>
event allgatherv(const BufferObjectType &send_buf, size_t send_count, BufferObjectType &recv_buf, const vector_class<size_t> &recv_counts, const communicator &comm, const allgatherv_attr &attr = default_allgatherv_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.

template<class BufferObjectType, class = typename std::enable_if<is_class_supported<BufferObjectType>(), event>::type>
event allgatherv(const BufferObjectType &send_buf, size_t send_count, vector_class<reference_wrapper_class<BufferObjectType>> &recv_bufs, const vector_class<size_t> &recv_counts, const communicator &comm, const stream &stream, const allgatherv_attr &attr = default_allgatherv_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.

template<class BufferObjectType, class = typename std::enable_if<is_class_supported<BufferObjectType>(), event>::type>
event allgatherv(const BufferObjectType &send_buf, size_t send_count, vector_class<reference_wrapper_class<BufferObjectType>> &recv_bufs, const vector_class<size_t> &recv_counts, const communicator &comm, const allgatherv_attr &attr = default_allgatherv_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.