小技集 (Tips)

連続実行ジョブ

同一のジョブを複数回並列に実行する方法
qsub -J "myjobary[1-3]" jobscript.sh

myjobaryという名前(名前は何でも構いません)でジョブ配列が作成され、同じジョブIDで複数回jobscript.shが実行されます。上の例では3回実行されます。

同一のジョブを複数回順番に実行する方法

上記の方法ではリソースに余裕がある限り、次々と(配列中の)ジョブを実行してしまいます。そこで、次のように記述することで、一度に実行できるジョブの数を制限できます。

qsub -J "myary[1-3]%1" jobscript.sh

この例では、ジョブ配列の後ろに「%1」と書いているので、ジョブ実行数は 最大1つとなります。つまり、ジョブが1つずつ順に実行されることになります。

ジョブスクリプト中で、$LSB_JOBINDEX という環境変数を利用いただけます。 この環境変数には、ジョブ配列のインデックスが格納されています。上の例で あれば、配列が1から始まるので、何番目のジョブを実行しているかの判別に 利用できます。

これにより、プログラムのinputやoutputを、ジョブ配列のインデックスに よって変えることができます。また、スクリプト中で分岐構文を記述すれば、 インデックスごとに異なる処理を詳細に指定することができます。

システムCの活用事例

(文責:神戸大学 三宅洋平氏)

KDK System Cは1ノードあたり1.5 TBのメモリを搭載し、大規模な共有メモリを用いた計算や解析が可能です。KDK管理室ではSystem Cの利用を促進するため、活用事例を随時紹介していきます。今回は神戸大学の三宅洋平氏にMatlabを用いた大規模行列 (20万×20万) 計算について紹介して頂きます。

計算ノード上で可視化ソフトウェアなどのGUIプログラムを実行することで、大規模な共有メモリや複数の計算コアを用いた解析が行えます(GUIプログラムが大規模メモリや複数計算コアの利用に対応している場合)。特にSystem Cでは、1ノードあたり最大1.44 TBの共有メモリが利用できるため、System B(1ノードあたり最大61.4 GB)に比べて格段に大規模なデータを取り扱うことが可能となっています。System Cの計算ノード上でGUIプログラムを実行する方法を次に示します(Matlabで例を示します)。

  • kdk-bc.kudpc.kyoto-u.ac.jpにSSHでログイン
  • コマンドライン上で次のように指定し、System Cの使用を宣言
module switch lsf/SystemB lsf/SystemC
  • コマンドライン上で次のように指定し、GUIプログラムを実行
xrun -q gr20001c -ug gr20001 -A c=32:m=1440G -W 6:00 matlab

ここで、-q以下にキュー名(KDKユーザの場合はgr20001c)、-ug以下にグループ名(KDKユーザの場合はgr20001)を指定します。-A以下に使用するコア数(c=X)やメモリ量(m=XG、単位はM、G、Tのいずれか)を指定します。-Aオプションにはこの他、プロセス数(p=X)やスレッド数(t=X)を指定することができますが、そうした指定がGUIプログラム側で受け付けられるかどうかは個々のプログラム依存となります。-W以下は経過時間上限値を「時:分」の形式で指定します。最後にGUIプログラムのコマンド(この例ではmatlab)を記述します。キューとしてgr20001cを指定することにより、KDKの資源をフルに活用した解析が可能です。

上述の方法で起動したMatlab上で大規模な二次元配列を確保し、ごく基本的な行列演算を行う例を示します。下記の例では一辺200000の倍精度2次元配列を3つ用います。各配列のメモリサイズは320 GBなので合計でおよそ960 GBのメモリを用いた演算になります。

a = ones(200000, 200000)*2;	% 要素が全て2である一辺200000の正方行列を確保
b = ones(200000, 200000);	% 要素が全て1である一辺200000の正方行列を確保
c = a + b;			% aとbの和を計算してcに代入
ans = c(1:10,1:10)		% cの部分行列の要素を表示
ans =
    3     3     3     3     3     3     3     3     3     3
    3     3     3     3     3     3     3     3     3     3
    3     3     3     3     3     3     3     3     3     3
    3     3     3     3     3     3     3     3     3     3
    3     3     3     3     3     3     3     3     3     3
    3     3     3     3     3     3     3     3     3     3
    3     3     3     3     3     3     3     3     3     3
    3     3     3     3     3     3     3     3     3     3
    3     3     3     3     3     3     3     3     3     3
    3     3     3     3     3     3     3     3     3     3
whos				% 確保した配列の情報を表示
Name		Size			Bytes		Class	Attributes
a		200000x200000		320000000000	double
ans		10x10			800		double
b		200000x200000		320000000000	double
c		200000x200000		320000000000	double

この他、GUIプログラムの計算ノード上での実行に関する詳細な情報は、メディアセンターのウェブ上(http://web.kudpc.kyoto-u.ac.jp/manual/ja/run/interactive)でご覧になれます。 なお、KDKキューgr20001cを指定してGUIプログラムの実行を行った場合、通常のバッチジョブでの使用の場合と同様に、使用CPU時間の積算の対象となります点にご留意いただけますようお願いいたします。

小技集.txt · 最終更新: 2014/04/14 09:20 by akdk