Altair Grid Engine (AGE)では、一般にジョブの内容をスクリプトにして、スクリプトをqsubコマンドでサブミットして利用します。ここでは、以下のシンプルな内容のジョブを投入する実例を御説明します。
!/bin/bash $ -cwd # カレントワークディレクトリの指定 $ -q all.q # キューの指定 hostname #プログラムの実行 sleep 30 |
“#$”で始まる行は、qsubコマンドに渡すオプションが記述されることを示します。上記のスクリプト内に記述している通り、-cwdオプションは、カレントディレクトリの指定をします。このオプションは、ほとんどのジョブで利用する必要があります。ジョブをサブミットして、入力ファイルや実行プログラムが見つからないというエラーが出る場合には、このオプションを利用することで解決する場合があります。-qオプションは、キューの指定をします。
AGEで実行するスクリプトファイルには、実行属性を与える必要はありません。
上記のスクリプトファイルをjob.shとした場合、以下のようにしてジョブを実行します。
> qsub ./job.sh
qsubオプションをスクリプトファイルに記述せずに、コマンドラインでオプションとして渡すこともできます。
> qsub -q short.q ./job.sh
この場合、スクリプトファイルに記述されたall.qよりもコマンドラインで渡されたshort.qの方が優先して使用されます。利用できるキューの一覧は、以下のコマンドで確認できます。
> qconf -sql
標準出力及びエラー出力は、カレントワークディレクトリにそれぞれjob.sh.o$JOBID, job.sh.e$JOBID というファイルに出力されます。$JOBIDは、UGEに一意に割り当てられるIDです。-cwdオプションを使用しない場合、ホームディレクトリ直下でスクリプトが実行され、それらのファイルもホームディレクトリの直下に出力されます。
実行例
[hpctech@frontend uge_test]$ qhost HOSTNAME ARCH NCPU NSOC NCOR NTHR NLOAD MEMTOT MEMUSE SWAPTO SWAPUS ———————————————————————————————- global – – – – – – – – – – node01 lx-amd64 2 2 2 2 0.01 1.8G 199.3M 1.2G 0.0 node02 lx-amd64 2 2 2 2 0.01 1.8G 195.2M 1.2G 0.0 node03 lx-amd64 2 2 2 2 0.01 1.8G 201.8M 1.2G 0.0 node04 lx-amd64 2 2 2 2 0.01 1.8G 209.3M 1.2G 0.0 |
[hpctech@frontend uge_test]$ qstat -u “*” #ジョブのステータス確認 「-u “*”」 をつけているので全員のジョブを確認しています。 [hpctech@frontend uge_test]$ ls -l #スクリプトは、job.shというファイルにしています。 total 4 -rw-rw-r–. 1 hpctech hpctech 155 Mar 25 15:45 job.sh [hpctech@frontend uge_test]$ qsub ./job.sh #ジョブの投入 ジョブIDは1が割り当てられました。 Your job 1 (“job.sh”) has been submitted [hpctech@frontend uge_test]$ qstat -u “*” #ジョブのステータス確認 job-ID prior name user state submit/start at queue jclass slots ja-task-ID —————————————————————————————————————— 1 055500 job.sh hpctech r 03/25/2018 15:45:36 all.q@node01.local 1 #ジョブのステータスは次のいずれかの値を取ります。- d(eletion), E(rror), h(old), r(unning), R(estarted), s(uspended), S(uspended), e(N)hanced suspended, (P)reempted, t(ransfering), T(hreshold) or w(aiting). [hpctech@frontend uge_test]$ qstat #ジョブのステータス確認 ジョブは終了しました。 [hpctech@frontend uge_test]$ ls #標準出力(*.o1)、エラー出力(*.e1)のファイルを確認 job.sh job.sh.e1 job.sh.o1 [hpctech@frontend uge_test]$ cat job.sh.o1 node01 |