1

我正在使用 icpc 编译器来查看通常使用 g++ 编译的代码的速度。

我编译的处理器属于英特尔的 Sandy Bridge 架构,所以我想使用 AVX 矢量化。

有人告诉我,带有 icpc 的“-xhost”标志可以让我自动从 AVX 矢量化中受益:是这样吗?

如果没有,你能告诉标志与 icpc 一起激活 AVX。

最后一个问题:我也可以从 AVX2 中受益吗?如果是,如何?

谢谢

4

1 回答 1

2

要从 AVX2 中受益,您需要基于 Haswell 架构的第四代 Intel Coree(R) 处理器。

您的 CPU 仅支持 AVX。您可以使用“ -xHost ”编译标志指示编译器按照您提到的那样使用它。这告诉编译器使用主机上可用的最高 SIMD 指令。您也可以使用“ -mavx ”标志。

请注意,如果您使用 AVX 生成代码,您将只能在具有 AVX(比 Sandy Bridge 之后)的机器上运行它。

要检查编译器是否生成了 AVX 代码,请转储程序集并查找 YMM 寄存器。这些是 AVX 特定的。有关更多信息,请查看此处

干杯!

于 2014-10-21T18:56:39.623 回答