Files
matmul-analysis/BMM/BMM_Theory/bmm_theory/hardware/ascend950dt.py
admin 8e784a748c Fix #39: Ascend950DT L2 带宽定为 7.5TB/s (读写各自独享)
- 用户澄清口径: 950DT L2 = 7.5TB/s, 读写各自独享 (白皮书未分档,
  issue#38 曾沿用 950PR 的 5.2TB/s 待标定)
- ascend950dt.py: 三个 DT SKU (36/32/28核) bw_l2 = 7.5e12, 文档串同步
- 模型无结构改动: bw_l2 单字段本就是"读口/写口各自独享"语义
  (L2 重复读与 Fixpipe→L2 写分开计账, assemble_timing issue#23 口径);
  950PR 各档维持 5.2TB/s
- tests: DT 三档 bw_l2=7.5e12 / PR 两档 5.2e12 锁定 + bw_l2_pc 派生 +
  S_A 场景 DT fixpipe 走 7.5TB/s 写口端到端验证; 88/88 通过;
  examples 44 例 0 diff; 压力回归 10000 例干净
2026-09-09 10:39:52 +08:00

58 lines
2.2 KiB
Python

"""Ascend950DT 硬件规格参数 (issue#38).
数值来源: 昇腾950 NPU架构白皮书 表3-1 (系列 SKU 规格) / 表4-2 (Memory 层次);
产品形态: Atlas 850E 超节点 / Atlas 650E 服务器 / Atlas 950 SuperPoD 超节点.
与 950PR **共架构** (第三代 DaVinci), 仅以下维度不同:
- AI 子系统 36/32/28 个 (每子系统 = 1 Cube Core + 2 Vector Core);
- 高速片上内存 4TB/s (950PR 为 1.6/1.4TB/s), 容量 144/96GB;
- 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);
- 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);
- L2 带宽 7.5TB/s, 读写各自独享 (issue#39 用户澄清; 白皮书未分档,
DT 三档统一); 搬移效率经验值 (dValue/minTile/minDatamountPerCore/
T_cmd=0) 同架构沿用 950PR 口径.
"""
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)
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% 属取整误差)
ASCEND950DT_C28 = NpuSpec(
name="Ascend950DT_C28",
aic_num=28, aiv_num=56,
cube_peak_tflops=425.0,
bw_gm=4.0e12,
bw_l2=7.5e12,
gm_capacity_gb=96.0,
)