---
title: HCCL模板参数
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendcopapi/atlasascendc_api_07_0870.html
sourcePath: /source/zh/canncommercial/900/API/ascendcopapi/atlasascendc_api_07_0870.html
indexId: 0ae219cfdc08fda933e28df76410ea8da794e2a76df40b61624ac6dea48e589476
---
# HCCL模板参数

#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | x |
| Atlas 推理系列产品 AI Core | x |
| Atlas 推理系列产品 Vector Core | x |
| Atlas 训练系列产品 | x |


#### 功能说明

创建HCCL对象时需要传入模板参数。


#### 函数原型

Hccl类定义如下，模板参数说明见表1 Hccl类模板参数说明。

```
template <HcclServerType serverType = HcclServerType::HCCL_SERVER_TYPE_AICPU, const auto &config = DEFAULT_CFG>
class Hccl;
```


#### 参数说明


**表1 Hccl类模板参数说明**

| 参数名称 | 描述 |  |  |  |  |
| --- | --- | --- | --- | --- | --- |
| serverType | 支持的服务端类型。HcclServerType类型，定义如下。 对于 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ，当前仅支持HCCL\_SERVER\_TYPE\_AICPU。 对于 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ，当前仅支持HCCL\_SERVER\_TYPE\_AICPU。 对于Atlas 350 加速卡，当前仅支持HCCL\_SERVER\_TYPE\_CCU。 1 2 3 4 5 enum HcclServerType { HCCL\_SERVER\_TYPE\_AICPU = 0, HCCL\_SERVER\_TYPE\_CCU, HCCL\_SERVER\_TYPE\_END // 预留参数，不支持使用 } | 1 2 3 4 5 | enum HcclServerType { HCCL\_SERVER\_TYPE\_AICPU = 0, HCCL\_SERVER\_TYPE\_CCU, HCCL\_SERVER\_TYPE\_END // 预留参数，不支持使用 } |  |  |
| 1 2 3 4 5 | enum HcclServerType { HCCL\_SERVER\_TYPE\_AICPU = 0, HCCL\_SERVER\_TYPE\_CCU, HCCL\_SERVER\_TYPE\_END // 预留参数，不支持使用 } |  |  |  |  |
| config | 用于指定向服务端下发任务的核。HcclServerConfig类型，定义如下，默认值DEFAULT\_CFG = {CoreType::DEFAULT, 0}。 1 2 3 4 struct HcclServerConfig { CoreType type; // 向服务端下发任务的核的类型 int64\_t blockId; // 向服务端下发任务的核的ID }; CoreType的定义如下： 1 2 3 4 5 enum class CoreType: uint8\_t { DEFAULT, // 表示不指定AIC核或者AIV核 ON\_AIV, // 表示指定为AIV核 ON\_AIC // 表示指定为AIC核 }; | 1 2 3 4 | struct HcclServerConfig { CoreType type; // 向服务端下发任务的核的类型 int64\_t blockId; // 向服务端下发任务的核的ID }; | 1 2 3 4 5 | enum class CoreType: uint8\_t { DEFAULT, // 表示不指定AIC核或者AIV核 ON\_AIV, // 表示指定为AIV核 ON\_AIC // 表示指定为AIC核 }; |
| 1 2 3 4 | struct HcclServerConfig { CoreType type; // 向服务端下发任务的核的类型 int64\_t blockId; // 向服务端下发任务的核的ID }; |  |  |  |  |
| 1 2 3 4 5 | enum class CoreType: uint8\_t { DEFAULT, // 表示不指定AIC核或者AIV核 ON\_AIV, // 表示指定为AIV核 ON\_AIC // 表示指定为AIC核 }; |  |  |  |  |


#### 返回值说明

无


#### 约束说明

无


#### 调用示例

通过如下传入模板参数config的方式创建Hccl类对象，指定HCCL客户端仅在AIV的10号核上发送通信消息给服务端，替代通过调用GetBlockIdx接口的方式指定运行的核。```
static constexpr HcclServerConfig HCCL_CFG = {CoreType::ON_AIV, 10};
// 选择AICPU作为服务端
Hccl<HcclServerType::HCCL_SERVER_TYPE_AICPU, HCCL_CFG> hccl; 

// 选择CCU作为服务端
Hccl<HcclServerType::HCCL_SERVER_TYPE_CCU, HCCL_CFG> hccl;
```
