我正在使用Nehalam/韦斯特米尔Intel微架构CPU。我想针对此架构优化我的代码。愚者是否有任何专门的编译标志或C函数可以帮助我提高代码的运行时性能?我已经在使用-O3。
-O3
Language of the Code - C Platform - Linux GCC Version - 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC)
在我的代码中,我有一些浮点比较,它们被做了一百多万次。请假设代码已经过最佳优化。
3vpjnl9f1#
首先,如果你真的想从像这样的新处理器上的优化中获益,你应该安装最新版本的编译器。4.4是几年前发布的,即使它看起来仍然被维护着,我怀疑新的优化代码是不是向后移植到了4.4上。(当前版本是4.7)Gcc有一个catch-all优化标志,它通常会生成针对编译体系结构优化的代码:-march=native。加上-O3,这应该就是你所需要的全部了。
-march=native
i5desfxk2#
警告:答案不正确。实际上,您可以自己分析所有禁用和启用的优化。
gcc -O3 -Q --help=optimizers | grep disabled
然后阅读有关仍被禁用且可根据the gcc documentation影响性能的标志。
llmtgqce3#
您需要添加一个-march=...选项。...应该被替换为与您的CPU架构最接近的任何东西(往往会有微小的差异),在这里愚者的i386/x86_64选项中描述。我会使用core2,因为corei7(您想要的)只在愚者4.6和更高版本中可用。
-march=...
...
core2
corei7
e5nqia274#
如果您真的想使用一个旧到不支持corei 7的gcc,您可以使用-mtune=barcelona
4条答案
按热度按时间3vpjnl9f1#
首先,如果你真的想从像这样的新处理器上的优化中获益,你应该安装最新版本的编译器。4.4是几年前发布的,即使它看起来仍然被维护着,我怀疑新的优化代码是不是向后移植到了4.4上。(当前版本是4.7)
Gcc有一个catch-all优化标志,它通常会生成针对编译体系结构优化的代码:
-march=native
。加上-O3
,这应该就是你所需要的全部了。i5desfxk2#
警告:答案不正确。
实际上,您可以自己分析所有禁用和启用的优化。
然后阅读有关仍被禁用且可根据the gcc documentation影响性能的标志。
llmtgqce3#
您需要添加一个
-march=...
选项。...
应该被替换为与您的CPU架构最接近的任何东西(往往会有微小的差异),在这里愚者的i386/x86_64选项中描述。我会使用
core2
,因为corei7
(您想要的)只在愚者4.6和更高版本中可用。e5nqia274#
如果您真的想使用一个旧到不支持corei 7的gcc,您可以使用-mtune=barcelona