icc2019在Xeon Gold 6126上不同编译选项性能差异原因咨询
ICC 2019不同编译选项下程序性能差异原因分析
测试基础信息
- 测试硬件:Intel Xeon Gold 6126处理器,配备12个物理核心,开启超线程后共24个逻辑处理器;程序运行时占满全部24逻辑处理器,同一物理核心上的两个超线程不共享内存
- 编译器版本:ICC 2019
- 测试对象:包含S1、S2、S3三类仿真计算任务的程序,其中S3为强串行逻辑,编译器无法对其做向量化优化
- 耗时统计规则:以
平均耗时±标准差格式记录,单位为微秒;原始统计值包含打印操作导致的离群值,已修正统计结果,修正后性能趋势、排序完全稳定,重复测试均值一致性良好 - 补充说明:项目代码体量过大,无法提供最小可复现样例
不同编译选项下的性能测试结果
编译选项:仅-O3
- S1:104.7612 ± 108.7875(修正值:198.4268 ± 3.5362)
- S2:3.8355 ± 1.3025(修正值:3.7734 ± 0.1851)
- S3:11.8315 ± 3.5765(修正值:11.4969 ± 1.313)
编译选项:-O3 -march=native
- S1:102.0844 ± 105.1637(修正值:193.8428 ± 3.0464)
- S2:3.7368 ± 1.1518(修正值:3.6966 ± 0.1821)
- S3:12.6182 ± 3.2796(修正值:12.2893 ± 0.2156)
编译选项:-O3 -xCORE-AVX512
- S1:101.4781 ± 104.0695(修正值:192.977 ± 3.0254)
- S2:3.722 ± 1.1538(修正值:3.6816 ± 0.162)
- S3:12.3629 ± 3.3131(修正值:12.0307 ± 0.2232)
核心观测现象
- 现象1:
-O3 -xCORE-AVX512生成的可执行程序整体性能优于-O3 -march=native生成的程序 - 现象2:无法被向量化的强串行任务S3,启用架构相关编译选项后性能出现稳定的可复现下降
原因解析
-xCORE-AVX512性能优于-march=native的核心原因
Xeon Gold 6126属于Skylake-SP架构,原生支持AVX-512指令集,ICC 2019中两个编译参数的优化逻辑存在明确差异:
-march=native的逻辑是自动检测当前CPU支持的指令集,生成适配硬件的代码,但ICC 2019版本对该参数的AVX-512优化调度偏保守:默认不会开启全量AVX-512特性,向量循环展开粒度、指令融合策略、寄存器分配方案都有严格限制,还会保留非AVX-512执行路径的兼容分支,带来额外的分支预测开销。-xCORE-AVX512是ICC专属的定向架构优化参数,针对支持CORE级AVX-512的Skylake-SP及后续架构做了专属调优:编译时直接启用全套适配该架构的AVX-512指令,采用更激进的512位向量寄存器分配策略,针对AVX-512执行单元重排指令调度顺序,同时移除了非AVX-512路径的兼容分支。对于可被向量化的S1、S2任务,这部分优化会直接转化为性能收益,因此整体表现优于-march=native的编译结果。
不可向量化S3任务性能下降的核心原因
S3为纯标量串行代码,性能下降和向量指令本身的逻辑无关,主要来自三方面的固定开销:
- 核心降频影响:Skylake-SP架构的物理核心频率为统一调度域,当核心上运行AVX-512指令时,会触发AVX-512专属的频率节流,核心运行频率会明显低于运行标量/AVX2代码时的睿频水平。测试场景占满全部24个逻辑处理器,即每个物理核心同时运行两个超线程,哪怕S3本身完全执行标量指令,只要同物理核心上的另一个线程在运行AVX-512向量化代码,整个核心就会处于降频状态,S3的执行速度会随核心频率同步下降。仅用
-O3编译时默认不会生成AVX-512指令,核心不会触发这层降频,S3运行频率更高,耗时更短。 - 栈与寄存器开销:启用AVX-512相关编译选项后,编译器会默认支持全部32个512位ZMM寄存器的调度,函数调用时需要额外保存、恢复用到的向量寄存器,栈帧也会按照64字节边界对齐。这部分调整对纯标量的S3没有任何收益,反而会增加函数调用的固定开销;同时向量寄存器占用了更多硬件调度资源,标量代码更容易出现通用寄存器溢出,需要额外访问栈内存,带来稳定的性能损耗。
- 指令调度偏向影响:针对AVX-512优化的编译配置,指令调度策略会优先为向量指令分配核心的执行端口资源,标量指令的发射优先级被调低。完全由标量指令构成的S3代码,在指令发射队列中的等待时间会比纯
-O3编译(无AVX-512调度偏向)时更长,直接推高执行耗时。
内容的提问来源于stack exchange,提问作者Gaston
相关产品推荐
相关产品推荐

