Slurm sbatch提交数组任务后修改R脚本 待执行任务是否生效
结论
在绝大多数Slurm集群默认使用共享工作目录的配置下,仍在队列中的待执行Slurm数组任务会运行更新后的foo.R文件。
原理说明
- Slurm执行
sbatch提交作业时,仅会将你提交的包含SBATCH参数的Shell脚本本身缓存到Slurm控制节点,不会提前缓存脚本中调用的任意外部依赖文件(包括此处的R脚本、自定义函数文件、输入数据等)。 - 每个数组任务启动时,会在分配到的计算节点上逐行执行已缓存的Shell提交脚本:当运行到
Rscript foo.R这一行命令时,才会实时读取共享工作目录下foo.R的实际内容来执行。 - 如果你在待执行任务启动前修改了
foo.R的内容,任务启动时读取到的就是修改后的新版本文件。
补充说明
该行为和修改提交脚本本身的效果完全不同:如果仅修改提交的Shell脚本内容,已提交的队列中任务不会受影响,因为Slurm已经在提交时保存了Shell脚本的副本,后续任务执行时不会读取修改后的新版Shell脚本。
内容的提问来源于stack exchange,提问作者Z Gu
相关产品推荐
相关产品推荐

