2.4 グリッドジョブ間のデータ連携
データ連携は,グリッドジョブネットとしてジョブを実行することを目的に,グリッドジョブ間でサブジョブの実行結果や実行状態を引き継ぐ機能です。また,グリッド開始ジョブからグリッドジョブ前処理プログラムを呼び出すプログラムや,グリッド終了ジョブからグリッドジョブ後処理プログラムを呼び出すインタフェースを提供します。
グリッドジョブネットは,一固まりのデータから分割されたデータを処理するグリッドジョブの集合体です。同一のデータを複数のジョブにまたがって処理するグリッドジョブネットでは,先行ジョブのサブジョブで処理された分割データが,分割されたまま後続ジョブのサブジョブでも処理されることになります。先行ジョブの一部のサブジョブが異常終了した場合に,先行ジョブを異常終了として後続ジョブの実行を中止してしまうと,先行ジョブで正常終了したサブジョブのデータは処理されなくなってしまいます。したがって,サブジョブの異常終了の影響がグリッドジョブネット全体に及んで,再実行時の処理負荷が増大します。
これを防ぐために,先行ジョブ内の一部のサブジョブが異常終了した場合でも,正常終了したサブジョブの分割データだけを対象として後続ジョブを続行できます。このように後続ジョブを続行する処理を次の図に示します。
|
図に示したグリッドプロパティは,後続ジョブで実行するデータ識別子の範囲を判別するための情報です。先行ジョブの終了時には,各サブジョブの状態がデータ識別子と対応づけられてグリッドプロパティに記録されます。後続ジョブでは,正常終了と記録されたサブジョブのデータ識別子だけが選択されて,後続サブジョブに投入されます。
また,先行ジョブと後続ジョブとで同一データ識別子のデータを処理する場合,同一の実行ノードで処理するとデータ転送が発生しないため,高速に処理できます。そこで,先行サブジョブが実行された実行ノード名もグリッドプロパティに記録されます。この記録を基に,実行多重度に空きがあれば優先して先行サブジョブと同一の実行ノードに後続サブジョブが投入されます。
このように,先行ジョブ内の一部のサブジョブが異常終了した場合でも,正常終了したサブジョブの分割データだけを対象として後続ジョブを続行するかどうかは,[グリッド実行定義]ダイアログボックスの[先行グリッドジョブ実行結果]で設定します。この設定は,グリッドジョブごとに行います。デフォルトでは[参照する]がチェックされているため,先行するグリッドジョブの実行結果を参照します。そのため,先行ジョブ内の一部のサブジョブが異常終了した場合は,同一データ識別子のデータを処理する後続サブジョブは実行されません。[参照する]のチェックを外した場合は,先行サブジョブの終了状態に関係なく,すべてのサブジョブが実行されます。