init Matmul 情报清单

This commit is contained in:
2026-08-27 11:58:51 +00:00
parent 8a4d0c5c22
commit f4453b426e

114
Matmul/01_情报清单.md Normal file
View File

@@ -0,0 +1,114 @@
# Matmul 算子分析 —— 情报信息清单
> 状态说明:✅ 已就绪(本地可读) | 🔶 待补充 | 📍 位置标注
> 根路径简写:`KB = /storage/Users/currentUser/WorkBuddy/昇腾NPU/昇腾NPU知识库/`
---
## 1. 硬件架构规格
| 情报 | 位置 | 状态 | 备注 |
|---|---|---|---|
| 昇腾950 NPU 架构白皮书PDF 原版) | `KB/00_硬件/昇腾950_NPU架构白皮书.pdf` | ✅ | 40 页6.3MB |
| 白皮书全文文本(可 grep | `KB/00_硬件/昇腾950_NPU架构白皮书.txt` | ✅ **本轮新增** | 27976 字符,由 pdf-parse 提取 |
| Ascend 950PR 产品页 | `KB/00_硬件/Ascend_950PR_产品页.txt` | ✅ | 1784 TFLOPS / 128GB / 1.6TB/s / 灵衢2.0 2TB/s |
| Ascend 950DT 产品页 | `KB/00_硬件/Ascend_950DT_产品页.txt` | ✅ | 144GB / 4TB/s |
| 产品形态说明 | `KB/00_硬件/昇腾产品形态说明.md` | ✅ | 950PR=Atlas 350 加速卡 |
| 950PR 微架构解读(含数据通路 SVG | gitea `昇腾950PR/昇腾950PR架构解读.md` | ✅ | 已提炼出 351x 架构关键数值表与数据通路变化 |
**关键硬件参数(已确认,供建模引用)**
| 参数 | 数值 |
|---|---|
| AIC / AIV | 32 / 64满配28 / 56衍生 |
| 主频 | 1.65GHz |
| Cube BF16 / TF32 / FP8 / MXFP4 | 432 / 216 / 865 / 1730 TFLOPS |
| GM 容量 / 带宽 | 128GB / 1.6TB/s读写共享总带宽 |
| L2 容量 / 带宽 | 128MB / 5.2TB/s |
| L1 / L0A / L0B / L0C / UB | 512KB / 64KB / 64KB / 256KB每 AIC512KB每 AIV |
| MTE1 / MTE3 | 256 BPC ≈ 422.4GB/s单 AIC |
---
## 2. 官方性能建模文档(任务 1 的核心公式来源)
| 文档 | 位置 | 状态 | 关键内容 |
|---|---|---|---|
| 非量化 matmul 性能优化指南 | `KB/代码仓/cann-samples/Samples/2_Performance/matmul_story/docs/matmul_performance.md` | ✅ | T_cube/T_mte2/T_mte1/T_fixp 完整公式、MTE2 vs MMAD / MTE1 vs MMAD / FIXPIPE vs MMAD 的 Bound 判定、SWAT/StreamK/UnitFlag/Double Buffer/尾轮均衡 |
| 量化 matmulMX性能 | `.../matmul_story/docs/quant_matmul_mx_performance.md` | ✅ | MXFP8/MXFP4 数据通路、scale 复用 |
| 权重量化 matmul 性能 | `.../matmul_story/docs/weight_quant_matmul_mxfp8fp4_performance.md` | ✅ | weightNz、MXFP8FP4 |
| mxfp4 tutorials | `.../matmul_story/docs/quant_matmul_mxfp4_tutorials.md` | ✅ | — |
| 官方调优样例源码 | `.../matmul_story/matmul_recipes/examples/`matmul_a16w16 / a32w32 / quant_matmul_int8 / mxfp4 / mxfp8 / hifp8 / weight mxfp8fp4 | ✅ | .asc 模板 kernelswat/streamk 等) |
---
## 3. Matmul 算子源码
### 3.1 mat_mul_v3ops-nn最常用 matmulaclnnMatmul 后端)📍 完整
| 模块 | 位置 | 关键文件 |
|---|---|---|
| Host Tiling | `KB/代码仓/ops-nn/matmul/mat_mul_v3/op_host/op_tiling/arch35/` | `matmul_v3_tiling_advanced.cpp``matmul_v3_basic_aswt_tiling.cpp``matmul_v3_basic_streamk_tiling.cpp``matmul_v3_asw_tiling.cpp``matmul_v3_tiling_helper.cpp``matmul_v3_tiling_key.cpp` |
| Kernel核内 | `KB/代码仓/ops-nn/matmul/mat_mul_v3/op_kernel/arch35/` | `mat_mul_v3.cpp``mat_mul_asw_kernel.h``mat_mul_bl1_full_load.h``mat_mul_al1_full_load.h``mat_mul_full_load.h``mat_mul_fixpipe*.h``mat_mul_stream_k_kernel.h``mat_mul_streamk_split_k.h``mat_mul_basic_split_k.h``mat_mul_pingpong_basic*.h``block_scheduler_{aswt,mul,multi_mul,streamk}.h` |
| API 入口 | `.../op_host/op_api/aclnn_matmul.cpp` 等 | aclnnMatmul/aclnnAddmm/aclnnMm |
| 分型配置 | `.../op_host/config/` | 各芯片 runtime_kb.jsontiling 调参表) |
### 3.2 ops-blas blasLt matmulaclnn 底层 GEMM含量化📍 完整
| 模块 | 位置 | 关键文件 |
|---|---|---|
| Engine | `KB/代码仓/ops-blas/blasLt/matmul/engine/` | `matmul_engine.cpp/.h` |
| fp32 | `.../fp32/arch35/` | `matmul_fp32_host.cpp``matmul_fp32_kernel.cpp` |
| mxfp4 | `.../mxfp4/arch35/` | `matmul_mxfp4_host.cpp``matmul_mxfp4_kernel.cpp` |
| mxfp8 | `.../mxfp8/arch35/` | `matmul_mxfp8_host.cpp``matmul_mxfp8_kernel.cpp` |
| epilogue | `.../epilogue/arch35/` | `epilogue_alpha_beta_*` |
| tiling 公共 | `.../common/` | `quant_matmul_mx_tiling_swat_host.h``quant_matmul_tiling_data.h` |
| gemmblas/gemm | `KB/代码仓/ops-blas/blas/gemm/arch35/` | `gemm_kernel.cpp/.h``gemm_tiling_data.h` |
### 3.3 catlass华为开源矩阵乘模板库类 CUTLASS📍
| 内容 | 位置 |
|---|---|
| 头文件 | `KB/代码仓/catlass/include/catlass/` |
| 示例 | `KB/代码仓/catlass/examples/00_basic_matmul``06_optimized_matmul``43_ascend950_basic_matmul`950 专属示例) |
### 3.4 其他相关算子(对照参考)
- `ops-nn/matmul/` 下 32 个 matmul 变体quant_matmul*、batch_mat_mul_v3、gemm_v3 等)——索引见 `KB/CODE_INDEX.md`
- BMM 源码锚点:`KB/代码仓/ops-nn/matmul/batch_mat_mul_v3/`(与 BMM 分析对应)
---
## 4. CANN 文档(开发/API/性能优化)
| 类别 | 位置(社区版 9.2.0-beta.1 为主) | 状态 |
|---|---|---|
| AscendC 算子开发 | `KB/CANN社区版9.2.0-beta.1/01_AscendC算子开发/` | ✅ |
| AscendC API 参考 | `KB/CANN社区版9.2.0-beta.1/02_API参考/AscendC_API/` | ✅ |
| 算子库 aclnn | `KB/CANN社区版9.2.0-beta.1/02_API参考/算子库aclnn/` | ✅ |
| 性能优化 / msProf | `KB/CANN社区版9.2.0-beta.1/03_性能优化/` | ✅ |
| 编译器(毕昇 + PTO 虚拟指令集) | `KB/CANN社区版9.2.0-beta.1/08_编译器/` | ✅ |
| 加速库 ATB | `KB/CANN社区版9.2.0-beta.1/07_加速库/` | ✅ |
| 商用版 9.0.0 / 8.5.0 | `KB/CANN商用版9.0.0/``KB/CANN商用版8.5.0/` | ✅ 备用对照 |
---
## 5. 待补充情报(列为后续行动)
| 情报 | 为什么需要 | 获取途径 | 优先级 |
|---|---|---|---|
| msProf 实测 profileop_summary 等) | 校准/验证理论模型精度 | Atlas 350 真机、CANN 仿真、或官方公开性能数据 | 高 |
| GM 读写单向带宽 | 读写竞争建模需要分读写 | msProf `main_mem_read_bw/write_bw` 反推 | 高 |
| 950PR 上 matmul 的官方基准性能数据TFLOPS 实测) | 模型验证的 ground truth | 官方性能白皮书 / 论坛 / 技术工单 | 高 |
| 源码缺失文件补拉 | 若 3.x 分析发现个别 .cpp 缺失 | `.tmp/gitcode_fetch.py cann ops-nn master matmul/mat_mul_v3` | 中 |
| CUTLASS/GEMM 建模对照(可选) | 方法论交叉验证 | 公开论文/文档 | 低 |
---
## 6. 情报就绪度总结
- 硬件规格:✅ 齐全(白皮书全文 + 解读 + 产品页)
- 性能建模公式:✅ 齐全(官方 matmul_performance.md 全套)
- 源码:✅ 基本齐全mat_mul_v3 182 文件 + blasLt matmul 25 文件 + catlass + 官方样例)
- 文档:✅ 齐全13097 篇 CANN 文档)
- **缺口集中在"实测数据"**:理论建模的**验证闭环**需要 msProf 实测数据,这是当前最需要补的一环,建议尽快落实真机/仿真途径。