Point-To-Point Operations#
Point-to-point operations enable direct communication between two specific entities, facilitating data exchange, synchronization, and coordination within a parallel computing environment.
The following point-to-point operations are available in oneCCL:
send
recv
send#
send
is a blocking point-to-point communication operation that transfers data from a designated memory buffer (buf
) to a specific peer rank.
event CCL_API send(void *buf,
size_t count,
datatype dtype,
int peer,
const communicator &comm,
const stream &stream,
const pt2pt_attr &attr = default_pt2pt_attr,
const vector_class<event> &deps = {});
Parameters
buf
- A buffer withdtype
count elements that contains the data to be sent.count
- The number ofdtype
elements in abuf
.dtype
- The datatype of elements in abuf
.peer
- A destination rank.comm
- A communicator for which the operation is performed.stream
- A stream associated with the operation.attr
- Optional attributes to customize the operation.deps
- An optional vector of the events, on which the operation should depend.
Returns
ccl::event
- An object to track the progress of the operation.
event CCL_API send(void* buf,
size_t count,
datatype dtype,
int peer,
const communicator &comm,
const pt2pt_attr &attr = default_pt2pt_attr,
const vector_class<event> &deps = {});
Below you can find an overloaded member function provided for the 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 CCL_API send(BufferType *buf,
size_t count,
int peer,
const communicator &comm,
const stream &stream,
const pt2pt_attr &attr = default_pt2pt_attr,
const vector_class<event>& deps = {});
Below you can find an overloaded member function provided for the convenience. It differs from the above function only in what argument(s) it accepts.:
event CCL_API send(BufferType *buf,
size_t count,
int peer,
const communicator &comm,
const pt2pt_attr &attr = default_pt2pt_attr,
const vector_class<event> &deps = {});
Below you can find an overloaded member function provided for the convenience. It differs from the above function only in what argument(s) it accepts.
event CCL_API send(BufferObjectType &buf,
size_t count,
int peer,
const communicator &comm,
const stream &stream,
const pt2pt_attr &attr = default_pt2pt_attr,
const vector_class<event> &deps = {});
Below you can find an overloaded member function provided for the convenience. It differs from the above function only in what argument(s) it accepts.
event CCL_API send(BufferObjectType &buf,
size_t count,
int peer,
const communicator &comm,
const pt2pt_attr &attr = default_pt2pt_attr,
const vector_class<event> &deps = {});
recv#
recv
is a blocking point-to-point communication operation that receives data from a peer rank in a memory buffer.
event CCL_API recv(void *buf,
size_t count,
datatype dtype,
int peer,
const communicator &comm,
const stream &stream,
const pt2pt_attr &attr = default_pt2pt_attr,
const vector_class<event> &deps = {});
Parameters
buf
- A buffer withdtype
count elements that contains where the data is received.count
- The number ofdtype
elements in abuf
.dtype
- The datatype of elements in abuf
.peer
- A source rank.comm
- A communicator for which the operation is performed.dtream
- A stream associated with the operation.attr
- Optional attributes to customize the operation.deps
- An optional vector of the events, on which the operation should depend.
Returns:
ccl::event
- An object to track the progress of the operation.
event CCL_API recv(void *buf,
size_t count,
datatype dtype,
int peer,
const communicator &comm,
const pt2pt_attr &attr = default_pt2pt_attr,
const vector_class<event>& deps = {});
Below you can find an overloaded member function provided for the 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 CCL_API recv(BufferType *buf,
size_t count,
int peer,
const communicator &comm,
const stream &stream,
const pt2pt_attr &attr = default_pt2pt_attr,
const vector_class<event> &deps = {});
Below you can find an overloaded member function provided for the convenience. It differs from the above function only in what argument(s) it accepts.
event CCL_API recv(BufferType *buf,
size_t count,
int peer,
const communicator &comm,
const pt2pt_attr &attr = default_pt2pt_attr,
const vector_class<event> &deps = {});
Below you can find an overloaded member function provided for the convenience. It differs from the above function only in what argument(s) it accepts.
event CCL_API recv(BufferObjectType &buf,
size_t count,
int peer,
const communicator &comm,
const stream &stream,
const pt2pt_attr &attr = default_pt2pt_attr,
const vector_class<event> &deps = {});
Below you can find an overloaded member function provided for the convenience. It differs from the above function only in what argument(s) it accepts.
event CCL_API recv(BufferObjectType &buf,
size_t count,
int peer,
const communicator &comm,
const pt2pt_attr &attr = default_pt2pt_attr,
const vector_class<event> &deps = {});