HOME > 使い方と注意事項 > 計算サービス

計算サービスの使い方と注意事項

ジョブ投入システム

ジョブ投入システム

ジョブ投入システムとは

ジョブ投入システムとは、多くのユーザが同じ計算サーバ(計算をメインとするコンピュータ)を共有し、メモリやCPUなどの リソース(計算資源)を公平に利用するためのシステムです。

スーパーコンピュータシステムでは、ジョブ投入システムとして代表的なもののひとつである PBS(Portable Batch System)を導入しています。

ユーザのジョブを"qsub"というコマンドを使って計算サーバへ投入されると、PBSはジョブを一旦保留します。 リソースが空いている場合にはすぐにジョブが実行されますが、多くのユーザがジョブを投入していることで計算サーバが 混み合っている場合、あるいはすでにユーザが多くのジョブを実行していることで、ユーザごとに割り当てられたリソースを 使い切ってしまった場合などは、他のジョブが終了するまで保留し続けることになります。

このような処理(バッチ処理と呼びます)を行うことで、一度に大量のジョブが実行されることを防ぐとともに、 多くのユーザが公平に共有リソースを利用することが可能になります。

以下では、特に断らない限り、バッチ処理によって実行されるジョブ(バッチジョブ)を単にジョブと呼びます。 また、バッチジョブではないジョブをインタラクティブジョブと呼びます。

バッチジョブの制限値

バッチジョブは利用できるコア数・メモリ容量・演算時間により、複数のキューと呼ばれるクラスに分類されており、 ジョブが必要とする計算リソースに応じて使い分けます。

新システムのバッチキュー(11/27日頃より利用可能)

新システムの正式な運用開始日は2020年1月1日になります。 それまでの試験運用期間中のバッチキューおよび利用可能なリソースは以下の通りです。 利用状況を鑑み、2020年1月以降、設定値は変更される場合がありますので、ご注意ください。 なお、これらのキューを実行するには、まずは新しい計算システムのログインノードにログインすることが必要です。 従来のfe1からはご利用いただけません。

キュー名
QUICK
SMALL
APC
APG
SDF
計算サーバ
クラスタ(CPU/GPU)
大規模メモリ
クラスタ(CPU)
クラスタ(CPU)
クラスタ(GPU)
大規模メモリ(CPU)
キューの
実行順位
100
70
50
50
90
(ジョブあたりの)
最大コア数
(デフォルト)
4 core
(1 core)
12 core
(1 core)
40 core (※)
(1 core)
40 core
(1 core)
144 core
(18 core)
(ジョブあたりの)
最大メモリ
(デフォルト)
72 GB
(9 GB)
108 GB
(9 GB)
720 GB (※)
(9 GB)
720 GB
(18 GB)
6 TB
(768 GB)
(ジョブあたりの)
経過時間
(デフォルト)
1 h
12 h
(6 h)
制限なし
(2880 h)
制限なし
(2880 h)
制限なし
(2880 h)
(ユーザあたりの)
最大ジョブ数
(ソフトリミット)
2
(1)
制限なし
制限なし
4
(1)
8
(4)
(ユーザあたりの)
合計コア数
(ソフトリミット)
制限なし
64 core
制限なし
制限なし
288 core
(144 core)
(ユーザあたりの)
合計メモリ
(ソフトリミット)
制限なし
576 GB
制限なし
制限なし
8 TB
(6 TB)
ジョブの特徴
テスト
小規模
中~大規模
GPU
大規模メモリ
(ユーザあたり)同時実行ジョブの合計コア数 (カッコ内はソフトリミット)
500 (300)
(ユーザあたり)同時実行ジョブの合計メモリ (カッコ内はソフトリミット)
12 TB (3 TB)

