说明: 使用该接口时,请确保驱动固件包和CANN包都为配套的8.0.RC2版本或者配套的更高版本,否则将会引发报错,比如BUS ERROR等。
接口功能:实现低比特数据的AllReduce通信,在通信的过程中对数据进行反量化,并输出通信结果。 具体实现依据数据量大小有两种情况:
计算公式:
其中的Reduce计算是将来自不同rank的数据进行reduce计算。
该算子分为两段式接口,必须先调用“aclnnQuantAllReduceGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnQuantAllReduce”接口执行计算。
确定性计算:
- 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对齐。
示例代码如下,仅供参考,具体编译和执行过程请参考编译与运行样例。
说明:本示例代码调用了部分HCCL集合通信库接口:HcclCommInitClusterInfoConfig、HcclGetCommName、HcclCommDestroy, 请参考。
Atlas 350 加速卡:
[object Object]