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

如何让sbatch --array子任务使用命令行传入的非任务ID值?

如何在SLURM数组作业中传入自定义值替代默认任务ID

没问题呀!完全可以实现你想要的效果,这里给你两种常用的解决办法,按需选择就行:

方法一:直接指定自定义数组任务值

这是最简单的方式——你可以直接在--array参数里写你想要的具体值,而不是连续的数字范围。这样SLURM_ARRAY_TASK_ID就会直接等于你设定的这些值。

比如你可以这样提交作业:

sbatch --array=4,6 script.sh

你的script.sh不需要修改,保持原来的内容就行:

#!/bin/bash
VALUE="$SLURM_ARRAY_TASK_ID"
echo $VALUE

执行后,两个作业就会分别输出4和6,正好符合你的需求。

方法二:通过数组映射任务ID到自定义值

如果你需要保持--array的数字范围(比如1-2),但想把每个任务ID映射到其他自定义值,可以在脚本里定义一个数组,用任务ID作为索引来取值。

修改你的script.sh如下:

#!/bin/bash
# 定义你想要的自定义值数组
CUSTOM_VALUES=(4 6)
# 因为SLURM_ARRAY_TASK_ID从1开始,数组索引从0开始,所以要减1
VALUE=${CUSTOM_VALUES[$SLURM_ARRAY_TASK_ID - 1]}
echo $VALUE

然后还是用原来的提交命令:

sbatch --array=1-2 script.sh

这样第一个任务(ID=1)会取数组的第0个元素4,第二个任务(ID=2)取第1个元素6,同样能得到你想要的结果。

这两种方法都能满足你的需求,第一种更直接,第二种适合需要保留原任务ID序列但映射到其他值的场景~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 17:57:31