PyTorch 2.14 嵌套图实测:B200 上稳态快 4.5 倍,冷启动多付三成
@cfregly 在 NVIDIA B200 上针对 PyTorch 2.14.1(CUDA 13.0)的 nestedgraphbreaks 功能发布了一组编译器微基准与机制分析:同样的 64 个算子(1,048,576 个 FP32 元素)在开启嵌套图后,depth-8 场景的同步稳态中位延迟从 407.57µs 降至 89.94µs,全部配对组合均改善,加速比 4.50×–4.58×。
已确认
- 机制层面:对比 depth-8、seed-0 生成的 Inductor 代码,不开嵌套图是 16 个 wrapper 区域 × 4 个 ATen 算子,开启后是 2 个区域 × 32 个算子,两者对应同样的 64 个算子
- 每次被 profile 的调用的 CUDA Graph replay 启动次数从 16 次降到 2 次;嵌套图还带来更少内存碎片、更大融合区域,这是稳态延迟大幅下降的机制解释
- 冷启动代价:开启后前 10 次同步编译调用总耗时从 2.411s 增至 3.212s(+33.2%),额外耗时几乎全部集中在第 1 次调用(约多 0.79–0.88s),第 2 次起已明显回落
为什么重要
- 这是一个典型的「稳态大赚、冷启动小亏」优化:对长期运行、重复执行的热路径收益显著,但对短生命周期或频繁冷启动的负载需要权衡
- 作者强调测量方法论:应检查编译器生成的代码片段与 CUDA replay 活动,并把首次调用的冷启动耗时与重复执行的稳态耗时分开测量,否则容易误读此类优化的真实效果
2026-10-22 ~ 2026-10-22 · 6 条相关
一手来源
- 嵌套图实测:depth-8 稳态中位延迟从 407.57µs 降到 89.94µs — cfregly ·
- PyTorch 嵌套图冷启动代价实测:前 10 次调用总耗时增加 33.2% — cfregly ·
- PyTorch 2.14 开 nested_graph_breaks 实测稳态快 4.53×,B200 微基准 — cfregly ·
- 【源头】PyTorch 2.14 开 nested_graph_breaks 实测稳态快 4.53×,B200 微基准 — cfregly · 2026-10-22
- 【源头】嵌套图实测:depth-8 稳态中位延迟从 407.57µs 降到 89.94µs — cfregly · 2026-10-22
- 同样 64 个算子:嵌套图把 Inductor 代码从 16 个区域并成 2 个 — cfregly · 2026-10-22
- 实测:嵌套 CUDA Graph 让每次调用的 replay 启动从 16 次降到 2 次 — cfregly · 2026-10-22
- 【源头】PyTorch 嵌套图冷启动代价实测:前 10 次调用总耗时增加 33.2% — cfregly · 2026-10-22
- 嵌套图性能测量方法论:看编译产物与 replay 活动,冷热分开测 — cfregly · 2026-10-22