HcclCommInitAll
产品支持情况
产品 |
是否支持 |
|---|---|
Atlas 350 加速卡 |
√ |
√ |
|
√ |
|
☓ |
|
√ |
|
√ |
针对
针对
功能说明
单机通信场景中,通过一个进程统一创建多张卡的通信域(其中一张卡对应一个线程)。在初始化通信域的过程中,devices[0]作为root rank自动收集集群信息。
函数原型
1 | HcclResult HcclCommInitAll(uint32_t ndev, int32_t* devices, HcclComm* comms) |
参数说明
参数名 |
输入/输出 |
描述 |
|---|---|---|
ndev |
输入 |
通信域内的device个数。 |
devices |
输入 |
通信域中的device列表,其值为device的逻辑ID,可通过npu-smi info -m命令查询,HCCL按照devices中设置的顺序创建通信域。 需要注意,输入的devices列表中不能包含重复的device ID。 |
comms |
输出 |
生成的通信域句柄数组,其大小为:ndev * sizeof(HcclComm)。 HcclComm类型的定义可参见HcclComm。 |
返回值
HcclResult:接口成功返回HCCL_SUCCESS,其他失败。
约束说明
- 该接口仅支持单机通信场景使用,不支持多机通信场景。
- 多线程调用通信操作API时(例如HcclAllReduce等),用户需确保不同线程中调用通信操作API的前后时间差不超过环境变量HCCL_CONNECT_TIMEOUT的时间,避免建链超时。
- 不支持一张卡同时调用多个通信操作API。
调用示例
1 2 3 4 5 6 7 8 9 | uint32_t rankSize = 2; int32_t devices[rankSize] = {0, 1}; HcclComm comms[rankSize]; // 初始化通信域 HcclCommInitAll(rankSize, devices, comms); // 销毁通信域 for (uint32_t i = 0; i < rankSize; i++) { HcclCommDestroy(comms[i]); } |
父主题: C语言接口