【发布时间】:2021-04-22 11:12:44
【问题描述】:
我在使用 Slurm 数组时遇到了一些问题,因为它们占用的 CPU 数量是请求的两倍。
我们有一个具有 60 个内核的节点可用于 Slurm 队列,当我启动一个具有 24 个 CPU 的玩具数组示例时,sinfo 告诉他们正在使用 48 个 CPU。这是我运行的玩具示例:
sbatch --array=1-24 -N1 test_script.sh
这是 test_script.sh 的内容:
#!/bin/bash
#SBATCH --output=job.%J.out
#SBATCH --error=job.%J.err
#SBATCH --job-name="array_test"
#SBATCH --cpus-per-task=1
#SBATCH --ntasks=1
echo "My SLURM_ARRAY_TASK_ID: " $SLURM_ARRAY_TASK_ID
sleep 60
奇怪的是,当我使用 squeue -o "%.15i %.25j %.8u %.2t %.9P %C %.6D %R %.10M %e %l" 检查每个用户使用的内核时,slurm 只计算用户请求的内核(在本例中为 24)。但是当我在这里检查 sinfo sinfo -p day -N -o "%.5a %.6t %N %C" 使用了多少个内核时,我看到实际使用了 48 个内核。
我一直在玩测试脚本中的 sbatch 选项,比如 --cpus-per-task 和 --ntasks,但到目前为止我还没有解决问题。
我们在 CentOS 7 机器上使用 Slurm 16.05.10-2。
非常感谢您的帮助!
【问题讨论】:
-
您能否发布 slurm.conf 的 SelectType 行以及显示节点和分区的部分?听起来 Slurm 正在分配完整内核的数量(24),但 sinfo 显示线程的数量(48)。