Sun N1 Grid Engine 6.1 ユーザーズガイド

配列ジョブの発行

Grid Engine システムの 配列ジョブ機能の理想的な適用は、ジョブスクリプト内に含まれる操作のセットをパラメータ化して繰り返し実行することです。この典型例は、レンダリングなどで、デジタルコンテンツ作成業界でよくみられます。アニメーションのコンピュータ処理はフレームに分割されます。同じレンダリング処理が、各フレームに対して別々に行われます。

配列ジョブ機能によって、このような適用での発行、監視、および制御が便利になります。Grid Engine システムは、1 つのジョブに結合された別々のタスクの配列としてコンピュータ処理を行い、配列ジョブを効率的に実行します。配列ジョブのタスクは、配列インデックス番号によって参照されます。すべてのタスクのインデックスは、配列ジョブ全体のインデックス範囲に及びます。インデックス範囲は、配列ジョブの発行時に qsub コマンドによって定義されます。

ユーザーは、 配列ジョブの監視および制御を行うことができます。たとえば、全体として、またはそれぞれのタスクやタスクのサブセットごとに、配列ジョブを一時停止、再開、取り消しすることができます。タスクを参照するために、対応するインデックス番号が ジョブ ID の前に付けられています。タスクは、一般的なジョブとほぼ同じように実行されます。タスクは、環境変数 SGE_TASK_ID を使用して、独自のタスク インデックス番号を検索し、そのこのタスク 識別子に対する入力データセットにアクセスすることができます。

QMON による配列ジョブの発行

次の情報も考慮しながら、QMON により単純なジョブを発行する」の手順に従ってください。

QMON による配列ジョブの発行は、 QMON により単純なジョブを発行する」に説明されている単純なジョブの発行方法とほぼ同じです。 唯一の違いは、 図 3–5 の「Job Tasks」タスク入力ウィンドウにタスク範囲指定があることです。タスク範囲の指定では、qsub -t コマンドと同じ構文を使用します。配列インデックスの構文については、 qsub(1) のマニュアルページを参照してください。

一般的なジョブの監視と制御および特定の配列ジョブについては、「ジョブの監視と制御」「コマンド行からのジョブの監視と制御」を参照してください。qstat(1)、qhold(1)、 qrls(1)、qmod(1)、および qdel(1) のマニュアルページを参照してください。

配列ジョブは、通常のジョブで使用可能な Grid Engine システムの全機能にフルアクセスできます。特に、配列ジョブは同時に並列ジョブとなることもできます。配列ジョブも、その他のジョブと相互依存関係を持つことができます。


注 –

配列タスクは、その他のジョブまたはその他の配列タスクとの相互依存関係を持つことはできません。


コマンド行からの配列ジョブの発行

コマンド行から配列ジョブを発行するには、適切な引数を指定して qsub コマンドを入力します。

次に、配列ジョブの発行方法の例を示します。


% qsub -l h_cpu=0:45:0 -t 2-10:2 render.sh data.in

-t オプションは、タスクインデックスの範囲を指定します。この場合、2-10:2 は、2 が最小インデックス番号で、10 が最大インデックス番号という範囲を指定します。 :2 という指定により、1 つ飛ばしのインデックスだけが指定されます。よって、配列ジョブはタスクインデックス 2、4、6、8、10 の 5 つのタスクによって構成されます。各タスクは、-l オプションで 45 分のハード CPU 時間制限を要求します。タスクが Grid Engine システムによって振り分けられ、開始されると、各タスクはジョブスクリプト render.sh を実行します。タスクは SGE_TASK_ID を使用してインデックス番号を探し、その番号を使用してデータファイル data.in 内の入力データレコードを見つけることができます。