KnowHow

技術的なメモを中心にまとめます。
検索にて調べることができます。

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: 各ノードに割り当てるタスクの数を指定する。
これらのオプションを適切に組み合わせて使用することで、ジョブのリソース割り当てを効率的に管理できます。具体的なジョブの要件に応じて、どちらのオプションを使用するか、または両方をどのように組み合わせるかを決定します。他に具体的な質問や不明点があれば、お知らせください。