微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

作业分配的内核是我在 SLURM 上请求的两倍

如何解决作业分配的内核是我在 SLURM 上请求的两倍

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

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

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

模块加载snakemake/5.6.0 蛇形-s 蛇形-四角形--cluster-config cluster.yaml --jobs 70
--cluster "sbatch -n 4 -M {cluster.cluster} -A {cluster.account} -p {cluster.partition}"
--延迟等待 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 密集型的,这可能会使您的工作变慢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。