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:
@@ -1040,7 +1040,9 @@ class TestIssue38(unittest.TestCase):
|
||||
self.assertEqual(s.bw_gm, 1.6e12)
|
||||
self.assertEqual(s.bw_l2, 5.2e12) # PR 保持 5.2TB/s
|
||||
self.assertEqual(s.l2_bytes, 128 * 1024 * 1024)
|
||||
self.assertAlmostEqual(s.q16, 486e12 / 32)
|
||||
self.assertAlmostEqual(s.q16, 432e12 / 32) # 13.5T (issue#40 Cube-only)
|
||||
self.assertEqual(s.cube_peak_tflops, 432.0)
|
||||
self.assertAlmostEqual(s.r16, 540.0) # 432e12/(1.6e12/2)
|
||||
self.assertEqual(s.gm_capacity_gb, 128.0)
|
||||
self.assertIs(get_spec(), ASCEND950PR) # 默认 = 950PR 主bin
|
||||
self.assertIs(get_spec("Ascend950PR"), ASCEND950PR)
|
||||
@@ -1052,9 +1054,9 @@ class TestIssue38(unittest.TestCase):
|
||||
"Ascend950DT", "Ascend950DT_C28", "Ascend950DT_C32",
|
||||
"Ascend950PR", "Ascend950PR_C28"])
|
||||
for s in SPECS.values():
|
||||
# 共架构: 单核 Cube 口径全系列一致 (白皮书总算力行取整, 28核档
|
||||
# 425/28=15.179T 与 15.1875T 差 0.06%, 容差 0.1%); AIV 恒为 AIC 两倍
|
||||
self.assertLess(abs(s.q16 / (486e12 / 32) - 1), 1e-3)
|
||||
# 共架构 + Cube-only 口径 (issue#40): 单核 Cube 全系列精确 13.5T
|
||||
# (432/32=378/28=486/36); AIV 恒为 AIC 两倍
|
||||
self.assertAlmostEqual(s.q16, 13.5e12, places=6)
|
||||
self.assertEqual(s.aiv_num, 2 * s.aic_num)
|
||||
self.assertEqual(s.l1_bytes, 512 * 1024) # 表4-2 各档一致
|
||||
self.assertEqual(s.l0c_bytes, 256 * 1024)
|
||||
@@ -1066,20 +1068,20 @@ class TestIssue38(unittest.TestCase):
|
||||
self.assertEqual(ASCEND950DT.bw_gm, 4.0e12) # 4TB/s HBM
|
||||
self.assertEqual(ASCEND950DT.l2_bytes, 128 * 1024 * 1024)
|
||||
self.assertEqual(ASCEND950DT.gm_capacity_gb, 144.0)
|
||||
self.assertEqual(ASCEND950DT.cube_peak_tflops, 547.0)
|
||||
self.assertEqual(ASCEND950DT.cube_peak_tflops, 486.0) # Cube-only (issue#40)
|
||||
# L2 带宽: DT 三档 7.5TB/s 读写各自独享 (issue#39 用户澄清)
|
||||
for dt_spec in (ASCEND950DT, ASCEND950DT_C32, ASCEND950DT_C28):
|
||||
self.assertEqual(dt_spec.bw_l2, 7.5e12)
|
||||
self.assertAlmostEqual(ASCEND950DT.bw_l2_pc, 7.5e12 / 36)
|
||||
self.assertEqual((ASCEND950DT_C32.aic_num,
|
||||
ASCEND950DT_C32.cube_peak_tflops), (32, 486.0))
|
||||
ASCEND950DT_C32.cube_peak_tflops), (32, 432.0))
|
||||
self.assertEqual((ASCEND950DT_C28.aic_num,
|
||||
ASCEND950DT_C28.cube_peak_tflops), (28, 425.0))
|
||||
ASCEND950DT_C28.cube_peak_tflops), (28, 378.0))
|
||||
self.assertEqual(ASCEND950DT_C28.gm_capacity_gb, 96.0)
|
||||
# 派生量: 单核 GM 份额 4TB/36; r16 平衡点随带宽升至 4TB/s 而减半
|
||||
self.assertAlmostEqual(ASCEND950DT.bw_pc, 4.0e12 / 36)
|
||||
self.assertAlmostEqual(ASCEND950DT.r16, 547e12 / (4.0e12 / 2))
|
||||
self.assertAlmostEqual(ASCEND950DT_C32.r16, 486e12 / (4.0e12 / 2))
|
||||
self.assertAlmostEqual(ASCEND950DT.r16, 486e12 / (4.0e12 / 2)) # 243
|
||||
self.assertAlmostEqual(ASCEND950DT_C32.r16, 432e12 / (4.0e12 / 2)) # 216
|
||||
# AIV 白皮书交叉验证: fp32 通量 72 核 x 128 lane x 1.65GHz x 2 ≈ 30T
|
||||
self.assertAlmostEqual(ASCEND950DT.aiv_elem_rate_fp32 * 2 / 1e12,
|
||||
30.0, places=0)
|
||||
|
||||
Reference in New Issue
Block a user