РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
769 of 769 menu

Функция distributed.get_process_group_ranks

Функция distributed.get_process_group_ranks возвращает список рангов всех процессов, входящих в указанную группу. Эта функция полезна для получения информации о всех участниках группы, с которой работает текущий процесс. Функция принимает объект группы и возвращает список целых чисел, соответствующих рангам процессов в этой группе. Порядок рангов в списке соответствует порядку процессов при создании группы.

Синтаксис

torch.distributed.get_process_group_ranks(group)

Параметры функции:

group (ProcessGroup) - объект группы процессов, полученный через new_group или distributed.group.WORLD для глобальной группы.

Возвращаемое значение: список Python int с рангами всех процессов в группе.

Пример

Давайте получим ранги всех процессов в глобальной группе (WORLD):

import torch import torch.distributed as dist # Инициализация группы процессов (обычно делается при запуске) dist.init_process_group(backend='gloo') # Получаем список рангов всех процессов в глобальной группе ranks = dist.get_process_group_ranks(dist.group.WORLD) print(f"Ranks in global group: {ranks}")

Результат выполнения кода (пример для 4 процессов):

"Ranks in global group: [0, 1, 2, 3]"

Пример

Давайте создадим подгруппу из процессов с рангами 0 и 2 и получим ранги внутри этой подгруппы:

import torch import torch.distributed as dist dist.init_process_group(backend='gloo') # Создаем подгруппу из процессов с рангами 0 и 2 ranks_to_include = [0, 2] subgroup = dist.new_group(ranks=ranks_to_include) # Получаем ранги процессов в созданной подгруппе if dist.get_rank() in ranks_to_include: sub_ranks = dist.get_process_group_ranks(subgroup) print(f"Ranks in subgroup: {sub_ranks}")

Результат выполнения кода для процесса с рангом 0 (или 2):

"Ranks in subgroup: [0, 2]"

Пример

Давайте используем полученный список рангов для выполнения операций с каждым процессом в группе:

import torch import torch.distributed as dist dist.init_process_group(backend='gloo') # Создаем группу из двух процессов: 0 и 1 group = dist.new_group(ranks=[0, 1]) # Получаем список рангов группы group_ranks = dist.get_process_group_ranks(group) current_rank = dist.get_rank() # Проверяем, входит ли текущий процесс в группу if current_rank in group_ranks: print(f"Process {current_rank} is in group: {group_ranks}") # Выполняем операцию для всех процессов группы if current_rank == group_ranks[0]: print(f"Process {current_rank} is the first in group")

Результат выполнения кода для процессов 0 и 1:

"Process 0 is in group: [0, 1]" "Process 0 is the first in group" "Process 1 is in group: [0, 1]"

Смотрите также

  • функцию get_rank,
    которая возвращает ранг текущего процесса в заданной группе
  • функцию get_world_size,
    которая возвращает общее количество процессов в группе
  • функцию get_group_rank,
    которая возвращает ранг процесса в группе по его глобальному рангу
  • функцию new_group,
    которая создает новую группу процессов из указанных рангов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить