memory-management - 作业分配的核心是我在 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。谢谢。
解决方案
Slurm 只能分配核心,不能分配线程。所以,有了这样的配置:
S:C:T
2:26:2
两个线程被分配给每个被请求的核心的作业。不能将两个硬件线程分配给不同的作业。
你可以试试
--ntasks=1 --cpus-per-task=2 --threads-per-core=2
但是,如果您的计算是 CPU 密集型的,这会使您的工作变慢。
推荐阅读
- html - 我的 css 在 bootstrap 4 中不起作用我该如何解决?
- c - 警告 C4244:'function':从 'int' 转换为 'float',可能丢失数据
- tensorflow - TensorFlow 2 中层的动态输入形状
- iterator - 迭代序列后未触发聚合序列中的 OnComplete
- r - 同样的错误来自哪里,执行 LMER 测试?附资料
- java - Java - 如何从 xml 验证文件中捕获所有异常/错误
- javascript - 锁定命令 Discord.js
- python - scrapy/regex 从 html 获取 json_object
- date - SAS 94 如何计算距离下一条记录的天数
- html - 如何在标签后向文本区域添加换行符