从初始化完成的集合通信域中获取集合通信域名字。
torch.distributed.distributed_c10d._world.default_pg._get_backend(torch.device("npu")).get_hccl_comm_name(rankid->int,init_comm=True) -> String
注:接口为PyTorch的ProcessGroup类,backend为NPU backend的方法。ProcessGroup可以是default_pg,也可以是torch.distributed.distributed_c10d.new_group创建的非default_pg。
调用该接口时,需要保证当前current device被设置为正确。
rankid: 集合通信对应device的rankid。传入的rankid为全局的rankid,多机间device具有唯一的rankid。
init_comm:可选入参,默认值为True。值为True时,表示调用get_hccl_comm_name时,若hccl还未完成初始化时,则完成初始化,并返回group name。值为False时,表示调用get_hccl_comm_name时,若hccl还未完成初始化,申请内存资源等操作时,则不进行初始化,并返回空字符串。
hccl初始化会申请内存资源,造成内存升高,默认申请内存大小为Send bufffer与Recv buffer 各200M,共400M。buffer大小受环境变量HCCL_BUFFSIZE控制。
string类型的集合通信域的名字。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import torch import torch_npu import torch.multiprocessing as mp import os from torch.distributed.distributed_c10d import _get_default_group import torch.distributed as dist def example(rank, world_size): torch.npu.set_device("npu:" + str(rank)) dist.init_process_group("hccl", rank=rank, world_size=world_size) default_pg = _get_default_group() if torch.__version__ > '2.0': hcomm_info = default_pg._get_backend(torch.device("npu")).get_hccl_comm_name(rank) else: hcomm_info = default_pg.get_hccl_comm_name(rank) print(hcomm_info) def main(): world_size = 2 mp.spawn(example, args=(world_size, ), nprocs=world_size, join=True) if __name__ == "__main__": os.environ["MASTER_ADDR"] = "localhost" os.environ["MASTER_PORT"] = "29505" main() |