Main Content

UNIX システム上での異なる MPI ビルドの使用

MPI のビルド

Linux® オペレーティング システムでは、Parallel Computing Toolbox™ で提供される MPI ビルドとは異なる MPI ビルドを使用できます。このトピックでは、汎用スケジューラ インターフェイスで使用する MPI ビルドを作成する手順について説明します。既に代替の MPI ビルドがある場合は、MPI ビルドの使用に進んでください。

  1. MPI ソースをマシン上のターゲット ファイル システムにアンパックします。たとえば、mpich2-distro.tgz をダウンロードしており、それをビルドのために /opt にアンパックするとします。

    # cd /opt
    # mkdir mpich2 && cd mpich2
    # tar zxvf path/to/mpich2-distro.tgz
    # cd mpich2-1.4.1p1
  2. enable-shared オプションを使用して MPI をビルドします (これは、R2013b から R2018b では MPICH2-1.4.1p1、R2019a 以降では MPICH3.2.1 と互換性のあるバイナリである共有ライブラリ MPI のビルドが必要であるため不可欠です)。たとえば、次のコマンドにより nemesis チャネル デバイスおよび gforker 起動ツールを指定して MPI をビルドします。

    #./configure -prefix=/opt/mpich2/mpich2-1.4.1p1 \
     --enable-shared --with-device=ch3:nemesis \
     --with-pm=gforker 2>&1 | tee log
    # make 2>&1 | tee -a log
    # make install 2>&1 | tee -a log

MPI ビルドの使用

ここでは MPI ビルドを準備した後に、汎用スケジューラで使用する手順について説明します。異なる MPI ビルドでクラスターを動作させるには、次の手順に従います。

  1. mpiexec 実行可能ファイルを実行してビルドをテストします。MPI がインストールされている場所に bin/mpiexeclib/libmpich.so があれば、ビルドをテストする準備ができています。

    MPI のビルドの例に続き、/opt/mpich2/mpich2-1.4.1p1/bin/mpiexec/opt/mpich2/mpich2-1.4.1p1/lib/libmpich.so は使用できる状態になっているので、次を実行してビルドをテストできます。

    $ /opt/mpich2/mpich2-1.4.1p1/bin/mpiexec -n 4 hostname
  2. 新しい MPI を使用するように Parallel Computing Toolbox に指示する関数 mpiLibConf (Parallel Computing Toolbox) を作成します。ビルドの適切な情報を返すように mpiLibConf.m を記述します。以下に例を示します。

    function [primary, extras] = mpiLibConf
    primary = '/opt/mpich2/mpich2-1.4.1p1/lib/libmpich.so';
    extras  = {};

    primary パスは "クラスター上" で有効 "でなければなりません"。また、mpiLibConf.m ファイルはクラスター ワーカーのパスで matlabroot/toolbox/parallel/mpi より上位になければなりません (mpiLibConf.m を添付ファイルとして送信しても機能しません。ワーカー パス上の関数 mpiLibConf.m を取得するには、ファイルをパス上のフォルダーに移動させるか、スケジューラのコマンドで cd を使用し、スケジューラがこの関数が格納されているフォルダー内から MATLAB® ワーカーを起動するようにします)。

  3. 必要なデーモンとコマンド ライン オプションを判別します。

    • 必要なすべてのデーモンを判別します (一般的には mpdbootsmpd など)。この節の gforker ビルドの例では、クラスター上で稼働するサービスやデーモンを必要としない MPI を使用しますが、これはローカル マシンのみを使用できます。

    • mpiexec に渡す正しいコマンド ライン オプションを判別します。

  4. 新しい MPI ビルドを使用するようにクラスターを設定するには、正しい mpiexec を使用するように通信ジョブ ラッパー スクリプトを変更します。また、ラッパー スクリプトに MPI プロセス マネージャー デーモンが起動される段階があるかもしれません。

    通信ジョブ ラッパー スクリプトは、以下を行わなければなりません。

    • スケジューラによって割り当てられたノードを判別します。

    • 必要なデーモン プロセスを起動します。たとえば、MPD プロセス マネージャーでは、"mpdboot -f <nodefile>" を呼び出すことになります。

    • ワーカーの起動に使用する mpiexec 実行可能ファイルを定義します。

    • デーモン プロセスを停止します。たとえば、MPD プロセス マネージャーでは、"mpdallexit" を呼び出すことになります。

    通信ジョブ ラッパー スクリプトの例については、サンプルのプラグイン スクリプト (Parallel Computing Toolbox)を参照してください。