Snakemake WorkflowError: Failed to group jobs together

Snakemake WorkflowError: Failed to group jobs together

背景: 我必须将我的 Snakemake 管道从单节点使用调整为具有资源管理的集群。使用 SLURM 特定的 Snakemake 配置文件,我的规则作为 SLURM 作业成功提交,因此我继续将 Snakemake 指令 resources 添加到每个非本地规则以优化队列调度。这些设置被采纳,我的管道按预期完成。

示例:

rule ruleA:
    group: "group_1_init"
    resources:
        cpus=1,
        time="00:04:00"

rule ruleB:
    group: "group_1_init"
    resources:
        cpus=1,
        time="00:05:00"

ruleAruleB 作为单个作业提交到计算节点。

问题: 我的管道有许多小型的、单一的 CPU 作业,我使用 Snakemake 规则指令 group 将它们合并。这是错误:

WorkflowError:
Failed to group jobs together. Resource time is a string but not all group jobs require the same value. Observed: 00:05:00 != 00:04:00.

我想,每个组应该只有一个 resource 设置,但我找不到关于其背后逻辑的在线资源。

问题:如何在组作业中定义不同的资源需求?应该例如time反映整组作业的计算时间或者Snakemake在组内求和规则时间作为SLURM作业提交的参数。对于 cpus,这将是所有规则中的最大 CPU。

如果不通过附加脚本进行参数转换,资源 time 必须是 整数 并被解释为 分钟 .这是更正:

rule ruleA:
    group: "group_1_init"
    resources:
        cpus=1,
        time=4
rule ruleB:
    group: "group_1_init"
    resources:
        cpus=1,
        time=5