CANN/hcomm组调用结束接口
HcclGroupEnd
【免费下载链接】hcommHCOMM(Huawei Communication)是HCCL的通信基础库,提供通信域以及通信资源的管理能力。项目地址: https://gitcode.com/cann/hcomm
产品支持情况
- Ascend 950PR/Ascend 950DT:不支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
- Atlas 推理系列产品:不支持
- Atlas 训练系列产品:不支持
[!NOTE]说明 针对Atlas A2 训练系列产品/Atlas A2 推理系列产品,仅支持Atlas 800T A2 训练服务器、Atlas 900 A2 PoD 集群基础单元、Atlas 200T A2 Box16 异构子框。
功能说明
结束一个组调用。
在HcclGroupStart和HcclGroupEnd之间调用多个函数,作为一个整体执行,组调用支持以下三种场景:
- 单进程多线程管理NPU:支持调用通信域管理接口HcclCommInitClusterInfo、HcclCommInitClusterInfoConfig、HcclCommInitRootInfo、HcclCommInitRootInfoConfig 、HcclCommDestroy。
- 合并多个集合通信。
- 合并多个点对点通信。
函数原型
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();
【免费下载链接】hcommHCOMM(Huawei Communication)是HCCL的通信基础库,提供通信域以及通信资源的管理能力。项目地址: https://gitcode.com/cann/hcomm
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
