icc -O3 -xCORE-AVX2编译是否会在Xeon Gold上生成AVX512指令
结论
使用命令icc -O3 -xCORE-AVX2 program.cpp编译得到的C++程序,在Xeon Gold 61XX系列处理器上运行时,不会由编译器自动生成AVX-512指令,你们目前汇编分析未发现AVX-512相关指令的结果是符合编译参数预期的。
原因说明
-xCORE-AVX2是Intel C++编译器的静态目标指令集约束参数,作用是明确告知编译器:生成的二进制文件最高以支持AVX2指令集的Core架构处理器为目标,优化阶段自动生成的指令最高只会到AVX2级别,兼容更早的SSE/AVX等指令集,不会自动产出任何AVX-512家族的指令。- 该参数设定的是编译阶段的指令集生成上限,和运行时CPU是否支持更高等级指令集无关。Xeon Gold 61XX属于Skylake-SP架构,本身确实硬件支持AVX-512基础指令集,但编译器在
-xCORE-AVX2参数约束下提前生成的二进制本身就没有嵌入自动编译产生的AVX-512指令,运行时自然不会执行到这类指令。
仅有一种例外情况:如果你的代码中手动内嵌了AVX-512对应的intrinsic函数、或者直接硬写了AVX-512的机器码/汇编指令,这类手动写入的指令会被编译器原样保留到二进制中,不受
-x参数的自动生成约束。如果你的项目代码没有手动编写AVX-512相关的底层实现,就完全不存在生成AVX-512指令的可能。
内容的提问来源于stack exchange,提问作者Gaston
相关产品推荐
相关产品推荐

