Intel Atomプロセッサー用のパフォーマンス重視のアプリケーションを開発しています。
このCPUに最適なgcc最適化フラグは何ですか?
GCC 4.5には-march = atomおよび-mtune = atomオプションが含まれます。
GCCハッカーの1人であるScott Rober Laddによる Acovea(進化的アルゴリズムによるコンパイラオプションの分析) というクールなフレームワークがあります。これは、自然選択によって特定のコードのGCC最適化フラグを最適化しようとする遺伝的/進化的アルゴリズムフレームワークです。
それは次のように機能します:ベンチマークコードの小さな部分を記述します(それはreally再コンパイルしていくつか実行されるため、小さくする必要があります1000回)は、最適化する大規模なプログラムのパフォーマンス特性を表しています。次に、Acoveaは数十の異なるGCCコマンドラインをランダムに作成し、それぞれのベンチマークをコンパイルして実行します。次に、これらのコマンドラインの最高のものは、(できれば)最高の「遺伝子」を「親」から継承する新しい「子供」を「交配」および「繁殖」することができます。このプロセスは、コマンドラインフラグの安定したセットが出現するまで、数十の「世代」にわたって繰り返されます。
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の低レベルの最適化に関するいくつかの素晴らしい記事を以下に示します。
さて、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}"
インテルから MIDを使ってみる
GCCを使用してコンパイルする場合、使用するいくつかの推奨フラグがあります。
Pentium 4と同じように:
-march=prescott -O2 -pipe -fomit-frame-pointer
GCCにAtom固有の最適化フラグがあるかどうかはまだわかりませんが、Atomコアは、MMX/SSEの非常に重要な追加により、元のPentiumと非常に類似しているはずです/ SSE2/SSE3/SSSE3命令セットもちろん、コードが浮動小数点またはDSPを多用する場合にのみ、これらは大きな違いをもたらします。
おそらくあなたは試すことができます:
gcc -O2 -march = pentium -mmmx -msse -msse2 -msse3 -mssse3 -mfpmath = sse
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
これがブログの相互交配です...私が本当に望んでいたのは、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のわずかに高い最高スコアをもたらします。」