2012-05-18 17 views
5

私はNehalam/westmere IntelのマイクロアーキテクチャCPUに取り組んでいます。このアーキテクチャのコードを最適化したいと思います。コードのランタイムパフォーマンスを改善するのに役立つGCCの特殊なコンパイルフラグやC関数はありますか?与えられたCPUアーキテクチャの最適化のためのGCCオプション

私はすでに-o3を使用しています。

Language of the Code - C 
Platform - Linux 
GCC Version - 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC) 

私のコードでは、浮動小数点の比較があり、100万回以上実行されています。

のコードはすでに最高の最適化であると仮定してください。

+5

あなたはドキュメントやグーグルで検索することにより得られる結果が悪いのか? – jthill

+0

はhttp://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html – Jay

+0

@jthill。これperticularアーキテクチャの任意のものを得ることができなかったので、我々はインテル®コンパイラー –

答えて

14

は、あなたが実際にすべて無効にして有効に最適化自分自身を分析することができます。

gcc -O3 -Q --help=optimizers | grep disabled 

そして、まだ無効になっているとthe gcc documentation影響性能に応じてできるフラグについて読む:お使いのコンピュータ上で実行します。あなたは本当にこのような新しいプロセッサに最適化から利益をしたい場合は

16

まず、あなたは、コンパイラの最新バージョンをインストールする必要があります。数年前には4.4が出ていましたが、まだ維持管理されているとはいえ、新しい最適化コードがバックポートされているかどうかは疑問です。 -march=native

GCCは通常、コンパイルアーキテクチャに最適化されたコードを生成する必要がありますキャッチすべての最適化フラグを持っている(現在のバージョンは4.7です)。 -O3と一緒に、これはあなたが必要とするものでなければなりません。

(そして、このサイト上の将来の問題のために、完全な英語の文法や句読点を使用してください。)

+1

を経由してこの質問に到着しました'-march = silvermont'などを使用してください。古いCPUで失敗する命令セット拡張を使用せずに特定のCPUを調整するには、' -mtune'を使用してください。たとえば、 '-march = nehalem -mtune = haswell'は、' -msse4.2 -mpopcnt -mtune = haswell'の短縮形です。 –

5

あなたは-march=...オプションを追加したいと思うでしょう。 ...は、in the i386/x86_64 options for GCC hereと記載されているCPUアーキテクチャに最も近いもの(小さな違いがある傾向があります)に置き換える必要があります。

corei7(ご希望のもの)は、GCC 4.6以降でのみ利用可能ですので、core2を使用します。 arch list for GCC 4.6 hereを参照してください。

0

あなたは本当にそれがcorei7をサポートしていないように古いのgccを使用する場合は、-mtuneを使用することができますが、バルセロナに=

関連する問題