This document is relevant for: Trn2, Trn3
nki.collectives.ReplicaGroup#
- class nki.collectives.ReplicaGroup[source]#
The set of ranks a collective is executed on, as a list of rank-lists.
The collective executes independently within each rank-list, and executes on all rank-lists in parallel. Each rank in the replica-group must participate in only one rank-list.
e.g. with
[[0, 1, 2, 3], [4, 5, 6, 7]], the collective runs independently within ranks 0-3 and within ranks 4-7, in parallel.Methods
Build a ReplicaGroup by partitioning ranks
[0, world_size).- static from_partition_op(world_size: int, op: rg_partition_op, operand: int) ReplicaGroup[source]#
Build a ReplicaGroup by partitioning ranks
[0, world_size).Ranks sharing the same
rank_list_id = op(rank, operand)form one rank-list.Examples (8 ranks):
>>> ReplicaGroup.from_partition_op(8, rg_partition_op.bitwise_and, 0) ReplicaGroup([[0, 1, 2, 3, 4, 5, 6, 7]]) # all ranks, one rank-list >>> ReplicaGroup.from_partition_op(8, rg_partition_op.div, 4) ReplicaGroup([[0, 1, 2, 3], [4, 5, 6, 7]]) # contiguous >>> ReplicaGroup.from_partition_op(8, rg_partition_op.mod, 4) ReplicaGroup([[0, 4], [1, 5], [2, 6], [3, 7]]) # strided
This document is relevant for: Trn2, Trn3