是否可以对多个 CPU 体系结构使用 ICC 进行编译
Can I compile by using ICC for several CPU architectures?
我是否可以通过使用ICC(Intel C++ Compiler)获得单个可执行文件,该文件包含来自不同制造商AMD/Intel的不同体系结构的多个版本的编译代码,具有不同的SSE1-4/AVX(但只有x86_64,没有x86_32)以及当前处理器体系结构所需的运行时自动选择?
是的,你可以。
正如您指定-xARCH
(如 -xAVX
、 -xHost
)一样,您可以指定要为两个体系结构编译-axARCH
例:
icc -xHost -axSSE2 ...
将为主机体系结构编译默认可执行文件和 SSE2 的可选代码,以防它在较旧的处理器上使用。可悲的是,只能使用一种额外的体系结构。在运行时将使用最先进的代码。
在我的icc 12.0.2
中,有效的选项是:SSE2,SSE3,SSE4.1,SSE4.2,AVX,主机(仅限-xHost
)
现代 AMD 机器在所有现代 CPU 中支持 SSE3。顺便说一下,SSE2 是标准最低公分母,如果未指定-x
选项,则为默认选项。您不能icc
生成AMD 3DNow!代码。