提问人:Willy 提问时间:11/2/2023 最后编辑:Willy 更新时间:11/2/2023 访问量:22
如何在 SLURM 中将作业发送到不同类型的节点
How to send a job to nodes of different types in SLURM
问:
我在一家 HPC 中心工作,我们使用 SLURM 来管理队列,我正在寻找一种方法来强制将按任务划分的作业发送到不同类型的节点。例如,假设我们有两种类型的节点,分别称为 lpn 和 hpn,我们希望将一个作业划分为两个任务(仅在一个作业 ID 下),并将其中一个任务发送到 lpn 节点,另一个发送到 hpn 节点。哪一个,没关系:它可以是 lpn-1 和 hpn-36、lpn-47 和 hpn-13......但它必须是每一个。这也可能更笼统。
我尝试使用 nodelist 和 contraint 选项,但它们都不适用于强制分配特定和不同类型的节点。每当作业成功发送时,两个任务都会转到同一节点。由于 SLURM 的优化系统,我开始觉得这是不可能的,但无论如何都值得一试。
答:
1赞
damienfrancois
11/2/2023
#1
您也许可以通过提交脚本实现您想要的 het 作业
#!/bin/bash
#
#SBATCH --nodes=1
#SBATCH --constraint=hpn
#SBATCH hetjob
#SBATCH --nodes=1
#SBATCH --constraint=lpn
srun <the command on the `hpn` node> : <the command on the `lpn` node>
假设相应地设置了节点特征。如果不同的节点类型位于两个不同的分区中,这应该也有效,只需将两者替换为 。--constrain=
--partition
请注意命令中的 列出要在每个节点上运行的命令。或者,如果您想要两个不同的步骤,则可以将单行替换为::
srun
srun
srun --hetgroup 0 <the command on the `hpn` node> &
srun --hetgroup 1 <the command on the `lpn` node> &
wait
评论
0赞
Willy
11/7/2023
不幸的是,这不起作用,但它给了我们一个提示,为什么这在我们的集群中似乎是不可能的:因为我们有一条“作业违反会计/QoS 策略”错误消息。我的 HPC 中心多年来一直在使用 SLURM,正如我所看到的,hetjob 选项相对较新,因此我们的配置不允许我们正确地使用 hetjob 来实现我正在处理的目的也就不足为奇了,因为在集群中配置 SLURM 时无法将其考虑在内。我的上级将检查 QoS 配置。多谢!
评论