首页 > 解决方案 > 作业分配的核心是我在 SLURM 上请求的两倍

问题描述

我试图理解为什么我请求的核心数量是我的 sbatch 作业的两倍。据我所知,我的分区有 106 个线程:

    [.... snake_make]$ sinfo -p mypartition -o %z
S:C:T
2:26:2

然而,对于我的蛇形来说,sbatch 是这样设置的:

模块加载 snakemake/5.6.0 snakemake -s snake_make_tetragonula --cluster-config cluster.yaml --jobs 70
--cluster "sbatch -n 4 -M {cluster.cluster} -A {cluster.account} -p {cluster.分区}"
--latency-wait 10

每个作业被分配了 8 个核心而不是 4 个。当我运行 squeue 时,我看到它一次只能运行多达 12 个作业,这表明尽管我指定了 4 个线程,但它为每个作业使用 8 个核心。此外,当我查看我在 XDMoD 上的工作使用情况时,我发现工作中只有一半的 CPU 被使用。我怎样才能使用尽可能多的 cpu,而不是像当前正在运行的那样加倍?我也试过

--ntasks=1 --cpus-per-task=4

仍然加倍到 8。谢谢。

标签: memory-managementcpu-usagehpcslurmsnakemake

解决方案


Slurm 只能分配核心,不能分配线程。所以,有了这样的配置:

S:C:T
2:26:2

两个线程被分配给每个被请求的核心的作业。不能将两个硬件线程分配给不同的作业。

你可以试试

--ntasks=1 --cpus-per-task=2 --threads-per-core=2

但是,如果您的计算是 CPU 密集型的,这会使您的工作变慢。


推荐阅读