Skip to content

Perf: 优化 A5 双 Die 任务局部性与 Qwen 依赖链 - #11

Open
yanghaoran29 wants to merge 3 commits into
mainfrom
exp/a5-qwen-domain-bridges-20260827
Open

Perf: 优化 A5 双 Die 任务局部性与 Qwen 依赖链#11
yanghaoran29 wants to merge 3 commits into
mainfrom
exp/a5-qwen-domain-bridges-20260827

Conversation

@yanghaoran29

Copy link
Copy Markdown
Owner

背景

本 PR 直接面向 main,合并当前 A5 双 Die 调度局部性方案及后续 Qwen3 跨 Die 依赖链优化。

  • Main 基线:80dd3cd96e568e6f3ded9c11b68e7c267a31343d
  • 当前版本:cd5eefefc1b4994dd3d7670a120e6abed2559aea
  • PTO-ISA:be5ccb765a4ce5d14ca5da8b0e2f182d7f003369

相对 Main 共 3 个提交:

  1. 629c7cde:A5 双 Die 任务局部性与 SPMD 派发;
  2. 87c23c26:Qwen OutProj producer 与 residual/RMS consumer 同 Die;
  3. cd5eefef:Q/K/V seed 按 Die 拆分并独立解锁 projection half。

Runtime 改动

  • Scheduler cluster 按连续物理 cluster 分配:S0/S1 服务 DIE0,S2/S3 服务 DIE1。
  • 任务显式标记 GLOBALDIE0DIE1,AIC/AIV/MIX 分别维护按 domain 索引的 ready queue。
  • completion、async-wait、deferred-release 和 scheduler-local continuation 传播 task domain,固定 Die 依赖链优先在本 Die 推进。
  • deferred release 每次最多处理 16 个 task,并聚合重复 producer,限制单次 release 工作量以及 refcount/ring-advance 原子操作。
  • runtime ring、共享内存布局、host graph 参数和对应单测同步扩展到多 domain。

Workload 改动

  • BGEMM 按 group 分 Die;PA unroll/manual PA 按 batch 链分 Die;Batch PA 按 chunk 分 Die;Alternating 根任务在两侧均分。
  • Qwen MLP 分片保持 Gate/Up、SiLU 和 Down 同 Die;非 sync-start 多核 SPMD 拆分到两个 Die。
  • Qwen 50 个 OutProj block 按 5 个 hidden shard 重组,每个 shard 的 producer 与对应 residual_rms_cast consumer 固定在同一 Die。
  • Q seed 拆成两个 2560-wide half,K/V seed 拆成两个 512-wide half;每个 projection half 只依赖同 Die seed half。
  • mlp_out_seed 和 24-block CANN PA 保持 GLOBAL,因为它们仍需等待完整 accumulator/seed 状态。

Main / 当前版本性能

设备为 Ascend950PR_9579 卡 1,CANN 9.2.0,runtime 为 tensormap_and_ringbuffer。Main 数据复用干净构建历史结果;当前版本中非 Qwen 各运行 100 轮并取算术平均,Qwen 运行 5 轮,按 Device 删除最快和最慢轮后对对应中间 3 轮取平均。性能轮关闭泳道。

负数表示当前版本更快。

Case Main Device 当前版本 Device Device 变化 Effective 变化 Orch 变化 Scheduler 变化
alternating_matmul_add Case1 1,495.2 us 1,319.3 us -11.76% -12.12% -12.10% -11.92%
benchmark_bgemm Case0 1,567.6 us 1,430.3 us -8.76% -9.08% -8.38% -8.81%
paged_attention_unroll Case1 1,876.0 us 1,508.3 us -19.60% -20.00% -11.24% -19.77%
paged_attention_unroll Case2 1,075.5 us 862.3 us -19.82% -20.55% -15.13% -20.25%
paged_attention_unroll_manual_scope Case1 1,898.5 us 1,492.7 us -21.37% -21.78% -10.82% -21.65%
paged_attention_unroll_manual_scope Case2 1,066.6 us 863.3 us -19.06% -19.71% -12.16% -19.42%
batch_paged_attention Case1 6,974.1 us 5,321.4 us -23.70% -23.87% -33.14% -23.83%
qwen3_14b_decode StressBatch16Seq3500 36,113.7 us 34,576.6 us -4.26% -4.40% +1.97% -4.57%
8-case 几何平均 -16.28% -16.69% -13.14% -16.52%

当前版本相对 Main 的 8 个 case Device latency 全部改善。Qwen Orchestrator 仍比 Main 慢 1.97%,但 Device、Effective 和 Scheduler 分别改善 4.26%4.40%4.57%

Qwen 当前版本 5 轮 Device 原始值为 34644.2, 34473.0, 34434.4, 34612.5, 34932.8 us;删除 r2 最快轮和 r4 最慢轮,保留 r0/r1/r3。

后续 Qwen 提交的独立效果

相对 629c7cde

Variant Device Effective Orch Scheduler Device 变化
629c7cde 35,322.9 us 35,286.1 us 10,510.8 us 35,285.4 us baseline
OutProj/cast 同 Die 87c23c26 35,134.1 us 35,093.7 us 10,447.5 us 35,093.0 us -0.53%
拆分 Q/K/V seed cd5eefef 34,576.6 us 34,490.2 us 10,472.1 us 34,427.3 us -2.11%

最终 Qwen 版本相对 629c7cde 的 Device、Effective、Scheduler 分别改善 2.11%2.26%2.43%;其余 7 个样例的 Device 变化位于 -1.02%~+0.82%,没有发现跨 workload 回退。

验证与泳道

  • 当前版本 8 个默认样例 golden 全部 PASS。
  • 7 个非 Qwen 样例各完成 100/100 轮;Qwen 完成 5 轮并按中间 3 轮聚合。
  • 当前版本 8 个样例各采集 1 次 level-4 chip swimlane,8/8 PASS。
  • 8 份原始泳道均为 level 4,AICore/AICPU task 非空,转换后的 Perfetto trace 非空。
  • PTO-ISA 构建 metadata 的 checkout 与 pin 一致。

限制

  • Main 与当前版本不是逐 case 交叉运行,亚百分比差异可能包含时间窗口噪声。
  • Qwen Host 指标相对实验前版本波动较大,当前结论以 Device/Effective/Scheduler 为主。

基于连续物理cluster分核,为每个任务引入GLOBAL、DIE0和DIE1 domain,并为AIC、AIV和MIX维护按domain直接索引的ready queue。completion、async-wait、deferred-release和Scheduler-local continuation传播任务domain,使固定Die的依赖链尽量在对应Die内完成。

按样例的自然依赖粒度分配任务:BGEMM按group,PA unroll和manual PA按batch链,Batch PA按chunk,Alternating根任务在两侧均分。Qwen3按MLP分片保持Gate/Up、SiLU和Down同Die,并将非sync-start多核SPMD拆成两个逻辑block区间;sync-start attention和高fanin dcr_xgamma保留为GLOBAL单任务。

分支已rebase到Main 80dd3cd,并适配最新Tensor及PTO2退役后的runtime接口。卡1同机重新测试Main和本提交:非Qwen每个case 100轮,Qwen 5轮取Device中间3轮。Alternating改善8.19%,Batch PA改善1.89%,Qwen改善5.63%,BGEMM回退0.65%;4个PA unroll/manual case回退14.89%至21.40%,8 case Device几何平均回退6.62%。最新数据、限制说明及当前代码生成的8张四级原始泳道随提交保存。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant