HcclGroupEnd
产品支持情况
产品 |
是否支持 |
|---|---|
Atlas 350 加速卡 |
☓ |
√ |
|
√ |
|
☓ |
|
☓ |
|
☓ |
针对
功能说明
结束一个组调用。
在HcclGroupStart和HcclGroupEnd之间调用多个函数,作为一个整体执行,组调用支持以下三种场景:
- 单进程多线程管理NPU:支持调用通信域管理接口HcclCommInitClusterInfo、HcclCommInitClusterInfoConfig、HcclCommInitRootInfo、HcclCommInitRootInfoConfig 、HcclCommDestroy。
- 合并多个集合通信。
- 合并多个点对点通信。
函数原型
1 | HcclResult HcclGroupEnd() |
参数说明
无
返回值
HcclResult:接口成功返回HCCL_SUCCESS,其他失败。
约束说明
- 在一个组调用中,通信域管理、集合通信、点对点通信类型的接口不可混用。
- 合并多个点对点通信时,不支持调用HcclBatchSendRecv接口。
- HcclGroupStart必须和HcclGroupEnd配套使用,HcclGroupStart在前,HcclGroupEnd在后。
调用示例
- 示例一:单进程多线程管理NPU
HcclComm hccl_comms[devCount]; HcclGroupStart(); for(int i = 0; i < ndev; i++){ // aclrtSetDevice(i); HcclCommInitRootInfo(devCount, &rootInfo, global_rank, &(hccl_comms[i])); } HcclGroupEnd(); - 示例二:合并多个集合通信操作
HcclGroupStart(); HCCLCHECK(HcclReduceScatter(sendBuf, recvBuf, 1, HCCL_DATA_TYPE_FP32, HCCL_REDUCE_SUM, hcclComm, stream)); HCCLCHECK(HcclAllGather(recvBuf, sendBuf, 1, HCCL_DATA_TYPE_FP32, hcclComm, stream)); HcclGroupEnd(); - 示例三:合并多个点对点通信
HcclGroupStart(); for(int i = 0; i < devCount; i++){ HCCLCHECK(HcclSend(sendBuf[i], count, HCCL_DATA_TYPE_FP32, i, hcclComm, stream)); } for(int i = 0; i < devCount; i++){ HCCLCHECK(HcclRecv(recvBuf[i], count, HCCL_DATA_TYPE_FP32, i, hcclComm, stream)); } HcclGroupEnd();
父主题: 组调用