HcclCreateSubCommConfig
产品支持情况
| 产品 | 是否支持 | 
|---|---|
|  | √ | 
|  | √ | 
|  | x | 
|  | x | 
|  | x | 
|  | √ | 
功能说明
基于既有的全局通信域,切分具有特定配置的子通信域。
该子通信域创建方式无需进行socket建链与rank信息交换,可应用于业务故障下的快速通信域创建。
函数原型
| 1 | HcclResult HcclCreateSubCommConfig(HcclComm *comm, uint32_t rankNum, uint32_t *rankIds, uint64_t subCommId, uint32_t subCommRankId, HcclCommConfig *config, HcclComm *subComm) | 
参数说明
| 参数名 | 输入/输出 | 描述 | 
|---|---|---|
| comm | 输入 | 被切分的全局通信域。 HcclComm类型的定义可参见HcclComm。 | 
| rankNum | 输入 | 需要切分的子通信域中的rank数量。 | 
| rankIds | 输入 | 子通信域中rank在全局通信域中的rank id组成的数组。 需要注意:该数组应当是有序的,数组中每个rank的下标将映射为其在子通信域的rank id。 | 
| subCommId | 输入 | 当前子通信域标识,用户自定义。 
 | 
| subCommRankId | 输入 | 本rank在子通信域中的rank id。 请配置为当前rank在rankIds数组中的下标索引。 | 
| config | 输入 | 通信域配置项,包括buffer大小、确定性计算开关、通信域名称、通信算法编排展开位置等信息,配置参数需确保在合法值域内,关于HcclCommConfig中的详细参数含义及优先级可参见HcclCommConfig的定义。 需要注意:传入的config必须先调用HcclCommConfigInit对其进行初始化。 | 
| subComm | 输出 | 将初始化后的子通信域以指针的信息回传给调用者。 HcclComm类型的定义可参见HcclComm。 | 
返回值
HcclResult:接口成功返回HCCL_SUCCESS,其他失败。
约束说明
- 属于同一子通信域的rank调用该接口时传入的rankNum、rankIds、subCommId、config均应相同。
- 不需要创建子通信域的rank应当传入rankIds==nullptr和subCommId=0xFFFFFFFF,此场景不会对“subCommId”参数做校验。
- 只支持从全局通信域切分子通信域,不支持通信域嵌套切分。
调用示例
| 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)); | 
