G5よりCore Duoが圧倒的に速いJAGS([追記] と思ったが) [Mac]
このところ、Intel MacとPowerPC MacでJAGSによるMCMC計算をやらせているが、後者の方がずいぶんと速い気がする。ということで、速度を比較してみた。
ハードウェアにはMacBook (Intel Core Duo 1.83GHz/2GB RAM)とiMac G5 (PowerPC G5 1.8GHz/2GB RAM)を使用。OSは10.4.8。bugs-examplesのvol1にあるblockerのサンプルを実行して、処理時間を比較してみた。以下のコマンドで3回計測。両者ともX11のみ立ち上げて、xtermからコマンドを打ち込んだ。
$ time jags test1.cmd
結果
Macbook (Intel Core Duo 1.83GHz)
1回目
real 0m20.893s user 0m20.313s sys 0m0.036s
2回目
real 0m20.175s user 0m20.146s sys 0m0.021s
3回目
real 0m19.977s user 0m19.948s sys 0m0.021s
iMac G5 (PowerPC G5 1.8GHz)
1回目
real 1m31.577s user 1m27.725s sys 0m0.461s
2回目
real 1m32.091s user 1m28.176s sys 0m0.477s
3回目
real 1m32.194s user 1m28.345s sys 0m0.458s
MacBookがおよそ20秒、iMac G5がおよそ90秒ということで、やはりMacBookの方が4倍以上速かった。
追記
橘さんのコメントを読んで、コンパイルオプションは同じ(libRmathではblasとlapackを有効に、jagsではデフォルト)はずだが、そういえばiMacの方をコンパイルしたときはまだGCC3だったなと、あらためてGCC4でコンパイルしてみたら、かなり速くなった。
1回目
real 0m30.361s user 0m28.830s sys 0m0.192s
2回目
real 0m30.666s user 0m29.042s sys 0m0.201s
3回目
real 0m30.092s user 0m28.666s sys 0m0.179s
と、以前の3倍速に。それでもCore Duoがまだ1.5倍ほど速いが、かなり差が詰まった。
うーん、何が原因だったんだろう。GCC4の性能なのか、以前は実はblasやlapackが有効になっていなかったのか(現在の状態でJAGSのconfig.hを見ると、blasとlapackが有効になっている)。
両方とも最適化BLAS使ってますか? コンパイラの最適化オプションも一方だけバリバリに最適化する設定だったりしません? ライブラリとコンパイラと最適化オプションが明らかでないと参考にしづらいのですが。
個人的な印象ではG5ってVMX(AltiVec/VelocityEngine)最適化すればかなり速いと思っていたんですけど。最適化してもコンパイラの対応の差もあるかもしれませんね。あと温度監視して熱暴走しないように勝手にクロックを落とす機能が働いていたりすることもありますがiMacではそういうことは無いんでしょうかね。
ま、極限まで最適化したらさらに差が開きそうな気がしなくもないです。MKL + ICCがG5は使えませんから。
by 橘 (2007-01-30 02:03)
追記のような次第で、GCC4でコンパイルし直したら、G5でもかなり速くなりました。指摘されなければずっとそのままだったかもしれません。感謝いたします。
by hiroki (2007-01-30 12:14)
GCCのバージョンによってもかなり最適化の異なるCPUもありますから、様々な条件を揃えないとなかなか本当の速度差は分からないものです。コンパイルオプションは同じでBLAS + LAPACKはリファレンス実装と考えていいんですよね?
by 橘 (2007-01-30 13:19)
ビルド時のコンパイルオプションの指定は、JAGSのmanual.pdfにあるとおり、BLASとLAPACKはOSのデフォルトのままで、これで一応条件がそろったはずです。
by hiroki (2007-01-30 17:59)