我想使用 slurm 告诉服务器它可以在每个节点上放置多个作业(直到达到最大值或直到给定阈值)。我想为每个作业使用一个 slurm 文件(和一个 sbatch 命令)来完成此操作。我使用的服务器上的每个节点都有多个核心。我有很多工作,每个工作只需要一个核心。
我找到了多个答案,其中多个作业是从同一个 slurm 文件启动的,但我不想这样做。
我尝试过同时使用
--nodes=1
和--ntasks=1
,但作业仍然只是简单地排队,而不是放在同一个节点上。
我的 slurm 文件是
#!/bin/bash
#SBATCH --partition=<partition-name>
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --output=<outputfile>
#SBATCH --error=<errorfile>
# run command
<command to run>
默认情况下,除非明确配置,否则 Slurm 不会超额订阅节点上的核心。您的作业可能正在排队,因为 SLURM 正在等待完整的节点变得可用,即使只需要一个核心也是如此。
您需要确保 SLURM 配置为允许多个作业共享节点。这通常是通过在 SLURM 配置文件 (
SelectType
) 中设置 SelectTypeParameters
和 slurm.conf
来完成。
SelectType=select/cons_res
SelectTypeParameters=CR_Core
SelectType=select/cons_res:
这会将资源选择插件设置为“消耗资源”,这样可以对 CPU 核心和内存等资源进行更细粒度的控制。
SelectTypeParameters=CR_Core:
这允许 Slurm 根据所需的 CPU 核心数量来调度作业。
您可以通过运行以下命令来检查当前设置:
scontrol show config | grep -E "SelectType|SelectTypeParameters"