Xeon的gcc优化标志?

Eug*_*jak 35 c c++ optimization gcc compiler-flags

我想要你的输入哪些gcc编译器标志在优化Xeons时使用?

在mtune或march中没有'xeon',哪个是最接近的匹配?

man*_*lio 58

最新GCC/Xeon的更新.

  • 基于Sandy-Bridge的 Xeon(E3-12xx系列,E5-14xx/24xx系列,E5-16xx/26xx/46xx系列).

    -march=corei7-avx对于GCC <4.9.0或-march=sandybridge对于GCC> = 4.9.0.

    这使得Advanced Vector Extensions支持以及Sandy Bridge 的AES和PCLMUL指令集成为可能.以下是GCC i386/x86_64选项页面的概述:

    Intel Core i7 CPU具有64位扩展,MMX,SSE,SSE2,SSE3,SSSE3,SSE4.1,SSE4.2,AVX,AES和PCLMUL指令集支持.

  • 基于Ivy-Bridge的 Xeon(E3-12xx v2系列,E5-14xx v2/24xx v2系列,E5-16xx v2/26xx v2/46xx v2系列,E7-28xx v2/48xx v2/88xx v2系列) .

    -march=core-avx-i对于GCC <4.9.0或-march=ivybridge对于GCC> = 4.9.0.

    这包括Sandy Bridge(corei7-avx)选项,同时还支持新的常春藤指令集:FSGSBASE,RDRNDF16C.从GCC选项页面:

    英特尔酷睿CPU具有64位扩展,MMX,SSE,SSE2,SSE3,SSSE3,SSE4.1,SSE4.2,AVX,AES,PCLMUL,FSGSBASE,RDRND和F16C6指令集支持.

  • 基于Haswell的 Xeon(E3-1xxx v3系列,E5-1xxx v3系列,E5-2xxx v3系列).

    -march=core-avx2对于GCC 4.8.2/4.8.3或-march=haswellGCC> = 4.9.0.

    从GCC选项页面:

    Intel Haswell CPU具有64位扩展,MOVBE,MMX,SSE,SSE2,SSE3,SSSE3,SSE4.1,SSE4.2,POPCNT,AVX,AVX2,AES,PCLMUL,FSGSBASE,RDRND,FMA,BMI,BMI2和F16C指令集支持.

  • 基于Broadwell的 Xeon(E3-12xx v4系列,E5-16xx v4系列)

    -march=core-avx2对于GCC 4.8.x或-march=broadwellGCC> = 4.9.0.

    从GCC选项页面:

    具有64位扩展的Intel Broadwell CPU,MOVBE,MMX,SSE,SSE2,SSE3,SSSE3,SSE4.1,SSE4.2,POPCNT,AVX,AVX2,AES,PCLMUL,FSGSBASE,RDRND,FMA,BMI,BMI2,F16C ,RDSEED,ADCX和PREFETCHW指令集支持.

  • 基于Skylake的 Xeon(E3-12xx v5系列)和基于KabyLake的 Xeon(E3-12xx v6系列):

    -march=core-avx2对于GCC 4.8.x或-march=skylake对于GCC 4.9.x或-march=skylake-avx512对于GCC> = 5.x

    从GCC选项页面:

    具有64位扩展的Intel Skylake Server CPU,MOVBE,MMX,SSE,SSE2,SSE3,SSSE3,SSE4.1,SSE4.2,POPCNT,PKU,AVX,AVX2,AES,PCLMUL,FSGSBASE,RDRND,FMA,BMI,支持BMI2,F16C,RDSEED,ADCX,PREFETCHW,CLFLUSHOPT,XSAVEC,XSAVES,AVX512F,AVX512VL,AVX512BW,AVX512DQ和AVX512CD指令集.

要了解编译器将对该-march=skylake-avx512选项执行的操作,您可以使用:

gcc -march=native -Q --help=target
Run Code Online (Sandbox Code Playgroud)


use*_*255 20

较新版本的gcc具有-march = native,它允许编译器自动确定最佳-march标志.

  • 实际上,如果你没有明确指定-mtune,-march根据gcc文档有一个隐含的-mtune等于传递的-march. (14认同)

Shu*_*oUk 7

Xeon是一个营销术语,因此它涵盖了一长串具有非常不同内部的处理器.

如果您的意思是较新的Nehalem处理器(Core i7),那么此幻灯片表示从4.3.1开始gcc应该使用-march = generic(尽管您自己对自己应用的测试可能会发现其他设置超出此范围).如果你想优化FP数学的那个方面,4.3系列还增加了-msse4.2.

以下是比较英特尔编译器与某些gcc标志中的调优的一些讨论.

  • 讨论是一个断开的链接.事实上,两个链接都被打破了.:) (4认同)