我很想知道在优化级别和迎合特定处理器体系结构方面,GCC与英特尔的ICC有何不同。我在Linux上使用的是GCC 4.1.2 20070626和ICC11.1版本。
国际商会的优化级别(从O1到O3)与GCC有什么不同,如果有区别的话?
国际商会能够专门迎合不同的架构(IA-32、intel64和IA-64)。我读到过,GCC有一个我认为类似的-march编译器选项,但我找不到可用选项的列表。我使用的是64位的英特尔至强X5570。有没有其他的GCC编译器选项可以用来满足我的64位英特尔CPU应用程序的需求?
发布于 2010-03-23 11:15:42
有关适用于这些体系结构的所有选项的完整列表和描述,请参阅GCC手册中的3.17.15节(IA-64是安腾,您不太可能拥有其中之一)。
在这种情况下,最重要的选项是:
-m64生成64位code;-march=生成特定CPU类型的指令;and-mtune=为特定CPU类型调整代码。发布于 2016-02-10 08:05:15
国际商会展开次数大致相当于gcc的-O3 -ffast- -O2 -fno-cx--O3-range-funroll- -unroll2 --param max-unroll-time=2 -O1没有为这两个编译器启用simd自动向量化,因此差别较小。国际商会和gcc都提供了针对64位模式的单独构建的编译器;如果两个gcc都安装了编译器,则将支持上面关于-m64的建议。icc希望您通过查找路径设置脚本来进行选择(如果两者都已安装)。-march=native是使用构建机器的完整指令集的gcc选项。国际商会可以观察到这一点,但具有等效的选项-xHost。在回答此问题时,icc选项可能仅适用于英特尔CPU。
发布于 2010-03-23 12:03:29
调优选项,反汇编代码并查看差异
https://stackoverflow.com/questions/2497265
复制相似问题