Cluster computing 询问如何在每个节点上启动一次脚本

Cluster computing 询问如何在每个节点上启动一次脚本,cluster-computing,slurm,Cluster Computing,Slurm,我可以通过SLURM获得一个大集群。 我想在每个请求的具有指定数量内核的节点上启动脚本,例如/calc。例如,在2个节点上,每个节点16个核 我从sbatch脚本开始 #SBATCH -N 2 #SBATCH --ntasks-per-node=16 srun -N 1 ./calc 2 & srun -N 1 ./clac 2 & wait 但它并没有像预期的那样工作。 我尝试了很多配置--ntask--nodes--CPU/任务,但都没有成功,我非常迷茫 我也不理解SLU

我可以通过SLURM获得一个大集群。 我想在每个请求的具有指定数量内核的节点上启动脚本,例如
/calc
。例如,在2个节点上,每个节点16个核

我从
sbatch
脚本开始

#SBATCH -N 2
#SBATCH --ntasks-per-node=16

srun -N 1 ./calc 2 &
srun -N 1 ./clac 2 &
wait
但它并没有像预期的那样工作。 我尝试了很多配置
--ntask
--nodes
--CPU/任务
,但都没有成功,我非常迷茫


我也不理解SLURM中任务和CPU之间的区别在您的示例中,您要求SLURM在2个节点上每个节点启动16个任务。作业结束时,slurm可能会运行8x(srun)x2节点任务

对于您的需要,您不需要特别指定想要两个节点,而不是作业必须在两个不同的节点上运行。 对于您的示例,请运行以下sbatch:

#!/bin/bash
#SBATCH --ntasks=2
#SBATCH --cpus-per-task=16
#SBATCH --hint=nomultithread

srun <my program>
#/bin/bash
#SBATCH--ntasks=2
#SBATCH——每个任务的CPU=16
#SBATCH--hint=nomultithread
斯伦

在本例中,slurm将使用16个内核运行2次程序。nomultithread是可选的,取决于集群配置。如果超线程被激活,这将是16个虚拟CPU。

我发现这是一个可行的解决方案。事实证明,最重要的是定义所有参数
节点
任务
CPU

#!/bin/bash

#SBATCH -N 2
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=16

srun -N 1 -n 1 -c 16 ./calc 2 &
srun -N 1 -n 1 -c 16 ./calc 2 &
wait