目录
- 生信工作流框架搭建 | 04-nextflow与Slurm高性能计算
- 前情提要
- 什么是HPC高性能计算
- 什么是slurm
- nextflow配置
- 注意事项
- 下期预告
生信工作流框架搭建 | 04-nextflow与Slurm高性能计算
本篇为biodoge《生信工作流框架搭建》系列笔记的第5篇,该系列将持续更新。
前情提要
上回生信工作流框架搭建 | 03-nextflow与AWS批量计算为大家提供了nextflow上云的实用教程。虽然AWS批量计算技术含量较大,但毕竟在国内应用场景较少,下面将为大家介绍另一种更为常用的应用:阿里云的HPC高性能计算。
本身slurm+nextflow操作非常简单,但是鉴于网络资料较少,且有很多误导(比如误导用sbatch投递!),还是有必要整理出来的。
什么是HPC高性能计算
在阿里云和亚马逊云中,HPC(高性能计算)和批量计算都是云计算服务的一部分,但它们的主要区别在于它们所针对的计算场景和工作负载类型不同。
HPC服务旨在提供专业的高性能计算服务,针对需要高性能计算能力的科学计算、工程仿真等领域提供高效率的计算能力,通常采用的是超级计算机或集群的方式,支持大规模的并行计算任务,涉及的计算资源包括CPU、GPU、存储等,而且还提供了完善的调度和管理工具,用于管理大规模任务并优化计算资源的利用效率。
批量计算服务主要是用于处理数据处理、大数据分析等工作负载的计算服务。它通常采用分布式计算的方式,在大规模的集群中运行多个计算任务,以实现高效的数据处理和分析。与HPC相比,批量计算更侧重于处理分布式数据,需要使用大量的存储、计算和网络资源来支持海量数据的分布式处理和计算。
什么是slurm
在HPC环境下,集群通常由数千甚至数万个计算节点组成,每个节点包含多个处理器和大量的内存和存储资源。为了有效地利用这些资源,需要一种资源管理系统来监视、控制和分配这些资源。这就是调度器(Scheduler)所提供的功能。它可以跟踪和管理计算节点、CPU、内存、GPU等资源,动态地分配资源以支持各种作业类型,如并行作业、串行作业等。下面是几种常见的HPC调度器:
-
Slurm:Slurm(Simple Linux Utility for Resource Management)是一种开源的集群和超级计算机资源管理系统,支持各种作业类型,如并行作业、串行作业等。Slurm具有灵活的配置选项和强大的作业控制功能,广泛应用于各种规模的计算集群中。
-
PBS(Portable Batch System):PBS是一种开源的作业管理系统,广泛应用于HPC环境中。PBS具有灵活的作业调度功能和可扩展性,支持各种计算模式和作业类型,如MPI并行作业、GPU计算等。
-
LSF(Load Sharing Facility):LSF是一种商业化的作业管理系统,广泛应用于大型计算集群和超级计算机中。LSF具有高度的可扩展性和强大的调度功能,支持各种作业类型和计算模式,如MPI并行作业、GPU计算等。
-
TORQUE:TORQUE是一种开源的作业管理系统,支持HPC环境中的作业调度和资源管理。TORQUE具有灵活的配置选项和易于使用的界面,支持各种计算模式和作业类型。
目前,SLURM已成为一种广泛使用的资源管理系统。本文默认你已知HPC概念,并能理解任务投递过程。
Slurm | 功能 |
---|---|
sinfo | 集群状态 |
squeue | 排队作业状态 |
sbatch | 作业提交 |
scontrol | 查看和修改作业参数 |
salloc | 交互式提交任务 |
scancel | 删除作业 |
NB:本文不仅适用于Slurm,对其他调度器也可应用,具体请查阅 nextflow官方文档
nextflow配置
相较于批量计算繁复的操作设置,nextflow在slurm上运行简直轻而易举。甚至连SBATCH也不用。
你只需:
- 在
nextflow.config
里的profile部分新增"slurm" ,只需两行必要的参数
slurm{process.executor = 'slurm'process.queue = 'your queue' //slurm投递队列
}
请注意,这里仅仅指定了执行器和队列,其他选项默认,由nextflow代为投递。
通过squeue和scontrol show job命令,发现nextflow投递SBATCH,参数都是默认的,这就足够投递了,但我们如果想指定更多参数(比如account)该如何处理呢?
这个问题,即便是ChatGPT都没能解决。通过检索nextflowGITHUB上的问题讨论,终于发现这个名为“clusterOptions”的参数,隐藏在官方文档的一角。
- 登陆节点,命令行指定
-profile
:
nextflow run main.nf --input samplesheet.csv --outdir out -profile slurm
- BINGO!现在可以用
squeue
查看队列情况啦
注意事项
- 在HPC平台可以使用
-resume
即断点重投功能,非常有用 - 缓存的弊端是work/目录占空间较大。如果对自己的流程稳定性非常有信心,可以指定
process.scratch=true
,这样避免非必要文件在不同节点之间传输,和NAS盘不必要的空间占用。 - 务必在登录节点(有投递权限)运行nextflow
下期预告
当我以为nextflow可以告一段落的时候,总有新知识可以分享。那么,下次有机会将为大家分享nfcore,非常好用的nextflow搭建框架。