Skip to content

HCCL Tiling构造函数

功能说明

用于创建一个Mc2CcTilingConfig对象。

函数原型

Text
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字节。


针对Ascend 950PR/Ascend 950DT,该参数为预留字段,配置后不生效,默认仅支持FullMesh算法。FullMesh算法即NPU之间的全连接,任意两个NPU之间可以直接进行数据收发。


针对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之间可以直接进行数据收发。
reduceType输入归约操作类型,仅对有归约操作的通信任务生效。uint32_t类型,取值详见表2
dstDataType输入通信任务中输出数据的数据类型。uint8_t类型,该参数的取值范围请参考表1


Ascend 950PR/Ascend 950DT,不同通信任务支持的输出数据类型不同,具体为:
对于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


Ascend 950PR/Ascend 950DT,不同通信任务支持的输入数据类型如下:
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类型,该参数的取值范围请参考:HcclCommConfig中的hcclOpExpansionMode参数的取值说明。

表2 HcclCMDType参数说明

数据类型说明
HcclCMDType通信任务类型。HcclCMDType枚举类定义如下代码所示。


针对Ascend 950PR/Ascend 950DT,当前支持的通信任务类型为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。
Text
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
};

返回值说明

约束说明

调用示例

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

免责声明:本站内容由 asc-devkit 仓 master 分支自动编译生成,属于持续开发版本,可能存在缺陷,仅供预览与参考。如需稳定及商用资料,请查阅官方 昇腾社区