【補足】
デフォルトとは:
特に何も指定していない場合に自動的に設定される値です。 例えば、SMALLキューの経過時間は何も設定しない場合には6時間ですが、-l walltime= で具体的に値を設定した場合には、 その値が経過時間となります。ただし、SMALLキューの場合の最大の経過時間は12時間ですので、 それよりも長い時間を設定することはできません。
ソフトリミットとは:
ソフトリミットとはそれ以上の計算リソースは利用可能であるものの、その優先順位が低く設定される閾値です。 具体的には、ソフトリミットを越えたジョブは、ソフトリミットを越えていないすべての待機ジョブが実行開始した後に、 まだ計算リソースが空いている場合に初めて実行が開始されます。

キューの概要

新システムでは、バッチキューはQUICK, SMALL, APC, APG, SDFの5種類が用意されています。

QUICKキューは投入後、すぐにジョブが実行されることを目的としたキューです。そのため、キューの実行順位は 最も高く、QUICKキューのみが利用可能なノードも用意されています。 バッチスクリプトが正しく実行されるか、ジョブが問題なく実行を開始するか、といったテスト的な利用を 想定したキューですので、ユーザあたり最大2ジョブまでとなります。 もちろん、短時間で終わる、計算リソースもさほど必要ない、といったジョブで利用していただいても構いません。

SMALLキューは小規模なジョブを対象としたキューです。 比較的短時間でジョブが終了するにもかかわらず、ジョブ実行開始まで長時間待つことがないよう、 中~大規模なジョブに比べてジョブの実行順位が高く設定されています。 ただし、その分、ユーザあたりの計算リソースには制限が設けられています。 また、経過時間もデフォルトでは6時間、最大で12時間となります。

APCキューは大規模計算クラスタにおけるCPUノードでのジョブ実行を目的としたキューです。 CPUノードには40coreが搭載されていますので、pthread や OpenMPでの並列化ではジョブあたり最大40coreまで利用できます。 また、メモリ搭載サイズが異なる2種類の計算ノード(360GBと720GB)がありますが、台数としては360GBのほうが圧倒的に多いため、 可能であれば必要なメモリサイズは360GBよりも小さくすることで比較的早くジョブが実行開始されます。 もしくは、360GBを越えるジョブを実行したい場合にはSDFキューのご利用をご検討ください。
(※)このキューでは複数のノードにまたがってジョブを実行することが可能であり、 その場合最大コア500core、最大メモリ4.5TBまでの計算リソースが利用できます。 MPIで並列化された大規模ジョブを実行したい場合は、このAPCキューもしくは後で説明しますSDFキューをご利用ください。

APGキューはGPUノードでのジョブ実行を目的としたキューです。 GPUノードには1枚のGPUカードが搭載されています。GPUノードは18ノードと、CPUノードに比べて少ないため、 ユーザあたりのジョブ数には制限を設けています。

SDFキューはpthread や OpenMPでの大規模ジョブ、 あるいは使用するコア数は少ないがメモリを大規模に使いたいといった目的で用意されたキューです。最大で6TBほどのメモリを利用したジョブの実行が可能です。 ただし、2ノードのみであるため、ユーザ当たりの利用可能なリソースには制限を設けています。

【Q&A】
SMALLキューとAPCキューはジョブの特徴にもあるように計算規模が違う程度で、どちらも大規模クラスタでのCPUノードでの計算になります。 SMALLキューですでに数本を実行し、SMALLキューで自分のジョブが待機状態(Q)になっている場合、 APCキューにジョブを投入したほうが実行されやすいでしょうか。
SMALLキューにおける、ユーザあたりの合計コア数や合計メモリのリミット(64coreおよび576GB)にはまだ達していないのであれば、 キューの実行順位はSMALLキューが高いため、SMALLキューに投入したほうがジョブが早く実行を開始します。

大規模なMPIジョブを実行したい場合、APCキューとSDFキューのどちらを使うのが良いのでしょうか。
利用できる計算リソースの観点でいえば、coreあたりに利用できるメモリサイズは、 APCキューでは9GB、SDFキューでは42GBぐらいです。したがって、coreあたりに必要なメモリの大きさでどちらのキューを使うべきかを 判断するという考え方があります。 ただ、このcoreあたりのメモリサイズはあくまでも目安であり、そうしなくてはいけないということでもありません。 そのため、実際にはどちらがより性能が出やすいのか、あるいはその時の混み具合などで総合的に判断していただくのがよいと思います。

