HPC集群Slurm提交dada2 R代码无法多线程运行排查求助
HPC集群上dada2 R代码无法并行的排查求助
我在HPC集群上提交的dada2 R代码始终无法并行运行,按dada2官方文档说明,给multithread = #参数指定整数后,该参数会传递给setThreadOptions()以调用对应数量的核心,但实际代码仅使用1个核心。
CPU效率数据
CPU_Efficiency Number_of_CPUs_In_Use 16.30% (0.98 of 6)
Number_of_CPUs_In_Use偶尔会升至1.05,但从未超过该数值。
文档提到加载dada2库即可实现多线程(它会自动加载Rcpp包),但我注意到setThreadOptions()属于RcppParallel包,尝试额外加载该包后依然没有效果。
提交用的Slurm脚本
#! /bin/bash -l #SBATCH --mail-user=mail@mail.de #SBATCH --partition=x #SBATCH --nodes=1 #SBATCH --ntasks=6 #SBATCH --mem=20GB #SBATCH --time=00-12:00:00 #SBATCH --qos=standard module add R-bundle-Bioconductor/3.16-foss-2022b-R-4.2.2 LC_ALL=en_US.UTF-8 R --no-save mpirun -n 1 Rscript script.R ${SLURM_NTASKS}
运行的R脚本(script.R)
setwd("/wd") library("dada2") library("RcppParallel") load("data.RData") ddF <- dada(derepF, err = errF, multithread = 6) ddR <- dada(derepR, err = errR, multithread = 6)
代码运行正常,输出结果符合预期,但就是无法利用多核心并行。我已经尝试过以下操作:
- 在bash脚本中改用
${SLURM_CPUS_PER_TASK}替代${SLURM_NTASKS} - 尝试加载/不加载
RcppParallel包 - 设置
multithread = TRUE
恳请协助排查原因。
内容的提问来源于stack exchange,提问作者user27638173
相关产品推荐
相关产品推荐

