文件最后提交记录最后更新时间
Optimize QBMM MX tensor API scalar path Co-authored-by: smdbha<panzhijie2@huawei.com> # message auto-generated for no-merge-commit merge: !77 merge master into master Optimize QBMM MX tensor API scalar path Created-by: smdbha Commit-by: smdbha Merged-by: cann-robot Description: ## 描述 本 PR 优化 QBMM MX Tensor API 的 scalar/unbatched 路径,新增 QuantMmUnbatchedMX kernel,并同步整理 QBMM MX 相关 block scheduler、block mmad 和文档接口。 主要修改包括: 1. 新增 kernel_qbmm_mx_unbatched.h,为 QBMM MX scalar/unbatched 场景提供独立 kernel 路径,避免复用 batch 调度路径带来的额外开销。 2. 调整 BlockSchedulerQuantBatchMatmulV3 的 tile 坐标获取方式,将 tail split 的 M/N offset 放入 BlockShape,减少调度状态耦合。 3. 优化 BlockMmad MX 路径中的 scale 拷贝与 K 方向切分处理,减少重复 scale 搬运,同时保持原有 Mmad 计算参数和计算语义不变。 4. 更新 kernel_qbmm_mx.hkernel_qbmm_cube.h 对新 scheduler 接口的调用。 5. 新增 Align64/Align32/Align16 等公共对齐工具函数。 6. 同步更新 QBMM MX block mmad 和 scheduler 相关 API 文档。 该修改聚焦 QBMM MX Tensor API scalar/unbatched 路径优化,不改变现有矩阵乘计算逻辑。 ## 关联的Issue 关联 Issue:https://gitcode.com/cann/ops-tensor/issues/4 ## 测试 已完成: 1. 静态检查:git diff --check / git show --check 通过。 2. 代码检视:确认 scheduler 坐标迁移、scale 复用逻辑、unbatched 路径切片方式与现有 QBMM MX 计算逻辑一致。 3. 影响面检查:现有调用点已适配新的 GetTileCoord 接口,未发现会改变 batched/cube 既有计算结果的修改。 待补充: 1. 二级冒烟测试结果。 2. QBMM MX scalar/unbatched 典型用例精度与性能回归结果。 3. 现有 batched/cube 场景回归结果。 ## 文档更新 已更新以下文档: 1. docs/API/gemm/block/block_mmad_qbmm_mx.md 2. docs/API/gemm/block/block_scheduler.md 3. docs/API/gemm/block/block_scheduler_qbmm_mx_basic.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [x] 文档更新 - [x] 其他,请描述:QBMM MX scalar/unbatched 路径优化与内部接口整理 See merge request: cann/ops-tensor!779 天前
change mm sk file name by md Co-authored-by: zhangtianrong<zhangtianrong@h-partners.com> # message auto-generated for no-merge-commit merge: !55 merge change_skfile_name_to_md into master change mm sk file name by md Created-by: zhangtianrong Commit-by: zhangtianrong Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-tensor!5529 天前
change mm sk file name by md Co-authored-by: zhangtianrong<zhangtianrong@h-partners.com> # message auto-generated for no-merge-commit merge: !55 merge change_skfile_name_to_md into master change mm sk file name by md Created-by: zhangtianrong Commit-by: zhangtianrong Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-tensor!5529 天前
change mm sk file name by md Co-authored-by: zhangtianrong<zhangtianrong@h-partners.com> # message auto-generated for no-merge-commit merge: !55 merge change_skfile_name_to_md into master change mm sk file name by md Created-by: zhangtianrong Commit-by: zhangtianrong Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-tensor!5529 天前
Optimize QBMM MX tensor API scalar path Co-authored-by: smdbha<panzhijie2@huawei.com> # message auto-generated for no-merge-commit merge: !77 merge master into master Optimize QBMM MX tensor API scalar path Created-by: smdbha Commit-by: smdbha Merged-by: cann-robot Description: ## 描述 本 PR 优化 QBMM MX Tensor API 的 scalar/unbatched 路径,新增 QuantMmUnbatchedMX kernel,并同步整理 QBMM MX 相关 block scheduler、block mmad 和文档接口。 主要修改包括: 1. 新增 kernel_qbmm_mx_unbatched.h,为 QBMM MX scalar/unbatched 场景提供独立 kernel 路径,避免复用 batch 调度路径带来的额外开销。 2. 调整 BlockSchedulerQuantBatchMatmulV3 的 tile 坐标获取方式,将 tail split 的 M/N offset 放入 BlockShape,减少调度状态耦合。 3. 优化 BlockMmad MX 路径中的 scale 拷贝与 K 方向切分处理,减少重复 scale 搬运,同时保持原有 Mmad 计算参数和计算语义不变。 4. 更新 kernel_qbmm_mx.hkernel_qbmm_cube.h 对新 scheduler 接口的调用。 5. 新增 Align64/Align32/Align16 等公共对齐工具函数。 6. 同步更新 QBMM MX block mmad 和 scheduler 相关 API 文档。 该修改聚焦 QBMM MX Tensor API scalar/unbatched 路径优化,不改变现有矩阵乘计算逻辑。 ## 关联的Issue 关联 Issue:https://gitcode.com/cann/ops-tensor/issues/4 ## 测试 已完成: 1. 静态检查:git diff --check / git show --check 通过。 2. 代码检视:确认 scheduler 坐标迁移、scale 复用逻辑、unbatched 路径切片方式与现有 QBMM MX 计算逻辑一致。 3. 影响面检查:现有调用点已适配新的 GetTileCoord 接口,未发现会改变 batched/cube 既有计算结果的修改。 待补充: 1. 二级冒烟测试结果。 2. QBMM MX scalar/unbatched 典型用例精度与性能回归结果。 3. 现有 batched/cube 场景回归结果。 ## 文档更新 已更新以下文档: 1. docs/API/gemm/block/block_mmad_qbmm_mx.md 2. docs/API/gemm/block/block_scheduler.md 3. docs/API/gemm/block/block_scheduler_qbmm_mx_basic.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [x] 文档更新 - [x] 其他,请描述:QBMM MX scalar/unbatched 路径优化与内部接口整理 See merge request: cann/ops-tensor!779 天前
Optimize QBMM MX tensor API scalar path Co-authored-by: smdbha<panzhijie2@huawei.com> # message auto-generated for no-merge-commit merge: !77 merge master into master Optimize QBMM MX tensor API scalar path Created-by: smdbha Commit-by: smdbha Merged-by: cann-robot Description: ## 描述 本 PR 优化 QBMM MX Tensor API 的 scalar/unbatched 路径,新增 QuantMmUnbatchedMX kernel,并同步整理 QBMM MX 相关 block scheduler、block mmad 和文档接口。 主要修改包括: 1. 新增 kernel_qbmm_mx_unbatched.h,为 QBMM MX scalar/unbatched 场景提供独立 kernel 路径,避免复用 batch 调度路径带来的额外开销。 2. 调整 BlockSchedulerQuantBatchMatmulV3 的 tile 坐标获取方式,将 tail split 的 M/N offset 放入 BlockShape,减少调度状态耦合。 3. 优化 BlockMmad MX 路径中的 scale 拷贝与 K 方向切分处理,减少重复 scale 搬运,同时保持原有 Mmad 计算参数和计算语义不变。 4. 更新 kernel_qbmm_mx.hkernel_qbmm_cube.h 对新 scheduler 接口的调用。 5. 新增 Align64/Align32/Align16 等公共对齐工具函数。 6. 同步更新 QBMM MX block mmad 和 scheduler 相关 API 文档。 该修改聚焦 QBMM MX Tensor API scalar/unbatched 路径优化,不改变现有矩阵乘计算逻辑。 ## 关联的Issue 关联 Issue:https://gitcode.com/cann/ops-tensor/issues/4 ## 测试 已完成: 1. 静态检查:git diff --check / git show --check 通过。 2. 代码检视:确认 scheduler 坐标迁移、scale 复用逻辑、unbatched 路径切片方式与现有 QBMM MX 计算逻辑一致。 3. 影响面检查:现有调用点已适配新的 GetTileCoord 接口,未发现会改变 batched/cube 既有计算结果的修改。 待补充: 1. 二级冒烟测试结果。 2. QBMM MX scalar/unbatched 典型用例精度与性能回归结果。 3. 现有 batched/cube 场景回归结果。 ## 文档更新 已更新以下文档: 1. docs/API/gemm/block/block_mmad_qbmm_mx.md 2. docs/API/gemm/block/block_scheduler.md 3. docs/API/gemm/block/block_scheduler_qbmm_mx_basic.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [x] 文档更新 - [x] 其他,请描述:QBMM MX scalar/unbatched 路径优化与内部接口整理 See merge request: cann/ops-tensor!779 天前
README.md

