viable/strict/1790796459: [Inductor][UT] Isolate combo kernel grid tests from caches (#199095)
PyTorch 合并 PR #199095,标题为 [Inductor][UT] Isolate combo kernel grid tests from caches。该改动用 fresh_cache() 隔离两个 combo-kernel profiler grid 测试,避免持久化的 Inductor/Triton 调优条目改变其精确 launch-grid 断言,并把缓存隔离限制在受影响方法及其继承的 per-subkernel 变体上。动机是 ROCm 上空缓存时套件通过,缓存填充后第二次运行同一命令失败;数值 eager/compiled 比较仍通过,只有精确 grid 断言变化。测试在 MI355X 与 release/2.14 运行时上,对两个受影响测试的 base 与 per-subkernel 变体各跑两次,均通过,每次 4 个测试。
发展脉络
- 首次出现ciflow/trunk/199095: [inductor] Isolate combo kernel grid tests from cachesPyTorch Core
- 行业反馈viable/strict/1790796459: [Inductor][UT] Isolate combo kernel grid tests from caches (#199095)PyTorch Core
- 当前判断该 PR 反映编译器后端测试对缓存状态的敏感性正在成为维护成本来源,尤其在 ROCm 与 CUDA 多后端并行时。把缓存隔离做成测试级原语,有助于降低跨后端 CI 的偶发失败,但也会增加测试运行时间。可验证下一信号:PyTorch CI 中同类缓存相关 flaky 报告是否减少。Agent Pulse · 分析
PyTorch 仓库合并 PR #199095,用 fresh_cache() 把两个 combo-kernel profiler grid 测试与持久缓存隔离,防止 Inductor/Triton 调优条目影响精确 launch-grid 断言。问题表现为 ROCm 上空缓存通过、缓存填充后第二次运行失败,而数值 eager/compiled 比较仍通过,说明失败仅来自 grid 断言。改动将缓存隔离限定在受影响方法及其继承的 per-subkernel 变体。作者在 MI355X 与 release/2.14 运行时上对 base 与 per-subkernel 变体各跑两次,均通过,每次 4 个测试,并检查了 git diff --check 与 IDE lint。
这是一次测试确定性修复而非功能变更:断言依赖精确 launch grid,而 Inductor/Triton 的持久调优缓存会改变实际 grid,导致同一命令在冷/热缓存下结果不同。用 fresh_cache() 局部隔离可保留数值比较的覆盖,同时让 grid 断言可复现。可验证下一信号:后续 PR 是否把 fresh_cache 推广到其他依赖精确 grid 或调优状态的 Inductor 测试。
该 PR 反映编译器后端测试对缓存状态的敏感性正在成为维护成本来源,尤其在 ROCm 与 CUDA 多后端并行时。把缓存隔离做成测试级原语,有助于降低跨后端 CI 的偶发失败,但也会增加测试运行时间。可验证下一信号:PyTorch CI 中同类缓存相关 flaky 报告是否减少。
对使用 PyTorch Inductor 的团队,这类修复降低跨后端 CI 的假失败,减少排查调优缓存与断言耦合的时间;但测试隔离会带来额外编译开销。可验证下一信号:升级到含该 PR 的版本后,ROCm 上 combo-kernel 相关测试的重复运行失败率是否下降。
若该模式被采纳,Inductor 测试可能逐步区分「数值正确性」与「调度/网格形状」两类断言,后者默认在干净缓存下运行。可验证下一信号:后续 release 分支是否出现同类 fresh_cache 装饰器的批量应用。