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

SLURM作业数组$SLURM_ARRAY_TASK_ID失效问题求助

问题排查与解决

你的问题根源在于SLURM指令的拼写错误和重复定义,导致作业数组未正确生效:

核心问题

  1. SLURM指令拼写错误:脚本中所有#SBACTH都是错误写法,正确应为#SBATCH。SLURM只会识别以#SBATCH开头的指令,错误拼写的行被当作普通注释,导致--array参数完全未被加载,作业并非数组模式运行,因此$SLURM_ARRAY_TASK_ID变量为空。
  2. 重复定义数组参数:即使拼写正确,脚本中先后定义了--array=1-2和--array=1,后者会覆盖前者,最终只会运行1个任务。

修正后的批处理脚本

#!/bin/bash 
#SBATCH --time=01:59:00
#SBATCH --array=1-2
#SBATCH --job-name=job_array
#SBATCH --output=log/job-%A-%a.out
#SBATCH --error=log/job-%A-%a.err

echo 'Running code'
echo "Starting task" $SLURM_ARRAY_TASK_ID
python -u parse_test.py --var $SLURM_ARRAY_TASK_ID
echo 'Code done.'

额外验证步骤

  • 提交作业前确保log目录存在,执行mkdir -p log避免SLURM因无法创建目录而报错。
  • 提交后用squeue -u $USER查看任务状态,应显示两个数组任务(后缀为_1和_2)。
  • 确认Python的argparse代码正确接收参数,示例如下:
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--var', type=int, required=True)
args = parser.parse_args()
print(f"Received task ID: {args.var}")

修正后重新提交作业,即可生成两个对应任务ID的输出/错误文件,且$SLURM_ARRAY_TASK_ID能正常传递给Python脚本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:16:03