用于在给定CPU体系结构上进行优化的GCC选项
我正在研究Nehalam/Westmile Intel微体系结构CPU。我想为这个架构优化我的代码。GCC是否有任何专门的编译标志或C函数可以帮助我提高代码的运行时性能 我已经在用-o3了用于在给定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) 在我的代码中,我有一些浮点比较,它们是在一百万时间内完成的 请假设代码已经进行了最佳优化 警告:答案不正确 实际上,您
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
相同)。