ジョブサービス

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/b200
GPUノード向け環境設定

H200搭載ノードと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" 
  '
job_script.sh

このジョブスクリプトをバッチジョブ形式で実行した結果を先に示します。

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,7
結果(1):ジョブスクリプトファイル例を実行した場合
JobID=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,3
結果(2):--gpus-per-node=4 に変更した場合
JobID=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
結果(3):--partition=p001-b200に変更した場合

ジョブの投入

ジョブスクリプトファイルは 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 が表示されます。

Slurm Workload Manager - Job Reason Codes
These reason codes can be used to identify why a pending job has not yet been started by the scheduler. There may be multiple reasons why a job cannot start, in which case only the reason that was encountered by the attempted scheduling method will be displayed. Refer to the Scheduling Configuration Guide for more details.
https://slurm.schedmd.com/job_reason_codes.html

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リモートコマンドによる状況確認例

sshでのログイン作業や、コマンド実行ではジョブ実行に多少の性能影響がありますのでご理解の上ご利用ください。

投入したジョブの削除

待機中・実行中のジョブは scancel コマンドで削除ができます。

scancel ジョブ番号
(ジョブ番号を指定した待機中・実行中のジョブが削除される。)
ジョブの削除

計算ノードの状況確認

sinfo コマンドで計算ノードの状況をパーティションごとに確認できます。

sinfo
計算ノードの状況確認

STATE欄に表示される主な状態は以下の表の通りです。

状態
意味
状況
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を行っている途中
Slurm Workload Manager - sinfo
About
https://slurm.schedmd.com/sinfo.html#lbAG

コンテナによるアプリケーション実行

計算ノード上では、Singularityコンテナを利用してアプリケーションの実行環境を作成し、計算を実行することができます。これにより、利用者が別環境で作成したコンテナイメージや、外部機関で作成・配布されているコンテナイメージを利用した計算の実行が可能です。

NGC Catalog ではCUDA向けのコンテナイメージが各種提供されています。

GPU-optimized AI, Machine Learning, & HPC Software | NVIDIA NGC
GPU-optimized AI, Machine Learning, & HPC Software | NVIDIA NGC
iconhttps://catalog.ngc.nvidia.com/

また、Docker Hubの公式リポジトリや検証済みリポジトリから、コンテナイメージをダウンロードすることができますが、セキュリティリスクを考慮して、信頼できるコンテナイメージのみを利用するようにしてください。

Docker Hub Container Image Library | App Containerization
Welcome to the world's largest container registry built for developers and open source contributors to find, use, and share their container images. Build, push and pull.
iconhttps://hub.docker.com/
image

Apptainer (Sigularity) によるコンテナ実行

Apptainer (Sigularity)  は、主に HPC(High Performance Computing)環境 で利用されるコンテナ実行基盤です。Dockerと同様に、アプリケーションやその依存関係をパッケージ化して、どの環境でも同じ動作を再現でき、特に研究・科学計算・大規模計算クラスタ環境での実行環境として提供されています。

計算ノードではSingularityCEが利用可能です。現在の運用バージョンは以下の通りです。

singularity-ce version 4.3.3-3.el9
Singularityの運用バージョン
SingularityCE User Guide &mdash; SingularityCE User Guide 4.3 documentation
Welcome to the SingularityCE User Guide!
https://docs.sylabs.io/guides/4.3/user-guide/#

例:LAMMPSの実行

以下では例として、NGC Catalog からLAMMPSのコンテナイメージを取得し、計算ノード上で実行する手順を説明します。

LAMMPS | NVIDIA NGC
Large-scale Atomic/Molecular Massively Parallel Simulator (LAMMPS) is a software application designed for molecular dynamics simulations.
iconhttps://catalog.ngc.nvidia.com/orgs/nvidia/containers/lammps?version=stable_22Jul2025

コンテナイメージの作成

コンテナが提供されるリンクを指定しての実行もできますが、本手順ではコンテナイメージを作成してホーム領域に保存します。

以下はインタラクティブノード上でのコマンド実行です。

(実行ディレクトリの作成)
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.sh
コンテナイメージの作成と、計算に必要なファイルのダウンロード

defファイルから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
ジョブスクリプトファイル job_script.sh

以下のコマンドでジョブを投入します。

sbatch job_script.sh
バッチジョブ投入

Dockerイメージの実行

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イメージの実行方法

直接、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 -L
sqshイメージの実行方法

Slurmコマンドオプション

Slurmについての参考資料として以下が提供されています。ジョブ実行オプションの詳細はリンク先をご参照ください。

Slurm Workload Manager - Quick Start User Guide
Slurm is an open source, fault-tolerant, and highly scalable cluster management and job scheduling system for large and small Linux clusters. Slurm requires no kernel modifications for its operation and is relatively self-contained. As a cluster workload manager, Slurm has three key functions. First, it allocates exclusive and/or non-exclusive access to resources (compute nodes) to users for some ...
https://slurm.schedmd.com/quickstart.html
Slurm Workload Manager - Man Pages
NOTE: This documentation is for Slurm version 25.11. Documentation for other versions of Slurm is distributed with the code
https://slurm.schedmd.com/man_index.html

Slurm チートシート https://slurm.schedmd.com/pdfs/summary.pdf

このページの更新日: 2026年2月19日