昇腾社区首页
中文
注册

HcclGetRootInfo

功能说明

此接口需要在HCCL初始化接口HcclCommInitRootInfoHcclCommInitRootInfoConfig前调用,仅需在root节点调用,用于生成root节点的rank标识信息(HcclRootInfo)。

函数原型

HcclResult HcclGetRootInfo(HcclRootInfo *rootInfo)

参数说明

参数名

输入/输出

描述

rootInfo

输出

本rank的标识信息,主要包含device ip、device id等信息。此信息需广播至集群内所有rank用来进行HCCL初始化。

HcclRootInfo类型的定义可参见HcclRootInfo

返回值

HcclResult:接口成功返回HCCL_SUCCESS,其他失败。

约束说明

  • 多机集合通信场景,调用HcclGetRootInfo前,可以进行如下操作(非必选):
    • 配置环境变量HCCL_IF_IPHCCL_SOCKET_IFNAME,指定HCCL的初始化root网卡IP(环境变量网HCCL_IF_IP的优先级高于HCCL_SOCKET_IFNAME,若二者都不配置,默认使用网卡名字典序升序选择root网卡)。
    • 配置环境变量HCCL_WHITELIST_DISABLE开启白名单校验,并通过HCCL_WHITELIST_FILE指定通信白名单配置文件(若不配置,默认关闭通信白名单校验)。
  • 调用此接口后,需要以此rank为root节点,将此rank标识信息广播至通信域中的所有rank,然后调用HcclCommInitRootInfoHcclCommInitRootInfoConfig接口使用接收到的rootInfo进行HCCL初始化。
  • 该接口和初始化接口HcclCommInitRootInfoHcclCommInitRootInfoConfig接口配对使用,不能单独使用。
  • 该接口支持单线程循环调用,即开发者可在一个for循环中通过“指定不同的Device + 调用此接口”,从而实现在一个线程中获取不同设备的rootInfo信息。

    假设一个AI Server中有8张卡,8张卡分成4个通信域两两之间进行通信,如下图所示。

    图1 通信域划分示例

    获取rootInfo信息并进行集合通信初始化的流程如图2所示。首先在一个线程中通过切换Device创建4个rootInfo信息,并存入一个长度为4的数组中。rootInfo信息获取完成后,起4个线程,分别调用HcclCommInitRootInfo或者HcclCommInitRootInfoConfig接口(图2中以HcclCommInitRootInfo接口示意)根据不同的rootInfo信息进行通信域初始化。

    图2 单线程循环调用示例

支持的型号

Atlas 训练系列产品

Atlas A2 训练系列产品

Atlas 300I Duo 推理卡