补全昇腾950系列硬件规格: 新增 Ascend950DT (36/32/28核) 与 950PR 28核 SKU, 默认加载不变 #38

Closed
opened 2026-09-09 02:27:09 +00:00 by admin · 1 comment
Owner

需求

bmm_theory/hardware/ 目前只有 Ascend950PR 32 核主 bin (NpuSpec 默认值)。补全系列其他版本规格, 重点 Ascend950DT; 保证现有硬件参数的加载调用不受影响。

数据来源

\\HwFs\HW_WorkBuddy\昇腾NPU\昇腾NPU知识库\00_硬件\昇腾950_NPU架构白皮书 表3-1 (系列 SKU 规格) + 表4-2 (Memory 层次) + 昇腾产品形态说明 (950PR→Atlas 350 加速卡; 950DT→Atlas 850E/650E/950 SuperPoD)。

SKU 矩阵 (白皮书表3-1)

规格项 950PR 32核(主) 950PR 28核 950DT 36核(主) 950DT 32核 950DT 28核
Cube Core 32 28 36 32 28
Vector Core 64 56 72 64 56
Cube+Vector BF16 TFLOPS 486 425 547 486 425
Cube BF16 TFLOPS 432 378 486 432 378
Vector FP32 TFLOPS 27 23 30 27 23
Memory 带宽 TB/s 1.6 1.4 4 4 4
Memory 容量 GB 128 112 144 144/96(待确认) 96
L2 容量 MB 128 112 128 128 128

关键结论

  1. 950PR/950DT 共架构 (第三代 DaVinci): 表4-2 的 L1 512KB / L0A/L0B 64KB / L0C 256KB / UB 512KB 每核一致; 单核速率一致 —— 白皮书数值交叉验证: Cube = 16³ MAC/拍 @≈1.65GHz (432e12/32 核 = 486e12/36 核 = 13.5T/核); Vector fp32 27/64 ≈ 30/72 TFLOPS (128 lane × 1.65GHz, 乘加计 2 次)。
  2. 差异仅在: AI 子系统数 (36/32/28 vs 32/28)、HBM (4TB/s, 144/96GB vs 1.6TB/s, 128/112GB)、L2 (DT 全档 128MB; PR 28 核降 112MB)。
  3. L2 带宽白皮书未给, 全系列沿用 5.2TB/s (用户澄清口径), 待标定; 搬移效率经验值 (dValue/minTile/480KB/T_cmd=0) 同架构沿用 950PR 实测口径。

⚠️ 口径偏差发现 (待用户裁决, 本 issue 不改任何现有行为)

白皮书表3-1 "Cube算力"单行: PR32 Cube BF16 = 432 TFLOPS; 486 为 Cube+Vector 算力 (432+54; 单核 13.5T)。现行 NpuSpec.cube_peak_tflops=486 沿用 v0.98/用户澄清口径把 486 当 Cube 峰值 (单核 15.1875T), 比白皮书 Cube 单行高 12.5%, 即全模型 MMAD 时延可能整体偏低 12.5%。

本 issue 为保 0 diff 沿用现行口径 (新增 DT 各档同口径: 547/486/425, 单核 15.1875T 全系列一致, 代码注释标明出处与偏差)。是否把全模型切换到白皮书 Cube-only 口径 (PR32→432 / DT36→486, 全量 MMAD 时延 +12.5%, examples/测试全变) 请用户裁决; 若切换另行开 issue 专项处理。

改动内容

  • ascend950pr.py: 新增 gm_capacity_gb 信息字段 (模型暂不消费) + ASCEND950PR_C28 实例;
  • 新增 ascend950dt.py: ASCEND950DT (36 核主 bin) / ASCEND950DT_C32 / ASCEND950DT_C28;
  • __init__.py: SPECS 注册表 + get_spec(name), 默认仍为 ASCEND950PR, 现有 from .hardware import NpuSpec, ASCEND950PR 调用点零改动;
  • docs/01_软件架构.md + README.md 更新硬件层说明;
  • tests/test_branches.py 新增 TestIssue38 锁定: 默认规格不变、5 SKU 注册表、DT 派生量 (bw_pc/r16/AIV 白皮书交叉验证)、DT router 冒烟、未知名 KeyError。
