---
title: CreateHcclCrossMulitComm
description: "backend为HCCL时，使用ranktable的方式创建多机多卡子通信域功能。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendtb/ascendtb_01_0310.html
sourcePath: /source/zh/canncommercial/900/API/ascendtb/ascendtb_01_0310.html
indexId: 6767854ca0b21a549db6eefb10cc287648453b60e1a5eba06c9d98c78a12fba264
---
# CreateHcclCrossMulitComm

#### 功能说明

backend为HCCL时，使用ranktable的方式创建多机多卡子通信域功能。


#### 定义

```
HcclComm CreateHcclCrossMulitComm(const char *rankTableFile, uint32_t subCommRankId, std::vector<uint32_t> &rankIds, uint64_t subCommId, uint32_t hcclBufferSize, char *commName);
```


#### 参数列表

| 成员名称 | 输入/输出 | 类型 | 默认值 | 描述 |
| --- | --- | --- | --- | --- |
| rankTableFile | 输入 | char \* | \- | ranktable的文件路径。作为字符串最大长度为4096字节，含结束符。 ranktable的配置请参见《HCCL集合通信库》的“rank table配置资源信息(https://www.hiascend.com/document/detail/zh/canncommercial/900/API/hcclug/hcclug\_000065.html)”。 |
| subCommRankId | 输入 | uint32\_t | \- | 本rank在子通信域中的rank id。 |
| rankIds | 输入 | vector<uint32\_t> | \- | 子通信域中rank在全局通信域中的rank id组成的数组。 注意：该数组应当是有序的，数组中每个rank的下标将映射为其在子通信域的rank id。 |
| subCommId | 输入 | uint64\_t | \- | 当前子通信域标识。 |
| hcclBufferSize | 输入 | uint32\_t | \- | 子通信域共享数据的缓存区大小。单位M |
| commName | 输出 | char \* | \- | 子通信域创建成功后获取到的通信域名称。最大返回长度支持128。 |


#### 约束说明

- 当前rank不支持在多个子通信域中并行创建，如：当前rank是1，两个子通信域分别是[0,1]和[1,2]，此时不支持并行创建，可以串行创建；如果当前rank是0或2，两个子通信域分别是[0,1]和[1,2]，此时支持并行创建。
- subCommRankId < rankIds.size()。
- 不支持跨芯片类型多机通信。
- 对于同一个全局通信域，不可使用重复的subCommId创建子通信域。
- 只支持Atlas A2 训练系列产品 / Atlas A2 推理系列产品和Atlas A3 推理系列产品 / Atlas A3 训练系列产品。
