幾霜::残日録::2008/05/17 (土)

 

移籍先を探しています。系統樹推定法やメタバーコーディング法などに詳しい研究者を探している方がおられましたらご一報下さい。

2008/05/17 (土)

[Science|Software] Parallel computation with R on 8-core Mac Pro - 19:59:46

 8-core Mac Proの能力を実感してみる。

 予めRとLAM/MPIを入れておく。PVMでも構いませんけど。

 Rのパッケージとして、Rmpiとsnowとpvclustを入れる。

$ R
> install.packages(c("Rmpi", "snow", "pvclust"))
> q()

 そして、以下のコードを走らせる。

library("snow")
library("pvclust")
data("lung")
cl <- makeCluster(10)
system.time(parPvclust(cl, lung, nboot=100))
stopCluster(cl)

 makeCluster()関数の引数が起動するプロセス数である。この数を12〜1に変化させた結果が以下。

makeCluster(12)
  user  system elapsed
 0.420   0.010  14.285

makeCluster(11)
  user  system elapsed
 0.350   0.020  13.848

makeCluster(10)
  user  system elapsed
 0.320   0.000  13.663

makeCluster(9)
  user  system elapsed
 0.320   0.000  14.648

makeCluster(8)
  user  system elapsed
 0.280   0.000  13.852

makeCluster(7)
  user  system elapsed
 0.270   0.000  15.666

makeCluster(6)
  user  system elapsed
 0.270   0.000  17.647

makeCluster(5)
  user  system elapsed
 0.240   0.010  20.767

makeCluster(4)
  user  system elapsed
 0.230   0.000  25.465

makeCluster(3)
  user  system elapsed
 0.230   0.000  34.359

makeCluster(2)
  user  system elapsed
 0.200   0.000  50.218

makeCluster(1)
  user  system elapsed
99.940   0.060  99.998

 1〜8まではプロセス数に応じた時間の短縮が見られる。この計算はブートストラップリサンプリング+クラスター分析なので、各レプリケート間に依存関係が無い。故に、並列計算でボトルネックになりやすいプロセス間通信がほとんど必要無いので起動するプロセス数によってリニアに時間が短縮できる。

 なお、makeCluster()関数が自動的にlambootするので、Rを終了してからlamhaltしておく。

追記 - 20:05:20
 ちなみにBLASはGotoBLASを用いている。

追記 - 20:24:34
 比較用にAthlon 64 X2 4000+搭載でWindows XP SP2の入ったマシンで1CPUのみを用いた計算をしてみたところ、以下の通りでした。

  user  system elapsed
181.78    0.19  189.64

 Mac Proに搭載されているHarpertown (PenrynファミリのQuad core Xeon) 2.8GHzは、Linux+最適化BLASとの組み合わせでならシングルスレッドアプリでもこのマシンの2倍近い性能を叩き出すのですね。Windows上のRは最適化BLASを使っていないというハンデがあるのでその辺差し引いて考えた方が良いでしょうけど。

[Science|Software] Linux 32bit vs 64bit on Mac Pro - 18:47:38

 i386なGentoo上でICC-10.1.013でコンパイルしたMrBayesと、x86_64なGentoo上で同様にコンパイルしたMrBayesを比較。利用データはMrBayes付属のanolis.nexでMCMCは10万世代回しました。初期系統樹はランダム生成としており揃えていませんので誤差は大きいと考えて下さい。LAM/MPI環境のMPI版で8プロセス走らせてCPUをフルに使っています。コンパイルオプションと32bit環境での結果は一昨日のGCCとICCの比較時と同じです。

ICC-10.1.013 (i386)
2m 36.196s

ICC-10.1.013 (x86_64)
2m 30.535s

 この結果を見る限り64bitで特に遅くなるようなことはないのではないでしょうか。もちろん厳密には統計的に解析できるデータを用意してきちんと比較しないといけませんが、いくつかのデータで解析を走らせた限りでは体感上の差は無いように感じました。

追記 - 2008/05/26 11:22:25
 26日のエントリーにてGCC-4.1.2とGCC-4.3.0とも比較してみた。

[Science|Software] Reference BLAS vs Goto BLAS vs Intel MKL on R - 18:09:46

 なぜかRがうまくMKL 10.0.2.018にリンクできないのでGotoBLASを入れてみた。残念なことに最新の1.26ではなく1.24ですが。

 Gentooはeselectによってインストール後にも利用するBLASライブラリを切り替えることができます。もちろん静的ライブラリにリンクするのではなく共有ライブラリにリンクするようにしなくてはなりませんが、Rはデフォルトでそうなっているはずです。以下のコマンドでインストールされているBLASの一覧表示と切り替えが可能。

eselect blas list #一覧表示
eselect blas set 1 #一覧の番号か名前を指定して切り替え

 LAPACKも同様に切り替え可能ですがGotoBLASはあくまでBLASだけなのでLAPACKはリファレンス実装のものしか使っていません。試しにMKLに切り替えてRを起動しようとするとエラー。invalid ELF headerとか言われる。

 とりあえずリファレンスBLASとGotoBLASを切り替えてtest2()を実行した結果が以下。いずれもRを起動してから1回目の実行結果。

Reference BLAS
> test2()
  user  system elapsed
 2.520   0.010   2.529

Goto BLAS
> test2()
  user  system elapsed
 0.270   0.010   0.303

 10倍近い差がある。

追記 - 18:21:05
 MKLも9.1.023は使えましたので結果を掲載しておきます。

> test2()
  user  system elapsed
 0.260   0.020   0.284

[Software] emerge, emerge, emerge - 16:18:20

 Intel CompilerやIntel Math Kernel Libraryなどを入れる。そのほか必要なものを一通り。SSHのリモートログインでの作業が主なマシンでscreenが無いと話にならない。あとRも当然入れておく。RはMKLの最適化BLASを使うように設定されるので、ただでさえ速い演算がさらに高速になっている。PCの速度不足で困っている人にとっては泣けるんじゃないだろうか。もちろんクラスタやスパコンにはかないませんが。

追記 - 16:28:04
 PortageツリーにJAGSが無い。仕方ないので野良ビルドする。JAGSはマルチCPUには対応していないが、BLASを利用しているのでMKLによる高速化が期待できる。処理内容にもよるが、最適化BLASとリファレンス版BLASでは劇的な速度差がある(数十倍以上)ため、ヘビーな演算を要する人は最適化BLASを使った方がいい。それにしても、パラレルテンパリングに対応してるのにマルチCPUに対応していないのは残念すぎる。WinBUGSやOpenBUGSもまずその点を何とかして欲しい。

[Gentoo] mktempとcoreutilsの衝突 - 13:11:40

 mktempがcoreutilsに取り込まれただけらしい。というわけでmktempをunmergeしてからcoreutilsを更新した。

[Life] 予想通り - 08:13:32

 雨がやんだので登ってきました。待って良かった。

[Life] もう入梅か? - 03:59:19

 このところ仙台は雨が多い。大学に上ろうかと思いましたがもう少し雨脚が弱まるまで待ちますかね。

Go to front page
Comments and TrackBacks
Web antenna system: NaTsuMi
Search in this site
Access Count : 1982057