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

如何让Slurm脚本读取文件名列表并批量提交数组任务

实现Slurm数组任务读取外部文件名列表

步骤1:创建文件名列表文件

先把所有要处理的文件名按顺序写入一个文本文件,比如命名为file_list.txt,每行一个文件名,对应数组任务的序号:

file_a.txt
file_b.txt
file_c.txt
file_d.txt
file_e.txt
file_f.txt
file_g.txt
file_h.txt
file_i.txt
file_j.txt

(注意:第1行对应数组任务ID=1,第2行对应ID=2,以此类推,确保顺序和你需要的任务对应关系一致)

步骤2:修改Slurm脚本

更新你的Slurm脚本,添加数组任务配置,并通过任务ID读取对应文件名。以下是完整示例:

#!/bin/bash
#SBATCH --job-name=python_array_job
#SBATCH --array=1-10  # 启动10个任务,ID从1到10
#SBATCH --output=job_%A_%a.out  # 每个任务生成独立日志,%A是主任务ID,%a是数组任务ID
#SBATCH --error=job_%A_%a.err

# 从file_list.txt中读取对应行的文件名
INPUT_FILE=$(sed -n "${SLURM_ARRAY_TASK_ID}p" file_list.txt)

# 运行你的Python脚本,传入文件名参数
python your_script.py "$INPUT_FILE"

关键细节说明

  • $SLURM_ARRAY_TASK_ID是Slurm自动为每个数组任务分配的唯一ID,范围就是你设置的1-10
  • 使用sed -n "${SLURM_ARRAY_TASK_ID}p"可以精准提取file_list.txt中第N行的内容,N就是当前任务的ID
  • 日志文件用%A_%a命名,能避免不同任务的日志互相覆盖,方便后续排查问题

提交脚本的命令还是和之前一样:sbatch your_slurm_script.sh

内容的提问来源于stack exchange,提问作者user1551817

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 11:05:54