Gemm/Kernel 类模板概述

API 清单

组件名 描述
kernel_matmul_basic 基础矩阵乘 Kernel,仅 AIC 计算,无 workspace
kernel_qbmm_mx MX 量化 Batch Matmul,支持 MxFP4/MxFP8 量化
kernel_qbmm_mx_without_batch MX 量化单 Batch Matmul,裁剪 Batch 广播路径
kernel_matmul_streamk StreamK 矩阵乘 Kernel,AIC+AIV 双核计算,支持 workspace

公共框架

所有 Kernel 组件基于 kernel.md 公共框架实现,包含统一的:

  • 模板参数
  • 数据结构(Params、Arguments)
  • 核心方法(Init、operator)

详见:kernel.md

核心组件关系

KernelMatmul
    ├── BlockScheduler (任务调度)
    │       ├── Tile 切分策略
    │       ├── Block 分配
    │       └── HF32/L2Cache 配置
    ├── BlockMmad (矩阵乘计算)
    │       ├── GM → L1 → L0 数据搬运
    │       ├── Mmad 计算
    │       └── L0C → GM 结果搬出
    └── BlockEpilogue (后处理)
            └── Empty 或 StreamK 实现

实现差异对比

Kernel 类型 计算模式 量化支持 Scale 支持 BlockEpilogue Workspace Batch 支持 BlockScheduler AIC-AIV 同步 适用场景
KernelMatmulBasic 仅 AIC 不支持 不支持 BlockEpilogueEmpty 不需要 单 batch MatmulBasic 通用 Matmul
KernelQbmmMx 仅 AIC MX FP4/MX FP8 ScaleA + ScaleB 不需要 多 batch BlockSchedulerQbmm 量化 Batch Matmul
KernelQbmmMxWithoutBatch 仅 AIC MX FP4/MX FP8 ScaleA + ScaleB 不需要 单 batch BlockSchedulerQbmm 量化单 Batch Matmul
KernelMatmulStreamK AIC + AIV 双核 不支持 不支持 BlockEpilogueStreamK 需要 单 batch StreamK Scheduler 切 K 场景 Matmul

使用流程

  1. 查看公共框架:了解模板参数和核心接口 → kernel.md
  2. 选择具体实现:根据场景选择 Basic、QBMM MX 或 StreamK
  3. 查看特殊约束:了解各实现的特有约束和方法
  4. 组装组件:定义 ProblemShape、BlockMmad、BlockEpilogue、BlockScheduler
  5. 准备参数:构造 Params 结构体
  6. 执行 Kernel:实例化并调用 operator()