根据标题,
在
下使用intel编译器编译的程序icc -O3 -xCORE-AVX2 program.cpp
在Xeon Gold 61XX上生成AVX512指令?我们的汇编分析似乎没有找到,但这不能保证。
谢谢!
在ICC经典,不,你可以使用intrinsic任何指令没有告诉编译器启用它。(不像GCC或clang,你必须启用指令集来使用它们的内在特性,像基于llvm的Intel OneAPI编译器。)
但是编译器不会发出AVX-512指令,除非来自intrinsic(或内联asm),而不启用-march=skylake-avx512
或-march=native
(又称-xHOST
)或暗示-mavx512f
的类似选项。或一个pragma或__attribute__((target("string")))
来启用AVX-512单个功能。
对于所有主要的x86编译器都是如此,AVX-512默认情况下是不开启的。
使用-O3 -march=native
,如果你想让代码为你运行的机器进行优化,就像使用GCC或clang一样。
在ICC经典中,您还可以让编译器在每个函数的基础上使用某些指令集,_allow_cpu_features(_FEATURE_AVX512F|_FEATURE_BMI);
的工作方式更像一个编译器,影响编译时的代码生成。参考文档
还相关:架构对使用SSE/AVX的影响:gcc/clang vs. MSVC vs. ICC.