【发布时间】:2021-11-24 19:48:18
【问题描述】:
所以我开始研究一些基本的 HPC 主题。但是,我有一个非常基本的问题: 如何在 slurm 脚本中分配正确(或所需)数量的核心?
我很欣赏这是一个相当基本的问题,但我在网上或教科书中找不到任何可以帮助我克服问题的东西。 slurm脚本的一部分图片:
非常感谢任何帮助。
【问题讨论】:
所以我开始研究一些基本的 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 个核心),但随后指定您只想使用其中 1 个(来自--ntasks=1 和-cpus-per-task=1)。
如果您想更改此设置以要求 32 个进程在 1 个具有独占访问权限的节点上的 32 个内核上运行,您可以使用类似:
#SBATCH --ntasks=32
#SBATCH --cpus-per-task=1
#SBATCH --exclusive
#SBATCH --nodes=1
【讨论】: