---
title: HcclGroupStart
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/hcclug/hcclcpp_07_0063.html
sourcePath: /source/zh/canncommercial/900/API/hcclug/hcclcpp_07_0063.html
indexId: dceb032312fde44baacf550d4a80a8449120378bced89f640bc26b83764e623a61
---
# 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之间调用多个函数，作为一个整体执行，组调用支持以下三种场景：- 单进程多线程管理NPU：支持调用通信域管理接口  HcclCommInitClusterInfo
、  HcclCommInitClusterInfoConfig
、  HcclCommInitRootInfo
、  HcclCommInitRootInfoConfig
、  HcclCommDestroy
。
- 合并多个集合通信。
- 合并多个点对点通信。


#### 函数原型

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