スーパコンピュータシステムの使い方
(京都大学学術情報メディアセンター提供のサイト)
Job Queue
ジョブのキュー名は以下のとおりです。
システムA: gr20001a
システムB: gr20001b
システムC: gr20001c
システムG: gr20001g
CPU Time
資源の公平配分のため、計算時間に上限を設けています。
年度はじめに各ユーザーは「基本計算時間」(=「標準コア数」×7日間)が割り当てられます。
(例えば、2024年度のシステムAの「標準コア数」は10,080コアなので、70,560コア日の基本計算時間が割り当てられます。)
計算時間が上限に達すると新規にジョブを投入することができなくなります。
計算時間の使用状況は以下のコマンドで知ることができます。
show_my_time [a|b|c]
使用率(rate)が90%を超えたら以下のサイトで計算時間の追加申請をすることができます。
妥当と認められた場合、「基本計算時間」が追加されます。
計算時間追加申請はこちら
Disk Storage
/LARGE0/gr20001 (926 TB) と/LARGE1/gr20001 (926 TB) が使えます。
ユーザー名のディレクトリを作成し、お使いください。
ディスク容量には限りがありますので、不要なファイルは消去してください。
ジョブスケジューリングポリシー
現在、gr20001グループのジョブスケジューリングポリシーは「backfill」が設定されています。すなわち、「各ジョブの実行時間制限(-t)をもとに計算を行い、他のジョブの実行開始時刻に影響を及ぼさない場合のみ、追越しが発生する。たとえば、大規模ジョブが開始されるまでの間に実行を完了できる小さなジョブを走らせることで資源を有効活用できる。各ジョブの実行時間制限(-t)をもとに計算を行い、他のジョブの実行開始時刻に影響を及ぼさない場合のみ、追越しが発生する。たとえば、大規模ジョブが開始されるまでの間に実行を完了できる小さなジョブを走らせることで資源を有効活用できる。」
Tips (旧システム向け)
qdelコマンドの補完機能
UNIX シェルには、タブキーで引数を自動入力する補完機能が備わっています。 そして、bash の場合は、bash-completion という追加ライブラリを使って この補完機能を拡張することができます。 Bash-completion を使っている方は(bash-completion の設定をした後で) .bashrc に次の設定を追加してみてください。_qdel() {
local cur=`_get_cword`
COMPREPLY=( $(compgen -W "$(qstat | tail -n +3 | cut -d. -f1)" -- $cur) )
return 0
}
complete -F _qdel qdel
これを有効にすると、qdel の後でジョブ番号が補完されるようになります。
$ qsub ./3000.sh
397571.ja
$ qdel [TAB]
$ qdel 397571
(銭谷誠司さん提供)
システム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
上述の方法で起動した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プログラムの計算ノード上での実行に関する詳細な情報は、 メディアセンターのウェブでご覧になれます。 なお、KDKキューgr20001cを指定してGUIプログラムの実行を行った場合、通常のバッチジョブでの使用の場合と同様に、使用CPU時間の積算の対象となります点にご留意いただけますようお願いいたします。
FAQ
ジョブが実行状態になりません
- 多くのジョブが先に投入されている。
qgroupコマンドを使い、システムの利用状況を確認してください。 - 要求資源が大きすぎる。
qgroup(又はqgroup -l)コマンド使い、要求コア数(REQUEST)と利用可能なコア数(READY)を比較してください。要求コア数が確保されるまで待ち続けます。要求コア数を利用可能なコア数より小さくすると、ジョブが実行状態に移りやすくなります。 - 大きな資源を要求するジョブが先に投入されている。
実行時間制限(-W)を小さくすることにより、先行ジョブに影響を及ぼさない範囲で追い越すことができます。 - 許可されたCPU時間を超過した。
CPU時間の延長をこちらから申請してください。 show_my_time [a|b|c]コマンドで許可されたCPU時間と利用時間が確認できます。 - 優先順位が低下している。
過去2週間の実行時間に基づき優先順位が動的に計算され、優先順位の高いユーザのジョブから順に実行されます。
ログインできません
- 利用者登録がされていない。
研究代表者に送付した「大型計算機システム利用申請書(KDK)」をkdk-id@rish.kyoto-u.ac.jpに送付してください。利用者番号の有効期限は3月末日までです。 - SSH公開鍵が登録されていない。
学術情報メディアセンターの利用者ポータルでSSH公開鍵を登録してください。