在Snakemake中,据我所知,我们只能根据作业的尝试次数动态调整作业资源。在尝试在失败后重新调整资源时,从以下类型的群集故障中辨别是有用的:
最后3种情况特别是通过不同的作业完成状态代码向SLURM用户公开。状态脚本的snakemake接口将所有类型的故障合并为单个“失败”状态。
有没有办法这样做?或者这是一个计划的功能?保留以前失败原因的列表,而不仅仅是attempts
计数将是最有用的。
e.g。目标:
rule foo:
resources:
mem_gb=lambda wildcards, attempts: 100 + (20*attempts.OOM)
time_s=lambda wildcards, attempts: 3600 + (3600*attemps.TIMEOUT)
...
我可以访问的集群具有异构机器,其中每个节点都配置了不同的壁挂时间和内存限制,如果我不必一次保守地阻止所有资源,它将最大限度地缩短调度时间。
可能的解决方法:我想到了跟踪作业状态脚本和集群提交脚本之间的额外信息(例如,保留每个jobid的状态代码历史记录)。尝试#是否可用于群集提交和群集状态命令?
答案 0 :(得分:0)
我认为最好在配置文件中处理此类群集特定功能,例如在slurm profile。检测到错误时,状态脚本可以根据slurm报告的内容以静默方式重新提交更新的资源。我不认为Snakefile必须与这些平台细节混杂在一起。