---
title: HCCL Tiling构造函数
description: "用于创建一个Mc2CcTilingConfig对象。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendcopapi/atlasascendc_api_07_10036.html
sourcePath: /source/zh/canncommercial/900/API/ascendcopapi/atlasascendc_api_07_10036.html
indexId: a3df16881ad86004e9e14babae1479a69c4c9ec06135cf550f47fb54de2a503877
---
# HCCL Tiling构造函数

#### 功能说明

用于创建一个Mc2CcTilingConfig对象。


#### 函数原型

```
Mc2CcTilingConfig(const std::string &groupName, uint32_t opType, const std::string &algConfig, uint32_t reduceType = 0, uint8_t dstDataType = 0, uint8_t srcDataType = 0, uint8_t commEngine = 0)
```


#### 参数说明


**表1 参数说明**

| 参数名 | 输入/输出 | 描述 |
| --- | --- | --- |
| groupName | 输入 | 当前通信任务所在的通信域。string类型，支持的最大长度为128字节。 |
| opType | 输入 | 表示通信任务类型。uint32\_t类型。HCCL API提供HcclCMDType枚举定义作为该参数的取值，具体支持的通信任务类型及取值请参考表2。 |
| algConfig | 输入 | 通信算法配置。string类型，支持的最大长度为128字节。 针对Atlas 350 加速卡，该参数为预留字段，配置后不生效，默认仅支持FullMesh算法。FullMesh算法即NPU之间的全连接，任意两个NPU之间可以直接进行数据收发。详细的算法内容可参见集合通信算法介绍(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/hcclug/hcclug\_000114.html)。 针对 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ，当前支持的取值为： "AllReduce=level0:doublering"：AllReduce通信任务。 "AllGather=level0:doublering"：AllGather通信任务。 "ReduceScatter=level0:doublering"：ReduceScatter通信任务。 "AlltoAll=level0:fullmesh;level1:pairwise"：AlltoAllV和AlltoAll通信任务。 "BatchWrite=level0:fullmesh"：BatchWrite通信任务。 针对 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ，该参数为预留字段，配置后不生效，默认仅支持FullMesh算法。FullMesh算法即NPU之间的全连接，任意两个NPU之间可以直接进行数据收发。详细的算法内容可参见集合通信算法介绍(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/hcclug/hcclug\_000114.html)。 |
| reduceType | 输入 | 归约操作类型，仅对有归约操作的通信任务生效。uint32\_t类型，取值详见表2。 |
| dstDataType | 输入 | 通信任务中输出数据的数据类型。uint8\_t类型，该参数的取值范围请参考表1。 Atlas 350 加速卡，不同通信任务支持的输出数据类型不同，具体为： 对于AllReduce、AllGather、AllToAll、AllToAllV、AllToAllVWrite通信任务：输出的数据类型必须与输入的数据类型一致。各通信任务支持的输入数据类型请参考srcDataType。 对于ReduceScatter通信任务，当输入的数据类型为int16\_t、int32\_t、half、float、bfloat16\_t时，输出的数据类型必须与其一致；当输入的数据类型为int8\_t、hifloat8\_t、fp8\_e5m2\_t、fp8\_e4m3fn\_t时，输出的数据类型必须为half、bfloat16\_t、float三者之一。 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ，该参数暂不支持，配置后不生效。 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ，该参数暂不支持，配置后不生效。 |
| srcDataType | 输入 | 通信任务中输入数据的数据类型。uint8\_t类型，该参数的取值范围请参考表1。 Atlas 350 加速卡，不同通信任务支持的输入数据类型如下： AllReduce通信任务：支持的输入类型为int16\_t、half、bfloat16\_t、int32\_t、float。 AllGather、AllToAll、AllToAllV、AllToAllVWrite通信任务：支持的输入类型为int8\_t、uint8\_t、hifloat8\_t、fp8\_e5m2\_t、fp8\_e4m3fn\_t、int16\_t、uint16\_t、half、bfloat16\_t、int32\_t、uint32\_t、float、int64\_t、double。 ReduceScatter通信任务：支持的输入类型为int8\_t、hifloat8\_t、fp8\_e5m2\_t、fp8\_e4m3fn\_t、int16\_t、half、bfloat16\_t、int32\_t、float。 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ，该参数暂不支持，配置后不生效。 针对 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ，该参数暂不支持，配置后不生效。 |
| commEngine | 输入 | 通信引擎。uint8\_t类型，该参数的取值范围请参考：hcclOpExpansionMode(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/hcclug/hcclcpp\_07\_0047.html\#ZH\-CN\_TOPIC\_0000002531530198\_\_li148565015718)。 |


**表2 HcclCMDType参数说明**

| 数据类型 | 说明 |  |  |
| --- | --- | --- | --- |
| HcclCMDType | 通信任务类型。 针对Atlas 350 加速卡，当前支持的通信任务类型为HCCL\_CMD\_ALLREDUCE、HCCL\_CMD\_ALLGATHER、HCCL\_CMD\_REDUCE\_SCATTER、HCCL\_CMD\_ALLTOALL、HCCL\_CMD\_ALLTOALLV、HCCL\_CMD\_HALF\_ALLTOALLV。 针对 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ，当前支持的通信任务类型为HCCL\_CMD\_ALLREDUCE、HCCL\_CMD\_ALLGATHER、HCCL\_CMD\_REDUCE\_SCATTER、HCCL\_CMD\_ALLTOALL、HCCL\_CMD\_ALLTOALLV、HCCL\_CMD\_BATCH\_WRITE。 针对 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ，当前支持的通信任务类型为HCCL\_CMD\_ALLREDUCE、HCCL\_CMD\_ALLGATHER、HCCL\_CMD\_REDUCE\_SCATTER、HCCL\_CMD\_ALLTOALL、HCCL\_CMD\_BATCH\_WRITE。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 enum class HcclCMDType { HCCL\_CMD\_INVALID = 0, HCCL\_CMD\_BROADCAST = 1, HCCL\_CMD\_ALLREDUCE, HCCL\_CMD\_REDUCE, HCCL\_CMD\_SEND, HCCL\_CMD\_RECEIVE, HCCL\_CMD\_ALLGATHER, HCCL\_CMD\_REDUCE\_SCATTER, HCCL\_CMD\_ALLTOALLV, HCCL\_CMD\_ALLTOALLVC, HCCL\_CMD\_ALLTOALL, HCCL\_CMD\_GATHER, HCCL\_CMD\_SCATTER, HCCL\_CMD\_BATCH\_SEND\_RECV, HCCL\_CMD\_BATCH\_PUT, HCCL\_CMD\_BATCH\_GET, HCCL\_CMD\_ALLGATHER\_V, HCCL\_CMD\_REDUCE\_SCATTER\_V, HCCL\_CMD\_BATCH\_WRITE, HCCL\_CMD\_HALF\_ALLTOALLV = 20, HCCL\_CMD\_ALL }; | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | enum class HcclCMDType { HCCL\_CMD\_INVALID = 0, HCCL\_CMD\_BROADCAST = 1, HCCL\_CMD\_ALLREDUCE, HCCL\_CMD\_REDUCE, HCCL\_CMD\_SEND, HCCL\_CMD\_RECEIVE, HCCL\_CMD\_ALLGATHER, HCCL\_CMD\_REDUCE\_SCATTER, HCCL\_CMD\_ALLTOALLV, HCCL\_CMD\_ALLTOALLVC, HCCL\_CMD\_ALLTOALL, HCCL\_CMD\_GATHER, HCCL\_CMD\_SCATTER, HCCL\_CMD\_BATCH\_SEND\_RECV, HCCL\_CMD\_BATCH\_PUT, HCCL\_CMD\_BATCH\_GET, HCCL\_CMD\_ALLGATHER\_V, HCCL\_CMD\_REDUCE\_SCATTER\_V, HCCL\_CMD\_BATCH\_WRITE, HCCL\_CMD\_HALF\_ALLTOALLV = 20, HCCL\_CMD\_ALL }; |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | enum class HcclCMDType { HCCL\_CMD\_INVALID = 0, HCCL\_CMD\_BROADCAST = 1, HCCL\_CMD\_ALLREDUCE, HCCL\_CMD\_REDUCE, HCCL\_CMD\_SEND, HCCL\_CMD\_RECEIVE, HCCL\_CMD\_ALLGATHER, HCCL\_CMD\_REDUCE\_SCATTER, HCCL\_CMD\_ALLTOALLV, HCCL\_CMD\_ALLTOALLVC, HCCL\_CMD\_ALLTOALL, HCCL\_CMD\_GATHER, HCCL\_CMD\_SCATTER, HCCL\_CMD\_BATCH\_SEND\_RECV, HCCL\_CMD\_BATCH\_PUT, HCCL\_CMD\_BATCH\_GET, HCCL\_CMD\_ALLGATHER\_V, HCCL\_CMD\_REDUCE\_SCATTER\_V, HCCL\_CMD\_BATCH\_WRITE, HCCL\_CMD\_HALF\_ALLTOALLV = 20, HCCL\_CMD\_ALL }; |  |  |


#### 返回值说明

无


#### 约束说明

无


#### 调用示例

```
const char *groupName = "testGroup";
uint32_t opType = HCCL_CMD_REDUCE_SCATTER;
std::string algConfig = "ReduceScatter=level0:fullmesh";
uint32_t reduceType = HCCL_REDUCE_SUM;
uint8_t dstDataType = HCCL_DATA_TYPE_FP16;
uint8_t srcDataType = HCCL_DATA_TYPE_FP16;
uint8_t commEngine = 0;
AscendC::Mc2CcTilingConfig mc2CcTilingConfig(groupName, opType, algConfig, reduceType, dstDataType, srcDataType, commEngine); // 构造函数
mc2CcTilingConfig.GetTiling(tiling->mc2InitTiling);  // tiling为算子组装的TilingData结构体
mc2CcTilingConfig.GetTiling(tiling->reduceScatterTiling);
```
