是否可以对多个 CPU 体系结构使用 ICC 进行编译

Can I compile by using ICC for several CPU architectures?

本文关键字:ICC 编译 体系结构 CPU 是否      更新时间:2023-10-16

我是否可以通过使用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!代码。