webdevqa.jp.net

IntelのGCC最適化フラグAtom

Intel Atomプロセッサー用のパフォーマンス重視のアプリケーションを開発しています。

このCPUに最適なgcc最適化フラグは何ですか?

26
user7305

GCC 4.5には-march = atomおよび-mtune = atomオプションが含まれます。

出典: http://gcc.gnu.org/gcc-4.5/changes.html

31
user7305

GCCハッカーの1人であるScott Rober Laddによる Acovea(進化的アルゴリズムによるコンパイラオプションの分析) というクールなフレームワークがあります。これは、自然選択によって特定のコードのGCC最適化フラグを最適化しようとする遺伝的/進化的アルゴリズムフレームワークです。

それは次のように機能します:ベンチマークコードの小さな部分を記述します(それはreally再コンパイルしていくつか実行されるため、小さくする必要があります1000回)は、最適化する大規模なプログラムのパフォーマンス特性を表しています。次に、Acoveaは数十の異なるGCCコマンドラインをランダムに作成し、それぞれのベンチマークをコンパイルして実行します。次に、これらのコマンドラインの最高のものは、(できれば)最高の「遺伝子」を「親」から継承する新しい「子供」を「交配」および「繁殖」することができます。このプロセスは、コマンドラインフラグの安定したセットが出現するまで、数十の「世代」にわたって繰り返されます。

30
Jörg W Mittag

CPUとコンパイラの組み合わせに適したフラグを自動的に選択するスクリプトがあります。 Intel Atomをサポートするように更新しました。

http://www.pixelbeat.org/scripts/gcccpuopt

更新:以前にAtomに-march = prescottを指定しましたが、詳しく調べると、Atomはmerom ISAに準拠しているため、-march = core2がより多くなります。ただし、Atomは正しい順序のコアであり、それらの最後は元のペンティアムであることに注意してください。したがって、おそらく-mtune = pentiumの方が良いでしょう。残念ながら、Atomテストするために、私は本当に誰かが以下の違いをベンチマークできれば幸いです:

-march=core2 -mfpmath=sse -O3
-march=core2 -mtune=pentium -mfpmath=sse -O3

更新:Atomの低レベルの最適化に関するいくつかの素晴らしい記事を以下に示します。

12
pixelbeat

さて、Gentoo wikiはプレスコットについて述べています:

http://en.gentoo-wiki.com/wiki/Safe_Cflags/Intel#Atom_N27

CHOST = "i686-pc-linux-gnu"

CFLAGS = "-march = prescott -O2 -pipe -fomit-frame-pointer"

CXXFLAGS = "$ {CFLAGS}"

5
user39591

インテルから MIDを使ってみる

GCCを使用してコンパイルする場合、使用するいくつかの推奨フラグがあります。

  • -O2または-O1:O2フラグは速度を最適化し、-O1フラグはサイズを最適化します
  • -msse3
  • -march = core2
  • -mfpmath = sse
3
Marc

Pentium 4と同じように:

-march=prescott -O2 -pipe -fomit-frame-pointer
2
user38733

GCCにAtom固有の最適化フラグがあるかどうかはまだわかりませんが、Atomコアは、MMX/SSEの非常に重要な追加により、元のPentiumと非常に類似しているはずです/ SSE2/SSE3/SSSE3命令セットもちろん​​、コードが浮動小数点またはDSPを多用する場合にのみ、これらは大きな違いをもたらします。

おそらくあなたは試すことができます:

gcc -O2 -march = pentium -mmmx -msse -msse2 -msse3 -mssse3 -mfpmath = sse

1
Dan Lenski

i686が最も近い。 core2を選択しないでください。

GCC 4.1 -O3 -march = i686 GCC 4.3 -O3 -march = native

GCC 4.1 -O4 -ffast-math GCC 4.3 -O4 -ffast-math

http://macles.blogspot.com/2008/09/intel-cc-compiler-gcc-and-intel-atom.html

0
brij

これがブログの相互交配です...私が本当に望んでいたのは、firefox-compiled-for-atomベンチマークでした...

住所:http://ivoras.sharanet.org/blog/tree/2009-02-11.optimizing-for-atom.html

「結局のところ、gccは-mtune = nativeで非常にまともな仕事をしているようで、mtune = genericは許容範囲を超えています。最大の利点(この数学の重いベンチマークで)はSSE数学用ですが、ペンティアム4用に調整することで破壊されます。

「最も速い最適化と最も遅い最適化の違いは21%です。mtuneの代わりにmarchを使用した場合の影響は無視できます(効果があるかどうかを判断するのに十分な違いはありません)。

"(私は参考のためにk6を含めました-私は知っていますAtomは3dnowを持っていません)

「最新の更新:k8のチューニング(SSE and O3)を使用)は、182のわずかに高い最高スコアをもたらします。」

0
hackvan