文件最后提交记录最后更新时间
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 天前
Fix code for blcok epilogue Co-authored-by: 林旭<linxu5@huawei.com> # message auto-generated for no-merge-commit merge: !60 merge fix-code into master Fix code for blcok epilogue Created-by: LINxu233 Commit-by: 林旭 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-tensor!6028 天前
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 天前
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 天前
README.md

Gemm/Block 类模板概述

API 清单

BlockMmad(矩阵乘计算)

组件名 描述
block_mmad_matmul_basic 基础矩阵乘 Block,基于 Tensor API,支持 L1/L0 双缓冲
block_mmad_qbmm_mx MX 量化矩阵乘 Block,支持 Scale 因子、MxFP4/MxFP8 量化
block_mmad_matmul_streamk StreamK 矩阵乘 Block,支持 workspace 输出、K 轴切分

BlockScheduler(任务调度)

组件名 描述
block_scheduler 公共框架:tile 切分、Z 型扫描、尾块处理
block_scheduler_matmul_basic Basic 调度器:尾块切分、SplitK 切分、L2Cache 配置
block_scheduler_matmul_streamk StreamK 调度器:DP+SK 混合策略、K 轴切分
block_scheduler_qbmm_mx QBMM 调度器:Batch 维度切分、量化对齐

公共框架

BlockMmad 公共框架

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

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

详见:block_mmad.md

BlockScheduler 公共框架

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

  • 模板参数(ProblemShape)
  • 类型别名(BlockShape、BlockCoord)
  • Z 型扫描策略
  • 尾块处理

详见:block_scheduler.md

核心组件关系

BlockMmad
    ├── DispatchPolicy (调度策略)
    │       ├── MatmulMultiBlockBasic (Basic)
    │       ├── MatmulMultiBlockWithStreamK (StreamK)
    │       └── MatmulWithScaleMx (MX 量化)
    ├── 数据类型 (AType, BType, CType, BiasType)
    ├── 布局类型 (LayoutA, LayoutB, LayoutC, LayoutBias)
    └── 计算流程
            ├── GM → L1 → L0 数据搬运
            ├── Mmad 计算
            └── L0C → GM/workspace 结果搬出

实现差异对比

Block 类型 调度策略 输出目标 量化支持 Scale 支持 L1 双缓冲 L0C 双缓冲 Bias 支持 AIC-AIV 同步 适用场景
BlockMmadBasic MatmulMultiBlockBasic GM 不支持 不支持 可配置 (1 或 2) 可配置 支持 Basic Kernel
BlockMmadStreamK MatmulMultiBlockWithStreamK GM 或 workspace 不支持 不支持 固定双缓冲 固定单缓冲 支持 无(Kernel 层处理) StreamK Kernel
BlockMmadMx MatmulWithScaleMx GM MxFP4/MxFP8 ScaleA + ScaleB 可配置 (2 或 4) 可配置 支持 QBMM MX Kernel

使用流程

  1. 查看公共框架:了解模板参数和核心接口 → block_mmad.md
  2. 选择具体实现:根据 Kernel 类型选择 Basic、StreamK 或 MX
  3. 定义调度策略:选择 DispatchPolicy(TensorApi、StreamK 或 ScaleMx)
  4. 组装组件:定义数据类型、布局类型
  5. 初始化:调用 Init 设置 tile 形状、缓冲策略
  6. 执行计算:调用 operator 执行矩阵乘