ジョブサービス
GPUノード上でジョブを実行する方法には、「インタラクティブジョブ」と「バッチジョブ」の2つがあります。どちらの実行方法も、契約ノード数の範囲でご利用いただけます。インタラクティブジョブ、バッチジョブともに、インタラクティブノード上で操作を行います。
インタラクティブジョブ | バッチジョブ | |
実行方法 | 計算ノードにログインした状態でコマンドを対話的に実行する | スクリプトを作成し、ジョブとしてキューに投入する |
コマンド例 | srun --pty bash や salloc でシェルを起動 | sbatch jobscript.sh でジョブスクリプトを送信 |
利用目的 | デバッグ、テスト、小規模な実験など | 本番実行、大規模計算、長時間処理など |
実行タイミング | リソースが割り当てられ次第すぐ実行(即時性重視) | キューで順番待ちし、リソースが確保されると実行開始 |
操作性 | 利用者がリアルタイムでコマンドを入力・確認できる | 実行後は非対話的、結果はログファイルで確認 |
入出力 | 標準入出力(ターミナル)で直接確認 | 標準出力・エラー出力はファイルにリダイレクト |
典型的な用途 | プログラムの動作確認、デバッグ、短時間試行 | 大規模計算や自動化されたジョブ |
中断時の影響 | ターミナルを閉じるとジョブが終了する | バックグラウンドで実行され、ターミナルに依存しない |
スクリプトの必要性 | 必須ではない(コマンド直接入力) | 必須(#!/bin/bash などのスクリプトで設定) |
利点 | すぐ試せてデバッグしやすい | 自動化・再現性・長時間実行に向く |
欠点 | リソースを占有しやすく、再現性が低い | 即時性がなく、デバッグには不向き |
パーティションの指定
実際に使用するパーティション名は、契約されたGPU種類とノード数を元にシステム管理者から指定されます。
以下の説明ではパーティションの例として「p001-h200」と「p001-b200」を使用します。
パーティション例
- p001-h200:H200搭載の計算ノードを10ノード利用可能
- p001-b200:B200搭載の計算ノードを10ノード利用可能
moduleコマンドによる環境設定
H200搭載の計算ノードとB200搭載の計算ノードを利用する際には、それぞれの計算ノードに合わせたシステム環境変数を、moduleコマンドで設定する必要があります。
srunコマンドによるインタラクティブジョブ実行の前にも、利用する計算ノード向けのシステム環境設定を行ってください。sbatchコマンドによるバッチジョブ実行の場合は、ジョブスクリプトファイル中に記載を行ってください。
(H200ノードでジョブ実行する場合)
module load gpu-environment/h200
または
module switch gpu-environment/h200
(B200ノードでジョブ実行する場合)
module load gpu-environment/b200
または
module switch gpu-environment/b200H200搭載ノードとB200搭載ノードを使い分ける場合は、環境変数のコンフリクトエラーを回避するために、module switch コマンドの利用をお勧めします。
インタラクティブジョブ
インタラクティブジョブ形式は、計算ノードにログインした状態でジョブを実行する方式です。
- 1ノード内の8つのGPUまで利用できます。
- 会話型実行なので、コマンドの実行結果が画面に表示されます。
コマンド例:パーティション p001-h200の1GPUを利用するインタラクティブジョブを、bashで起動する。各コマンドを実行した後、exit で利用を終了する。
module switch gpu-environment/h200
srun -p p001-h200 --gres=gpu:1 --pty bash
(計算ノードにログインした状態)
(各コマンドを実行)
exitバッチジョブ
バッチジョブ形式は、ジョブスクリプトにジョブ実行オプションと実行するスクリプトを記述し、それに従ってGPUノード上でジョブの実行する方式です。
- 複数のGPUノードを同時に利用できます。
- コマンドの実行結果は、標準出力、標準エラー出力ファイルとして生成されます。
ジョブスクリプトファイルの作成
バッチジョブ形式での実行は、テキスト形式でジョブスクリプトファイルを作成します。
ジョブスクリプトファイル例:パーティションp001-h200の各計算ノードで確保されたGPUのIDを取得する。
#!/bin/bash
#SBATCH --partition=p001-h200 #パーティションを指定
#SBATCH --nodes=2 #利用ノード数
#SBATCH --gpus-per-node=8 #各ノードの利用GPU数
#SBATCH --time=00:10:00 #実行時間制限
#SBATCH --job-name=example #ジョブ名を指定
module switch gpu-environment/h200
set -eu
echo "JobID=$SLURM_JOB_ID Nodes=$SLURM_NNODES"
echo "Allocated nodes:"
scontrol show hostnames $SLURM_JOB_NODELIST
srun --nodes=$SLURM_NNODES --label bash -lc '
echo "===== $(hostname) ====="
echo "CUDA_VISIBLE_DEVICES=$CUDA_VISIBLE_DEVICES"
'このジョブスクリプトをバッチジョブ形式で実行した結果を先に示します。
JobID=10000 Nodes=2
Allocated nodes:
isk-h200gpu001 <-H200のクラスタ群から2ノード確保
isk-h200gpu002
0: ===== isk-h200gpu001 =====
0: CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 <-各計算ノードで8GPUを確保
1: ===== isk-h200gpu002 =====
1: CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7JobID=10001 Nodes=2
Allocated nodes:
isk-h200gpu001
isk-h200gpu002
0: ===== isk-h200gpu001 =====
0: CUDA_VISIBLE_DEVICES=0,1,2,3 <-各計算ノードで4GPUを確保
1: ===== isk-h200gpu002 =====
1: CUDA_VISIBLE_DEVICES=0,1,2,3JobID=10002 Nodes=2
Allocated nodes:
isk-b200gpu001 <-B200のクラスタ群から2ノード確保
isk-b200gpu002
0: ===== isk-b200gpu001 =====
0: CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
1: ===== isk-b200gpu002 =====
1: CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7ジョブの投入
ジョブスクリプトファイルは sbatch コマンドでジョブ投入します。
sbatch job_script.sh
(コマンド実行後)
Submitted batch job 10000
(ジョブ番号が割当てられる。)ジョブの状況確認
待機中・実行中のジョブは squeue コマンドで確認します。
squeue
(コマンド実行後)
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
10000 p001-h200 example userID R 0:02 2 isk-h200gpu[001-002]
(待機中・実行中のジョブ状況が表示される。ジョブ終了後は一覧から削除される。)ST(STATE)の欄が「R」になっている場合はジョブが実行中、「PD」になっている場合は資源の確保待ち・依存ジョブ待ちなどで未開始の状況です。ジョブが開始されず、待ち状態になっている理由を参照するには、NODELIST (REASON)欄に Reason Code が表示されます。
sshによる状況確認
ジョブが実行されている計算ノードに対してはジョブ投入したアカウントでのみ、sshでのログインまたはコマンド実行が可能です。
以下はGPUの利用状況を確認する nvidia-smi コマンドを実行して、ジョブ実行中ノードの稼働状況を確認するコマンド例です。
ssh <ジョブ実行中のノード名> 'nvidia-smi --query-gpu=name,utilization.memory,utilization.gpu'
(コマンド実行後)
name, utilization.memory [%], utilization.gpu [%]
NVIDIA H200, 84 %, 100 %
NVIDIA H200, 84 %, 100 %
NVIDIA H200, 84 %, 100 %
NVIDIA H200, 84 %, 100 %
NVIDIA H200, 84 %, 100 %
NVIDIA H200, 84 %, 100 %
NVIDIA H200, 84 %, 100 %
NVIDIA H200, 84 %, 100 %sshでのログイン作業や、コマンド実行ではジョブ実行に多少の性能影響がありますのでご理解の上ご利用ください。
投入したジョブの削除
待機中・実行中のジョブは scancel コマンドで削除ができます。
scancel ジョブ番号
(ジョブ番号を指定した待機中・実行中のジョブが削除される。)計算ノードの状況確認
sinfo コマンドで計算ノードの状況をパーティションごとに確認できます。
sinfoSTATE欄に表示される主な状態は以下の表の通りです。
状態 | 意味 | 状況 |
idle (IDLE) | アイドル状態(ジョブ未割当) | 新しいジョブを受け入れ可能 |
alloc (ALLOCATED) | ジョブに割り当て済み | ジョブ実行中のノード |
mix (MIXED) | 一部割り当て中 | ノード内の一部CPUが使用中 |
comp (COMPLETING) | 完了処理中 | ジョブ終了後のクリーンアップ中 |
down (DOWN) | 使用不可 | 管理者が停止、または障害でOFFLINE扱い |
drain (DRAIN) | 排出状態 | メンテナンスや障害で新規ジョブ受入不可 |
drng (DRAINING) | 排出中 | 実行中ジョブ終了後にDRAINへ移行予定 |
maint (MAINT) | メンテナンス | 管理者による停止・検証モード |
fail (FAIL) | ノード障害検出 | health check等で異常検出された状態 |
resv (RESERVED) | 予約専用 | 特定ジョブまたはユーザ予約に使用中 |
power_down / power_up | 電源制御中 | 電源のON/OFFを行っている途中 |
コンテナによるアプリケーション実行
計算ノード上では、Singularityコンテナを利用してアプリケーションの実行環境を作成し、計算を実行することができます。これにより、利用者が別環境で作成したコンテナイメージや、外部機関で作成・配布されているコンテナイメージを利用した計算の実行が可能です。
NGC Catalog ではCUDA向けのコンテナイメージが各種提供されています。
また、Docker Hubの公式リポジトリや検証済みリポジトリから、コンテナイメージをダウンロードすることができますが、セキュリティリスクを考慮して、信頼できるコンテナイメージのみを利用するようにしてください。

Apptainer (Sigularity) によるコンテナ実行
Apptainer (Sigularity) は、主に HPC(High Performance Computing)環境 で利用されるコンテナ実行基盤です。Dockerと同様に、アプリケーションやその依存関係をパッケージ化して、どの環境でも同じ動作を再現でき、特に研究・科学計算・大規模計算クラスタ環境での実行環境として提供されています。
計算ノードではSingularityCEが利用可能です。現在の運用バージョンは以下の通りです。
singularity-ce version 4.3.3-3.el9例:LAMMPSの実行
以下では例として、NGC Catalog からLAMMPSのコンテナイメージを取得し、計算ノード上で実行する手順を説明します。
コンテナイメージの作成
コンテナが提供されるリンクを指定しての実行もできますが、本手順ではコンテナイメージを作成してホーム領域に保存します。
以下はインタラクティブノード上でのコマンド実行です。
(実行ディレクトリの作成)
mkdir $HOME/lammps_test && cd $HOME/lammps_test
(コンテナイメージの作成)
singularity build lammps_22Jul2025.sif docker://nvcr.io/nvidia/lammps:stable_22Jul2025
(インプットファイルと実行スクリプトファイルのダウンロード)
curl -L -O https://www.lammps.org/inputs/in.lj.txt
curl -L -O https://gitlab.com/NVHPC/ngc-examples/-/raw/master/lammps/single-node/run_lammps.sh
chmod +x run_lammps.shdefファイルからsifファイルの作成もユーザ権限で可能です。
singularity build image.sif recipe.defインタラクティブジョブでの実行
srunコマンドでインタラクティブジョブを開始し、会話型でLAMMPSを実行します。実行後はディレクトリにLAMMPSのログファイルが作成されます。
(インタラクティブジョブの開始 B200の8GPUを確保)
module switch gpu-environment/b200
srun -p p001-b200 --gres=gpu:8 --pty bash
(計算ノードにログインした状態)
(インプットファイルと実行スクリプトファイルのあるディレクトリに移動)
cd $HOME/lammps_test
(実行時環境変数の指定)
export PMIX_MCA_psec=native
(コンテナイメージのLAMMPSを実行)
singularity run --nv -B $PWD:/host_pwd --pwd /host_pwd lammps_22Jul2025.sif ./run_lammps.sh
exit
(計算終了後 インタラクティブジョブを終了)バッチジョブでの実行
ジョブスクリプトファイル job_script.sh を作成し、sbatchコマンドでジョブ投入します。実行後はディレクトリにLAMMPSとSlurm実行のログファイルが作成されます。
#!/bin/bash
#SBATCH --partition=p001-b200 #パーティションを指定
#SBATCH --nodes=1 #利用ノード数
#SBATCH --gpus-per-node=8 #各ノードの利用GPU数
#SBATCH --time=00:10:00 #実行時間制限
#SBATCH --job-name=lammps_test #ジョブ名を指定
module switch gpu-environment/b200
cd $HOME/lammps_test
export PMIX_MCA_psec=native
singularity run --nv -B $PWD:/host_pwd --pwd /host_pwd lammps_22Jul2025.sif ./run_lammps.sh以下のコマンドでジョブを投入します。
sbatch job_script.shDockerイメージの実行
Slurmオプションを指定することで、Dockerイメージを直接実行することが可能です。Slurm enroot/pyxisの機能を用いています。
srun \
--partition=p001-b200 --gres=gpu:8 --time=00:10:00 \
--container-image=docker://nvcr.io/nvidia/pytorch:25.08-py3 \
nvidia-smi -L直接、DockerイメージのURLを指定すると、毎回ダウンロードが行われるため、事前のダウンロードとsqshイメージを作成して実行することも可能です。
enroot import docker://nvcr.io/nvidia/pytorch:25.08-py3
srun \
--partition=p001-b200 --gres=gpu:8 --time=00:10:00 \
--container-image=(ファイルまでのフルパス)/nvidia+pytorch+25.08-py3.sqsh \
nvidia-smi -LSlurmコマンドオプション
Slurmについての参考資料として以下が提供されています。ジョブ実行オプションの詳細はリンク先をご参照ください。
Slurm チートシート https://slurm.schedmd.com/pdfs/summary.pdf