SLURMによるTAKSの管理
| 登録日 | :2024/05/21 04:53 |
|---|---|
| カテゴリ | :SLURM |
--cpus-per-task と --ntasks-per-node は、SLURMでジョブの計算リソースを指定するためのオプションですが、それぞれ異なる意味と用途があります。
--cpus-per-task
意味: 各タスクが使用するCPUコアの数を指定します。
用途: マルチスレッドアプリケーションやOpenMPプログラムで、1つのタスクが複数のコアを使用する場合に設定します。
例
#SBATCH --cpus-per-task=4
この設定は、各タスクが4つのCPUコアを使用することを意味します。
--ntasks-per-node
意味: 各ノードに割り当てるタスクの数を指定します。
用途: ノードごとに特定の数のタスクを実行する場合に設定します。各タスクが1つのCPUコアを使用する場合や、複数のタスクを1つのノードで並行して実行する場合に使用されます。
例
#SBATCH --ntasks-per-node=4
この設定は、各ノードに4つのタスクを割り当てることを意味します。
両者の違い
--cpus-per-task
タスク単位: 各タスクが使用するCPUコアの数を指定します。
並列計算: マルチスレッドアプリケーション向けに、1つのタスクが複数のコアを使用するように設定します。
--ntasks-per-node
ノード単位: 各ノードに配置するタスクの数を指定します。
複数タスク: 各ノードで実行されるタスクの数を管理します。
両者を組み合わせた使用例
マルチノード環境で、各ノードに複数のタスクを配置し、各タスクが複数のコアを使用する場合、両方のオプションを組み合わせて使用します。
例: 各ノードに4つのタスクを配置し、各タスクが2つのCPUコアを使用する
#!/bin/bash
#SBATCH --job-name=combined_example
#SBATCH --output=output_%j.txt
#SBATCH --error=error_%j.txt
#SBATCH --nodes=2 # 2つのノードを使用
#SBATCH --ntasks-per-node=4 # 各ノードに4つのタスクを配置
#SBATCH --cpus-per-task=2 # 各タスクが2つのCPUコアを使用
#SBATCH --time=01:00:00 # 実行時間の制限
#SBATCH --partition=compute # 使用するパーティション
# モジュールのロード
module load ansys/CFX
# 環境変数の設定
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK # OpenMP用
# ジョブの実行
srun --mpi=pmi2 cfx5solve -def input.def -par-local -partition $SLURM_NTASKS
まとめ
--cpus-per-task: 各タスクが使用するCPUコアの数を指定する。
--ntasks-per-node: 各ノードに割り当てるタスクの数を指定する。
これらのオプションを適切に組み合わせて使用することで、ジョブのリソース割り当てを効率的に管理できます。具体的なジョブの要件に応じて、どちらのオプションを使用するか、または両方をどのように組み合わせるかを決定します。他に具体的な質問や不明点があれば、お知らせください。