English versionもあります。
RCCSのスパコンで計算を流すためにはログインサーバー(ccfep.ims.ac.jp)にログインする必要があります。
sshの公開鍵と秘密鍵のペアを最初に作成しておきます。作成方法が不明な方はインターネットなどで調べてください。
クイックスタートガイドのページにも情報があります。
ノードジョブは 64 コアの vnode (仮想ノード)を利用単位とします。(各ノードは 2 つの vnode に分けられます。)
キュー名 (jobtype) |
計算ノード |
メモリー | 利用単位 | 1ジョブの 制限 |
1グループの制限 | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|
割当点数 | コア数/GPU数 | ジョブ数 | |||||||||
H (largemem) |
TypeF | 7.875GB/core | vnode ノード |
1〜14vnode (64〜896コア) |
720万点以上 240万点以上 72万点以上 24万点以上 24万点未満 |
9,600/64 6,400/42 4,096/28 3,200/12 768/8 |
1,000 | ||||
H (vnode) |
TypeC | 1.875GB/core | vnode ノード |
1~50vnode (64〜3,200コア) |
|||||||
H (core) |
TypeC | 1.875GB/core | core | 1〜63コア | |||||||
H (gpu) |
TypeG | 1.875GB/core | core | 1〜48GPU 1〜16コア/GPU |
キューの設定は下記の通りです。
キュー名 | 計算ノード | 制限時間 | メモリー | 1ジョブあたりのコア数 | グループ制限 |
---|---|---|---|---|---|
専有利用 | TypeC | 7日間単位 | 1.875GB/core | 応相談 | 許可されたコア数 |
CPU点数は、CPUやGPUを使うことによって減ります。
消費点数はシステム毎に設定されているCPUキュー係数とGPUキュー係数により求められます。
jobtype | CPUキュー係数 | GPUキュー係数 |
---|---|---|
largemem | 60 点 / (1 vnode * 1時間) | - |
vnode | 45 点 / (1 vnode * 1時間) | - |
core | 1 点 / (1コア * 1時間) | - |
gpu | 1 点 / (1コア * 1時間) | 60 点 / (1GPU * 1時間) |
現在の使用CPU点数、残りのCPU点数を知るためには、showlim -cコマンドを使います。
下記の2つの方法があります。
以下はjsubを使ってジョブを投入する方法です。
※ゼロからジョブスクリプトを作成するよりも、センター側で用意したサンプルをベースに適宜修正した方が効率的かもしれません。
これらの方法についてはクイックスタートガイドページのジョブ投入ガイドの項目が参考になるかと思います。
スクリプトの最初にバッチコマンドを記述する必要があります。csh, bash (/bin/sh), zsh でのジョブ投入が可能です。
意味 | ヘッダー部 | 重要度 |
---|---|---|
シェル | (csh の場合) #!/bin/csh -f (bash の場合) #!/bin/sh (zsh の場合) #!/bin/zsh |
必須 (どれか一つ) |
使用CPU数 | #PBS -l select=[Nnode:]ncpus=Ncore:mpiprocs=Nproc:ompthreads=Nthread[:jobtype=Jobtype][:ngpus=Ngpu]
|
必須 |
時間制限 | #PBS -l walltime=72:00:00 | 必須 |
ジョブの開始前後に メールで通知 |
#PBS -m abe | オプション |
ジョブの再実行抑止 |
#PBS -r n |
オプション |
バッチジョブ投入 ディレクトリへの移動 |
cd ${PBS_O_WORKDIR} | 推奨 |
#PBS -l select=5:ncpus=128:mpiprocs=64:ompthreads=2
#PBS -l select=10:ncpus=64:mpiprocs=32:ompthreads=2
#PBS -l select=1:ncpus=16:mpiprocs=16:ompthreads=1
#PBS -l select=1:ncpus=16:mpiprocs=1:ompthreads=16:ngpus=1
注意: ノードあたりの GPU 数は 8 で、GPU あたりの CPU コア数(ncpus/ngpus)は 16 以下である必要があります。
#PBS -l select=1:ncpus=64:mpiprocs=32:ompthreads=2:jobtype=largemem
このジョブタイプだけは jobtype=largemem の指定が必須です。
ジョブスクリプトが準備できたら、jsubコマンドを用いてジョブを投入します。
ccfep% jsub [-q HR[0-9]] [-g XXX] [-W depend=(afterok|afterany):JOBID1[:JOBID2...]] script.csh
2022年度の更新で-q H は不要になりました。
計算物質科学スパコン共用事業利用枠としてジョブ投入する場合は、-gオプションをつけます(XXXは計算物質科学スパコン共用事業利用枠のグループ名)。
ジョブの依存関係を-Wオプションで設定できます。正常終了後に実行させる場合はafterok、異常終了後でも実行させる場合はafteranyを指定します。依存関係のあるジョブIDをコロンで区切って指定します。
--step もしくは --stepany オプションをつけることで、比較的簡単にジョブを順番に実行することができます。
ccfep% jsub [-q HR[0-9]] [-g XXX] --step [-W depend=(afterok|afterany):JOBID1[:JOBID2...]] script.csh script2.csh ...
ccfep% jsub -q (PN|PNR[0-9]) [-g XXX] --stepany [-W depend=(afterok|afterany):JOBID1[:JOBID2...]] script.csh script2.csh ...
実行例:
ccfep% jsub --stepany job1.csh job2.csh job3.csh
-v オプションを利用して変数を定義することができます。
変数の名前と値は (変数名)=(値) のコンマ区切りの文字列で指定します。
ccfep% jsub -v INPUT=myfile.inp,OUTPUT=myout.log script.sh
script.sh 中で $INPUT や $OUTPUT がそれぞれ myfile.inp や myout.log に置き換えられます。
-v を複数指定した場合、最後の一つのみが有効になります。ご注意ください。
また、ジョブスクリプトの select= 中の ncpus や jobtype 等の値を置き換えることもできません。
ccfep% jobinfo [-h HOST] [-q QUEUE] [-c|-s|-m|-w] [-n] [-g GROUP|-a] [-n]
以下のオプションで表示する情報を選択します。複数同時に指定することはできません。
何も指定しなければ H 及び専有利用キュー(HR[0-9])のジョブ全てが対象となります。そのため、通常は指定する必要ありません。
利用中/キュー待ち中/ホールド中ジョブの数やCPU数、GPU数を表示します。制限値についても表示されます。
また、各 jobtype の混雑状況も表示されます。
ccfep% jobinfo -s
User/Group Stat:
--------------------------------------------------------------------------------
queue: H | user(***) | group(***)
--------------------------------------------------------------------------------
NJob (Run/Queue/Hold/RunLim) | 1/ 0/ 0/- | 1/ 0/ 0/6400
CPUs (Run/Queue/Hold/RunLim) | 4/ 0/ 0/- | 4/ 0/ 0/6400
GPUs (Run/Queue/Hold/RunLim) | 0/ 0/ 0/- | 0/ 0/ 0/ 48
core (Run/Queue/Hold/RunLim) | 4/ 0/ 0/1200 | 4/ 0/ 0/1200
--------------------------------------------------------------------------------
note: "core" limit is for per-core assignment jobs (jobtype=core/gpu*)Queue Status (H):
----------------------------------------------------------------------
job | free | free | # jobs | requested
type | nodes | cores (gpus) | waiting | cores (gpus)
----------------------------------------------------------------------
week jobs
----------------------------------------------------------------------
1-4 vnodes | 705 | 90240 | 0 | 0
5+ vnodes | 505 | 64640 | 0 | 0
largemem | 0 | 0 | 0 | 0
core | 179 | 23036 | 0 | 0
gpu | 0 | 0 (0) | 0 | 0 (0)
----------------------------------------------------------------------
long jobs
----------------------------------------------------------------------
1-4 vnodes | 325 | 41600 | 0 | 0
5+ vnodes | 225 | 28800 | 0 | 0
largemem | 0 | 0 | 0 | 0
core | 50 | 6400 | 0 | 0
gpu | 0 | 0 (0) | 0 | 0 (0)
----------------------------------------------------------------------
Job Status at 2023-01-29 17:40:12
出力上部の core (Run/Queue/Hold/RunLim) はコア単位で利用する場合の制限値です。
上記出力の場合は最大 1200 コアまで利用できます。jobtype=vnode や jobtype=largemem での利用状況には影響を受けません。
-c オプションを指定すると、ジョブの最新の状態を確認できます。(以前と同様に -l を指定しても問題ありません)
ccfep% jobinfo -c
--------------------------------------------------------------------------------
Queue Job ID Name Status CPUs User/Grp Elaps Node/(Reason)
--------------------------------------------------------------------------------
H 9999900 job0.csh Run 16 zzz/--- 24:06:10 ccc047
H 9999901 job1.csh Run 16 zzz/--- 24:03:50 ccc003
H 9999902 job2.sh Run 6 zzz/--- 0:00:36 ccc091
H 9999903 job3.sh Run 6 zzz/--- 0:00:36 ccc091
H 9999904 job4.sh Run 6 zzz/--- 0:00:36 ccc090
...
H 9999989 job89.sh Run 1 zzz/--- 0:00:11 ccg013
H 9999990 job90.sh Run 1 zzz/--- 0:00:12 ccg010
--------------------------------------------------------------------------------
-c を指定しない場合は、数分ほど古い情報になる場合がありますが、GPU 数や jobtype などの情報も確認できます。
ccfep% jobinfo
--------------------------------------------------------------------------------
Queue Job ID Name Status CPUs User/Grp Elaps Node/(Reason)
--------------------------------------------------------------------------------
H(c) 9999900 job0.csh Run 16 zzz/zz9 24:06:10 ccc047
H(c) 9999901 job1.csh Run 16 zzz/zz9 24:03:50 ccc003
H(c) 9999902 job2.sh Run 6 zzz/zz9 0:00:36 ccc091
H(c) 9999903 job3.sh Run 6 zzz/zz9 0:00:36 ccc091
H(c) 9999904 job4.sh Run 6 zzz/zz9 0:00:36 ccc090
...
H(g) 9999989 job89.sh Run 1+1 zzz/zz9 0:00:11 ccg013
H(g) 9999990 job90.sh Run 1+1 zzz/zz9 0:00:12 ccg010
--------------------------------------------------------------------------------
どこでジョブを実行したのかがわからなくなった場合には -w オプションを追加することで、
ジョブの作業ディレクトリ(PBS_O_WORKDIR)を表示することができます。
ccfep% jobinfo -w
--------------------------------------------------------------------------------
Queue Job ID Name Status Workdir
--------------------------------------------------------------------------------
H 9999920 H_12345.sh Run /home/users/zzz/gaussian/mol23
H 9999921 H_23456.sh Run /home/users/zzz/gaussian/mol74
...
-c とは併用できません。
あらかじめjobinfoコマンドで、取り消したいジョブのRequest IDを調べておきます。その後、
ccfep% jdel RequestID
とします。
キュー待ち状態のジョブを実行されないように留めておく(ホールドする)ことができます。
あらかじめjobinfoコマンド等でジョブIDを調べておいた上で以下のコマンドを実行することでジョブをホールドできます。
ccfep% jhold RequestID
ホールドしたジョブを解放するには、
ccfep% jrls RequestID
とします。
ジョブの終了日時、経過時間、CPU 点数等の情報を joblog コマンドで得ることができます。
ccfep% joblog [-d 日数] [-o item1[,item2[,...]]]
期間指定をしない場合には今年度実行したジョブの情報を表示します。以下のオプションも利用できます。
表示される項目を-oオプションを使ってカスタマイズすることができます。itemには以下のキーワードを指定することができます。
ccfep% joblog -d 10 -o jobid,start,finish,point
ccfep% joblog -y 2020 -o jobid,finish,point,Workdir
ccfep% joblog -d 2 -o all
各種ライブラリ、MPI環境等の導入状況についてはパッケージプログラム一覧のページをご覧下さい。
ジョブスクリプト中、select 行で MPI プロセスの数を mpiprocs に、OpenMP のスレッド数を ompthreads に正しく設定して下さい。
例: 合計 12 CPU で 4 MPI プロセス、3 OpenMP スレッドの場合は ncpus=12:mpiprocs=4:ompthreads=3 となります。
センター側で導入したアプリケーションのサンプル( /apl/(アプリ名)/samples 以下に有り)も参考にして下さい。
jsub で実行する場合、ompthreads で指定した値が自動的に指定されます。
スクリプト内で OMP_NUM_THREADS 環境変数で手動指定しても問題ありません。
当然ですが、jsub で実行しない場合(フロントエンドノードでのテスト場合等)は OMP_NUM_THREADS 環境変数を設定する必要があります。
jsub で実行する場合、MPI が使うホストリストのファイル名が PBS_NODEFILE 環境変数に入ります。
センター側で導入している MPI 環境(Intel MPI, OpenMPI)ではこの環境変数を自動的に読み込むため、
いわゆる machine file 指定を省略して実行できます。
例: 4 MPI * 3 OpenMP ハイブリッド並列の例
#!/bin/sh
#PBS -l select=1:ncpus=12:mpiprocs=4:ompthreads=3:jobtype=core
#PBS -l walltime=24:00:00
cd $PBS_O_WORKDIR
mpirun -np 4 /some/where/my/program options
2018年7月よりEnvironment Modules(moduleコマンド)の利用も可能です。詳細については、こちらのページをご覧ください。
下記の項目を全てご記入の上、rccs-admin[at]ims.ac.jp宛(迷惑メール対策のため、@を[at]に置換しています)に送信してください。
有料ソフトウェアの場合、導入できないことがあります。
jobinfo, jsub, jdel, jhold, jrls, joblog については上に説明があります。
ジョブは通常上記の jsub コマンドで投入しますが、Gaussian だけは g16sub という専用コマンドが用意されています。
Gaussian 09 用の g09sub というコマンドもあります。使い方については g16sub と基本的に同じです。
Gaussian のインプットを直接与えれば、自動でジョブスクリプトを生成、投入します。
ccfep% g16sub [-q "QUE_NAME"] [-j "jobtype"] [-g "XXX"] [-walltime "hh:mm:ss"] [-noedit] \
[-rev "g16xxx"] [-np "ncpus"] [-ngpus "n"] [-mem "size"] [-save] [-mail] input_files
ccfep% g16sub -rev g16c01 -walltime 24:00:00 -np 12 my_gaussian_input.gjf
formchk の実行についてはこちらの FAQ を参考にしてください。
ccfep では waitest コマンドで実行開始時間が予測できます。各ジョブが walltime 一杯まで実行されるという前提の元で実行開始時間を予測します。
そのため、細かな誤差を無視すれば waitest の出力は最悪予測になります。
一方でジョブ種類に依存する優先度や振り分けの設定や救済措置等により後続のジョブに順番を追い抜かれる場合もあるので、確実性はあまり高くありません。
jobinfo -s で出力されるキューの空き状態なども確認した上でご利用ください。
待ち状態にあるジョブの実行開始時間予測:
$ waitest [jobid1] ([jobid2] ...)
指定したジョブスクリプトを投入した場合の開始時間予測:
$ waitest -s [job script1] ([jobscript2] ...)
(ターミナル上では緑や赤の色付けはありません)
[user@ccfep2]$ waitest 4923556
Current Date : 2023-02-15 14:32:30
2023-02-15 14:32:30 ...
2023-02-15 16:40:44 ...
2023-02-15 22:26:07 ...
2023-02-16 00:43:43 ...
2023-02-16 03:03:11 ...
2023-02-16 05:58:00 ...
2023-02-16 11:34:12 ...
Job 4923556 will run at 2023-02-16 13:03:11 on ccc500.
Estimation completed.
[user@ccfep2]$ waitest -s vnode4N1D.sh vnode1N1D.sh
Job Mapping "vnode4N1D.sh" -> jobid=1000000000
Job Mapping "vnode1N1D.sh" -> jobid=1000000001Current Date : 2023-09-06 16:43:10
2023-09-06 16:43:10 ...
2023-09-06 18:43:42 ...
2023-09-06 21:19:19 ...
Job 1000000001 will run at 2023-09-06 21:39:34 on ccf013.
2023-09-06 22:02:09 ...
2023-09-07 01:02:14 ...
2023-09-07 03:34:18 ...
Job 1000000000 will run at 2023-09-07 05:28:07 on ccc428,ccc571,ccc356,ccc708.
Estimation completed.
(優先度や振り分けの関係で、大規模ジョブが小規模ジョブより入りやすいことがあります。)
一般的なジョブの種類については定期的に予測を行っており、その結果は以下のコマンドで確認できます。
[user@ccfep2]$ waitest --showref
ccfep% showlim (-cpu|-c|-disk|-d) [-m]
ccfep% showlim -c
ccfep% showlim -c -m
ccfep% showlim -d -m
remshコマンドを使うと、計算ノードのramdiskのようにフロントエンド(ccfep)から直接アクセスできないファイルへアクセスできます。
remsh hostname command options
remsh cccXXX ls /ramd/users/zzz
remsh cccXXX tail /ramd/users/zzz/99999/fort.10
ジョブを実行しているノード名はjobinfoコマンドより確認できます。
https://ccportal.ims.ac.jp/contact
をご参照下さい。