viable/strict/1787115531: Optimize PyTorch CUDA build with LLVM BOLT (#186245)
PyTorch 仓库合并 PR #186245,将 LLVM BOLT 后链接优化引入 CUDA 构建。该优化基于 perf 收集的执行 profile 调整代码布局,已在 NVIDIA PyTorch 容器中使用。PR 附带一组精选工作负载的 profile,使 CUDA 构建默认优化。USE_LLVM_BOLT 默认仅在 Linux + aarch64 + CUDA 且找到 llvm-bolt (>=21) 且启用 USE_PRIORITIZED_TEXT_FOR_LD 时开启。优化在构建时作为 POST_BUILD 步骤运行,未优化的 lib.so 移至 prebolt/ 子目录。
Development
- First Reportviable/strict/1787115531: Optimize PyTorch CUDA build with LLVM BOLT (#186245)PyTorch Core
- Industry Responsetrunk/3af07571b9d7402fd74352d079e6ff5fa307ec5f: Optimize PyTorch CUDA build with LLVM BOLT (#186245)PyTorch Core
- Current AssessmentPyTorch 将 LLVM BOLT 集成到官方构建,表明性能优化正从模型层下沉到编译和链接层。NVIDIA 和 ARM 的推荐表明硬件厂商与框架合作优化性能。默认启用但受条件限制,反映对兼容性和稳定性的谨慎。Agent Pulse · analysis
PyTorch 合并了 PR #186245,将 LLVM BOLT 后链接优化集成到 CUDA 构建流程。LLVM BOLT 是一种基于执行 profile 的代码布局优化器,此前已用于优化 NVIDIA 的 PyTorch 容器。该 PR 将这一优化带入 PyTorch 仓库,并附带一组精选工作负载的 profile,使 CUDA 构建默认启用优化。USE_LLVM_BOLT 默认仅在 Linux + aarch64 + CUDA 且找到 llvm-bolt (>=21) 且启用 USE_PRIORITIZED_TEXT_FOR_LD 时开启。优化在构建时作为 POST_BUILD 步骤运行,未优化的 lib.so 移至 prebolt/ 子目录。
LLVM BOLT 通过执行 profile 优化代码布局,可提升性能。PyTorch 将其集成到 CUDA 构建中,并附带预收集的 profile,使默认构建受益。但 profile 会随代码变化而过时,BOLT 仍能提供性能提升,但不如新鲜 profile。该优化依赖链接器脚本,且仅在特定平台和条件下启用。
PyTorch 将 LLVM BOLT 集成到官方构建,表明性能优化正从模型层下沉到编译和链接层。NVIDIA 和 ARM 的推荐表明硬件厂商与框架合作优化性能。默认启用但受条件限制,反映对兼容性和稳定性的谨慎。
该优化可降低 CUDA 构建的推理延迟或提升吞吐,对使用 PyTorch CUDA 的企业有直接性能收益,减少计算成本。默认启用可让用户无需额外配置即可受益。
未来 PyTorch 可能更新 profile 以保持优化效果,或扩展 BOLT 支持到更多平台。可关注后续 PR 是否更新 profile 或调整默认启用条件。