使用Slurm提交任务数组失败求助:任务未批量生成变量无输出
问题分析与解决
核心错误原因
你提交任务的方式完全错误:
- 使用
sbatch --wrap="bash test.sh"时,Slurm只会把bash test.sh当作单一任务的命令执行,不会解析test.sh内部的#SBATCH注释参数。脚本里的--array=1-6等配置被直接忽略,自然不会生成6个任务数组,$SLURM_ARRAY_TASK_ID环境变量也不会被Slurm设置。 - 直接执行
bash test.sh是在本地终端运行脚本,根本没提交到Slurm集群,Slurm的环境变量和任务调度逻辑完全不生效。
正确提交方式
直接把test.sh作为参数传给sbatch即可,不需要额外的--wrap或bash:
sbatch test.sh
这样Slurm会读取test.sh开头的所有#SBATCH注释,正确解析数组配置,生成6个任务。每个任务都会设置对应的$SLURM_ARRAY_TASK_ID,并生成test_1.out到test_6.out共6个输出文件。
验证方法
提交后用squeue -u $USER查看任务列表,能看到6个处于Pending或Running状态的任务,每个任务名称后会带_1到_6的数组标识。任务完成后查看输出文件,比如cat test_3.out,应该能看到:
TEST MESSAGE 1 3 TEST MESSAGE 2
内容的提问来源于stack exchange,提问作者user1551817
相关产品推荐
相关产品推荐

