SLURM 上的内核如何分配与 Snakemake 的内存和线程分配相关?
How are cores on SLURM allocated in relation to memory and thread allocation with Snakemake?
我无法理解分配给 snakejob 的线程和资源如何转换为我的 slurm 分区上每个 snakejob 分配的内核数。我在运行我的 snakefile 的 .sh 上将 --cores 标志设置为 46,
然而 5 个 snakejobs 中的每一个都同时 运行,每个都提供了 16 个核心。特定于规则的线程编号是否会取代 snakemake 的 --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,它表示 jobs .. 所以当你设置 --cores 48
时,你实际上是在告诉 snakemake 最多使用 48 个并行作业。
相关问题:
Behaviour of "--cores" when using Snakemake with the slurm profile
我无法理解分配给 snakejob 的线程和资源如何转换为我的 slurm 分区上每个 snakejob 分配的内核数。我在运行我的 snakefile 的 .sh 上将 --cores 标志设置为 46, 然而 5 个 snakejobs 中的每一个都同时 运行,每个都提供了 16 个核心。特定于规则的线程编号是否会取代 snakemake 的 --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,它表示 jobs .. 所以当你设置 --cores 48
时,你实际上是在告诉 snakemake 最多使用 48 个并行作业。
相关问题: Behaviour of "--cores" when using Snakemake with the slurm profile