ARM Cortex-A15 GCC Compiler Tuning Performance Written by Michael Larabel in GNU on 4 December 2012 at 09:41 AM EST. 3 Comments To complement the recent compiler benchmarking on the ARM Cortex-A15 as found in the Samsung Exynos 5 Dual with the Samsung Chromebook, here's some compiler tuning benchmark results from the speedy low-power ARM system. Uploaded to OpenBenchmarking.org this morning are a
簡潔ビットベクトルの基本操作である rank/select において重要な役割を果たす PopCount を改良することにより,marisa-trie (Google Code Archive - Long-term storage for Google Code Project Hosting.) を少しだけ高速化することができました.成果は Subversion からソースコードをダウンロードしてビルドすることにより確認できます. 一つ目の改良点は SSE4.2 で追加された popcnt 命令です.その名の通り,PopCount 専用の CPU 命令であり,PopCount を高速に実現できます.ただし,現状では使える CPU が限られているため,configure に --enable-popcnt を指定してビルドしたときだけ有効になるようにしています. 二つ目の改良点は pop
概要 gcc -mtune=hoge ってあんまよくわからず付けてるけど意味あんの? 効果 前のk10 vs coremaみたいな感じでparsecをひととおり動かした -O2 の時間を1.0とした時の処理時間の比 app |-O2 -mtune-native streamcluster | 1.016 canneal | 1.016 vips | 0.954 bodytrack | 0.966 x264 | 1.049 blackscholes | 0.986 swaptions | 0.981 ferret | 0.997 なんらかの効果がある…ように見える…? (ネタバレ: -march=avxが付いてて、それの効果が出ている) 超簡単にGCCのコード解説 gcc/*.c アーキ非依存のコード gcc/config/i386/* i386のコード gcc/config/i386/i3
RLogをいじってて知った__builtin_expectを試してみた。__builtin_expectはある式がほとんどの場合に決まった定数になる、と言う場合に分岐予測のヒントなどを与えて高速化を計るためのgccディレクティブだそうな。 RLogはdormant(休眠)状態のログファシリティに最適化してあって、プロダクションコードにログコードを残しっぱなしでもさほどデグレしないのが売りなんだけど、そのカラクリがこれ。 で、RLog自身についてはあとで書く。 どうかく? 具体的には __builtin_expect(A,B)と書いた場合 Aが定数 Bである事を期待する、というヒント情報になる。 例えば、比較演算子がほとんどの場合成り立たない、と言う場合 __builtin_expect(, 0) となる。 #include <stdio.h> #ifdef EXPECT #define E
CentOSでGCCのバージョンアップを行ってみる
いまどきじゃない アセンブラプログラミング x86アセンブリ言語の基礎からSSEまで 1 自己紹介 久保田展行 ◦ @nobu_k, id:nobu-q 検索エンジンSedueを作ってます 2 本日の内容 x86アセンブリ言語の基礎 インラインアセンブラで遊ぶ SSEを使ってみる 3 アセンブリ言語とは 機械語に近いプログラミング言語 ◦ 機械語と一対一で対応 4 if (x < 0) { x = -x; } mov eax, [ebp + 8] cmp eax, 0 jge L1 neg eax L1: 8B 45 08 3D 00 00 00 00 7D 02 F7 D8 C言語 アセンブリ言語 機械語読むのは厳しい まだマシ アセンブリ言語の特徴 移植性が低い ◦ CPUや処理系によってすべてが変わる 読み書きが大変 ◦ 可読性がものすごく低い
MinGW上で頻繁にgccを利用しているくせにすぐに忘れるのでメモ。-D,-I,-i,-L,-l等の一般的で分かり切ってるものは書かない。随時追加。 なお、正確にはGCCのオンラインマニュアルが存在するのでそちらを参照すべき。オプションの一覧(リンク先は4.5.xのもの)もある。だが、あまりに膨大すぎるのでこの記事では「よく使用するが意味を忘れがちなオプション」に関してのメモとする。 -f(no-)strict-aliasing 厳密な別名規約(aliasing rule)に則っているとみなすか、則っていないとみなすか。intの変数に対してshort*でアクセスするような行儀の悪いコードが無いと宣言できるなら-fstrict-aliasingにする。 #include <stdio.h> int main(int argc, char* argv[]){ int x = 0; short*
gcc4.1の、-O3や-Osで有効にならない最適化オプションのメモ。 概要だけなので、適宜マニュアルを参照した方がいいです。 -fforce-addr メモリアドレス定数を演算する前に、それらを強制的にレジスタへコピーする。 -fmerge-all-constants 同一の定数、同一の変数をマージする。 -fmodulo-sched スイングモジュロスケジューリング(ってなに?)を行う。 -fgcse-sm グローバル共通部分式削除の後にストアモーションパスを実行する。 -fgcse-las グローバル共通部分式削除で冗長なメモリロードを削除する。 -floop-optimize2 新しいループオプティマイザを使ってループ最適化を実行する。 -funsafe-loop-optimizations ループ変数がオーバーフローしない、自明でない終了条件は有限、などの仮定を設けてループを最適
2009年09月30日 GCC LTO marge GoogleのDiego Novillo氏が、GCCのtrunkに大量のパッチを投げました。 [LTO merge][0/15] Description of the final 15 patches http://gcc.gnu.org/ml/gcc/2009-09/msg00578.html http://gcc.gnu.org/ml/gcc-patches/2009-09/ ついにLTO(Link-Time Optimization)branchがGCC trunkにmergeされるようです。 具体的には、-fltoや-fwhopr(Whole Program Optimization)というオプションが増えます。このオプションにより、GCCは通常のアセンブリコードの代わりに、最適化のための情報を含んだGIMPLEという中間表現をダ
提供:PS3 Linux Information Site / Cell/B.E.のパワーを体験しよう 基本的なaligned属性のつけかた 変数を確保するとき(Variable Attributes)か、型を宣言するとき(Type Attributes)に __attribute__((aligned(n))) をつけてaligned属性を付与します。 両者はほぼ同じ効果を持ちますが構造体の場合には異なる効果があります。これについては後述します。 以下の例文では n = 128 として128バイト境界に整列しています。 Variable Attributes まず変数を確保するときにaligned属性をつける例を紹介します。 組み込み型や配列や構造体であっても同じ効果で、128バイトに整列した変数が得られます。 struct AAA; int a __attribute__((al
The goal of this project was to develop a loop and basic block vectorizer in GCC, based on the tree-ssa framework. It has been completed and the functionality has been part of GCC for years. Table of Contents Latest News Contributing Using the Vectorizer Vectorizable Loops Unvectorizable Loops Previous News and Status References/Documentation High-Level Plan of Implementation Latest News 2011-10-2
限定的ながら,姫野ベンチ(Sサイズ)でCコンパイラの最適化性能を 比較してみました. 比較に供したコンパイラは次のとおり. (A)gcc-4.1.2-14 (CentOS 5.1の標準コンパイラ) (B)gcc-4.3(20080403スナップショット) (C)Intel C compiler 10.1(Linuxフリー版) 最適化オプションは次のとおり. (1)-m64 -Os -march=core2 -mfpmath=sse,387 -fomit-frame-pointer -DSMALL -ftree-vectorize -ftree-vectorizer-verbose=3 -ftracer -falign-loops -fpeel-loops -funroll-loops (2)-m64 -O3 -march=core2 -mfpmath=sse,387 -fomit-fram
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く