gcc's benchmark

意味もわからず入っている言語処理系 (特に gcc) の数だけは無駄に増殖を続けている私の環境ですが、最近 tt さんのこちらの記述 を見て試したい試したいと思っていたので試してみました。

で、以前やった SciMark のベンチマークを更新しました。(http://shinh.skr.jp/misc/dat_dir/bench.html)

前提として、私は gcc 開発の進捗状況について全くわかっていないので最速な結果が出るブランチをゲットしたとは限らない、以前同一マシンで Linux バージョンが違う環境でのベンチマークも混じっている、ということがあります。

tree-ssa (http://gcc.gnu.org/projects/tree-ssa/)

SSA についてはここがわかりやすかった。 (http://www.coins-project.org/ssa/ssa-introduction.htm) 関数型言語だとプログラマに強制されたりしますな…

最初色々コンパイルしてみて遅いなあとがっかりしたんですけどベンチ見ると icc より速い結果出してるものもあるんですね。

lno-branch (http://gcc.gnu.org/projects/tree-ssa/lno.html)

tree-ssa をベースになんとかかんとか。よくわかってません。件の vectorized patch は当っているみたいですけど、 SSE 命令は一切生成されず。あとコンパイラが落ちてみたりするお茶目な一面も。 tree-ssa とあんまし結果変わらなくてつまんない。

後は gcc-3.3.2, icc-8 が新しく増えてます。 icc 相変わらず速いっすね。

こういう値を取るのは簡単なんですけど、その意味についてきちんと考えていきたいところ。高速化手法とアルゴリズムの相性ももちろんですけど、それなりにアセンブラの勉強したのでちゃんと生成されてるコードを読みたい、というのが今後の課題。

icc-8 が生成したバイナリにて。さすが。

> objdump -S scimark2 | grep xmm | wc
    488    3828   27604

ああ、 user.ecc.u-tokyo.ac.jp の CGI が止まってて今更新できないのでした。 lno-branch の結果がありませんが、まあ tree-ssa と似たようなもんです。追って更新します。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h