Функция get_group_rank
Функция get_group_rank возвращает ранг текущего процесса
внутри указанной группы, которая была создана с помощью
функции new_group. Ранг - это уникальный идентификатор
процесса в пределах группы, начиная с 0. Если группа не указана,
функция возвращает ранг в глобальной группе, которая инициализируется
при вызове init_process_group. Это полезно, когда требуется
определить положение текущего процесса в подгруппе для выполнения
специфических операций или логирования.
Синтаксис
dist.get_group_rank(group=None)
Параметр group (опциональный) - это объект группы
процессов типа ProcessGroup. Если параметр опущен,
возвращается ранг в глобальной группе.
Пример
Давайте создадим распределенную среду с двумя группами: глобальной и подгруппой, состоящей из первых двух процессов. Затем получим ранг в каждой из них:
import torch
import torch.distributed as dist
dist.init_process_group(backend='gloo', rank=0, world_size=4)
subgroup = dist.new_group(ranks=[0, 1])
if dist.get_rank() == 0:
global_rank = dist.get_group_rank()
subgroup_rank = dist.get_group_rank(group=subgroup)
print(global_rank)
print(subgroup_rank)
Результат выполнения кода (для процесса с рангом 0):
0
0
Пример
Рассмотрим ситуацию, когда нам нужно определить ранг процесса в подгруппе для выполнения условных операций:
import torch
import torch.distributed as dist
dist.init_process_group(backend='gloo', rank=1, world_size=4)
subgroup = dist.new_group(ranks=[0, 2, 3])
if dist.get_group_rank(group=subgroup) == 0:
# Этот код выполнится только для процесса с рангом 0 в подгруппе
print("Процесс является лидером подгруппы")
else:
print("Процесс не является лидером подгруппы")
Результат выполнения кода (для процесса с глобальным рангом 1):
"Процесс не является лидером подгруппы"
Смотрите также
-
функцию
new_group,
которая создает новую группу процессов -
функцию
get_rank,
которая возвращает ранг текущего процесса -
функцию
get_world_size,
которая возвращает общее количество процессов -
функцию
get_global_rank,
которая преобразует ранг в группе в глобальный ранг