MPICH2を使った並列プログラミング環境の構築
MPI(Message Passing Interface)ライブラリとしてMPICH2を使って並列プログラミング環境を構築する。HPC(High Performance Computing)クラスタの構築でもある。
↓MPICH2のHPから最新版をダウンロードしてくる。
http://www-unix.mcs.anl.gov/mpi/mpich/
現時点では mpich2-1.0.4p1.tar.gz になる。
早速ダウンロードしてインストールをすませる。
# tar zxvf mpich2-1.0.4p1.tar.gz -C /usr/local/src/
# cd /usr/local/src/mpich2-1.0.4p1/
# ./configure --prefix=/usr/local/mpich2
(prefix: 好みに応じてインストール場所を指定)
いろんなオプションがあるので確認してみるといいかと思う。
# make
# make install
インストールが終わったら環境の整理です。
今回mpich2の実行にrshを使うので計算マシンから各ノードマシンへrshが正常に機能するように設定しておく。rshクライアントを実行ホストに、rshサーバを計算ホストに構築する。
詳細は↓に記述した。
http://max01.skr.jp/blog/2006/11/rsh.html
次にmpich2用のコマンドが使えるようにパスを通しておきます。
# vi /etc/bashrc
---
PATH=/usr/local/mpich2/bin:$PATH
---
これで全ユーザのパスに追加出来ます。
もし自分だけでいい場合はホームディレクトリ直下にある .bash_profile を編集する。
$ vi ~/.bash_profile
---
PATH=/usr/local/mpich2/bin:$PATH
export PATH
---
次にホームディレクトリ直下に.mpd.hostsを以下のように記述する。
# vi ~/.mpd.conf
---
MPD_SECRETWORD=password
---
パスワードは任意。ただし全ノードで同じパスワードを指定しておく必要がある。
パーミッションの設定もしないとおこられる。
# chmod 600 ~/.mpd.conf
rootでもmpich2を使いたい場合は/etc/mpd.confを作る必要がある。
次はmpd.hostsに計算をさせるノードのIPアドレスを記入する。
# vi ~/mpd.hosts
---
xxx.xxx.xxx.11
xxx.xxx.xxx.12
---
念のため/etc/hostsファイルを見直す。エラーの原因になることが多い。
私は "failed to ping mpd on ..." というようなエラーに苦しめられた。
あと、無線LANではうまくいかないようで有線でやるとうまくいった。
# more /etc/hosts
---
127.0.0.1 localhost
192.168.0.x myhost.domain myhost
192.168.0.y remotehost1
---
127.0.0.1のところはlocalhostにしてホスト名は行を追加してIPアドレスといっしょに書きましょう。
これで準備OK。今回は2つのマシンで起動してみよう。
$ mpdboot (-v) -r rsh -n 2 (-f ~/mpd.hosts)
(-v:詳細表示 -n:ノード数)
確認は以下のコマンドを入力。
$ mpdtrace (-l)
---
hostname1
hostname2
---
確認できたらmpiプログラムを実行させてもいいしシェルコマンドを打ってもいい。
$ mpirun (-l) -n 2 hostname (-l:詳細表示 -n:実行ノード数)
---
hostname1
hostname2
---
rootだったらshutdownコマンドが打てて便利。
プログラムの実行が終わったら終了コマンドを入力。
$ mpdallexit
確認は ps aux | grep mpd などと打ってmpdプログラムが残っていないかみることが出来る。