PBSPro集群使用--immediate-submit时依赖字符串适配问题咨询
我来帮你逐一解答这两个问题:
1. --immediate-submit参数下{dependencies}的内容是什么?
当你使用--immediate-submit参数时,{dependencies}字符串包含的不是作业ID,而是依赖规则对应的脚本文件路径。
原因很简单:这个参数会让Snakemake一次性提交所有作业,不会等依赖作业完成后再提交后续任务。这时候依赖作业还没被提交到集群,Snakemake根本拿不到它们的作业ID,只能用对应的脚本路径来替代。
2. 你当前的PBSPro适配方式是否可行?
很遗憾,你现在的写法在搭配--immediate-submit使用时不可行,核心问题在于:
PBSPro的-W depend=afterok:选项需要的是作业ID,但--immediate-submit模式下{dependencies}输出的是脚本路径。你用sed把这些路径转换成depend=afterok:路径1:路径2的格式,集群完全无法识别这些路径作为依赖的作业,自然不会正确处理任务间的依赖关系。
如果想在PBSPro上正确处理作业依赖,有两个方向可以调整:
- 去掉
--immediate-submit参数:这时候Snakemake会等待依赖作业完成并获取到它们的作业ID,{dependencies}会被替换为空格分隔的作业ID列表。你当前的sed处理逻辑(把空格换成冒号,加上depend=afterok:前缀)就完全可行了,集群能正确识别这些作业ID并按依赖顺序执行任务。 - 如果必须用
--immediate-submit:这种情况下很难通过常规方式实现正确的依赖管理,因为PBSPro本身是基于作业ID来追踪依赖的。强行用脚本路径关联作业容易出现各种问题,并不推荐这种做法。
内容的提问来源于stack exchange,提问作者Koppology
相关产品推荐
相关产品推荐

