当前位置:首页>Linux>一文讲清“Linux脚本编写”!——2026新版VASP基础教程

一文讲清“Linux脚本编写”!——2026新版VASP基础教程

  • 2026-09-25 19:23:51
一文讲清“Linux脚本编写”!——2026新版VASP基础教程
【做计算 找华算】新学期科研提速!华算科技预存增值高至30%,送¥8500+返利!额满即止,快来抢占!
抢疯了!DFT计算全场5折,仅限本周!催化/电池/半导体计算全覆盖,名额告急拼手速!

引言

在上一章中,我们详细介绍了Linux系统基础—超算平台使用。VASP需要安装在超算平台上,使用脚本提交计算任务。本章将正式介绍脚本编写,从使用脚本来提交计算任务的方法来介绍VASP运行方法。

脚本编写-slurm作业调度

Slurm的核心原理与架构

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

核心原理

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

架构模型

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

Slurmctld(控制守护进程)

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

Slurmd(计算守护进程)

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

Slurmdbd(数据库守护进程)

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

核心组件与关键功能

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

资源分配(Allocation)

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

作业调度(Scheduling)

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

作业监控(Monitoring)

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

作业提交与管理流程

用户通常通过编写脚本文件(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 会将其放入作业队列,等待资源满足后自动启动。

常用命令行工具

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:查询历史作业记录,常用于统计资源使用情况。

本章要点总结

slurm作业调度知识点梳理

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

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

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

下一步学习建议

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

在学习和实操过程中遇到问题?欢迎关注DFT计算参谋长公众号,获取更多独家学习资源、实用脚本工具包,并加入活跃的学习交流群,与众多同行一起交流进步!

#华算科技 #第一性原理 #DFT #VASP #MS #高斯 #Linux操作系统 #slurm系统 #作业调度 #DFT计算

👉 点击阅读原文,立即下单!

最新文章

随机文章