CP 多芯片桥 A1 Test Plan
先于 test case 代码定义全部 case:输入、预期、覆盖的 plan 验收点、断言性质。
本 test plan 覆盖 A1(CP 多芯片桥,plan docs/plans/2026-06-22-CP多芯片桥A1.md)的全部测试。先写本清单,再据它写 test case 代码(用户拍板流程)。
A1 边界:只修带宽域(跨 rank 通信走真 c2c 非 SDMA),overlap 仍聚合 max(不碰 DepEngine::Cdma=>0)。
断言性质说明
| 性质 | 含义 | 用在哪 |
|---|---|---|
| 严格无容差 | ==,伪红进去查不加兜底 | 通信侧守恒 / 带宽域 / 桥结构 |
| 相对一致 | 趋势/位置一致,非绝对相等 | compute 侧(组合法解析 R vs G5 真 matmul cycle 口径不同) |
| 行为断言 | 验证某行为被触发 / 路由分支 | 路由 / raise |
| 浮点 ULP | 容差到机器精度(非工程容差) | 浮点比值 |
Task 1 桥输出结构(test_multi_chip_bridge.py,单测直接构造 DistributedModel)
| # | 输入 | 预期 | 覆盖 plan 验收点 | 断言性质 |
|---|---|---|---|---|
| T1.1 | cp=4 CP DistributedModel(4 COMPUTE 节点各 chip_ids=[i],pass-KV COMM 节点 participants=[0,1,2,3]) | 桥产出 4 个 chip 的 CoreProgram,各含本 rank 的 compute 指令 | 桥按 chip_ids 分组 per-chip | 严格无容差(CoreProgram 数=4、各含对应 rank op) |
| T1.2 | 同 T1.1 | COMM 节点只进 comm_ops(转 CommOp),不出现在任何 CoreProgram 的 SDMA 里 | COMM 排除出 per-chip COMPUTE emit 防双算 | 严格无容差(各 CoreProgram 的 SDMA 指令里无该 COMM 的 op_id) |
| T1.3 | 同 T1.1 | 每 chip 的 CoreProgram cmd_id 独立从 0 计 | cmd_id per-chip 独立 | 严格无容差(chip0 与 chip1 的 cmd_id 都从 0 起) |
| T1.4 | 同 T1.1 | comm_ops 总字节 = Σ per-rank comm_bytes | 通信字节守恒 | 严格无容差 |
| T1.5 | COMM 节点 chip_ids=[] 或 participants<2 | 桥 raise ValueError 带 op_id | 校验门(缺 chip_ids raise) | 行为断言(raise + op_id 在消息里) |
| T1.6 | COMM 节点 participants=[0,1,2,3] | 转出的 CommOp.participants==[0,1,2,3]、comm_type/data_bytes 正确填 | 桥填对 participants(带宽域靠路由) | 严格无容差 |
Task 2 路由分支(test_pipeline_routing.py)
| # | 输入 | 预期 | 覆盖 plan 验收点 | 断言性质 |
|---|---|---|---|---|
| T2.1 | cp>1 CP + network_graph 非 None | run_g5_pipeline 走桥 + simulate_multi_chip | CP 路由到多芯片 | 行为断言(调 simulate_multi_chip) |
| T2.2 | cp=1 或 network_graph=None | run_g5_pipeline 走 simulate_single_chip(现路径) | 单芯片场景不误路由 | 行为断言(调 simulate_single_chip) |
Task 3 CP 端到端 + 带宽域(test_cp_multichip_e2e.py)
| # | 输入 | 预期 | 覆盖 plan 验收点 | 断言性质 |
|---|---|---|---|---|
| T3.1 | cp=4 CP prefill 走多芯片 | 跨 rank 通信记录走 tier6 C2C,无 src=dst=0 的 SDMA | 跨 rank 走 c2c 非 SDMA | 严格无容差(通信记录带宽域=c2c、无 SDMA src=dst=0) |
| T3.2 | 同 T3.1 | 多芯片 sim 通信字节守恒(总=Σ per-rank) | 通信字节守恒 | 严格无容差 |
| T3.3 | cp∈{1,4,16} × 固定 S/BW | G5 多芯片加速比随 cp 单调(cp 大→每芯片计算小);容量墙位置与组合法一致 | G5×组合法 compute 相对一致 | 相对一致(单调性 + 容量墙位置,非绝对加速比相等) |
| T3.4 | cp=4 prefill | 端到端跑通多芯片路径出 EngineResult | prefill 走多芯片 | 行为断言(无异常 + 结果非空) |
| T3.5 | cp=4 decode | 端到端跑通多芯片路径(KV 读 tier3 HBM/tier4 NoC、pass-Q tier6 C2C) | decode 走多芯片 | 行为断言 |
Task 4 回归(复用既有测试 + 抽样)
| # | 输入 | 预期 | 覆盖 plan 验收点 | 断言性质 |
|---|---|---|---|---|
| T4.1 | 组合法路径(上下文并行收益验证 probe) | 结果不变(A1 不动组合法) | 组合法不破 | 回归 |
| T4.2 | comm-primitive 多芯片基准 | 现有 test_comm_/cp_e2e 全绿 | comm-primitive 不破 | 回归 |
| T4.3 | 单芯片 LLM 非 CP 场景 | test_adapter 等不破 | 单芯片不破 | 回归 |
| T4.4 | 全量 | cargo test + pytest tests/evaluation/g5/ 全绿 | 不破现有 | 回归 |
跑法
# 单测
pytest tests/evaluation/g5/test_multi_chip_bridge.py # Task 1 桥结构
pytest tests/evaluation/g5/test_pipeline_routing.py # Task 2 路由
pytest tests/evaluation/g5/test_cp_multichip_e2e.py # Task 3 端到端
# 回归
pytest tests/evaluation/g5/ # 全量 G5
cd perfmodel/evaluation/g5 && cargo test --lib # Rust(若涉及 Rust 改动)
Rust 改后:maturin build --release + pip install wheel + 覆盖根目录 g5_rs.cp314-win_amd64.pyd。
边界与局限(test 不覆盖,A1 边界)
- overlap 真实性不验:A1 overlap 聚合 max(A2 后续),不验真 overlap 拐点——只验带宽域 + compute 进真仿真。
- 绝对加速比不验:组合法解析 R vs G5 真 matmul cycle 口径不同,compute 侧只验相对(单调/容量墙位置)。
- vector/topk 占位:DSA 的 softmax/topk 仍占位(算子篇后续),本 test 用现有 matmul-only attention 近似。
维护信息
最后更新:2026-06-22。对应 plan docs/plans/2026-06-22-CP多芯片桥A1.md。test case 代码据本清单写(先 plan 后 case)。