下载
中文
注册

未指定网卡名报错retcode 9

问题现象

多机测试场景下,执行HCCL Test测试工具时,进程执行卡住,然后报错retcode 9,如下图所示:

# mpirun -f hostfile -n 32 ./bin/all_reduce_test -b 1 -e 2G -p 16 -f 2 -o sum -c 0
the minbytes is 1, maxbytes is 2147483648, iters is 20,warmup_iters is 5
hccl interface return errreturn err ./common/src/hccl_test_common.cc:499, retcode:9
hccl interface return errreturn err ./common/src/hccl_test_common.cc:499, retcode:9
hccl interface return errreturn err ./common/src/hccl_test_common.cc:499, retcode:9
hccl interface return errreturn err ./common/src/hccl_test_common.cc:499, retcode:9
...
This is an error in init_hcclComm.

原因分析

未配置初始化root通信网卡名导致。

解决步骤

多机场景下,执行HCCL Test测试工具前需要在操作节点配置HCCL初始化root通信网卡的网卡名,HCCL可通过该网卡名获取Host IP,完成通信域创建。

配置方式如下:

配置HCCL的初始化root通信网卡使用的IP协议版本,AF_INET:IPv4;AF_INET6:IPv6
export HCCL_SOCKET_FAMILY=AF_INET       #IPv4

# 支持以下格式的网卡名配置(4种规格自行选择1种即可,环境变量中可配置多个网卡,取最先匹配到的网卡作为root网卡)

# 精确匹配网卡
export HCCL_SOCKET_IFNAME==eth*,enp***   # 使用指定的eth*或enp**网卡
export HCCL_SOCKET_IFNAME=^=eth*,enp***     # 不使用指定的eth*或enp**网卡

# 模糊匹配网卡
export HCCL_SOCKET_IFNAME=eth,enp       # 使用所有以eth或enp为前缀的网卡
export HCCL_SOCKET_IFNAME=^eth,enp      # 不使用任何以eth或enp为前缀的网卡

需要注意:

MPI工具执行时,会将环境变量同步到所有节点,如果参与集合通信的不同节点的网卡名字不同,例如node1的网卡名为eth1,node2的网卡名为eth2,则需要使用模糊匹配网卡的方式进行环境变量配置。