单个 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 作业,srun
或 mpirun
可用于启动多个进程。但是我确实需要澄清在具有多线程的单节点的情况下使用 srun
。感谢您的帮助!
(顺便说一句:在此特定上下文中,我将多线程等同于多核)。
对于同节点计算(多线程等)srun
不是强制性的,但使用它可以提供更好的控制和来自 Slurm 的更好反馈。
如果您的程序以 srun
启动,Slurm 将更容易管理它(发送 UNIX 信号,如果它使用的资源多于请求的资源则终止它,等等),并且 sstat
命令将能够为您提供近乎实时的内存使用情况、CPU 效率等
我是运行一个很普通的生物信息学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 作业,srun
或 mpirun
可用于启动多个进程。但是我确实需要澄清在具有多线程的单节点的情况下使用 srun
。感谢您的帮助!
(顺便说一句:在此特定上下文中,我将多线程等同于多核)。
对于同节点计算(多线程等)srun
不是强制性的,但使用它可以提供更好的控制和来自 Slurm 的更好反馈。
如果您的程序以 srun
启动,Slurm 将更容易管理它(发送 UNIX 信号,如果它使用的资源多于请求的资源则终止它,等等),并且 sstat
命令将能够为您提供近乎实时的内存使用情况、CPU 效率等