支撑与创新

技术创新

位置: 首页 > 支撑与创新 > 技术创新 > 正文

如何在GUI环境中使用slurm调度提交relion任务

编辑:    发布日期:2019/07/26

作者:唐贺、贾安宝

众所周知,Slurm是一个开源、容错、高度可扩展的集群管理和作业调度系统,适用于大型和小型Linux集群。

而基于贝叶斯理论的冷冻电镜3维图像数据处理软件RELION具有很好的性能和易用性,其中单颗粒冷冻电镜是结构生物学研究的重要手段之一,RELION在GUI方面上具有友好的界面和各种调优性能的参数及结果输出,通过分配点节点(CPU或GPU)进行并行化作业在很大程度上方便了用户的计算。

因此,Relion如何通过在slurm调度系统中实现GUI多节点提交任务的方法(包含CPU调度和GPU节点调度),是本文所要实践探索的,总结方法如下:

1、创立共性模板脚本;

2、设置relion参数值;

3、根据CPU或GPU节点调度方法加载相应的参数值;

4、Relion GUI 提交作业。

一、创立共性模块脚本

所谓共性脚本是指在CPU或GPU调度下都能普遍使用的脚本,我们在relion中通过共性脚本的方法可以使我们在计算过程中节约很多时间同时简化我们对脚本的编写,从而实现自动化脚本的编写。具体共性脚本模板如下:


#!/bin/bash 
#SBATCH --ntasks=XXXmpinodesXXX(总核数) 
#SBATCH -p XXXqueueXXX(队列名称) 
#######SBATCH --cpus-per-task=XXXthreadsXXX(指定每任务所使用的CPU核数,通常使用OpenMP多线程程序时指定,同时注意如果为单CPU程序,请不要申请多cpu核,这样会造成资源浪费 可选) 
#SBATCH --error=XXXerrfileXXX(输出错误信息) 
#SBATCH --output=XXXoutfileXXX(输出文件日志) 
####SBATCH --time=XXXextra1XXX(限制时间,可选) 
#####SBATCH --mem-per-cpu=XXXextra2XXX(每个cpu所需要的内存 可选) 
#####SBATCH --gres=XXXextra3XXX(所选GPU卡,可选。一般会在slurm调度配置文件中会指明所调用gpu卡数,默认调用整个GPU节点GPU卡数。CPU作业此项此项无需指定)。 
#SBATCH --nodes=XXXextra1XXX(需要用多少个节点) 
#SBATCH --ntasks-per-node=XXXextra2XXX(每个节点的进程数,1个节点此项无需指定) 
#SBATCH -J XXXextra3XXX(提交任务名称) 
#SBATCH XXXextra?XXX(slurm调度中所需要的其他参数值): 
##SBATCH --mem=10G 
###申请预留内存大小,可选项 
##SBATCH --workdir=/share/admin 
###作业的工作目录,输出log在此路径 
###此路径必须是NFS共享目录 
#####独占######## 
#SBATCH --exclusive 
##SBATCH --begin=12:00 ###作业开始执行时间,默认立即执行,可选项 
##SBATCH --deadline=23:00 ###作业强制终止时间,可选项 

##SBATCH --mail-type=end 

###邮件通知类型start/end/failed,end表示作业结束时邮件通知,可选项 

##SBATCH --mail-user=xx@xx ###邮件通知邮箱,可选项 
#SBATCH --nodelist=comput1 指定节点提交作业 
#SBATCH --mem-per-cpu 800 #指定每cpu消耗的内

二、设置relion参数值

根据共性设置的参数值需要在relion环境中设置对应的环境与之映射,例如我的环境:


export RELION_QSUB_COMMAND="sbatch" (提交任务命令)
export RELION_QSUB_EXTRA_COUNT=3     (附加参数数目)
export RELION_QSUB_EXTRA1="node-number(ex1)"(节点数)
export RELION_QSUB_EXTRA1_DEFAULT="2"        (默认值可填可不填)
export RELION_QSUB_EXTRA2="ntasks-per-node-number(ex2)" (每个节点跑的任务数)
export RELION_QSUB_EXTRA2_DEFAULT="" (默认值可填可不填)
export RELION_QSUB_EXTRA3="task-name(ex3)"(任务名称)
export RELION_QSUB_EXTRA3_DEFAULT="relion3.0"(默认值可填可不填)
export RELION_MOTIONCOR2_EXECUTABLE="/pdata/app/MotionCor2-01-30-2017"(MotionCor2路径)
export RELION_GCTF_EXECUTABLE="/pdata/app/Gctf_v1.18_b2_sm62_cu8.0"(cuda路径)
export RELION_QSUB_TEMPLATE="/pdata/app/relion-3.0.5/templates/relion.sbatch"(加载模板路径)

三、根据CPU或GPU节点调度方法加载相应的参数值

CPU节点和GPU节点调度方法分别见图1,图2。

图1 CPU节点调度配置界面

注:在选择CPU调度的时候不需要开启GPU服务


图2 GPU节点调度配置界面。

注:在调用GPU节点服务的时候需要开启GPU服务,另外需要指定GPU


四、Relion GUI 提交作业

在提交作业时如图3所示,需要点击Submit to queue 为yes然后根据之前设置的参数值填写修改或填相应的值即可(其中Queue submit command 这项默认即可),填完相应的参数后提交作业点击run按钮即可提交任务了。稍等10左右有输出显示即代表作业已正常运行。

图3 Relion GUI 提交作业界面

在slurm中尝试运用GUI的方式提交relion任务还有一些可优化的参数,有机会再与大家一起探讨!

本文章版权归清华大学蛋白质研究技术中心 生物计算平台所有