9

-marchオプションを適切に設定して、gcc 4.7.2 を使用する PC でオプションを有効にした場合と無効にした場合のパフォーマンスの違いを確認 しようとしています。

コンパイルを試みる前に-march、自分の PC に最適なオプションを見つけようとしました。私の PC には Pentium G850 があり、そのアーキテクチャは Sandy Bridge です。そこで、gcc 4.7.2 のマニュアルを参照したところ、それが最適であることがわかりました-march=corei7-avxただし、 Pentium G850 の場合
と同様に、Sandy Bridge ベースの Pentium には AVX および AES-NI 命令セットのサポートがないことを思い出しました。したがって、適切なオプションではありません。-march=corei7-avx

私はいくつかの潜在的なオプションを考え出します:

  1. -march=corei7-avx -mno-avx -mno-aes
  2. -march=corei7 -mtune=corei7-avx
  3. -march=native

最初のオプションは、私が持っている情報を考慮すると合理的に見えますが、AVX と AES-NI 以外に欠けている機能があるのではないかと心配しています。2 番目のオプションは安全に見えますが、-march=corei7. 3 番目のオプションですべての問題を処理できますが、このオプションでは CPU の機能を誤検出することがあると聞いたので、手動で行う方法を知りたいと思います。
StackOverflow と SuperUser をググって検索しましたが、明確な解決策が見つかりません...
どのオプションを設定する必要がありますか?

4

3 に答える 3

1

私は Sandy Bridge ベースの Intel(R) Celeron(R) CPU G530 を持っています。

gentoo の CFLAGS で使用-march=nativeし、media-video/ffmpeg-1.2.6 (Gentoo の現在の安定版) をコンパイルすると、mplayer (不正な命令) でビデオを再生すると問題が発生します。-mtune=nativeおっしゃる通り、CPUの機能を誤検出することがあります。

次に、に変更し-march=corei7-avx -mtune=corei7-avx -mno-avx -mno-aes、ffmpeg-1.2.6 と mplayer を再コンパイルします。これまでのところ、すべて問題ありません。

于 2014-07-17T01:06:27.960 に答える