You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: source/elements/oneCCL/source/spec/collective_operations.rst
+96-32Lines changed: 96 additions & 32 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,6 +8,7 @@ Collective Operations
8
8
9
9
oneCCL specification defines the following collective communication operations:
10
10
11
+
- `Allgather`_
11
12
- `Allgatherv`_
12
13
- `Allreduce`_
13
14
- `Alltoallv`_
@@ -39,6 +40,66 @@ The communication operation may accept attribute object. If that parameter is mi
39
40
40
41
If the arguments provided to a communication operation call do not comply to the requirements of the operation, the behavior is undefined unless it is specified otherwise.
41
42
43
+
44
+
.. _Allgather:
45
+
46
+
Allgather
47
+
*********
48
+
49
+
Allgather is a collective communication operation that collects the ``send_count`` elements from all the ranks within the communicator and places the results into ``recv_buf``, in such a way that data from rank ``i`` can be found at offset rank ``i * count``. The resulting data in the output ``recv_buf`` buffer is the same for each rank.
50
+
51
+
52
+
Allgather is in place when ``sendbuff == recvbuff + rank * send_count``.
The buffer with send_count elements of BufferType that stores local data to be gathered
78
+
79
+
recv_buf [out]
80
+
The buffer to store gathered result of BufferTuype, must be large enough to hold values from all ranks, i.e., size should be equal do BufferType * send_count
81
+
82
+
send_count
83
+
The number of elements of type BufferType in send_buf
84
+
85
+
dtype
86
+
The datatype of elements in send_buf and recv_buf must be skipped if BufferType can be inferred otherwise must be passed explicitly
87
+
88
+
comm
89
+
The communicator that defines a group of ranks for the operation
90
+
91
+
stream
92
+
The stream associated with the operation
93
+
94
+
attr
95
+
Optional attributes to customize the operation
96
+
97
+
deps
98
+
An optional vector of the events that the operation should depend on
99
+
100
+
return event
101
+
An object to track the progress of the operation
102
+
42
103
.. _Allgatherv:
43
104
44
105
Allgatherv
@@ -250,50 +311,53 @@ return ``event``
250
311
Broadcast
251
312
*********
252
313
253
-
Broadcast is a collective communication operation that broadcasts data
254
-
from one rank of communicator (denoted as root) to all other ranks.
314
+
Broadcast is a collective communication operation that broadcasts data from one rank of communicator (denoted as root) to all other ranks.
oneCCL specification defines the following group calls:
10
+
11
+
* group_start()
12
+
* group_end()
13
+
14
+
15
+
Group calls serve to merge multiple calls into a single group operation. These operations are initiated and finalized using primary functions: group_start() and group_end().
16
+
17
+
Group_start
18
+
***********
19
+
20
+
void CCL_API group_start();
21
+
22
+
group_start() starts a group call. group_start() can be used to initiate a group call operation to indicate that successive operations should not get blocked due to CPU synchronization.
23
+
24
+
Group_end
25
+
*********
26
+
27
+
void CCL_API group_end();
28
+
29
+
group_end() ends a group call. The group_end() call returns when all the operations between group_start() and group_end() have been enqueued for execution, but not necessarily completed.
30
+
31
+
32
+
Note: Currently group calls are supported for point-to-point and collective operations.
Copy file name to clipboardExpand all lines: source/elements/oneCCL/source/spec/main_objects.rst
+32Lines changed: 32 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -290,6 +290,38 @@ return ``context``
290
290
See also: :doc:`collective_operations`
291
291
292
292
293
+
294
+
.. _Split_communicator:
295
+
296
+
SPLIT-COMMUNICATOR
297
+
******************
298
+
299
+
The communicator provides methods to create one or more new communicators from an existing communicator. The new sub-communicators are created based on user-supplied color and key. Each newly formed sub-communicator includes only the ranks that provided the same color. Within each sub-communicator, ranks are reordered by the ascending key. This call is collective over all ranks in the communicator.
300
+
301
+
.. code:: cpp
302
+
303
+
communicator split_communicator(const communicator& comm, int color, int key);
304
+
305
+
``comm``
306
+
An existing communicator handle.
307
+
308
+
``color``
309
+
A value that defines which ranks will belong to the new sub-communicator. Ranks providing the same color are part of the same sub-communicator.
310
+
311
+
``key``
312
+
Used to order the ranks within each sub-communicator. Ranks in the resulting communicator are sorted by the ascending key.
0 commit comments