## 需求 `bmm_theory/hardware/` 目前只有 Ascend950PR 32 核主 bin (NpuSpec 默认值)。补全系列其他版本规格, 重点 **Ascend950DT**; 保证现有硬件参数的加载调用不受影响。 ## 数据来源 `\\HwFs\HW_WorkBuddy\昇腾NPU\昇腾NPU知识库\00_硬件\昇腾950_NPU架构白皮书` 表3-1 (系列 SKU 规格) + 表4-2 (Memory 层次) + 昇腾产品形态说明 (950PR→Atlas 350 加速卡; 950DT→Atlas 850E/650E/950 SuperPoD)。 ## SKU 矩阵 (白皮书表3-1) | 规格项 | 950PR 32核(主) | 950PR 28核 | 950DT 36核(主) | 950DT 32核 | 950DT 28核 | |---|---|---|---|---|---| | Cube Core | 32 | 28 | 36 | 32 | 28 | | Vector Core | 64 | 56 | 72 | 64 | 56 | | Cube+Vector BF16 TFLOPS | 486 | 425 | 547 | 486 | 425 | | Cube BF16 TFLOPS | 432 | 378 | 486 | 432 | 378 | | Vector FP32 TFLOPS | 27 | 23 | 30 | 27 | 23 | | Memory 带宽 TB/s | 1.6 | 1.4 | 4 | 4 | 4 | | Memory 容量 GB | 128 | 112 | 144 | 144/96(待确认) | 96 | | L2 容量 MB | 128 | 112 | 128 | 128 | 128 | ## 关键结论 1. **950PR/950DT 共架构** (第三代 DaVinci): 表4-2 的 L1 512KB / L0A/L0B 64KB / L0C 256KB / UB 512KB 每核一致; 单核速率一致 —— 白皮书数值交叉验证: Cube = 16³ MAC/拍 @≈1.65GHz (432e12/32 核 = 486e12/36 核 = 13.5T/核); Vector fp32 27/64 ≈ 30/72 TFLOPS (128 lane × 1.65GHz, 乘加计 2 次)。 2. **差异仅在**: AI 子系统数 (36/32/28 vs 32/28)、HBM (4TB/s, 144/96GB vs 1.6TB/s, 128/112GB)、L2 (DT 全档 128MB; PR 28 核降 112MB)。 3. L2 带宽白皮书未给, 全系列沿用 5.2TB/s (用户澄清口径), 待标定; 搬移效率经验值 (dValue/minTile/480KB/T_cmd=0) 同架构沿用 950PR 实测口径。 ## ⚠️ 口径偏差发现 (待用户裁决, 本 issue 不改任何现有行为) 白皮书表3-1 **"Cube算力"单行: PR32 Cube BF16 = 432 TFLOPS**; 486 为 Cube+Vector **总**算力 (432+54; 单核 13.5T)。现行 `NpuSpec.cube_peak_tflops=486` 沿用 v0.98/用户澄清口径把 486 当 Cube 峰值 (单核 15.1875T), 比白皮书 Cube 单行**高 12.5%**, 即全模型 MMAD 时延可能整体偏低 12.5%。 本 issue 为保 0 diff **沿用现行口径** (新增 DT 各档同口径: 547/486/425, 单核 15.1875T 全系列一致, 代码注释标明出处与偏差)。是否把全模型切换到白皮书 Cube-only 口径 (PR32→432 / DT36→486, 全量 MMAD 时延 +12.5%, examples/测试全变) 请用户裁决; 若切换另行开 issue 专项处理。 ## 改动内容 - `ascend950pr.py`: 新增 `gm_capacity_gb` 信息字段 (模型暂不消费) + `ASCEND950PR_C28` 实例; - 新增 `ascend950dt.py`: `ASCEND950DT` (36 核主 bin) / `ASCEND950DT_C32` / `ASCEND950DT_C28`; - `__init__.py`: `SPECS` 注册表 + `get_spec(name)`, **默认仍为 ASCEND950PR**, 现有 `from .hardware import NpuSpec, ASCEND950PR` 调用点零改动; - `docs/01_软件架构.md` + `README.md` 更新硬件层说明; - `tests/test_branches.py` 新增 TestIssue38 锁定: 默认规格不变、5 SKU 注册表、DT 派生量 (bw_pc/r16/AIV 白皮书交叉验证)、DT router 冒烟、未知名 KeyError。
admin closed this issue 2026-09-09 02:33:27 +00:00
Author
Owner