計算サーバ
ジョブが実行される計算サーバはキューにより異なりますが、 CPUのアーキテクチャは全く同じであり、違いはCPU動作周波数です。 したがって、どちらの計算サーバにおいても同じバイナリでのジョブ実行が可能です。

キューの実行順位
ジョブが投入されると、指定キューのジョブ列の最後に並びます。 そして、定期的に、実行順位が高い(数字が大きい)キュー(つまり、最初はQUICKキュー、次はSDFキュー、という順序で) そのジョブ列の先頭(最も以前に投入されたジョブ)から最後(最も最後に投入されたジョブ)まで 順番にジョブの実行を試みます。 したがって、リソース的に実行可能であれば、まずはSMALLキューでのジョブ実行を検討していただくのがよいでしょう。 SDFはキューの実行順位は高いですが、計算サーバはSMALLやAPC,APGと異なりますので、SDFを利用するのであれば キューの実行順位を特に気にする必要はありません。

最大コア数
1つのジョブが利用できる最大のコア数です。特に、APCキューでは大規模なMPIジョブの実行により、 最大500コアまで利用できます。また、SDFキューでは大規模なpthreadやOpenMPジョブの実行により最大144コアまで利用できます。

最大メモリ
1つのジョブが利用できる最大メモリです。バッチスクリプトで特に指定されない場合には、カッコ内のメモリ容量が設定されます。 もし、ジョブが指定されたメモリを超えた場合にはPBSによって自動的にkillされますのでご注意ください。

経過時間
1つのジョブが利用できる経過時間です。経過時間とはジョブの実行開始時刻と終了時刻の差になります。 CPU時間とは異なります。QUICKおよびSMALLキューのみ最大の経過時間が設定されていますが、それ以外はデフォルト値のみの設定です。 したがって、ジョブの経過時間が12時間を超える可能性がある場合には、APC/APG/SDFキューをご利用ください。 また、APC/APG/SDFキューではデフォルトの経過時間は120日(2880時間)となっています。 そのため、もしそれ以上経過時間がかかる可能性がある場合には、バッチスクリプトにて経過時間を指定してください。 もし、ジョブ実行後にAPC/APG/SDFキューで経過時間を延長したい場合には、スパコンシステムまでご相談ください。
なお、インタラクティブバッチジョブでは経過時間は1時間に設定されています。

最大ジョブ数
ユーザがそのキューで実行可能なジョブの数の上限値です。SMALLやAPCには上限がありませんが、 計算リソースが限られているAPGやSDFには上限を設けています。
()内の数字はソフトリミットと呼ばれる制限値です。これは、この数以上にジョブが実行されている場合、 その後にユーザが投入したジョブの実行順位は、ソフトリミット以内のユーザの待機ジョブに比べて、 低くなります。

合計コア数
ユーザがそのキューで実行可能なジョブの合計コア数に対する上限値です。 SMALLには最大ジョブ数に制限はありませんが、合計コア数には96という上限を設けています。 つまり、1ジョブあたり8coreを使うジョブであれば12ジョブ、1ジョブあたり1coreしか使わないジョブであれば 96ジョブを同時に実行することが可能となります。(メモリ容量についても制約がありますが、ここの説明では無視しています。)

合計メモリ
合計コア数と同様に、ユーザがそのキューで実行可能なジョブの合計メモリに対する上限値です。 たとえば、SDFキューの場合には12TBとなっていますので、 6TBを使用するジョブであれば合計で2つのジョブを同時に実行することが可能です。

ユーザあたりの同時実行ジョブの合計コア数および合計メモリ
すべてのキューを対象に、ユーザが利用できる同時実行可能なジョブの合計コア数および 合計メモリの制限値です。 この制限値以内であることを条件に、各キューに対する制限がジョブ実行に適用されることになります。


現行システムのバッチキュー(12/9まで)

分散型スパコンシステム

