接口功能:目的数据类型为FLOAT4类的MX量化。只对尾轴进行量化,前面所有的轴都合轴处理,通过给定的level0BlockSize将输入划分成多个数据块,对每个数据块进行一级量化,输出量化尺度level0ScaleOut;然后将一级量化的结果作为新的输入,并通过给定的level1BlockSize将其划分成多个数据块,对每个数据块进行二级量化,输出量化尺度level1ScaleOut,根据round_mode进行数据类型的转换,得到量化结果yOut,具体参见。
计算公式:
- 将输入x在尾轴上按 = level0BlockSize个数分组,一组个数 动态量化为 , = level0BlockSize,然后将temp在尾轴上按 = level1BlockSize个数分组,一组个数 动态量化为 , = level1BlockSize
量化后的 按对应的 的位置组成输出yOut,level0Scale按尾轴对应的分组组成输出level0ScaleOut,level1Scale按尾轴对应的分组组成输出level1ScaleOut。
max_i代表求第i个分组中的最大值
emax: 对应数据类型的最大正则数的指数位。
[object Object]undefined
每个算子分为,必须先调用“aclnnDynamicDualLevelMxQuantGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnDynamicDualLevelMxQuant”接口执行计算。
[object Object]
[object Object]
- 关于x、level0ScaleOut、level1ScaleOut的shape约束说明如下:
- rank(level1ScaleOut) = rank(x) + 1。
- level0ScaleOut.shape[-1] = ceil(x.shape[-1] / level0Blocksize)。
- level1ScaleOut.shape[-2] = (ceil(x.shape[-1] / level1Blocksize) + 2 - 1) / 2。
- level1ScaleOut.shape[-1] = 2。
- 其他维度与输入x一致。
- 确定性说明:aclnnDynamicDualLevelMxQuant默认确定性实现。
[object Object]