Memory management 作业分配两倍于我在SLURM上请求的内核

Memory management 作业分配两倍于我在SLURM上请求的内核,memory-management,cpu-usage,hpc,slurm,snakemake,Memory Management,Cpu Usage,Hpc,Slurm,Snakemake,我试图理解为什么我请求的两倍数量的内核被分配到我的sbatch作业中。 据我所知,我的分区有106个线程: [.... snake_make]$ sinfo -p mypartition -o %z S:C:T 2:26:2 然而,我的蛇形怪物的斯巴特设置是这样的: 模块负载蛇形图/5.6.0 snakemake-s snake\u make\u tetragonula--cluster config cluster.yaml--jobs 70 --集群“sbatch-n4-M{clu

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

    [.... snake_make]$ sinfo -p mypartition -o %z
S:C:T
2:26:2
然而,我的蛇形怪物的斯巴特设置是这样的:

模块负载蛇形图/5.6.0 snakemake-s snake\u make\u tetragonula--cluster config cluster.yaml--jobs 70
--集群“sbatch-n4-M{cluster.cluster}-A{cluster.account}-p{cluster.partition}”
--延迟等待10

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

--ntasks=1——每个任务的CPU=4


这一数字仍然翻了一番,达到了8。谢谢。

Slurm只能分配核心,不能分配线程。因此,在这种配置下:

S:C:T
2:26:2
为每个被请求的内核分配两个线程。无法将两个硬件线程分配给不同的作业

你可以试试看

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

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

感谢您的澄清。我将每个任务的CPU设置为我根据snakemake规则调用的线程数的一半,现在我的核心数等于分配的线程数,而不是两倍。我将密切关注这些工作,看看它们是否明显较慢。