キュー
JP1
JP4
JP10
JP20
PK5
ジョブの特徴
単一ジョブ
並列ジョブ
並列ジョブ
並列ジョブ
GPUジョブ
(ジョブあたりの)
最大コア数
(規定値)
1 core
(1 core)
4 core
(1 core)
10 core
(1 core)
20 core
(1 core)
5 core
(1 core)
(ジョブあたりの)
最大メモリ容量
(規定値)
12 GB
(12 GB)
48 GB
(12 GB)
120 GB
(12 GB)
240 GB
(12 GB)
64 GB
(12 GB)
(ユーザあたりの)
最大ジョブ数
(ソフトリミット)
制限なし
制限なし
(10)
制限なし
(10)
制限なし
(10)
制限なし
(3)
(キューあたりの)
最大ジョブ数
制限なし
100
50
80
12
備考
GPUを利用したい場合のみ、PK5 を利用してください。

最大コア数および最大メモリ容量に示されたカッコ内の数値はデフォルト値(ユーザ側で何も指定しない場合の設定値)です。 必要に応じてバッチオプションを利用して適切な値を指定してください。
なお、実行ジョブが指定されたメモリサイズを超えた場合、強制的にジョブが停止されることとなりますので、メモリについては 少し大きめの値を設定されることをお勧めします。

JP/PKにはユーザあたりの最大ジョブ数に制限はありません。ただし、カッコ内で示された数を超えたジョブに対しては実行順序の考慮の際に、 順位が下がります。

共有メモリ型スパコンシステム

キュー
UV16
UVM1
UV128
ジョブの特徴
小規模ジョブ
中規模ジョブ
大規模ジョブ
(ジョブあたりの)
最大コア数
(規定値)
16 core
(8 core)
32 core
(8 core)
128 core
(8 core)
(ジョブあたりの)
最大メモリ容量
(規定値)
512 GB
(256 GB)
1 TB
(256 GB)
2 TB
(256 GB)
(ユーザあたりの)
最大ジョブ数
(ソフトリミット)
制限なし
(6)
4
1
(キューあたりの)
最大ジョブ数
24
8
4
備考
Materials Studio のVisualizerからジョブを投入する場合、
利用できるキューはUV16/UVM1であり、メモリの上限はどちらも512GBです。

最大コア数および最大メモリ容量に示されたカッコ内の数値はデフォルト値(ユーザ側で何も指定しない場合の設定値)です。 必要に応じてバッチオプションを利用して適切な値を指定してください。
なお、実行ジョブが指定されたメモリサイズを超えた場合、強制的にジョブが停止されることとなりますので、メモリについては少し大きめの値を 設定されることをお勧めします。

新システムへの移行準備に伴い、利用可能な計算リソースが一時的に減少します。 そのため、UV128キューについては利用可能な計算リソースの制限を従来よりも厳しくしています。ご了承ください。

ユーザあたりに対する制限値

現行システムでは 同時実行可能なジョブに対する制限を、”ユーザあたり”に対して 以下のように設けています。
新システムでも同様に設定を今後行う予定ですが、当面は、利用状況に応じて 変更する運用とします。

同一ユーザに対する制限
同時実行ジョブのコア数合計値
300 core
同時実行ジョブのメモリ合計値
6 TB

なお、これらの値は利用可能な最大値であり、他のジョブによるリソースの使用状況により、実際の利用可能なリソースはこの値よりも少なくなる場合があります。

新システムへの移行準備に伴い、利用可能な計算リソースを削減しています。ご了承ください。

ログインノードでのジョブ実行

ログインノードは多くのユーザが利用するノードですので、バッチ経由で実行可能なジョブについては、可能な限り、 バッチでの実行をお願いします。 ただし、コンパイラによるソースコードのコンパイル、インタプリタ言語(シェル、perl、python など)でのスクリプト実行は 例外とします。 実行するジョブの制限は以下の通りです。

インタラクティブ・ジョブ
ジョブあたりのCPU時間
ジョブあたりの最大使用メモリ容量
30 min
1 GB

マニュアル