我正在运行一个非常常见的生物信息学工具/命令bowtie2-build
。它可以在单个节点上使用多线程(不是MPI类型的作业)。我有以下sbatch脚本(基本上):
#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=6
#SBATCH --mem=15G
#SBATCH --time=3:00:00
bowtie2-build --threads $SLURM_CPUS_ON_NODE GRCh38.fa GRCh38
我在某处读到,每当请求多个CPU时,都必须使用srun
,以便上面的最后一行应为srun bowtie2-build ...
?是真的吗我还了解到,对于MPI作业,srun
或mpirun
均可用于启动多个进程。但是我确实需要澄清在多线程的单节点情况下使用srun
的情况。感谢您的帮助!
(顺便说一句:在这种特殊情况下,我将多线程等同于多核)。
答案 0 :(得分:1)
对于同节点计算(多线程等),srun
不是强制性的,但使用它可以提供更好的控制和Slurm的更好反馈。
如果您的程序以srun
开始,那么Slurm可以更容易地管理它(发送UNIX信号,如果它使用的资源比请求的多,则杀死它,等等),以及sstat
命令将能够为您提供接近实时的内存使用情况,CPU效率等。