どうも、はむばねです。
さて先日のNAS Parallel Benchmark設定 ではmpichインストール済みであること前提で書きましたので、今回はそのmpochのインストール・設定方法について書いてみようと思います。

書いてみますというか、2年くらい前にまとめたやつをちょっと改変しているだけです。

なので、今現在もこれで正しいのかは保証できないよ!



今回はMPICH2 をソースからコンパイルする場合を考えます。


・ダウンロード・解凍
まずはソースをダウンロード。
ここ から最新のソースをダウンロードしてきてください。

今なら、

#wget http://www.mcs.anl.gov/research/projects/mpich2/downloads/tarballs/1.0.8/mpich2-1.0.8.tar.gz

で最新版ダウンロード。

なのですが、いちいち改変するのが面倒なので以下は(2年前の)mpich2-1.0.4p1のままでいきます。

随時補完してください。


#tar xvzf mpich2-1.0.4p1.tar.gz
で展開。




・インストール
今回は全て/opt/mpich2/にインストールするものとします。


#mkidir /opt/mpich2
でディレクトリを作成。

#cd ~/mpich2-1.0.4p1
でconfigure が存在するディレクトリに移動。

#./configure -prefix=/opt/mpich2/
でMakefile が作成されるので
#make && make install
でコンパイル、 同時にインストールが開始されます。

お察しの通り、"-prefix="の後のパスが実際にmpichがインストールされる場所となります。



・PATHを通す
いちいちパスを指定しながら実行しなくてもいいようにPATH を通します。

記述場所は~/.bashrc
このファイルの末尾に、以下の一文を追加。
export PATH=/opt/mpich2/bin:$PATH


こんな感じ。

#vim ~/.bashrc
 export PATH=/opt/mpich2/bin:$PATH /*追加*/



・設定ファイルを作成
/etc/mpd.conf に以下の内容を記述
MPD_SECRETWORD=mr45-j9z
ここで,、右辺はアルファベットと数値の適当な値を設定します(本当に適当でいいです)。
ただし、その値は導入するノード間で共通したものでなければなりません。

つまり、一緒にクラスタとして動かしたいマシンには全て同じ値を記述しなければなりません。


こんな感じ。

#touch /etc/mpd.conf
#vim /etc/mpd.conf
 MPD_SECRETWORD=mr45-j9z /*追加*/

・MPICHを導入するホストを記述
~/mpd.hosts に記述。
記述内容は,MPICH を導入する全てのホストのIP アドレスです。
自分のIP アドレスも記述しなければなりません。


こんな感じ。

#vim ~/mpd.hosts
 192.168.100.101/*追加*/
 192.168.100.102/*追加*/




・IPアドレスに対するホスト名を記述する
/etc/hosts に記述。
記述内容は、
IP アドレスホスト名

何気にこいつが記述されてないと動きません。


こんな感じ。

#vim /etc/hosts
 192.168.100.101 tbt/*追加*/
 192.168.100.102 tbt2/*追加*/




・mpdboot のプログラムをrsh に変更する
/opt/mpich2/bin/mpdboot の71 行目あたりを変更。
rshCmd = ’ssh’ → rshCmd = ’rsh’
その後、設定を反映させるためにOSを再起動します。


こんな感じ。

#vim /opt/mpich2/bin/mpdboot
 rshCmd = ’ssh’
 ↓
 rshCmd = ’rsh’ /*変更*/
#reboot



※rsh系の設定ができていない場合は、その設定も行わなければなりません。

以下その作業。

既にインストール・設定がなされている場合この作業は必要ありません。


・xinetd の導入
mpich の通信ではrsh を使用します。
そして、r系コマンドを制御するスーパーサーバがxinetd です。
つまり、rsh を使用するためにはxinetd をインストールしなければならなりません。


・インストール
#yum -y install xinetd

でインストール。


・設定
/etc/xinetd.d/rsh
/etc/xinetd.d/rlogin
の内容を書き変えます。
具体的には,、どちらのファイルもdisable の項目をyes → no に変更。

・rsh、rlogin のインストール
入っていなければrsh とrsh-server もインストール。
共に

#yum -y install

でインストールできるはずです。


・r 系ログイン設定
初期設定ではrsh でのログインは許されていないため、以下の設定が必要です。


