生信工作流框架搭建 | 04-nextflow与Slurm高性能计算

目录

  • 生信工作流框架搭建 | 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、存储等,而且还提供了完善的调度和管理工具,用于管理大规模任务并优化计算资源的利用效率。
生信工作流框架搭建 | 04-nextflow与Slurm高性能计算_第1张图片

批量计算服务主要是用于处理数据处理、大数据分析等工作负载的计算服务。它通常采用分布式计算的方式,在大规模的集群中运行多个计算任务,以实现高效的数据处理和分析。与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也不用。
你只需:

  1. nextflow.config 里的profile部分新增"slurm" ,只需两行必要的参数
slurm{
	process.executor = 'slurm'
	process.queue 	 = 'your queue' //slurm投递队列
}

生信工作流框架搭建 | 04-nextflow与Slurm高性能计算_第2张图片
请注意,这里仅仅指定了执行器和队列,其他选项默认,由nextflow代为投递。
通过squeuescontrol show job命令,发现nextflow投递SBATCH,参数都是默认的,这就足够投递了,但我们如果想指定更多参数(比如account)该如何处理呢?
这个问题,即便是ChatGPT都没能解决。通过检索nextflowGITHUB上的问题讨论,终于发现这个名为“clusterOptions”的参数,隐藏在官方文档的一角。
生信工作流框架搭建 | 04-nextflow与Slurm高性能计算_第3张图片

  1. 登陆节点,命令行指定-profile
nextflow run main.nf --input samplesheet.csv --outdir out -profile slurm
  1. BINGO!现在可以用squeue查看队列情况啦

注意事项

  1. 在HPC平台可以使用-resume 即断点重投功能,非常有用
  2. 缓存的弊端是work/目录占空间较大。如果对自己的流程稳定性非常有信心,可以指定process.scratch=true,这样避免非必要文件在不同节点之间传输,和NAS盘不必要的空间占用。
  3. 务必在登录节点(有投递权限)运行nextflow

下期预告

当我以为nextflow可以告一段落的时候,总有新知识可以分享。那么,下次有机会将为大家分享nfcore,非常好用的nextflow搭建框架。

你可能感兴趣的:(Biodoge,生信工作流框架,生信,云计算,阿里云,python,生物信息,nextflow)