我有一个软件,需要发送任务的节点的纯文本列表(每个任务一次)。例如,如果我的作业是使用
-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_JOB_CPUS_PER_NODE 和 SLURM_JOB_NODELIST 中的信息组合来提取此信息(尽管第一个变量是否包含所需信息确实取决于 Slurm 的配置)。通过解析和组合环境变量中的信息,您应该能够获得所需的格式。
参见: