4 snow Rのクラスタハンドリングパッケージ

# R CMD INSTALL snow_0.2-1.tar.gz
* Installing *source* package 'snow' ...
** R
** inst
** help
 >>> Building/Updating help pages for package 'snow'
     Formats: text html latex example
  snow-cluster                      text    html    latex   example
  snow-internal                     text    html    latex
  snow-parallel                     text    html    latex   example
  snow-rand                         text    html    latex   example
  snow-startstop                    text    html    latex   example
** building package indices ...
* DONE (snow)

snowの読み込みとその利用

> library(Rmpi)

        Rmpi version: 0.4-9
        Rmpi is an interface (wrapper) to MPI APIs
        with interactive R slave functionalities.
        See `library (help=Rmpi)' for details.
> library(snow)
>

snowを使って、クラスタに仕事を振り分けてみる

###今、MPIが単独LINUXマシンで動いているので、クラスタノード数は1個
###なので、snowのmakeCluster関数で3個のノードを作らせるコマンドを発行すると
###警告(『最大CPU(ノード)数であるところの1より大のR上のslaves(子ノード)が指定されたよ』)が出ています。
###ただし、マシンが3台あれば、Rの3つのslavesをそれらに割り振るところを
###マシンが1台しかないので、Rの3つのslavesが1台のマシンに振られるだけで
###以降のコマンドが効かないわけではない(模様)
###makeCluster(1mtype="MPI")としてやれば、警告は出ない
> cl<-makeCluster(3,type="MPI")
        3 slaves are spawned successfully. 0 failed.
Warning message:
Number of R slaves is over 1 : maximum CPUs. in: mpi.comm.spawn(slave = "/usr/bi
n/env", slavearg = args, nslaves = count,
###今、3つのR slavesが生まれて、それが、clというオブジェクトに格納されている
###clの中を見ると、slaveごとに$rank,$RECTAG,$SENDTAG,$comm,atrr(,"class")が
###作成されている
###ひとまず、何もしないで並列処理を終了するとしたら、
###発生させたslavesを落とさないといけないので
> stopCluster(cl)
[1] 1
###おそらくは、clがきちんと終了したことを示す返り値であろうところの[1] 1が返る