如何解决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
--cpus-per-task
的许多配置,但没有任何效果,我非常迷茫。
解决方法
在您的示例中,您要求 slurm 在 2 个节点上为每个节点启动 16 个任务。在作业结束时,slurm 可能会运行 8x(srun)x2 个节点任务。
根据您的需要,您无需特别指定需要 2 个节点,而不是作业必须在 2 个不同的节点上运行。 对于您的示例,请运行以下 sbatch :
#!/bin/bash
#SBATCH --ntasks=2
#SBATCH --cpus-per-task=16
#SBATCH --hint=nomultithread
srun <my program>
在这个例子中,slurm 将运行 2 次 16 核的程序。 nomultithread 是可选的,取决于集群配置。如果超线程被激活,这将是16个虚拟CPU。
,我发现这是一个可行的解决方案。原来最重要的是定义所有参数 nodes
tasks
cpus
#!/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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。