HcclCreateSubCommConfig
功能说明
基于既有的全局通信域,切分具有特定配置的子通信域。
该子通信域创建方式无需进行socket建链与rank信息交换,可应用于业务故障下的快速通信域创建。
函数原型
HcclResult HcclCreateSubCommConfig(HcclComm *comm, uint32_t rankNum, uint32_t *rankIds, uint64_t subCommId, uint32_t subCommRankId, HcclCommConfig *config, HcclComm *comm)
参数说明
参数名 |
输入/输出 |
描述 |
---|---|---|
comm |
输入 |
被切分的全局通信域。 HcclComm类型的定义可参见HcclComm。 |
rankNum |
输入 |
需要切分的子通信域中的rank数量。 |
rankIds |
输入 |
子通信域中rank在全局通信域中的rank id组成的数组。 需要注意:该数组应当是有序的,数组中每个rank的下标将映射为其在子通信域的rank id。 |
subCommId |
输入 |
当前子通信域标识。 用户自定义,在全局通信域中唯一即可。 |
subCommRankId |
输入 |
本rank在子通信域中的rank id。 请配置为当前rank在rankIds数组中的下标索引。 |
config |
输入 |
通信域配置项,目前的可配置项为buffer大小、确定性计算开关、通信域名称。 需要注意:
|
comm |
输出 |
将初始化后的子通信域以指针的信息回传给调用者。 HcclComm类型的定义可参见HcclComm。 |
返回值
HcclResult:接口成功返回HCCL_SUCCESS,其他失败。
约束说明
- 属于同一子通信域的rank调用该接口时传入的rankNum、rankIds、subCommId、config均应相同。
- 不需要创建子通信域的rank应当传入rankIds==nullptr和subCommId=0xFFFFFFFF。
- 对于同一个全局通信域,不可使用重复的subCommId创建子通信域。
- 只支持从全局通信域切分子通信域,不支持通信域嵌套切分。
支持的型号
Atlas 训练系列产品
Atlas A2 训练系列产品
调用示例
一个简单的代码示例片段如下:
1 2 3 4 5 6 7 8 9 |
HcclComm globalHcclComm; HcclCommInitClusterInfo(rankTableFile, devId, &globalHcclComm); HcclCommConfig config; HcclCommConfigInit(&config); config.hcclBufferSize = 50; strcpy(config.hcclCommName, "comm_1"); HcclComm hcclComm; uint32_t rankIds[4] = {0, 1, 2, 3}; HCCLCHECK(HcclCreateSubCommConfig(&globalHcclComm, 4, rankIds, 1, devId, &config, &hcclComm)); |
父主题: 通信域管理