・設定項目
以下基本的にホストのIP アドレスを記述する場合、今回mpichを導入する全計算機ノードと自分のIP アドレスを記述しなければなりません。
また、 これらの設定を有効にするためにはOS の再起動が人必要です。
・/etc/securetty
ルートログイン可能なコマンドを指定
rsh とrlogin を追加する
・ /root/.rhosts
ルート実行可能なホストを指定
記述内容はIP アドレス
・/etc/hosts.equiv
r 系における鍵なしログインを許すホストを設定
記述内容はIP アドレス
・/etc/hosts.allow
ログインを許すホストを記述
・kerveros のrsh を変更
kerberos のrsh が先に認識されるとエラーが表示されるため必要。
具体的には以下のコマンドを実行
#mv /usr/kerberos/bin/rsh /usr/kerberos/bin/rsh.old
#ln -s /usr/bin/rsh/ /usr/kerberos/bin/rsh
一行目でkerberos の元々のrsh の名前を変更し、二行目でkerberos のrsh と/usr/bin/rsh をリンクさせています。



以上の一連の流れ、実際はこんな感じ。


#yum -y install xinetd
#yum -y install rsh
#yum -y install rsh-server


#vim /etc/xinetd.d/rsh
disable = yes

disable = no /*変更*/

#vim /etc/xinetd.d/rlogin
disable = yes

disable = no /*変更*/

#vim /etc/securetty
rsh /*追加*/
rlogin /*追加*/

#vim /etc/securetty
ALL:ALL /*変更(全てのホストを許可)*/


#vim /etc/hosts.equiv
192.168.100.101 /*追加*/
192.168.100.102 /*追加*/

#vim /root/.rhosts
192.168.100.101 /*追加*/
192.168.100.102 /*追加*/
#mv /usr/kerberos/bin/rsh /usr/kerberos/bin/rsh.old
#ln -s /usr/bin/rsh /usr/kerberos/bin/rsh


・確認
ここまでで設定は終了です。
正しく設定されていれば,、これで動くはず。

以下、確認作業。


・PATHが通っているか
#which mpd
などと打ち込んで,”/opt/mpich2/bin/mpd” などと(実際にそのコマンドがある場所が返ってくれば)PATH は正
しく通っています。


・動作確認
#mpdboot -n 2 -f mpd.hosts
と打ち込んで、エラーが出れば設定が間違っています。
ただし、成功していた場合でも, 特にメッセージは表示されません。


#mpdtrace
と打ち込んで、望んだノードのホスト名が表示されていれば成功です。


こんな感じ。

#mpdtrace
 tbt
 tbt2




以下、トラブルシューティング的なもの。


・configure が失敗する
C コンパイラ、 もしくはC++コンパイラが入っていない可能性があります。
#yum -y install gcc
#yum -y install gcc-c++
を実行した後にもう一度試すとできるかも。



・MPICHが動かない
MPICH 関連の設定ファイルは

/etc/mpd.conf

/etc/hosts

~/mpd.hosts

/opt/mpich2/bin/mpdboot

の4つです。
つまり他の設定が正しいならば、これらのどれかの設定が間違っているということになります。
特に、IP アドレスを書く設定ファイルに自分のIP アドレスを書くのを忘れていないか、相手の設定ファイルに自
分のIP アドレスが書いてるか、MPD SECRETWORD の内容がホスト間で共通しているか、などを確認してみる
といいかもしれません。
逆に、 これらの設定ファイルが合っているのに動かないならば他の設定が間違っている可能性が高いです。
まずはrsh が正しく動いているかを確認した方がいいかも、
設定ファイル変更後の再起動を忘れているかもしれないので、とりあえず再起動してみるのも手です。


・rsh が動かない
rsh 関連の設定ファイルは

/etc/xinetd.d/rsh

/etc/xinetd.d/rlogin

/etc/securetty

/root/.hosts

/etc/hosts.equiv

/etc/hosts.allow
の6 つです。
IP アドレスを書く設定ファイルに自分のIP アドレスを書くのを忘れていないか、相手の設定ファイルに自分の
IP アドレスが書いてるか、などを確認してみるといいかも。
また、nmap で開いているポートを確認。

513、514 が開いていなければrsh-server が入っていないかxinetd が動作していませんのでその周りの確認を。
もしくは権限の問題の場合もあります。

ls -la で設定ファイルの権限を調べ、それが現在のユーザになっていなければ権限を変更しなければなりません。