2024年11月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

tweet

  • tweets

« いけないボナマジック | トップページ | 記者会見だん »

LLVM 試してみた

以前から噂は聞いて気にはなってたものの時間等なくて手を出してませんでしたが、ちょっと手が空いたんでLLVM/Clangを試してみました。

LLVM, clang共最新の2.9をDL。まずかなり古いRHEL上でトライ。コンパイラのコンパイルは特に問題なく終了。が、このコンパイラで hello, tohoku をコンパイルしようとすると、コンパイル(.o作成)まではうまくいきますが、なぜかリンクでこけます。-vでみると、リンカはllvm-ldを使うものと思ってましたが、どうも標準のldを使ってるみたい。ちょこっと調べてみましたがわからなかったので、まあOS古いからかねー、とあっさりあきらめ。

次、Ubuntu 9.10で。これはパッケージがあるようなので、まずは手軽にということでapt-getでとってきます。ですが、llvmはSynapticで見つかりましたが、clangというパッケージはなさそう。とにかくとってきます。llvmは2.6の模様。でインストールしたけど…やっぱclangないじゃん。LLVMの変遷よく知らないのですが、この時代はllvm-gccだったのかな?llvm-gccは次期verからなくなるらしいので、これをやる気もせず、これもあきらめ。

で同じくUbuntu 9.10で、また2.9をソースからビルド。今度は無事、ビルドもhelloもうまくいきました。-jなし、i7 980x上で約20分(target=host-only)。ちなみに参考にしたのはググって見つけたこちら。
http://blog.natsuki.ex14.net/archives/201011-1.html
ドキュメントももちろん見たんですが、微妙に古い部分がまじってたりして、llvm+clangでどうやればいいのか本家docだけじゃぱっとわからないんですよね。llvm-gccの記述とごっちゃになってて。

ビルドの手順はまあほぼ普通ですが、clang-2.xをllvm-2.x/toolsの下に移動、ってとこがいまいち謎ですね。なんでこうなってるのか…

まあとにかくコンパイラが動くようになったので、これでbona6をトライ。まずは最適化 -O3のみ、ipo/pgoなし、でトライ。一問だけ(読みの技法 第一問、深さ9)で測定。npsは以下:

  clang  -O3          248k
  icc -O3 w/ipo,pgo   306k
  icc -O2 w/o ipo,pgo 282k

うーん、やっぱまだiccにはかなわないですかね。
次はipo,pgoを試そう、としたんですが…調べたところ、pgoはどうやらまだサポートされてないみたい。これはちょっと致命的ですね。pgoでだいたい一割程度は性能上がるはずすから。ipoの方は、LLVMではLTO(Link Time Optimization)と呼ぶらしいです。でLTOはサポートはされてるらしいんですが、これもドキュメントにはどうもはっきり書いてない。

でまたいろいろググって、どうやら-O4でイネーブルされるらしいのでこれをトライします。が、またコンパイル(.oまで)は通るけどリンクでこける。またググると、どうもLLVMgoldというのが必要なんだがそれがサーチパスがどうたらこうたら、とかいう話がつい最近の開発MLで議論してるみたいで、どうもまだ完全サポートではないっぽいです。まあpgoなしでltoだけ仮にできてもiccは抜けそうにないので、今そこまで手をかける気もせず、まあちゃんとサポートできたらまた教えてくれよ、そしたら試してやっから(<偉そう)、というわけで今回は終了。

というわけで今回の結論も残念ながら「まだ使い物にならない」でした。こんなんばっかやん最近。いやまあ世の中こういうものなのでいいんですけど。ただ、数あるコンパイラの中でLLVMが現状いちばん「進化している」のは間違いないはずなので、まあ今後に期待、というとこでしょうか。

P.S. "1. Read the documentation  2. Read the documentation ..." は、LLVMのGetting Started です。

« いけないボナマジック | トップページ | 記者会見だん »

将棋プロセサ」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: LLVM 試してみた:

« いけないボナマジック | トップページ | 記者会見だん »