参数面端口绑定失败(EJ0003)
问题现象
在CANN日志中存在关键字"Please check the port status and whether the port is being used by other process.",如下所示。此外需注意在通信域集群协商阶段也会有端口绑定失败问题,可以根据报错日志中的"socket type"判断,若type为0或者1,则为参数面端口绑定失败,若type为2,则为通信域集群信息协商时host侧网卡端口绑定失败,可参考server节点端口绑定失败(EJ0003)。
[ERROR] HCCL(3153681,all_reduce_test):2025-11-20-15:27:27.558.277 [hccl_socket.cc:106] [3153681][HcclSocket][Listen] socket type[0], listen on ip[192.168.2.199] and specific port[16666] fail. Please check the port status and whether the port is being used by other process.
问题根因
当前rank或进程在通信算子参数面建链时需要绑定一个device侧网卡的端口,但发现端口已被其他进程占用。
解决方法
HCCL使用device侧网卡的端口时默认需绑定16666端口,因此若有多个进程执行在同一个device上,且均会调用HCCL的通信算子接口,那么就会出现端口已被其他进程绑定导致失败的问题。
此时可先从业务上排查多个进程跑在同一个device上是否符合任务预期,若符合任务预期结果,可通过配置HCCL_NPU_SOCKET_PORT_RANGE环境变量使能多进程场景,如:
export HCCL_NPU_SOCKET_PORT_RANGE="auto"
父主题: 参数面建链阶段