已关闭
[Requirement|需求建议]: 为 HiFloat8(典型为 A8W8 权重量化)矩阵乘 提供一条 可编译、可运行、可对比 golden 的参考路径 #164
Hu1L1创建于  5月13日关闭于  5月21日
Hu1L1
Hu1L1成员
5月13日 创建

Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.

一、背景信息 (必填)

在 Ascend 算子与性能样例体系中,需要为 HiFloat8(典型为 A8W8 权重量化)矩阵乘 提供一条 可编译、可运行、可对比 golden 的参考路径,与现有 matmul_recipes 中其它精度策略(如 FP16、MX 等)并列,便于开发者理解 tiling、kernel 调度与反量化标量在设备上的组织方式。
当前期望在 ops-samples / matmul_story / matmul_recipes 仓库内落地该能力,并以 examples/matmul_hifp8 作为端到端演示(含数据生成与校验脚本)。

二、价值/作用 (必填)

  • 参考实现:为 HiFloat8 量化 MatMul 提供 host tiling、block 调度与 AscendC kernel 的完整串联示例,降低对接 CANN 样例时的学习成本。
  • 可验证:配套 Python 脚本支持生成输入、golden 与 NPU 结果比对,便于回归与教学演示。
  • 工程一致性:tiling 打印、平台信息与运行参数初始化遵循与其它 quant matmul 策略相同的 base 化组织方式,便于后续扩展更多 layout 或规模。
  • 范围清晰:首版明确 单 batch、与 kernel 一致的内存/分块策略,避免文档与实现口径不一致。

三、设计方案 (必填)

3.1 使能方式
  • 主要使能:ops-samples 内 matmul_recipes + matmul_hifp8 AscendC 样例;通过现有 CMake/编译链构建内核与 host 侧 tiling。
3.2 总体设计
3.2.1 算子支持的数据类型
  • Activations / We:与 HiFloat8 场景一致的 8bit 量化矩阵乘(A8W8) 数据通路;输出侧配合 反量化标量(按设备 fixpipe 所需位模式组织,host 侧以安全、可移植方式构造 uint 位模式)。
  • 精度与验证:以 CPU golden 为参照,样例脚本支持给定 M、N、K 及 transpose 组合的验证流程。
3.2.2 host侧设计
  • Tiling:实现 A8W8 的 SWAT 类 tiling 策略;上下文初始化与 tiling 数据打印 复用统一的 Quant 矩阵乘 tiling base(与其它策略同源模式),保证字段含义与调试输出一致。
  • Block 调度:实现量化 batch matmul 所需的 block 调度模板,模板形参仅保留与实际问题形状、transpose、负载模式相关的项,避免无效泛化。
  • Host–Kernel 契约:通过专用 tiling 数据结构向 kernel 传递 基础块大小、L1 深度、quant 模式、bias 标志等 必要字段;首版契约按单 batch 定义(不在结构体中承载多 batch 偏移字段)。
3.2.3 kernel侧设计
  • Kernel:AscendC 实现单 batch 量化矩阵乘主循环;与 host tiling 在 非“A 全载” 策略上 严格一致(tiling 决策与 kernel 模板匹配,避免策略分裂)。
  • MMAD / Fixpipe:A8W8 专用 block 文件与头文件命名体现 quant matmul + HiFloat8 路径,并在 MMAD 聚合头中注册。
  • 标量处理:反量化相关 float 到位模式的转换采用 标准允许的实现(如 memcpy 或工程 C++ 标准所支持的等价方式),避免严格别名与可移植性风险。
3.3 支持硬件
  • 当前 matmul_recipes / matmul_hifp8 样例所声明的 Ascend 硬件代际 一致;具体 SoC 列表以样例 README 或编译说明为准

3.4 算子约束限制

  • Batch:首版 仅支持 batch = 1(单 batch);多 batch 作为后续需求评估。
  • A 全载:首版 不提供 与 kernel 不一致的“A 全载” tiling 分支;tiling 与 kernel 统一采用同一套分块/载入语义
  • Transpose:数据脚本需支持用户指定 transAtransB两者须同时给出或同时省略,省略时默认 transA=falsetransB=true,避免半套参数产生歧义。
  • 泛化:shape、对齐、是否有 bias 等以样例已覆盖组合为准;未在首版承诺任意维度或广播。
    💡 备注(选填)
  • 文档与脚本说明建议使用 英文 描述参数与约束,便于开源侧阅读。
  • 验收建议:至少包含 matmul_hifp8 TT/TC 等样例入口的编译与 golden 比对通过记录。
likedislike
Hu1L1Hu1L1成员
5月13日 添加了label:requirement
Hu1L1Hu1L1成员
5月13日 修改标题为 “[Requirement|需求建议]: 为 HiFloat8(典型为 A8W8 权重量化)矩阵乘 提供一条 可编译、可运行、可对比 golden 的参考路径”,原标题为“[Requirement|需求建议]: ”
Hu1L1Hu1L1成员
5月13日 修改了issue 的描述
Hu1L1Hu1L1成员
5月13日 关联了pull request:hifloat8 recipe
zhangzijie成员
5月15日 评论:

/assign Hu1L1

likedislike
CANN-robotCANN-robot成员
5月21日 关闭了 issue
CANN-robotCANN-robot成员
5月21日 添加了label:resolved