微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SLURM 如何为每个节点启动一次脚本

如何解决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 中任务和 cpu间的区别

解决方法

在您的示例中,您要求 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 举报,一经查实,本站将立刻删除。