SLURM上的内核如何分配与Snakemake的内存和线程分配相关?



我很难理解分配给snakejob的线程和资源如何转换为slurm分区上每个snakejob分配的核数。我在运行我的蛇形文件的。sh上设置了——cores标志为46,然而,5个snake作业中的每一个都是并发运行的,每个作业都提供了16个内核。规则特定的线程数是否超过了snakemaker的——cores标志?我认为这是我所有工作必须一起工作的最大核心…

同样,内核是基于内存分配的,并且随着指定的线程数量而扩展吗?例如,我的作业每块内存分配10GB,但只有一个线程。根据我的SLURM输出,每个作业都有两个内核。当我指定8个线程和10GB内存时,我得到的却是16个内核。这是否与我给我的工作提供的内存量有关,或者只是为每个线程提供了一个额外的内核以用于内存目的?如有任何帮助,不胜感激。

下面是snake的一个输出:

Building DAG of jobs...
Using shell: /usr/bin/bash
Provided cores: 16
Rules claiming more threads will be scaled down.
Job counts:
count   jobs
1       index_genome
1
[Tue Feb  2 10:53:59 2021]
rule index_genome:
input: /mypath/genome/genomex.fna
output: /mypath/genome/genomex.fna.ann
jobid: 0
wildcards: bwa_extension=.ann
threads: 8
resources: mem_mb=10000
下面是我的bash命令:
module load snakemake/5.6.0
snakemake -s snake_make_x --cluster-config cluster.yaml --default-resources --cores 48 --jobs 47 
--cluster "sbatch -n {threads} -M {cluster.cluster} -A {cluster.account} -p {cluster.partition}" 
--latency-wait 10

当您将slurm与snakemake一起使用时,不幸的是,--cores标志不再意味着核心,而是意味着作业。所以当你设置--cores 48时,你实际上是在告诉snakemake最多使用48个并行作业。

相关问题:"——核心"的行为当使用slurm配置文件时

最新更新