Fix #40: 切换 Cube 算力为白皮书 Cube-only 口径 (单核统一 13.5T)

用户裁决: cube_peak_tflops 取白皮书表3-1 "Cube算力" 单行 (不含 Vector)。

- 数值: 950PR 486->432, 950PR_C28 425->378, 950DT 547->486,
  950DT_C32 486->432, 950DT_C28 425->378; 单核全系列精确 13.5T
  (16^3 MAC/拍 x 1.65GHz), 28 核档 0.06% 取整偏差随之消失
- 传导 (无结构改动, 全部经 q16/q_cube/r16 派生):
  MMAD 时延 x486/432 (+12.5%); R16 607.5->540 (MergeBatch 条件5/b0 上限);
  StreamK θ_c 12.24->10.9; ASW 面积/周长分界 93.5->83.1, MMAD/FIX 304->270
- 文档同步: README, docs/00 (R16 公式), 04 (607.5 实例), 05 (硬件事实/复核算例),
  06/07 (翻出阈值 187->166), 05_StreamK (θ_c 及 K 阈值 396->360);
  理论归档 (BMM算子优化分析_Release/) 与历史测评报告不动
- 验证: 单测 88/88; examples 重生成 —— recommend 27/44 行变化
  (计算Bound 行精确 +12.5%; b8_m32768_n2048_k512 瓶颈 MTE2->MMAD 翻转;
  17 行访存主导不变), plans.csv 仅 merge_demo_k_trunc note 的算存比上限
  23.7->21.1 一处文案; 压力回归 10000 例干净, MergeBatch 386->392 /
  IterBatch 2389->2384 (R16 下移致 b0 上限收小, 边界 case 换边, 预期行为)
This commit is contained in:
2026-09-09 11:05:21 +08:00
parent 8e784a748c
commit ec4fee99b8
13 changed files with 151 additions and 140 deletions

View File

@@ -9,9 +9,9 @@
- L2 128MB 全档一致 (950PR 28 核降 112MB).
共架构的交叉验证 (表3-1/表4-2 反推, 与 950PR 单核速率一致):
- Cube: 432T/32核 = 486T/36核 = 13.5T/核 (= 16^3 MAC/拍 @ ~1.65GHz);
本表 cube_peak_tflops 沿用 NpuSpec 现行口径 (= 白皮书 "Cube+Vector
总算力", 单核 15.1875T 全系列一致, 口径说明见 ascend950pr.py);
- Cube: 432T/32核 = 486T/36核 = 13.5T/核 (= 16^3 MAC/拍 @ ~1.65GHz),
cube_peak_tflops 取白皮书表3-1 "Cube算力" 单行 (Cube-only 口径,
issue#40 用户裁决), 单核 13.5T 全系列精确一致;
- Vector fp32: 27T/64核 ≈ 30T/72核 -> 128 lane/拍 @ 1.65GHz (乘加计 2 次),
即 aiv_freq_ghz / aiv_fp32_per_cycle 默认值直接适用;
- L1 512KB / L0A/L0B 64KB / L0C 256KB / UB 512KB 每核一致 (表4-2);
@@ -24,33 +24,33 @@ from __future__ import annotations
from .ascend950pr import NpuSpec
# 950DT 36 核主 bin (白皮书表3-1: 36 AIC / 72 AIV, HBM 4TB/s 144GB, L2 128MB;
# L2 带宽 7.5TB/s 读写各自独享, issue#39)
# 950DT 36 核主 bin (白皮书表3-1: 36 AIC / 72 AIV, Cube BF16 486 TFLOPS,
# HBM 4TB/s 144GB, L2 128MB; L2 带宽 7.5TB/s 读写各自独享, issue#39)
ASCEND950DT = NpuSpec(
name="Ascend950DT",
aic_num=36, aiv_num=72,
cube_peak_tflops=547.0,
bw_gm=4.0e12,
bw_l2=7.5e12,
gm_capacity_gb=144.0,
)
# 950DT 32 核档 (HBM 4TB/s 不变; 容量表3-1 仅给 144/96 两档, 32 核档映射待确认)
ASCEND950DT_C32 = NpuSpec(
name="Ascend950DT_C32",
aic_num=32, aiv_num=64,
cube_peak_tflops=486.0,
bw_gm=4.0e12,
bw_l2=7.5e12,
gm_capacity_gb=144.0,
)
# 950DT 28 核档 (HBM 4TB/s 不变, 容量 96GB; 总算力 425 为白皮书取整值,
# 单核 15.179T 与主 bin 15.1875T 差 0.06% 属取整误差)
# 950DT 32 核档 (Cube BF16 432 TFLOPS; HBM 4TB/s 不变;
# 容量表3-1 仅给 144/96 两档, 32 核档映射待确认)
ASCEND950DT_C32 = NpuSpec(
name="Ascend950DT_C32",
aic_num=32, aiv_num=64,
cube_peak_tflops=432.0,
bw_gm=4.0e12,
bw_l2=7.5e12,
gm_capacity_gb=144.0,
)
# 950DT 28 核档 (Cube BF16 378 TFLOPS; HBM 4TB/s 不变, 容量 96GB)
ASCEND950DT_C28 = NpuSpec(
name="Ascend950DT_C28",
aic_num=28, aiv_num=56,
cube_peak_tflops=425.0,
cube_peak_tflops=378.0,
bw_gm=4.0e12,
bw_l2=7.5e12,
gm_capacity_gb=96.0,