Last-modified:2018/03/29 22:54:22.
#$ -S /bin/sh
#$ -cwd #ジョブの標準出力、エラー出力をcwd上に出力
#$ -o stdout #標準出力リダイレクト先ファイル名
#$ -e stderr #標準エラー出力リダイレクト先ファイル名
#$ -q Ga.q #キュー
#$ -pe Ga.mpich2 4 #PE と並列実行プロセス数
-q と -pe オプションは、指定していなければ、 空いているキューで適当に計算するようだ。 ただし、現状の Kr シリーズのように、 2プロセス走らせた方が効率が良い場合でも自動的に 2 プロセスで走らせてくれたりは しない。
see Documentation Home > Sun N1 Grid Engine 6.1 ユーザーズガイド > 第 3 章 ジョブの発行 > バッチジョブの発行 の環境変数
4 プロセス/ホストで 1ホスト、合計4プロセス計算の条件だと、
NSLOTS 4
4 プロセス/ホストで 2ホスト、合計8プロセス計算の条件だと、
NSLOTS 8
環境変数 PE_HOSTFILE はたとえば、 /var/spool/gridengine/execd/Ga01/active_jobs/90.1/pe_hostfile というようなパスが入っている。 このパスのファイルを開くと、 Ga01.calc.atom 4 Ga.q@Ga01.calc.atom UNDEFINED Ga02.calc.atom 4 Ga.q@Ga02.calc.atom UNDEFINED のように使用ホストが並んでいる。 この情報が -machinefile に使えそうだが、 このまま mpich2 の mpdboot に食わせても以下のようなエラーになる。
Traceback (most recent call last):
File "/opt/mpich2/bin/mpdboot", line 482, in <module>
mpdboot()
File "/opt/mpich2/bin/mpdboot", line 234, in mpdboot
(k,v) = kv.split('=',1)
ValueError: need more than 1 value to unpack
cut, sed コマンドを使って修正してやれば良い。
% cat pe_hostfile
Ga06.calc.atom 1 Ga.q@Ga06.calc.atom UNDEFINED
Ga07.calc.atom 1 Ga.q@Ga07.calc.atom UNDEFINED
% cut -d " " -f 1,2 pe_hostfile | sed 's/ /:/'
Ga06.calc.atom:1
Ga07.calc.atom:1
cut コマンドでフィールドを区切る。 -d オプションで区切り文字を " " に指定し、 -f オプションでその第1, 2要素を表示している。
この出力をパイプで sed に渡し、 " " を “:” に置換している。
#サンプル: sleep100-pe1.qsub
#! /bin/sh
#$ -S /bin/sh
#$ -cwd
#$ -q Ga.q
#$ -pe Ga.mpich2 1
printenv
sleep 100
pe の数をかえたりして、 ジョブを投げたときの挙動の確認など。 100 秒程度の時間があれば、/var/spool/gridengine/execd/… のファイルを確認できたりする。 printenv しているので、セットされている環境変数を確認できる。