MPI覚え書き(OpenMPI編)

OpenMPIをUNIX環境(Linux)にインストールし、動作確認をした際の覚え書きを書く予定です。

OpenMPIの特徴

インストールして、簡単なプログラムを実行しただけなのですが、以下の特徴があります。

  • MPI-2に対応
  • あらかじめ各ホストでデーモンを起動させておく必要がない
  • 32/64ビット環境に対応
  • CentOS5のパッケージに含まれており、OSインストール時に一緒にインストール可能

インストール手順

  • OpenMPIのページからソースコード(openmpi-1.2.5.tar.bz2)をダウンロード

2008年2月時点では Version 1.2.5 でした。

% wget http://www.open-mpi.org/software/ompi/v1.2/downloads/openmpi-1.2.5.tar.bz2 
  • 圧縮されているので解凍
% tar xjvf openmpi-1.2.5.tar.bz2 
  • ./configureを実行

権限がないのでとりあえず今回は自分のホームにインストール

% cd openmpi-1.2.5
% ./configure --prefix=/home/hogehoge/openmpi
  • コンパイル
% make
  • インストール
% make install 
  • パスの設定
    • openmpi/binにパスを通しておく
    • openmpi/share/manをmanのパスに追加

環境設定

  • .rhosts の作成
    • 自分のホームディレクトリに .hosts という名前のファイルを作成する。
    • 内容は計算に使用するホストの列挙。
    • このファイルはOpenMPIとは直接関係ない(rshで使われる)
  • 記述例(~/.rhosts)
host00
host01
host02
  …
  • hostsファイルの作成
    • 計算に使用するホストを列挙する。
    • ファイル名や保存場所は実行時に指定するので何でもよい。
    • このファイルはOpenMPIを使用する際に使われる。
    • CPUが複数あるホストにはCPUの数を記述(ホスト名の後にcpu=CPU数)することが可能。
    • 記述例(hosts)
host00 cpu=4
host01 cpu=2
host02
  …

注:openmpi/etc/openmpi-default-hostfile に上記のように記述することによって、実行時のホストの指定を省略できます。

実行方法

  • ソースコードの作成

LAMとMPICH、OpenMPIで共通です(同じMPIなんで当たり前なんですけど)

  • コンパイル

-O2等のオプションも普通に使用できます。

% mpicc -o hogehoge hogehoge.c 
  • 実行方法
    • mpirunコマンドで実行します。
    • -machinefileオプションでhostsファイルを指定します。(mpich/share/machine.* に記述した場合は省略可)
    • -npオプションで使用するノードの数を指定します。 ノード数がホスト数よりも多い場合は、一つのホストに複数割り当てられます。
    • rshで実行したい場合は-mca pls_rsh_agent rsh オプションを指定。デフォルトはsshのようです。オプションで毎回指定するのが面倒な場合、環境変数や、設定ファイルopenmpi/etc/openmpi-mca-params.confに追加することで、デフォルトの動作にできます。
    • 例(rshでホスト5台を用いてhogehogeを実行する場合)
% mpirun -machinefile hosts -mca pls_rsh_agent rsh -np 5 hogehoge 

関連項目