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:
@@ -12,10 +12,12 @@ dtype 感知算力 (issue#28, 设计文档 docs/05 §2):
|
||||
(按 DaVinci 惯例 = 1/2, 白皮书未给同代比值), int8 假设同 FP8, 均待实测标定.
|
||||
AIV 逐元素通量按 lane 位宽等比假设 (16bit x2 / 8bit x4 / 4bit x8, 待标定).
|
||||
|
||||
口径注意 (issue#38): cube_peak_tflops 沿用 v0.98/用户澄清口径 = 白皮书表3-1
|
||||
"Cube+Vector 总算力" 行 (950PR 32核 = 486), 单核 15.1875T; 白皮书 "Cube算力"
|
||||
单行为 Cube 单元独立口径 (950PR 32核 = 432, 单核 13.5T)。两者差 12.5%,
|
||||
是否切换全模型口径待用户裁决 (本字段语义不变, 新增 SKU 同口径).
|
||||
口径 (issue#40 用户裁决): cube_peak_tflops 采用白皮书表3-1 **"Cube算力"单行**
|
||||
(Cube-only, 不含 Vector): 950PR 32核 = 432, 单核 13.5T = 16³ MAC/拍 × 1.65GHz;
|
||||
全系列 SKU 单核精确统一 13.5T (432/32 = 378/28 = 486/36)。2026-09 前曾沿用
|
||||
v0.98 的 "Cube+Vector 总算力" 口径 (486, 单核 15.1875T), 切换后全模型 MMAD
|
||||
时延 ×486/432 (+12.5%), R16 607.5→540, StreamK θ_c 12.24→10.9,
|
||||
ASW 面积/周长分界 93.5→83.1。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
@@ -48,7 +50,8 @@ class NpuSpec:
|
||||
# ---- 核数与算力 ----
|
||||
aic_num: int = 32 # C: AIC (Cube) 核数
|
||||
aiv_num: int = 64 # AIV (Vector) 核数
|
||||
cube_peak_tflops: float = 486.0 # 全芯片 Cube BF16 标称算力 (乘加各计一次)
|
||||
cube_peak_tflops: float = 432.0 # 全芯片 Cube BF16 标称算力 (乘加各计一次,
|
||||
# 白皮书表3-1 Cube 单行, issue#40)
|
||||
aiv_freq_ghz: float = 1.65
|
||||
aiv_fp32_per_cycle: int = 128 # 单 AIV 每拍 fp32 求和吞吐
|
||||
|
||||
@@ -90,7 +93,7 @@ class NpuSpec:
|
||||
# ---- 派生量 (属性) ----
|
||||
@property
|
||||
def q16(self) -> float:
|
||||
"""单核 Cube BF16/FP16 峰值算力 (FLOP/s) = 15.1875T."""
|
||||
"""单核 Cube BF16/FP16 峰值算力 (FLOP/s) = 13.5T (issue#40 Cube-only)."""
|
||||
return self.cube_peak_tflops * 1e12 / self.aic_num
|
||||
|
||||
@staticmethod
|
||||
@@ -147,10 +150,10 @@ class NpuSpec:
|
||||
|
||||
@property
|
||||
def r16(self) -> float:
|
||||
"""16bit 位宽平衡点算存比 R_16 = Cube峰值 / (GM带宽/2B) ≈ 607.5 FLOP/元素.
|
||||
"""16bit 位宽平衡点算存比 R_16 = Cube峰值 / (GM带宽/2B) = 540 FLOP/元素.
|
||||
|
||||
按 issue#28 速率表该比值对全 dtype 不变 (Cube 因子与元素字节数互成反比),
|
||||
故入口条件沿用单一 R_16.
|
||||
故入口条件沿用单一 R_16. (issue#40 Cube-only 口径: 607.5 -> 540)
|
||||
"""
|
||||
return self.cube_peak_tflops * 1e12 / (self.bw_gm / 2)
|
||||
|
||||
@@ -173,12 +176,11 @@ class NpuSpec:
|
||||
ASCEND950PR = NpuSpec()
|
||||
|
||||
# 950PR 28 核衍生版 (白皮书表3-1: 28 AIC / 56 AIV, HBM 1.4TB/s 112GB,
|
||||
# L2 112MB; L2 带宽未分档, 沿用 5.2TB/s 待标定; 总算力 425 为白皮书取整值,
|
||||
# 单核 15.179T 与主 bin 15.1875T 差 0.06% 属取整误差)
|
||||
# L2 112MB; L2 带宽未分档, 沿用 5.2TB/s 待标定)
|
||||
ASCEND950PR_C28 = NpuSpec(
|
||||
name="Ascend950PR_C28",
|
||||
aic_num=28, aiv_num=56,
|
||||
cube_peak_tflops=425.0,
|
||||
cube_peak_tflops=378.0,
|
||||
l2_bytes=112 * 1024 * 1024,
|
||||
bw_gm=1.4e12,
|
||||
gm_capacity_gb=112.0,
|
||||
|
||||
Reference in New Issue
Block a user