作业分配的内核是我在 SLURM 上请求的两倍
Jobs allocate twice the cores that I request on SLURM
我想了解为什么分配给我的 sbatch 作业的内核数量是我请求的两倍。
据我所知,我的分区有 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 个作业,这表明它尽管我指定了 4 个线程,但每个作业都使用 8 个内核。此外,当我在 XDMoD 上查看我的工作使用情况时,我发现工作中只有一半的 cpus 被使用。我怎样才能使用尽可能多的 cpu,而不是像目前 运行ning 那样加倍?我也试过
--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 密集型,这会使您的工作变慢。
我想了解为什么分配给我的 sbatch 作业的内核数量是我请求的两倍。 据我所知,我的分区有 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 个作业,这表明它尽管我指定了 4 个线程,但每个作业都使用 8 个内核。此外,当我在 XDMoD 上查看我的工作使用情况时,我发现工作中只有一半的 cpus 被使用。我怎样才能使用尽可能多的 cpu,而不是像目前 运行ning 那样加倍?我也试过
--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 密集型,这会使您的工作变慢。