NEWEST / < NEXT   BACK >

Rで並列処理 snow Rmpi MPICH PBS

プロセス生成機能がなく、mpirun を使わないといけないMPICHと、
RとsnowとRmpiとPBSとの連携

snowは普通にインストールする。

Rmpi インストール時、RmpiがMPIシステムを探しているのですが、その順番が
 OpenMPI → LAM → MPICH or MPICH2
なので、戯れに違うMPIが入ってたりすると何だかわけのわからないことに。
(補足:MPICHを探す場所は、 /usr/lib/mpi or /usr/lib/mpich 他は知らん

まぁとにかく「このMPIを見てくれ!!」と言いたい場合は

% R CMD INSTALL Rmpi_version.tar.gz --configure-args=--with-mpi=/mpipath

またはRプロンプトで

 > install.packages("Rmpi", configure.args="--with-mpi=/mpipath")

ちなみに、古いこんな記述もありました(使ってないけど)

 % R CMD INSTALL --configure-vars="CC=mpicc CPPFLAGS=-I/mpipath/include LDFLAGS=-L/mpipath/lib" --configure-args="--with-mpi=/mpipath" Rmpi_version.tar.gz

ここ上で /mpipath は、MPIがインストールされたトップディレクトリ.
上記のように mpicc を指定しても、インストールの途中で「gccでいいよね」みたいなことを自分で言ってgccでコンパイルしてました。
gccのバージョンによると思われる。


次! snowの機能を使う準備
Rpath/library/snow/RMPISNOW を実行パスが通っているところにコピー

いよいよ実行、Rのスクリプトを用意し、PBSのシェルスクリプトは次の如く書く

 #!/bin/sh

 export R_PROFILE="/Rpath/library/Rmpi/Rprofile"

 mpirun -machinefile $PBS_NODEFILE RMPISNOW --no-save -q -f your_R_script


ここでRprofileのexportが重要。
PBSを使わない場合もmpirunする前にこの環境変数を設定しなくてはならなりません。
RmpiのREADMEに書いてありますが、MPI_Comm_spawnが使えないMPIはこれをしろ と

で、これをqsubに突っ込めば並列処理はできるようになるのですが、なんかエラーが・・・

 WARNING: unknown option '-p4pg'
 ARGUMENT '/home/foo/work/PI1234' __ignored__
 WARNING: unknown option '-p4wd'
 ARGUMENT '/home/foo/work/' __ignored__


これは何かっつーと、mpirun がプロセスを生成するときは、並列計算させたいプログラム(この場合RMPISNOW つまり R に)
 -p4pg /home/foo/work/PI1234 -p4wd /home/foo/work
とオプションを付けて実行します。詳しくはここで↓
[mpichでのプロセス起動] http://www.alde.co.jp/information/mpiinit/mpiinit.html
それをRが見ていて「そんなオプション知らん」と返しているもよう。
・・・今のとこ無視

なんか散々でしたが、一番参考になったのはRmpiのREADMEでした。
あと、クラスタ群で使うなら、当然全てのマシンを同じ環境にしておく必要あり。
MPIがいろいろ入っている場合は(いろいろ入ってるのにちゃんと連動して動くのはMPICHだけ っていう・・・・)とにかく全てフルパスで書く!!

補足熱烈歓迎

| BioInformatics::Utilities | 05:08 PM | comments (0) | trackback (x) |

コメント

コメントする








NEWEST / PAGE TOP / < NEXT   BACK >


ARCHIVES

<前月 2010年09月 次月>
      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   

CATEGORIES

OTHER