You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取SLURM中当前作业按任务分配的节点列表

解决Slurm生成按任务重复的节点列表问题

要生成每个任务对应一行节点名的纯文本列表,可以通过以下两种方法实现:

方法一:利用Slurm环境变量循环生成

Slurm提供了SLURM_JOB_NODELIST(节点列表)和SLURM_TASKS_PER_NODE(每个节点分配的任务数)两个环境变量,结合bash循环即可生成所需列表:

# 获取节点数组和每个节点的任务数数组
nodes=($(scontrol show hostnames $SLURM_JOB_NODELIST))
tasks_per_node=(${SLURM_TASKS_PER_NODE//,/ })

# 循环输出每个节点对应次数
for i in "${!nodes[@]}"; do
    node=${nodes[$i]}
    # 处理形如"3(x1)"的任务数格式,提取纯数字
    count=${tasks_per_node[$i]//(x*)}
    for ((j=0; j<count; j++)); do
        echo "$node"
    done
done

方法二:用srun直接生成

srun会为每个任务执行指定命令,因此只需调用hostname即可让每个任务输出自身所在节点,直接得到目标列表:

srun --ntasks $SLURM_NTASKS hostname

如果需要将结果保存到文件,可直接重定向输出:

srun --ntasks $SLURM_NTASKS hostname > node_list.txt

以上两种方法均会根据Slurm分配的任务数,重复输出对应节点名,完全匹配你需要的格式(比如node1重复3次、node2重复1次)。

内容的提问来源于stack exchange,提问作者Luis M Rodriguez-R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 13:34:53