qsubarraypbs

qsubarraypbs は PBSのアレイジョブの機能を使って、ファイルに書かれた多数のジョブをPCクラスターで分散実行するコマンドです(当スパコンシステムシステム独自のコマンドです)。

利用方法


$ qsubarraypbs [オプション]  (ジョブが書かれたファイル)
オプション
  • -q (queue名) … SMALL, APC, APG, SDF (必須)
  • -l select=1:ncpus=(1ジョブ当たりの使用コア数):mem=(1ジョブ当たりの使用メモリ)
  • --max (全使用コア数)
  • その他のqsubオプション (-N, -r, -v, -l, -p, -P, -W)
ジョブが書かれたファイル
  • 1行につき1ジョブのコマンドを書いて下さい。各行のジョブは独立(依存関係がない)でなければなりません。
    • && で区切って1行に複数のコマンドを列挙してもOKです
  • リダイレクトする場合は sh/bash 形式で書いて下さい。
    (コマンド)  1>xxx.out  2>xxx.err
  • # から始まる行はコメント行で無視されます (#PBS ... は機能しません)。
  • 最大1万行(# から始まる行も含む)の制限があります。
補足
  • --max オプションを指定していない場合、最大500コア分(もしくはキューの上限値)のジョブが同時実行されます。 qsubarraypbs の実行後に全使用コア数を変更したい場合は、以下のqalter コマンドを実行して下さい。
    $ qalter -Wmax_run_subjobs=(全使用コア数) (JobID)
  • qsubarraypbs を実行する前に、使用するアプリケーションを module load しておいて下さい。
  • qsubarraypbs の内部で cd $PBS_O_WORKDIR/ されます。
  • ディレクトリ pbslog/ にエラーメッセージ、エラーになったジョブ等が出力されます。
  • エラーになったジョブ(返り値が 0 でなかったジョブ)は
    pbslog/${PBS_JOBID}.${PBS_JOBNAME}.failed
    というファイルに出力されます。
  • qsubコマンドのメール通知機能(-M, -m オプション)は使用できません。
  • 「ジョブが書かれたファイル」の中に並列化されているプログラムを列挙する場合は、1行あたり1コアしか使用しない場合でも使用コア数を明示的に指定して下さい。
    例)
      blastp -query xxx.fa -db yyy -num_threads 1 1>xxx.out 2>xxx.err
      ssearch36 -T 1 xxx.fa db 1>xxx.out 2>xxx.err
      hmmscan --cpu 1 Pfam-A.hmm xxx.fa 1>xxx.out 2>xxx.err
  • qsubarraypbsコマンドでジョブを実行した場合は、必ず PbsExitStatus コマンドでジョブの終了ステータスを確認して下さい(PBSのメモリ制限にひっかかって予期せずして異常終了したジョブがないか確認するため)。

実行例

1ジョブあたり 1コアを使用して計算


$ qsubarraypbs  –q  APC  (ジョブが書かれたファイル)
  • APC queueのデフォルトは -l selecct=1:ncpus=1:mem=9gb (1ジョブ当たり 1コア・9GB 使用)となります。
  • ジョブが書かれたファイル(例)
    blastp -db xxx -query test00.fa -num_threads 1 1>test00.out 2>test00.err
    blastp -db xxx -query test01.fa -num_threads 1 1>test01.out 2>test01.err
    ...
    blastp -db xxx -query test98.fa -num_threads 1 1>test98.out 2>test98.err
    blastp -db xxx -query test99.fa -num_threads 1 1>test99.out 2>test99.err
    

1ジョブあたり 2コア・18GB使用して計算


$ qsubarraypbs  –q  APC  –l  select=1:ncpus=2:mem=18gb    (ジョブが書かれたファイル)
  • ジョブが書かれたファイル(例)
    blastp -db xxx -query test00.fa -num_threads 2 1>test00.out 2>test00.err
    blastp -db xxx -query test01.fa -num_threads 2 1>test01.out 2>test01.err
    ...
    blastp -db xxx -query test98.fa -num_threads 2 1>test98.out 2>test98.err
    blastp -db xxx -query test99.fa -num_threads 2 1>test99.out 2>test99.err
    

関連ページ