CANN/asc-devkit矩阵量化模式设置
SetDequantType【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit功能说明该接口用于设置量化或反量化的模式。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类型。量化或反量化时有两种模式一种是同一系数的量化/反量化模式一种是向量的量化/反量化模式。同一系数的量化或反量化模式对输出矩阵的所有值采用同一系数进行量化或反量化。向量的量化或反量化模式提供一个参数向量对输出矩阵的每一列都采用该向量中对应列的系数进行量化或反量化。函数原型int32_t SetDequantType(DequantType dequantType)参数说明表1参数说明参数名输入/输出描述dequantType输入设置量化或反量化时的模式。DequantType类型该类型的定义如下方代码所示其中参数的取值及含义如下SCALAR表示同一系数的量化或反量化模式。TENSOR表示向量的量化或反量化模式。enum class DequantType { SCALAR 0, TENSOR 1, };返回值说明-1表示设置失败0表示设置成功。约束说明本接口支持的同一系数的量化/反量化模式、向量的量化/反量化模式分别与Kernel侧接口SetQuantScalar和SetQuantVector对应本接口设置的量化/反量化模式必须与Kernel侧使用的接口保持一致。调用示例auto ascendcPlatform platform_ascendc::PlatformAscendC(context-GetPlatformInfo()); matmul_tiling::MatmulApiTiling tiling(ascendcPlatform); tiling.SetAType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_INT8); tiling.SetBType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_INT8); tiling.SetCType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_INT32); tiling.SetBiasType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_INT32); tiling.SetShape(M, N, K); tiling.SetOrgShape(M, N, K); tiling.EnableBias(true); tiling.SetDequantType(DequantType::SCALAR); // 设置同一系数的量化/反量化模式 // tiling.SetDequantType(DequantType::TENSOR); // 设置向量的量化/反量化模式 tiling.SetBufferSpace(-1, -1, -1); optiling::TCubeTiling tilingData; int ret tiling.GetTiling(tilingData);【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考