使用slurm脚本运行其他snakemake slurm作业

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

我有一个功能性的snakemake配置文件,用于使用SLURM在HPC上运行作业。如果我在本地运行此脚本,作业将并行提交,并且一切都会按预期进行。

但是,这个管道需要一段时间,而且我必须通过 VPN 进入受保护的环境才能处理这些数据,因此我不能让我的终端永远保持打开状态,因为 VPN 会超时。

所以我想使用一个 .sbatch 脚本来帮我处理这个问题。至少,类似:

#!/bin/bash
#SBATCH --account=<acct>
#SBATCH --partition=<part>
#SBATCH --time=48:00:00
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --output=./logs/log.out
#SBATCH --error=./logs/log.out

# Move to snakemake directory. 
cd path/to/workdir

# Make logs directory.
mkdir -p logs

# Load environment. 
ml miniconda3/latest
module use ~/MyModules
source /path/to/miniconda/etc/profile.d/conda.sh
conda activate snakemake

# Run preprocessing pipeline.
snakemake --slurm --profile profile/cluster/

但是,当我这样做时,我的作业失败并显示错误消息:

srun: fatal: SLURM_MEM_PER_CPU, SLURM_MEM_PER_GPU, and SLURM_MEM_PER_NODE are mutually exclusive.

当我直接从终端启动 Snakemake 时,不会发生此错误,因此错误不应出现在配置文件本身中。

如何使用 sbatch 脚本来托管其余的 slurm 作业提交?

python slurm snakemake hpc
2个回答
0
投票

虽然这不是你要问的,但我仍然认为这可能对你有帮助。 如果唯一的问题是 ssh 会话终止,那么我建议使用

screen
在新的终端会话下启动工作流程。

首先,连接到您的远程服务器。

打开新会话

screen -S your_chosen_name

激活环境,启动

conda activate env_name;
snakemake -j 48 ....

现在,如果您的 ssh 会话将被终止或者您自己关闭它,则此任务将在另一个终端会话下运行。要重新连接到它:

screen -r your_chosen_name

更多信息请参见 Linux Screen Man


0
投票

看这里!!!

显然只需将 '--mem=2G' 分配给 sbatch 作业就可以解决问题,已经测试过!!!

https://github.com/snakemake/snakemake/issues/2230

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