6.3. バックグラウンドジョブの実行方法

MPIプログラムをバックグラウンドで実行する方法を示します。

6.3.1. バックグラウンド実行

バックグラウンド実行の指定例を示します。

$ mpiexec -n 5 --vcoordfile vcoord_file ./a.out &

オプション

内容

-n

並列数を指定

--vcoordfile

VCOORD_FILEファイル内に指定された座標一覧に基づいて、並列プロセスを割り当てることを指定します。

参考

VCOORD_FILEファイル内の座標の記述形式は、pjsubコマンドの--mpiオプションのrank-map-hostfileパラメーターの形式に準じます。 詳しくはマニュアル「MPI使用手引書」の以下を参照してください。

  • 「4.1 実行コマンドの形式 - global_optionsの形式とオプション説明 - --vcoordfile」の説明

  • 「4.5 VCOORDファイルの記述形式」

6.3.2. ジョブ作成例

ここでは、5並列の実行を3つバックグラウンドで実行するジョブスクリプトの作成例を示します。
node指定は1次元としています。
  1. VCOORD_FILEファイルの作成

    VCOORD_FILEファイルはrank-map-hostfileパラメーターの形式に準じて作成します。同時に実行するmpiexec間で座標が重複しないように作成します。重複があった場合、エラーとなります。ここでは、vcode1vcode2vcode3のファイル名で作成するものとします。以下にファイルの内容を示します。

[vcode1]

(0)
(1)
(2)
(3)
(4)

[vcode2]

(5)
(6)
(7)
(8)
(9)

[vcode3]

(10)
(11)
(12)
(13)
(14)
  1. ジョブスクリプトの作成

    ジョブスクリプトは次のように作成します。

#!/bin/bash -x
#
#PJM -L "node=15"         # 同時に実行するプロセスに必要な合計ノード数
#PJM -L "rscgrp=small"
#PJM -L "elapse=01:00:00"
#PJM -g groupname
#PJM -x PJM_LLIO_GFSCACHE=/vol000N
#PJM -s
#
mpiexec -n 5 --vcoordfile vcode1 ./sample_mpi &
mpiexec -n 5 --vcoordfile vcode2 ./sample_mpi &
mpiexec -n 5 --vcoordfile vcode3 ./sample_mpi &

wait       #バックグラウンドジョブが終了するまで待つ処理を入れる

6.3.3. バックグラウンド実行時の留意事項

  • バックグラウンドで同時に実行可能な個数は128個までです。

  • 複数のバックグラウンドジョブを実行する場合は、VCOORD_FILEファイルの指定が必須です。

  • VCOORD_FILEファイルは同時に実行するバックグラウンドジョブ間で座標の重複はできません。座標の重複があった場合はエラーとなります。

  • waitによる終了待ちがない場合は、バックグラウンドジョブの有無に関わらずジョブスクリプトの処理は終了し、ジョブの処理も終了します。

  • 原則として動的プロセス生成と同時に利用することはできませんが、以下の条件を全て満たす場合に限り利用することができます。

    • 複数のmpiexecが同時に実行されない。

    • 同時に存在する動的プロセスのMPI_COMM_WORLDの数が65535個を超えない。

    • mpiexecコマンドの1回の実行において、MPI_COMM_SPAWNルーチン、または、MPI_COMM_SPAWN_MULTIPLEルーチンの呼出し回数の合計が4294967295回を超えない。