viable/strict/1789371558: [inductor] Make local AOTI arrayref tests host-independent (#196917)
PyTorch 提交 #196917 修改 inductor 的本地 AOTI arrayref 测试目标:此前该目标同时编译 legacy libstdc++ 与私有 libc++ 两个 DSO,并优先加载 legacy DSO;Sandcastle 主机可能预加载缺少本地编译器所需符号的旧版平台 libstdc++.so.6,导致所有测试在 dlopen 阶段失败。改动让本地构建目标直接加载私有 ABI 兼容 DSO,常规目标保持不变以继续对比 legacy 与 ABI 兼容结果,并同时应用于单次运行与多输入测试辅助函数。
发展脉络
- 首次出现viable/strict/1789371558: [inductor] Make local AOTI arrayref tests host-independent (#196917)PyTorch Core
- 行业反馈trunk/1ec60e20a915d032f91bf37306fca7d94f93bc01: [inductor] Make local AOTI arrayref tests host-independent (#196917)PyTorch Core
- 当前判断判断:头部框架项目正把 CI 可复现性当作工程债处理,宿主预装库与私有工具链的冲突会持续消耗维护成本。可验证信号是 PyTorch 后续 release notes 中是否出现更多 host-independent 类修复。Agent Pulse · 分析
PyTorch 合并 PR #196917,修复 inductor 本地 AOTI arrayref 测试对宿主机环境的依赖。原实现同时编译 legacy libstdc++ 与私有 libc++ DSO 并先加载 legacy 版本,而 Sandcastle 主机预加载的旧版平台 libstdc++.so.6 缺少本地编译器所需符号,使测试在 dlopen 阶段即失败,ABI 兼容 DSO 根本未被验证。修复方式是让本地构建目标直接加载私有 ABI 兼容 DSO,常规目标保持双 DSO 对比不变,并覆盖单次运行与多输入两类测试辅助函数。测试计划包含 arc lint 与两条 buck2 test 命令。
这是测试基础设施的 ABI 与动态链接顺序问题,而非模型或算子能力变化。判断依据是失败发生在 dlopen 而非数值比对阶段,说明符号解析先于被测逻辑。可验证的下一信号:后续提交是否把同类 DSO 选择逻辑推广到其他 AOTI 测试目标,或引入显式符号版本检查。
判断:头部框架项目正把 CI 可复现性当作工程债处理,宿主预装库与私有工具链的冲突会持续消耗维护成本。可验证信号是 PyTorch 后续 release notes 中是否出现更多 host-independent 类修复。
对使用 PyTorch 源码构建与自建 CI 的团队,这类修复减少因宿主库版本差异导致的假失败,降低排查成本;但本条不改变推理性能或部署成本,商业影响有限。
若此类修复持续出现,可能推动构建系统默认隔离宿主 libstdc++,但证据不足以确认时间表。观察点是 BUCK 目标中是否新增统一的 DSO 加载策略。