用于在给定CPU体系结构上进行优化的GCC选项

用于在给定CPU体系结构上进行优化的GCC选项,c,gcc,intel,C,Gcc,Intel,我正在研究Nehalam/Westmile Intel微体系结构CPU。我想为这个架构优化我的代码。GCC是否有任何专门的编译标志或C函数可以帮助我提高代码的运行时性能 我已经在用-o3了 Language of the Code - C Platform - Linux GCC Version - 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC) 在我的代码中,我有一些浮点比较,它们是在一百万时间内完成的 请假设代码已经进行了最佳优化 警告:答案不正确 实际上,您

我正在研究Nehalam/Westmile Intel微体系结构CPU。我想为这个架构优化我的代码。GCC是否有任何专门的编译标志或C函数可以帮助我提高代码的运行时性能

我已经在用-o3了

Language of the Code - C
Platform - Linux
GCC Version - 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC)
在我的代码中,我有一些浮点比较,它们是在一百万时间内完成的


请假设代码已经进行了最佳优化

警告:答案不正确

实际上,您可以自己分析所有禁用和启用的优化。在您的计算机上运行:

gcc -O3 -Q --help=optimizers | grep disabled

然后阅读仍被禁用的标志,这些标志会影响性能。

首先,如果您真的想从这种较新处理器上的优化中获益,您应该安装最新版本的编译器。4.4是几年前推出的,即使它看起来仍在维护中,我怀疑新的优化代码是否会被后传到该版本。(当前版本为4.7)

Gcc有一个catch-all优化标志,通常应该生成针对编译体系结构优化的代码:
-march=native
。连同
-O3
这应该是您所需要的全部


(对于本网站将来的问题,请使用完整的英语语法和标点符号。)

您需要添加一个
-march=…
选项。应将
替换为与所述CPU体系结构最接近的内容(可能存在细微差异)


我会使用
core2
,因为
corei7
(您想要的)仅在GCC4.6及更高版本中可用。请参阅。

如果您真的想使用一个非常旧的gcc,它不支持corei7,您可以使用-mtune=barcelona

通过查看文档和谷歌搜索得到的结果有什么问题?@jthill无法获得这种特殊架构的任何信息。。所以我只是想知道我们是否有像英特尔这样的特殊产品compilers@jthill-我通过谷歌找到了这个问题如果你不是为你的主人建造房子,你可以使用
-march=nehalem
-march=sandybridge
-march=haswell
-march=bdver1
(推土机),
-march=bdver3
(蒸汽压路机),
-march=silvermont
等。使用
-mtune
为特定CPU进行调整,而不使用会在旧CPU上出现故障的指令集扩展。例如,
-march=nehalem-mtune=haswell
-msse4.2-mpopcnt-mtune=haswell
的简写,怪异而晦涩的
corei7
corei7 avx
命名不再必要;更高的GCC版本允许
-march=nehalem
-march=skylake
等等。(与
-mtune
相同)。