昇腾社区首页
中文
注册
开发者
下载

HcclGroupStart

产品支持情况

产品

是否支持

Atlas 350 加速卡

Atlas A3 训练系列产品/Atlas A3 推理系列产品

Atlas A2 训练系列产品/Atlas A2 推理系列产品

Atlas 200I/500 A2 推理产品

Atlas 推理系列产品

Atlas 训练系列产品

针对Atlas A2 训练系列产品/Atlas A2 推理系列产品,仅支持Atlas 800T A2 训练服务器、Atlas 900 A2 PoD 集群基础单元、Atlas 200T A2 Box16 异构子框。

功能说明

开始一个组调用。

在HcclGroupStart和HcclGroupEnd之间调用多个函数,作为一个整体执行,组调用支持以下三种场景:

函数原型

1
HcclResult HcclGroupStart()

参数说明

返回值

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();