SLURMの使い方 †SLURMとはオープンソースソフトウェアの、ジョブスケジューラーの1つで、ohtakaで計算ジョブを投入する際にしようします。 以下にSLURMで主に使用するコマンドの簡単な使い方を記述します。 コマンド †sbatch †ジョブを投入するときに使用します。 run.shという名前のジョブスクリプトを実行するときには以下のコマンドを実行します。 sbatch run.sh squeue †ジョブの実行状況を確認するときに使用します。 以下のコマンドを実行すると、実行中のジョブの情報が表示されます。 squeue scancel †ジョブをキャンセルするときに使用します。 scancelを実行してからjob_id(JobID以下に表示)を確認し、以下を実行します。 scancel <job_id> scontrol †投入した、あるいは実行中のジョブの詳細を表示するときに使用します。 scontrol show job <job_id> sacct †投入した、あるいは実行中のジョブの詳細を表示するときに使用します。 実行中のジョブの経過時間と実行時間の上限は以下のようにして表示することができます。 sacct -j <job_id> --format=JobID,Elapsed,Timelimit 詳細はmanコマンドを実行してマニュアルを読むのが良いでしょう。 pstat †これはSLURMのコマンドではありませんが、東京大学物性研究所スーパーコンピュータohtaka上で各パーティションのジョブの数を確認することができるコマンドです。 ジョブスクリプトの例 †デバッグ用キュー/パーティション(i8cpu)を使用してSTATEを実行する場合のサンプルのジョブスクリプト。 #!/bin/sh #SBATCH -J state_test #SBATCH -p i8cpu #SBATCH -N 2 #SBATCH -n 64 #SBATCH -c 4 #SBATCH -t 00:30:00 module purge module load oneapi_compiler/2022.1.2 oneapi_mpi/2022.1.2 oneapi_mkl/2022.1.2 export FI_PROVIDER=psm3 export MKL_NUM_THREADS=1 srun ./STATE < nfinp_1 > nfout_1 ここでプログラム`STATE`と擬ポテンシャル(あるいはそれらのシンボリックリンク)は作業ディレクトリにあり、入力(出力)ファイルは`nfinp_1`(`nfout_1`)とします。 各行の簡単な説明 †
使用するノード、MPI、およびスレッド並列数について †ohtakaのCPUノードは2 CPU(64 core)で構成されており1ノードあたり128 coreが利用可能です。 従って、例えば2ノード使用する場合、合計256 coreの利用が可能です。その範囲内でMPI並列数×スレッド並列数が256以下になるように並列数を指定する必要があります。以下のような可能性が考えられます。 #SBATCH -N 2 #SBATCH -n 64 #SBATCH -c 4 以下のような並列数の指定も可能でしょう。 #SBATCH -N 2 #SBATCH -n 128 #SBATCH -c 2 MPI/スレッド並列数は実行時間を比較して最適なものを指定するのが良いでしょう。 計算規模が大きい場合にはメモリが不足してプログラムの実行できない場合があります。 そのような場合にはスレッド並列数を大きくすることでプログラムを実行できるようになることがあります。 |