2010年12月23日

mpi javaで並列分散処理

このエントリーをはてなブックマークに追加
follow us in feedly





javaで分散処理をするならmpiJava が一番やり易いでしょうか

mpiJava-source-1.2.6

展開して、
./configure  
make

とするだけですが、

checking MPI package... mpich
Please install mpich first ...

つまり、
先にmpichをインストールせよ

mpichは、
MPICH2のホームページ よりソース(mpich2-1.0.3.tar.gz)をDownload

./configure  

make

make install


何もなければこれでインストールできたはずです。

実際のデーモンプロセスなどは
mpich2-1.3.1/src/pm/mpd

などにあります。
これもmakeします。


実行前に準備があって
権限が
chmod 600 .mpd.conf

のファイルが必要で、この中身は
secretword=mr45-j9z

のようなパスワードです。


マシンのリストファイル
mpd.hosts
も作成します。

これらの(別)マシンにもmpichがインストールされていなければいけません

mpdboot -n 1 -f mpd.hosts

これで、mpdデーモンを起動します




checking whether MPI_Unpack allows inbuf to be smaller that outbuf... conftest.c: In function 'main':

conftest.c:25: warning: incompatible implicit declaration of built-in function 'printf'



............


mpiJava の make時には
./makeheader
make[2]: execvp: ./makeheader: 許可がありません
make[2]: *** [header] エラー 127


なんでsrc/native/makeheaderに実行権限を与えてないのでしょう






lib/libmpjbuf.so
lib/libsavesignals.so
lib/libmpijava.so

が生成されれば、javaで実行の準備が出来たと思います


API,ドキュメントは
doc/api に在ります




サンプルプログラムは
./RunTests
-bash: ./RunTests: /bin/csh: bad interpreter: そのようなファイルやディレクトリはありません

なんでcshなんでしょう



実際のコンパイルはどうやっているのかというと
コンパイル時に
javac -cp .:mpiJavaHome/lib/classes: Hello.java

に、パスが通ってることが必要です。



実行はjavaではなく、
mpiJavaHome/src/scripts/prunjava で行います。
invalid "local" arg: -pg

mpiJavaは、実際の並列分散処理はMPICHに渡すだけで
並列処理そのものを操作は出来ません...

それをやりたいなら、普通にSocketで通信のプログラムを組んでも良いですが...


.....
この、-pgというオプションはどこにも見つからなかったのですが...これは何なのでしょうか?




実際の実行は、おそらくこのようになっていると思います。
mpirun -np 1 /bin/java -Djava.library.path=mpiJava/lib: -cp mpiJava/lib/classes: Hello





トラックバックURL

コメントする

名前:
URL:
  情報を記憶: 評価:  顔   星
 
 
 
サイト内検索
にほんブログ村 科学ブログへ
にほんブログ村
adsense
Archives
amazon
blogchart
QRコード
QRコード
Recent Comments
「最新トラックバック」は提供を終了しました。