Snakemake 任务在 SLURM 上失败且没有错误 - 如何调试?

问题描述 投票:0回答:1

我尝试使用

snakemake --slurm -j 200
通过 SLURM 运行多个任务。一些 SLURM 作业失败,但我找不到任何错误消息。
snakemake
打印以下内容:

...
[Thu Sep 28 10:25:04 2023]
Error in rule optimize_network:
    message: SLURM-job '783028' failed, SLURM status is: 'FAILED'
    jobid: 142
    input: data/input/some_input.nc
    output: output_42.nc
    log: .snakemake/slurm_logs/rule_optimize_network/783028.log (check log file(s) for error details)
    shell:
        
        python -c 'import my_func; my_func()'
        
        (one of the commands exited with non-zero exit code; note that snakemake uses bash strict mode!)
...

在某些情况下,这里提到的日志文件根本不存在,有时它不包含任何错误消息。这些任务都是具有不同通配符参数的同一规则的实例。当我只运行其中一个时,例如

snakemake --slurm -j 200 output_42.nc
它有效,所以它似乎与规则或参数没有真正相关。

我可以进一步调试吗? Snakemake如何提交作业?我可以打印执行的 SLURM 命令吗?如何找到错误信息?

slurm snakemake
1个回答
0
投票

我首先要确认您不会立即遇到资源问题。您可以使用 reportseff 查看大量 slurm 作业的资源使用情况。

这将有助于处理已提交但在未向日志写入任何内容的情况下失败的作业。但是,某些作业不生成日志的事实表明作业提交期间出现错误。对于没有日志而失败的作业,它们是否会获得 slurm 作业 ID?我最好的猜测是,您正在针对给定队列的最大作业提交数运行;例如系统管理员只允许给定用户执行 150 个短作业,超过该作业提交就会失败。检查您的 slurm 配置进行确认。如果这是问题所在,您可以限制作业总数或为每个队列添加自定义资源以保持在限制以下。

这些是我典型的 slurm 问题;并且在提交作业之前不创建 slurm 输出目录(但 Snakemake 应该自动执行此操作)。

© www.soinside.com 2019 - 2024. All rights reserved.