gpt4 book ai didi

gcc - 哪些 GCC 优化标志和技术跨 CPU 是安全的?

转载 作者:行者123 更新时间:2023-12-03 16:46:27 25 4
gpt4 key购买 nike

在编译/链接 C/C++ 库或旨在用于 ISA 的所有实现(例如 x86-64)的程序时,从正确性和运行时性能的角度来看,哪些优化标志是安全的?我希望优化能够产生正确的结果,并且不会对特定 CPU 的性能产生不利影响。例如,我想避免在第 8 代 Intel Core i7 上产生运行时性能改进的优化标志,但会导致 AMD Ryzen 的性能下降。

是 PGO、LTO 和 -O3安全的?是否仅依赖于 -march-mtune (或不存在)?

最佳答案

假设您的代码定义明确,它们都应该是“安全的”。

如果您不想专注于特定的 CPU 系列,那么只需离开 -march-mtune独自的;默认适合通用 x86_64。

PGO 总是一个好主意,它主要用于避免分支。

LTO 和 -O3 可以对不同的代码库产生不同的影响。例如,如果您的代码从向量化中受益,那么 -O3 比 -O2 有很大优势,但是额外的内联和展开可能会导致更大的代码大小,这对于缓存更有限的系统来说可能是一个劣势。

最后,这里唯一真正有意义的建议是:衡量它,看看什么对你的代码有好处。

关于gcc - 哪些 GCC 优化标志和技术跨 CPU 是安全的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52435573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com