35

Xeon用に最適化するときにどのgccコンパイラフラグを使用するかを入力したいですか?

mtuneまたはmarchには「xeon」がないので、どちらが最も近いですか?

4

6 に答える 6

64

最近の GCC / Xeon のアップデート。

  • Sandy-Bridge ベースのXeon (E3-12xx シリーズ、E5-14xx/24xx シリーズ、E5-16xx/26xx/46xx シリーズ)。

    -march=corei7-avxGCC < 4.9.0 または-march=sandybridgeGCC >= 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-iGCC < 4.9.0 または-march=ivybridgeGCC >= 4.9.0 の場合。

    これには、Sandy Bridge (corei7-avx) オプションが含まれると同時に、新しい Ivy 命令セット (FSGSBASE、RDRND、およびF16C ) のサポートも追加されます。GCC オプション ページから:

    64 ビット拡張機能を備えた Intel Core CPU、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-avx2GCC 4.8.2/4.8.3 または-march=haswellGCC >= 4.9.0 の場合。

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

    64 ビット拡張、MOVBE、MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1、SSE4.2、POPCNT、AVX、AVX2、AES、PCLMUL、FSGSBASE、RDRND、FMA、BMI、BMI2、および F16C を備えた Intel Haswell CPU命令セットのサポート。

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

    -march=core-avx2GCC 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-avx2GCC 4.8.x または-march=skylakeGCC 4.9.x または-march=skylake-avx512GCC >= 5.x の場合

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

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

    Intel Skylake サーバー CPU、64 ビット拡張、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 命令セットのサポート。

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

  • Cascade Lake ベースのXeon (Platinum 8200/9200 シリーズ、Gold 5200/6200 シリーズ、Silver 4100/4200 シリーズ、Bronze 3100/3200 シリーズ):-march=cascade-lake( gcc 9.xが必要)。

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

    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、CLWB、AVX512VL、AVX512BW、AVX512DQ、AVX512CD、および AVX512VNNI。

    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
于 2014-08-02T14:00:34.683 に答える
7

Xeonはマーケティング用語であり、内部が非常に異なるプロセッサの長いリストを網羅しています。

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

Intelのコンパイラでのチューニングといくつかのgccフラグを比較するいくつかの議論があります。

于 2009-06-03T11:10:36.623 に答える
3

march = nativeは自分のマシンには問題ありませんが、バイナリリリースには適していません。

-march = noconaはアトム330(p4 / 64ビット)に推奨されます-march=core2はcore2に推奨されます

私はあなたが64ビットに行くと仮定しています。

于 2009-06-03T12:35:12.710 に答える
2

Intel CPU と x86_64 での私の経験では、gcc に特定の CPU タイプを最適化するように指示しようとするたびに、パフォーマンスは -march=generic よりも悪くなり、良くはありませんでした。もちろんYMMVですが、私は何年にもわたってこのようなもので何度も遊んできました。

OTOH、i386では、少なくともi686、またはSSE数学が必要な場合は少なくともPentium 4をターゲットにするのが理にかなっているかもしれません.

于 2009-07-10T07:32:05.597 に答える