基于既有的全局通信域,切分具有特定配置的子通信域。
该子通信域创建方式无需进行socket建链与rank信息交换,可应用于业务故障下的快速通信域创建。
如果组网中卡间存在负载不均衡的情况,使用该接口创建的子通信域可能会由于卡间不同步发生建链超时。此时可通过环境变量HCCL_CONNECT_TIMEOUT增加设备间的建链超时时间。示例:
export HCCL_CONNECT_TIMEOUT=600
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大小、确定性计算开关、通信域名称等信息,配置参数需确保在合法值域内,详见HcclCommConfig的定义。 需要注意:
|
comm |
输出 |
将初始化后的子通信域以指针的信息回传给调用者。 HcclComm类型的定义可参见HcclComm。 |
HcclResult:接口成功返回HCCL_SUCCESS,其他失败。
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)); |
完整的代码示例可参见HcclCreateSubCommConfig方式创建子通信域。