LAMを使った並列プログラミング環境の構築
MPI(Message Passing Interface)ライブラリとしてLAMを使って並列プログラミング環境を構築する。
ノードとホストの設定がある。
ホストはプログラムを投入するマシンでノードは計算するマシン。
今回はホストにも計算をさせるのですべてに同じ設定をすればいい。
↓公式HPはこちら
http://www.lam-mpi.org/
OSはCentOS4。
候補としてredhat9,turbolinux8,fedoracore5,centos3など考えたが
姫野ベンチでテストした結果が一番よかったのがCentOS4だった。
公式HPから lam-7.1.2.tar.gz をダウンロードして作業を進める。
# tar zxvf lam-7.1.2.tar.gz -C /usr/local/src/ (-C:解凍先の指定)
# cd /usr/local/src/lam-7.1.2/
# ./configure --prefix=/usr/local/lam (--prefix:インストール先の指定)
# make
# make install
LAMをrshで利用するのでrshサーバの設定をする必要がある。
詳細はhttp://max01.skr.jp/blog/2006/11/rsh.htmlに書いた。
ただ、パスは以下のように /usr/local/lam/bin を追加する。
# vi /etc/bashrc
---
PATH=/usr/local/lam/bin:$PATH
---
一般ユーザhogeで利用する場合hogeのホームディレクトリに以下のファイルを作成。
LAMが利用可能なIPを記述するんです。
$ vi ~/lamhosts
---
xxx.xxx.xxx.xxx
xxx.xxx.xxx.yyy
---
LAMが使えるようになったか確認する。
$ recon -v ~/lamhosts
Woo hoo! というメッセージがでたらOK。
さっそくLAMを軌道しよう。
$ lamboot -v ~/lamhosts
---
LAM 7.1.2/MPI 2 C++/ROMIO - Indiana University
n-1<4780> ssi:boot:base:linear: booting n0 (xxx.xxx.xxx.xxx)
n-1<4780> ssi:boot:base:linear: booting n1 (xxx.xxx.xxx.yyy)
n-1<4780> ssi:boot:base:linear: booting n2 (xxx.xxx.xxx.zzz)
n-1<4780> ssi:boot:base:linear: finished
---
このようなメッセージが表示されればOK。
念のため確認のコマンドを打つ。
$ lamnodes
---
n0 hostname1:1:origin,this_node
n1 hostname2:1:
n2 hostname3:1:
---
今回3つのノードで試してみた。
あとはMPIプログラムを投入するだけだ。
$ mpirun -np 3 -s n0 program
(-np 3:3つのノードで処理する, -s n0:ノード番号0の実行プログラムを各ノードにコピー)
これでprogramが3台のマシンで実行されているはず!
-s オプションがあるおかげでNIS,NFS環境を構築しなくていいのでLAMは便利です。
プログラムの実行が終わったら以下のコマンドを実行してLAMを終了させる。
$ lamclean
$ wipe -v ~/lamhosts