已完成并推送 (commit 8d42d95, Fix #38)。

落地内容

  1. bmm_theory/hardware/ascend950dt.py (新增): 三个 SKU 实例 ——
    • ASCEND950DT (主 bin): 36 AIC / 72 AIV, Cube+Vector BF16 547 TFLOPS, HBM 4TB/s / 144GB, L2 128MB;
    • ASCEND950DT_C32: 32/64, 486 TFLOPS, 4TB/s (容量映射 144GB 待确认);
    • ASCEND950DT_C28: 28/56, 425 TFLOPS, 4TB/s, 96GB。
  2. ascend950pr.py: 新增 ASCEND950PR_C28 (28/56, 425 TFLOPS, 1.4TB/s, 112GB, L2 112MB); 新增 gm_capacity_gb 信息字段 (模型暂不消费); 字段注释标明算力口径 (= 白皮书 "Cube+Vector 总算力" 行) 及与 "Cube 单行 432" 的 12.5% 偏差 (待用户裁决, 见下)。
  3. hardware/__init__.py: SPECS 注册表 + get_spec(name); 默认导出不变 (from .hardware import NpuSpec, ASCEND950PR 全部现有调用点零改动)。
  4. 文档: docs/01_软件架构.md §3.3/扩展指南 + README.md 目录结构更新为多 SKU 说明。

共架构交叉验证 (白皮书自洽)

  • Cube 单核: 432T/32核(PR) = 486T/36核(DT) = 13.5T = 16³ MAC/拍 @ ~1.65GHz;
  • Vector fp32: 27T/64核(PR) ≈ 30T/72核(DT) → 128 lane/拍 @ 1.65GHz, 与现有 aiv_freq_ghz=1.65 / aiv_fp32_per_cycle=128 一致;
  • 表4-2: L1 512KB / L0A/L0B 64KB / L0C 256KB / UB 512KB 每核各档一致;
  • L2 带宽白皮书未分档, 全系列沿用 5.2TB/s 待标定; 搬移效率经验值 (dValue/minTile/480KB/T_cmd=0) 同架构沿用 950PR 口径。

验证

  • 单测 87/87 通过 (新增 TestIssue38 六例: 默认规格不变/5 SKU 注册表/DT 派生量 bw_pc/r16/AIV 白皮书验证/DT router 冒烟 GM 段 4TB/s 快于 1.6TB/s/未知名 KeyError);
  • examples 44 例 (recommend+evaluate+plans): 0 diff (git status 无 examples 变更);
  • 压力回归 seed7/6000 + seed2024/4000: 10000 例 0 崩溃/0 NaN/0 违规/0 GM<V_in, 分支分布与上轮逐数一致;
  • 28 核档总算力 425 为白皮书取整值, 单核 15.179T vs 主 bin 15.1875T 差 0.06%, 已在代码注释与测试中按取整误差处理 (容差 0.1%)。

遗留待裁决 (不影响本 issue 闭环)

白皮书表3-1 "Cube算力" 单行为 Cube 单元独立口径 (PR32=432, 单核 13.5T), 现行 cube_peak_tflops=486 实为 Cube+Vector 总算力口径 (单核 15.1875T) —— 全模型 MMAD 时延相对 Cube-only 口径可能整体偏低 12.5%。是否切换需用户裁决; 若切换将单独开 issue (examples/测试全量重算)。

闭环。

已完成并推送 (commit 8d42d95, `Fix #38`)。 ## 落地内容 1. **`bmm_theory/hardware/ascend950dt.py` (新增)**: 三个 SKU 实例 —— - `ASCEND950DT` (主 bin): 36 AIC / 72 AIV, Cube+Vector BF16 547 TFLOPS, HBM **4TB/s** / 144GB, L2 128MB; - `ASCEND950DT_C32`: 32/64, 486 TFLOPS, 4TB/s (容量映射 144GB 待确认); - `ASCEND950DT_C28`: 28/56, 425 TFLOPS, 4TB/s, 96GB。 2. **`ascend950pr.py`**: 新增 `ASCEND950PR_C28` (28/56, 425 TFLOPS, 1.4TB/s, 112GB, L2 112MB); 新增 `gm_capacity_gb` 信息字段 (模型暂不消费); 字段注释标明算力口径 (= 白皮书 "Cube+Vector 总算力" 行) 及与 "Cube 单行 432" 的 12.5% 偏差 (待用户裁决, 见下)。 3. **`hardware/__init__.py`**: `SPECS` 注册表 + `get_spec(name)`; **默认导出不变** (`from .hardware import NpuSpec, ASCEND950PR` 全部现有调用点零改动)。 4. **文档**: `docs/01_软件架构.md` §3.3/扩展指南 + `README.md` 目录结构更新为多 SKU 说明。 ## 共架构交叉验证 (白皮书自洽) - Cube 单核: 432T/32核(PR) = 486T/36核(DT) = 13.5T = 16³ MAC/拍 @ ~1.65GHz; - Vector fp32: 27T/64核(PR) ≈ 30T/72核(DT) → 128 lane/拍 @ 1.65GHz, 与现有 `aiv_freq_ghz=1.65 / aiv_fp32_per_cycle=128` 一致; - 表4-2: L1 512KB / L0A/L0B 64KB / L0C 256KB / UB 512KB 每核各档一致; - L2 带宽白皮书未分档, 全系列沿用 5.2TB/s 待标定; 搬移效率经验值 (dValue/minTile/480KB/T_cmd=0) 同架构沿用 950PR 口径。 ## 验证 - 单测 **87/87** 通过 (新增 TestIssue38 六例: 默认规格不变/5 SKU 注册表/DT 派生量 bw_pc/r16/AIV 白皮书验证/DT router 冒烟 GM 段 4TB/s 快于 1.6TB/s/未知名 KeyError); - examples 44 例 (recommend+evaluate+plans): **0 diff** (git status 无 examples 变更); - 压力回归 seed7/6000 + seed2024/4000: 10000 例 0 崩溃/0 NaN/0 违规/0 GM<V_in, 分支分布与上轮逐数一致; - 28 核档总算力 425 为白皮书取整值, 单核 15.179T vs 主 bin 15.1875T 差 0.06%, 已在代码注释与测试中按取整误差处理 (容差 0.1%)。 ## 遗留待裁决 (不影响本 issue 闭环) 白皮书表3-1 "Cube算力" 单行为 Cube 单元独立口径 (PR32=432, 单核 13.5T), 现行 `cube_peak_tflops=486` 实为 Cube+Vector 总算力口径 (单核 15.1875T) —— 全模型 MMAD 时延相对 Cube-only 口径可能整体偏低 12.5%。是否切换需用户裁决; 若切换将单独开 issue (examples/测试全量重算)。 闭环。
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: admin/matmul-analysis#38
No description provided.