v1.0: 修正源码仓地址为gitcode.com/cann/ops-nn

This commit is contained in:
2026-08-26 11:30:25 +00:00
parent 71590ec422
commit 6f44201295

View File

@@ -1,6 +1,6 @@
# MergeBatch vs IterBatchBMM 小 tile 场景的两种实现路径分析
> 目标芯片:昇腾 950PRDAV_3510。理论分析基于《BMM 算子优化分析 v0.96》,源码参考 [cann-ops-nn](https://gitee.com/ascend/cann-ops-nn) 中 `matmul/batch_mat_mul_v3` 实现。
> 目标芯片:昇腾 950PRDAV_3510。理论分析基于《BMM 算子优化分析 v0.96》,源码参考 [cann-ops-nn](https://gitcode.com/cann/ops-nn/tree/master/matmul/batch_mat_mul_v3) 实现。
---
@@ -165,7 +165,7 @@ $$
**IsCapable 条件**
```cpp
// 源码https://gitee.com/ascend/cann-ops-nn
// 源码https://gitcode.com/cann/ops-nn/tree/master/matmul/batch_mat_mul_v3
if (batchC < MIN_BATCH_L0 * aicNum) return false; // B < 128即 b_core < 4
if (alignK < 64 || M > N) return false; // K ≥ 64M ≤ N
if (L0 buffer check with b0=4) return false; // L0C 容量
@@ -190,7 +190,7 @@ if (L0 buffer check with b0=4) return false; // L0C 容量
**IsCapable 条件**
```cpp
// 源码https://gitee.com/ascend/cann-ops-nn
// 源码https://gitcode.com/cann/ops-nn/tree/master/matmul/batch_mat_mul_v3
if (batchC <= aicNum) return false; // B ≤ 32 不进 IterBatch
if ((alignM*alignK + alignK*alignN)*dtype*2 > L1) return false; // L1 双缓冲
if (!l0CanLoadBatch_ && balanceRate < 0.8) return false; // 负载均衡
@@ -224,4 +224,4 @@ if (!l0CanLoadBatch_ && balanceRate < 0.8) return false; // 负载均衡
1. [昇腾 950 NPU 架构白皮书](https://public-download.obs.cn-east-2.myhuaweicloud.com/ascend/%E6%98%87%E8%85%BE950%20NPU%E6%9E%B6%E6%9E%84%E7%99%BD%E7%9A%AE%E4%B9%A6.pdf)华为技术有限公司2026
2. [CANN AscendC 算子开发——Matmul 高阶 API 使能 UnitFlag](https://www.hiascend.com/document/detail/zh/canncommercial/850/opdevg/Ascendcopdevg/atlas_ascendc_best_practices_10_10003.html)CANN 8.5.0
3. [cann-ops-nn 源码仓](https://gitee.com/ascend/cann-ops-nn)`matmul/batch_mat_mul_v3` 目录
3. [cann-ops-nn 源码仓](https://gitcode.com/cann/ops-nn/tree/master/matmul/batch_mat_mul_v3)