メイン

MPICH2 アーカイブ

2006年11月29日

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プログラムが残っていないかみることが出来る。