Slurm 脚本和分配核心数

Slurm Scripts and Assigning Number of Cores

所以我开始研究一些基本的 HPC 主题。但是,我有一个非常基本的问题: 如何在 slurm 脚本中分配正确(或所需)数量的内核?

我知道这是一个相当基本的问题,但我无法在网上或教科书中找到任何可以帮助我解决问题的内容。部分 slurm 脚本的图像:

非常感谢任何帮助。

在您显示的片段中,它有选项

#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1

这意味着(就 Slurm 而言)您将启动 1 个进程 (--ntasks=1),该进程可以访问 1 个核心资源 (-cpus-per-task=1)。该进程如何绑定到核心是一个稍微不同的问题,但在大多数 HPC 系统上,这通常意味着调度程序将为您的进程分配 1 个物理核心。

但是,您的片段中还有:

#SBATCH --exclusive
#SBATCH --nodes=1

这些选项通常意味着您要求 独占 访问单个节点(即只允许您的作业 运行 访问该节点)。例如,如果您正在使用的 HPC 系统上的节点具有 64 个物理内核;然后,就目前而言,这个示例片段会要求您使用一个完整的节点(64 个核心),然后指定您只想使用其中的一个(来自 --ntasks=1-cpus-per-task=1)。

如果您想将此更改为要求 32 个进程 运行在 1 个节点上的 32 个内核上以独占访问方式运行,您可以使用类似的东西:

#SBATCH --ntasks=32
#SBATCH --cpus-per-task=1
#SBATCH --exclusive
#SBATCH --nodes=1