SetQuantVector
产品支持情况
功能说明
本接口提供对输出矩阵采用向量进行量化或反量化的功能,即对于输入shape为[1, N]的参数向量,N值为Matmul矩阵计算时M/N/K中的N值,对输出矩阵的每一列都采用该向量中对应列的系数进行量化或反量化。
Matmul反量化场景:在Matmul计算时,左、右矩阵的输入为int8_t或int4b_t类型,输出为half类型;或者左、右矩阵的输入为int8_t类型,输出为int8_t类型。该场景下,输出C矩阵的数据从CO1搬出到Global Memory时,会执行反量化操作,将最终结果反量化为对应的half或int8_t类型。
Matmul量化场景:在Matmul计算时,左、右矩阵的输入为half或bfloat16_t类型,输出为int8_t类型。该场景下,输出C矩阵的数据从CO1搬出到Global Memory时,会执行量化操作,将最终结果量化为int8_t类型。
函数原型
__aicore__ inline void SetQuantVector(const GlobalTensor<uint64_t>& quantTensor)
参数说明
返回值说明
无
约束说明
需与SetDequantType保持一致。
本接口必须在Iterate或者IterateAll前调用。
调用示例
GlobalTensor gmQuant;
...
REGIST_MATMUL_OBJ(&pipe, GetSysWorkSpacePtr(), mm, &tiling);
mm.SetQuantVector(gmQuant);
mm.SetTensorA(gm_a);
mm.SetTensorB(gm_b);
mm.SetBias(gm_bias);
mm.IterateAll(gm_c);