如何获取SLURM中分配给当前作业的节点列表?

问题描述 投票:0回答:1

我有一个软件,需要发送任务的节点的纯文本列表(每个任务一次)。例如,如果我的作业是使用

-n 4 -c 1
启动的,并且我在
node1
中获得 3 个 CPU,在
node2
中获得 1 个 CPU,我希望获得如下文件:

node1
node1
node1
node2

如何获得这样的列表?

我尝试使用:

scontrol show hostnames $SLURM_JOB_NODELIST

但这仅在所有任务都分配给单独的节点时才有效。在上面的例子中,这只会导致:

node1
node2

因此软件只会向每个节点发送一个任务,并且未充分利用

node1
中分配的CPU。

谢谢! 米格尔。

slurm hpc
1个回答
0
投票

您通常可以在作业脚本中使用环境变量 SLURM_JOB_CPUS_PER_NODE 和 SLURM_JOB_NODELIST 中的信息组合来提取此信息(尽管第一个变量是否包含所需信息确实取决于 Slurm 的配置)。通过解析和组合环境变量中的信息,您应该能够获得所需的格式。

参见:

https://slurm.schedmd.com/sbatch.html#lbAK

© www.soinside.com 2019 - 2024. All rights reserved.