开发者
资源
[object Object][object Object][object Object]undefined

说明: 使用该接口时,请确保驱动固件包和CANN包都为配套的8.0.RC2版本或者配套的更高版本,否则将会引发报错,比如BUS ERROR等。

[object Object]
  • 接口功能:实现低比特数据的AllReduce通信,在通信的过程中对数据进行反量化,并输出通信结果。 具体实现依据数据量大小有两种情况:

  • 计算公式

    AllGatherData=AllGather(x)AllGatherData = AllGather(x) AllGatherScales=AllGather(scales)AllGatherScales = AllGather(scales) output=Reduce(AllGatherScalesAllGatherData)output = Reduce(AllGatherScales * AllGatherData)

    其中的Reduce计算是将来自不同rank的数据进行reduce计算。

[object Object]

该算子分为两段式接口,必须先调用“aclnnQuantAllReduceGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnQuantAllReduce”接口执行计算。

[object Object]
[object Object]
[object Object]
  • 参数说明

    [object Object]
  • 返回值

    aclnnStatus:返回状态码,具体参见

    第一段接口完成入参校验,出现以下场景时报错:

    [object Object]
[object Object]
  • 参数说明

    [object Object]
  • 返回值

    返回aclnnStatus状态码,具体参见

[object Object]
  • 确定性计算:

    • aclnnQuantAllReduce默认非确定性实现,支持通过aclrtCtxSetSysParamOpt开启确定性。
  • 当x的数据类型为FLOAT8_E4M3FN、FLOAT8_E5M2并且scales的数据类型为FLOAT8_E8M0时,输入数据的量化方式为mx量化。

  • 当x的数据类型为INT8、HIFLOAT8、FLOAT8_E4M3FN、FLOAT8_E5M2并且scales的数据类型为FLOAT时,输入数据的量化方式为pertoken-pergroup量化(groupSize=128)。

  • 只在Ascend950系列平台使能。

  • 不支持空Tensor输入。

  • 通信域大小支持2, 4, 8。

  • 通信域使用约束:同一通信域内仅允许连续执行[object Object][object Object]算子,且该通信域中不允许有其他通信算子。

  • [object Object]:调用本算子前需检查[object Object]环境变量取值是否合理,该环境变量表示单个通信域占用内存大小,单位MB,不配置时默认为200MB。要求满足[object Object]>= 2 * ([object Object] + [object Object])。其中[object Object]为输入[object Object]的数据大小,计算公式为:[object Object][object Object][object Object]的数据大小,当量化方式为pertoken-pergroup量化时,计算公式为:[object Object],当量化方式为mx量化时,计算公式为:[object Object]

  • H范围仅支持[1024, 8192],要求128对齐。

[object Object]

示例代码如下,仅供参考,具体编译和执行过程请参考编译与运行样例。

说明:本示例代码调用了部分HCCL集合通信库接口:HcclCommInitClusterInfoConfig、HcclGetCommName、HcclCommDestroy, 请参考

  • Atlas 350 加速卡:

    [object Object]