ICC与GCC - 优化和CPU架构

问题描述 投票:7回答:3

我很想知道GCC在优化级别和特定处理器架构方面与英特尔的ICC有何不同。我正在使用GCC 4.1.2 20070626和ICC v11.1 for Linux。

ICC的优化级别(O1到O3)与GCC有何不同,如果它们完全不同的话?

ICC能够专门迎合不同的架构(IA-32,intel64和IA-64)。我已经读过GCC有-march编译器选项,我认为它类似,但我找不到要使用的选项列表。我使用的是64位的Intel Xeon X5570。我可以使用任何其他GCC编译器选项来满足64位Intel CPU的应用程序吗?

gcc x86 compiler-construction 64bit icc
3个回答
1
投票

有关适用于这些体系结构的所有选项的完整列表和说明,请参阅GCC手册中的第3.17.15节(ie386 and x86-64 Options)(IA-64是Itanium,并且您不可能拥有其中之一)。

在这种情况下,最重要的选择是:

  • -m64生成64位代码;
  • -march=生成特定CPU类型的指令;和
  • -mtune=调整特定CPU类型的代码。

1
投票

icc -O2 -unroll2大致相当于gcc -O3 -ffast-math -fno-cx-restricted-range -funroll-loops --param max-unroll-times = 2 -O1不启用simd自动矢量化编译器,因此差异较小。 icc和gcc都提供单独构建的编译器来定位64位模式;如果安装了两个gcc编译器,将支持上面关于-m64的建议。如果两者都已安装,icc希望您通过寻找路径设置脚本来选择。 -march = native是使用构建机器的完整指令集的gcc选项。 icc可能会观察到这一点,但有一个等效选项-xHost。在提出这个问题时,该icc选项可能仅适用于Intel CPU。


-1
投票

调整选项,反汇编代码并查看差异

© www.soinside.com 2019 - 2024. All rights reserved.