Xeon の gcc 最適化フラグ?

最近の 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 オプション ページの概要は次のとおりです:

    <リ>

    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) オプションが含まれると同時に、新しい Ivy 命令セット (FSGSBASE、RDRND、および F16C) のサポートも追加されます。 GCC オプション ページから:

    <リ>

    Haswell ベースの Xeon (E3-1xxx v3 シリーズ、E5-1xxx v3 シリーズ、E5-2xxx v3 シリーズ)

    -march=core-avx2 GCC 4.8.2/4.8.3 または -march=haswell の場合 GCC>=4.9.0 の場合。

    GCC オプション ページから:

    <リ>

    Broadwell ベースの Xeon (E3-12xx v4 シリーズ、E5-16xx v4 シリーズ)

    -march=core-avx2 GCC 4.8.x または -march=broadwell の場合 GCC>=4.9.0 の場合。

    GCC オプション ページから:

    <リ>

    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 の場合

    AVX-512 は、256 ビット Advanced Vector Extensions SIMD 命令の 512 ビット拡張です。

    GCC オプション ページから:

    <リ>

    Coffee Lake ベースの Xeon (E-21xx):-march=skylake-avx512 .

    <リ>

    Cascade Lake ベースの Xeon (プラチナ 8200/9200 シリーズ、ゴールド 5200/6200 シリーズ、シルバー 4100/4200 シリーズ、ブロンズ 3100/3200 シリーズ):-march=cascade-lake (gcc 9.x が必要です)。

    GCC オプション ページから:

    AVX-512 ベクトル ニューラル ネットワーク命令 (AVX512 VNNI) は、AVX-512 の一部である x86 拡張機能であり、畳み込みニューラル ネットワーク ベースのアルゴリズムを高速化するように設計されています。

    <リ>

    Cooper Lake ベースの Xeon (プラチナ、ゴールド、シルバー、ブロンズ):-march=cooperlake (gcc 10.1 が必要です)。

    このスイッチは、AVX512BF16 ISA 拡張機能を有効にします。

コンパイラが -march=native で何をするかを調べるには 使用できるオプション:

gcc -march=native -Q --help=target

gcc の新しいバージョンには -march=native があります これにより、コンパイラは最適な -march を自動的に決定できます


Xeon はマーケティング用語であるため、内部構造が大きく異なるプロセッサの長いリストを網羅しています。

新しい Nehalem プロセッサ (Core i7) を意味する場合、このスライドは、4.3.1 の時点で gcc が -march=generic を使用する必要があることを示しています (ただし、独自のアプリを独自にテストすると、これよりも優れた他の設定が見つかる場合があります)。 FP 数学の側面を最適化したい場合、4.3 シリーズでは -msse4.2 も追加されました。

Intel のコンパイラと一部の gcc フラグでのチューニングを比較する議論は次のとおりです。