PGO (Profile-Guided Optimization)是一种编译器优化技术。它通过在程序运行时收集性能数据,并在编译阶段使用这些数据来优化程序的性能。PGO需要两次编译过程,第一次编译时在应用代码中插桩,通过运行典型用例和业务,收集应用代码中函数及分支的执行次数信息,第二次编译时根据运行统计信息进一步优化,生成高性能应用。PGO的反馈优化技术在数据库、分布式存储等数据和计算密集型等前端瓶颈较高的场景效果显著,性能可提升10-30%。它能够有效减少计算时间和资源消耗,提升应用性能,显著降低运营成本并提高用户体验。
通过毕昇编译器的LTO和PGO编译优化技术,源码构建编译Python、PyTorch、torch_npu(Ascend Extension for PyTorch)三个组件,可以有效提升程序性能。
由于Pybind11框架原因,相关编译优化包之间的兼容性可能存在冲突,可以参考下表选择部分包的编译优化或者全部包的编译优化,后续编译优化指导以毕昇编译器为例开展。
Python |
PyTorch |
torch_npu |
是否兼容 |
---|---|---|---|
gcc(默认) |
gcc(默认) |
gcc(默认) |
是 |
gcc(默认) |
gcc(默认) |
毕昇 |
否 |
gcc(默认) |
毕昇 |
gcc(默认) |
否 |
gcc(默认) |
毕昇 |
毕昇 |
是 |
毕昇 |
gcc(默认) |
gcc(默认) |
是 |
毕昇 |
gcc(默认) |
毕昇 |
否 |
毕昇 |
毕昇 |
gcc(默认) |
否 |
毕昇 |
毕昇 |
毕昇 |
是 |