我试图理解为什么我请求的核心数量的两倍被分配给我的批处理作业。 据我所知,我的分区有 106 个线程:
[.... snake_make]$ sinfo -p mypartition -o %z
S:C:T
2:26:2
但是对于我的snakemake来说,sbatch设置是这样的:
module load 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.partition}"
--latency-wait 10
每个作业都分配了 8 个核心,而不是 4 个。当我运行 squeue 时,我发现它一次最多只能运行 12 个作业,这表明尽管我指定了它,但每个作业都使用 8 个核心4 个线程。另外,当我在 XDMoD 上查看作业使用情况时,我发现作业中只有一半的 cpu 被使用。如何才能使用所需数量的 cpu,而不是像当前正在运行的那样使数量加倍?我也尝试过
--ntasks=1 --cpus-per-task=4
仍然翻倍到 8。谢谢。
最佳答案
Slurm 只能分配核心,不能分配线程。因此,采用这样的配置:
S:C:T
2:26:2
两个线程被分配给每个正在请求的核心的作业。两个硬件线程不能分配给不同的作业。
你可以尝试一下
--ntasks=1 --cpus-per-task=2 --threads-per-core=2
但是,如果您的计算是 CPU 密集型的,这可能会使您的作业变慢。
关于memory-management - 作业分配的核心数量是我在 SLURM 上请求的两倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66037136/