CANN/asc-devkit随路量化
📅 2026/7/16 12:56:43
👁️ 阅读次数
📝 编程学习
随路量化
【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit
随路量化是矩阵计算结果从L0C Buffer搬出到Global Memory或Unified Buffer过程中的数据转换能力。L0C Buffer到Global Memory/Unified Buffer搬运根据是否传入quant参数自动选择不量化、直接cast、scalar量化或tensor量化模式。
调用形式
不传入quant参数时,接口根据源类型和目的类型选择不量化输出或直接cast输出:
auto atom = MakeCopy(CopyL0C2GM{}).with(fixpipeParams); Copy(atom, dst, src);传入uint64_t类型的quant参数时,表示scalar量化。整个C矩阵共用同一个量化参数:
uint64_t quant = 1; auto atom = MakeCopy(CopyL0C2GM{}).with(fixpipeParams); Copy(atom, dst, src, quant);传入Tensor API张量作为quant参数时,表示tensor量化。量化参数通常位于L1 Buffer,元素类型为uint64_t,每个channel维度对应一个量化参数:
auto quant = MakeTensor(MakeMemPtr(quantAddr), MakeFrameLayout<NDExtLayoutPtn>(1, n)); auto atom = MakeCopy(CopyL0C2GM{}).with(fixpipeParams); Copy(atom, dst, src, quant);量化参数
scalar量化参数和tensor量化参数的元素类型均为uint64_t。
约束说明
- tensor量化参数张量应位于L1 Buffer,元素类型为
uint64_t,地址要求32字节对齐。 - 量化参数不能为
inf、nan或非规格化数。该约束属于硬件约束,接口不单独检查参数值。 RoundMode::HYBRID仅在源类型为float、目的类型为hifloat8_t的量化输出场景支持。- 不传入
quant时,仅支持不量化输出或float到half/bfloat16_t的直接cast输出。
【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
编程学习
技术分享
实战经验