该接口用于设置量化或反量化的模式。
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类型。
量化或反量化时有两种模式: 一种是同一系数的量化/反量化模式,一种是向量的量化/反量化模式。
1 | int32_t SetDequantType(DequantType dequantType) |
参数名 |
输入/输出 |
描述 |
||
|---|---|---|---|---|
dequantType |
输入 |
设置量化或反量化时的模式。DequantType类型,该类型的定义如下。
参数的取值及含义如下:
|
-1表示设置失败;0表示设置成功。
本接口支持的同一系数的量化/反量化模式、向量的量化/反量化模式分别与Kernel侧接口SetQuantScalar和SetQuantVector对应,本接口设置的量化/反量化模式必须与Kernel侧使用的接口保持一致。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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); |