28

IntelAtomプロセッサー用のパフォーマンスクリティカルなアプリケーションを開発しています。

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

4

9 に答える 9

33

GCC ハッカーの 1 人である Scott Rober Ladd による Acovea (Analysis of Compiler Options via Evolutionary Algorithm)と呼ばれるクールなフレームワークがあります。これは、自然選択によって特定のコードの GCC 最適化フラグを最適化しようとする遺伝的/進化的アルゴリズム フレームワークです。

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

于 2008-09-21T12:17:38.700 に答える
12

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 の低レベルの最適化に関するいくつかの優れた記事を次に示します。

于 2008-12-19T01:53:18.240 に答える
5

さて、Gentoowikiはプレスコットについて次のように述べています。

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

CHOST = "i686-pc-linux-gnu"

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

CXXFLAGS = "$ {CFLAGS}"

于 2008-11-21T08:03:06.647 に答える
4

インテルから、MID の概要

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

  • -O2 または -O1: O2 フラグは速度を最適化し、-O1 フラグはサイズを最適化します。
  • -msse3
  • -マーチ=コア2
  • -mfpmath=sse
于 2009-09-09T17:30:45.603 に答える
2

Pentium 4の場合と同じように:

-march=prescott -O2 -pipe -fomit-frame-pointer
于 2008-11-18T22:57:11.990 に答える
1

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

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

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

于 2008-09-22T22:54:46.663 に答える
0

これがブログのクロスポレネーションです...私が本当に望んでいたのは、Firefoxでコンパイルされたアトムベンチマークでした...

アドレス:http:// ivoras.sharanet.org/blog/tree/2009-02-11.optimizing-for-atom.html

「結局のところ、gccは-mtune = nativeで非常にまともな仕事をしているようで、mtune = genericは許容範囲を超えています。(この数学が多いベンチマークでの)最大の利益は、数学にSSEを使用することから得られますが、 pentium4のチューニングによって破壊されます。

「最も速い最適化と最も遅い最適化の違いは21%です。mtuneの代わりにmarchを使用した場合の影響はごくわずかです(役立つかどうかを判断するのに十分な違いはありません)。

「(参考のためにk6を含めました-Atomには3dnowがないことを知っています)

「最新の更新:k8(SSEおよびO3を使用)のチューニングでは、わずかに高い182の最高スコアが得られます。」

于 2009-05-26T20:32:49.127 に答える
-1

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

于 2009-10-01T05:46:15.480 に答える