MPIのインストール

MPI(Message Passing Interface)

PCクラスタにおいて複数のコンピュータに分散させて計算を行なうシステムの1つにMPI があります。計算を行なうための通信方法を定めたようなものです。
具体的にMPIを行なうプログラムに以下のようなものがあります

LAM
MPICH
MPICH2

インテル クラスタ・ツールキット
PGI クラスタ開発キット(CDK)

インテルとPGIは、インテルコンパイラやPGIコンパイラと同時に使う商用のクラスタ用のソフトですが、フリーのプログラムに選択肢を絞りました。LAM、MPICH、MPICH2の主なフリーのMPIプログラムは3つなのですが、3つとも使用してみて、MPICH2を当面は使用することに決めました。

MPICH2のインストール

MPICH2のホームページ よりソース(mpich2-1.0.3.tar.gz)をDownloadしてきます。
(解凍方法)
.tarファイルや.gzファイルは、tarコマンドやgunzipなどで圧縮されたソフトです。tar -xvzf ***.tar.gzやtar -xvf ***.tarで解凍できます。tarコマンドは圧縮や解凍(展開)をするコマンドでオプションはそれぞれ、-x(展開) -v(詳細表示) -z(gunzip -gzファイル) -f(ファイル名指定)

makeとconfigure

makeコマンドは、makefileの内容に従ってプログラムのコンパイルを行なうコマンドです。一般的にconfigureで書かれたシェルスプリプトでmakefileの内容を作成することができる。
(一般的な使い方)
./configure  makefileを作ります。オプションをいろいろ付けてカスタマイズします。
make   プログラムのコンパイルを行ないます。
su    root権限(スーパーユーザ)になり、インストール先への書き込み権限を持ちます。
make install  makefile内にinstallの記述があれば、このコマンドでコンパイルしたプログラムを書きこんでくれます。

MPICH2のインストールの場合、今回は次のようにインストールしました。
./configure -prefix=/opt/mpich2 --with-device=ch3:ssm
オプションの-prefix=はインストール先のディレクトリーを指定する。今回はNFSで共有している/optフォルダにインストールしたかったので、このように設定した。--with-device=ではMPIで使用する通信手段を記述します。今回は、一般的なch3(TCPを用いたsocks通信?)にデュアルプロセッサ間で通信が行なえるようにshared memory (ssm socket shared memory)も追記しました。このような設定はドキュメントファイルを深く読めば、いろいろ書いてあるので、個々の場合で、いろいろ設定を試してみて下さい。

PATHの設定として~/.bashrc の中に
export PATH=/opt/mpich2/bin:$PATH
と加えることで、MPICH2でインストールしたmpiexec, mpif90, mpicc, mpdなどのコマンドが使用可能となります。

MPICH2の使い方

まず、環境設定を行います。通常のユーザーアカウントで
cd $HOME
touch .mpd.conf
chmod 600 .mpd.conf
これで、MPIを使用するときの設定ファイルが作られます。さらに、この.mpd.confを編集します。viエディッタ等で

secretword=mr45-j9z

このような1文を挿入して下さい。ここで、mr45-j9zは各自、適当なパスワードとして変更することを忘れないように。本来なら計算を行なう各ノードのホームディレクトリに.mpd.confファイルを置いて共通の暗号(secretword)を作っておくのですが、/homeディレクトリがNFSで共有されているので、1つのマシンで設定してしまえば、終了です。

次にコンピュータの一覧が書いてあるファイルを作ります。~/mpd.hostsとして
master.localdomain
slave1.localdomain
slave2.localdomain
slave3.localdomain

これで準備は終了です。MPICH2がインストールされているか、また、PATHが通っているかを確認して、
which mpiexecとかwhich mpdとか入力すると/opt/mpich2/binなどと返ってくると問題ないです。

mpdboot -n 4 -f mpd.hosts
このコマンドでは、mpd.hostsに書かれているマシンを4台(-n 4の部分)で並列計算のプログラム(mpdデーモン)を起動します。

実際にMPDデーモンが動いているかどうかは、
mpdtrace
と打ち込むとMPDが動いているホスト名が表示されます。

計算プログラムを実行するには、
mpiexec -n 8 /opt/計算プログラム
で実行されます。ここで、-n 8と指定したのは、8つの並列計算を行なう意味で、今回のシステムがPentiumDが4台なので、合計8cpuあるので、このように指定しています。まだ、計算プログラムをインストールしていない場合なんかは、
mpiexec -n 8 hostnameやmpiexec -n 4 dateなどを実行すると
ちゃんとMPICH2が動いているか確認できます。hostnameは自分自身のhostnameを返すコマンドで、dateは時間を返すコマンドです。

計算が終了して、MPDデーモンを終了するには、
mpdallexit
と入力します。

今回のシステム構築時に1点だけ問題点がありました。それは、MPICH2がdefaultでsshで認証をするということです。sshやrshの解説は他のページに譲ることとして、masterサーバにrshクライアント、slaveの各マシンにはrsh-serverもインストールして(設定は大変ですが)を行なって、rshでMPICH2を使えるようにしたのですが、あるプログラムだと動かないとか、そんな問題がでてきたので、結局defaultのsshを使ってMPIの通信を行なうことにしました。
sshだと通信を行なう前に認証(パスワードの入力など)が必要となるのですが、 ここを見て、パスワード不要で通信を行なえるようにしました。



back home next

inserted by FC2 system