单个 node/multicore 作业的 sbatch 脚本中是否需要 srun?

Is srun needed in a sbatch script for a single node/multicore job?

我是运行一个很普通的生物信息学tool/commandbowtie2-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 作业,srunmpirun 可用于启动多个进程。但是我确实需要澄清在具有多线程的单节点的情况下使用 srun 。感谢您的帮助!

(顺便说一句:在此特定上下文中,我将多线程等同于多核)。

对于同节点计算(多线程等)srun 不是强制性的,但使用它可以提供更好的控制和来自 Slurm 的更好反馈。

如果您的程序以 srun 启动,Slurm 将更容易管理它(发送 UNIX 信号,如果它使用的资源多于请求的资源则终止它,等等),并且 sstat 命令将能够为您提供近乎实时的内存使用情况、CPU 效率等