CANN/hcomm组调用结束接口

📅 2026/7/14 12:43:18 👁️ 阅读次数 📝 编程学习
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),仅供参考