第六章:Linux 脚本编写详解 | 2026 新版 VASP 基础教程

第六章:Linux 脚本编写详解 | 2026 新版 VASP 基础教程
第六章:Linux 脚本编写详解 | 2026 新版 VASP 基础教程

引言

第六章:Linux 脚本编写详解 | 2026 新版 VASP 基础教程
第六章:Linux 脚本编写详解 | 2026 新版 VASP 基础教程

在上一章《第五章:Linux 脚本批量提交任务方法! | 2026新版VASP基础教程》中,华算科技朱老师详细介绍了Linux系统基础—超算平台使用。VASP需要安装在超算平台上,使用脚本提交计算任务。本章将正式介绍脚本编写,从使用脚本来提交计算任务的方法来介绍VASP运行方法。

第六章:Linux 脚本编写详解 | 2026 新版 VASP 基础教程
第六章:Linux 脚本编写详解 | 2026 新版 VASP 基础教程

脚本编写-slurm作业调度

第六章:Linux 脚本编写详解 | 2026 新版 VASP 基础教程
第六章:Linux 脚本编写详解 | 2026 新版 VASP 基础教程
第六章:Linux 脚本编写详解 | 2026 新版 VASP 基础教程

Slurm的核心原理与架构

Slurm 的设计理念是容错性强、可扩展性高,它不依赖于对 Linux 内核的修改,能够在标准的 Linux 环境中运行。其核心原理和架构如下:

核心原理

Slurm 的核心功能是 资源分配、作业调度 和 作业监控。它通过分析用户提交的作业需求(如CPU、内存、GPU、运行时间等)和当前集群的资源状态(哪些节点空闲、哪些节点忙碌),决定何时以及在何处启动作业。

架构模型

Slurm 采用 集中式管理 与 分布式执行 的混合架构。

Slurmctld(控制守护进程)

这是 Slurm 的“大脑”。它运行在管理节点(Head Node)上,负责维护集群的全局状态(哪些节点可用、哪些作业在队列中等待、资源分配策略等),并执行调度算法决定作业的启动时机。

Slurmd(计算守护进程)

这是一组运行在每个计算节点(Compute Node)上的轻量级进程。它负责接收来自 Slurmctld 的指令,启动和监控实际的作业进程,并向 Slurmctld 汇报节点状态(如 CPU 利用率、内存使用情况)。

Slurmdbd(数据库守护进程)

这是一个可选组件,通常用于记录作业的历史数据(如作业耗时、资源消耗、用户配额等),支持作业计费和审计。它可以与 MySQL 或 MariaDB 数据库集成。

第六章:Linux 脚本编写详解 | 2026 新版 VASP 基础教程

第六章:Linux 脚本编写详解 | 2026 新版 VASP 基础教程

核心组件与关键功能

Slurm 的强大之处在于它的模块化设计,用户和管理员可以通过不同的命令行工具来进行交互:

资源分配(Allocation)

Slurm 能够根据作业需求分配独占或共享的计算节点。例如,一个需要 16 核 CPU 的 MPI 作业,Slurm 可以将其分配到两台拥有 8 核 CPU 的节点上运行。

作业调度(Scheduling)

它提供了灵活的调度策略。管理员可以配置不同的优先级因素(如作业年龄、作业大小、用户公平份额、QoS(服务质量))来决定哪个作业先运行,从而实现资源的公平利用。

作业监控(Monitoring)

Slurm 持续监控作业的执行状态。管理员可以设置作业的最大运行时间(Walltime),防止作业长时间占用资源;如果作业崩溃或节点故障,Slurm 能够重新调度作业。

第六章:Linux 脚本编写详解 | 2026 新版 VASP 基础教程

第六章:Linux 脚本编写详解 | 2026 新版 VASP 基础教程

作业提交与管理流程

用户通常通过编写脚本文件(Batch Script)来提交作业,脚本中包含了对资源的请求和实际要执行的命令。

典型的作业脚本结构

#!/bin/bash

#SBATCH –job-name=my_job          # 作业名称 

#SBATCH –output=output.log        # 标准输出文件 

#SBATCH –error=error.log          # 标准错误文件 

#SBATCH –partition=gpu            # 分区名称(如gpu) 

#SBATCH –nodes=1                  # 请求节点数量 

#SBATCH –ntasks-per-node=4        # 每个节点上的任务数 

#SBATCH –gres=gpu:1               # 请求 GPU 资源 

#SBATCH –time=02:00:00            # 运行时间限制 (2小时) 

#SBATCH –mem=8G                   # 内存需求 

module load cuda/11.0             # 加载环境模块(示例) 

srun ./my_gpu_program            # 运行程序 

上述脚本中,#SBATCH 开头的指令告诉 Slurm 用户需要多少资源。脚本提交后,Slurm 会将其放入作业队列,等待资源满足后自动启动。

第六章:Linux 脚本编写详解 | 2026 新版 VASP 基础教程

常用命令行工具

sbatch:提交批处理作业(最常用)。用户将作业脚本作为参数传入。

sbatch myscript.sh 

srun:提交交互式作业或在作业脚本中启动并行任务。它可以直接分配资源并执行命令,常用于 MPI 程序。

srun -n 8 ./my_parallel_program 

salloc:分配资源后进入交互式 Shell,用户可以手动执行多个命令。

salloc –nodes=2 –ntasks-per-node=8 

squeue:查看当前作业队列和作业状态(等待、运行、完成)。

scancel:取消指定的作业。

scontrol:高级控制命令,用于查询或修改作业、节点的详细信息。

sacct:查询历史作业记录,常用于统计资源使用情况。

第六章:Linux 脚本编写详解 | 2026 新版 VASP 基础教程
第六章:Linux 脚本编写详解 | 2026 新版 VASP 基础教程

本章要点总结

第六章:Linux 脚本编写详解 | 2026 新版 VASP 基础教程
第六章:Linux 脚本编写详解 | 2026 新版 VASP 基础教程
第六章:Linux 脚本编写详解 | 2026 新版 VASP 基础教程

slurm作业调度知识点梳理

Slurm的核心原理与架构:介绍了slurm调度系统的核心原理与架构框架

核心组件与关键功能:介绍了资源分配、作业调度、作业监控方法

作业提交与管理流程方面:介绍了典型的作业脚本结构、常用命令工具

第六章:Linux 脚本编写详解 | 2026 新版 VASP 基础教程

下一步学习建议

下一章将正式引入本次教程的核心—vasp输入文件准备。我们将从VASP 计算的四大基石文件输入文件意义与编写方面详细介绍vasp输入文件准备,以及他们在VASP计算中的应用,敬请期待!

声明:如需转载请注明出处(华算科技旗下资讯学习网站-学术资讯),并附有原文链接,谢谢!
(0)
上一篇 1天前
下一篇 2026年3月9日 上午9:24

相关推荐