yskit菜单与计算任务准备
短命令进入菜单:脚本复制、个人初始化、显存只读报告和分段能带;附真实数据和可复跑附件。
阅读本篇目录
yskit 把复制提交脚本、个人软件初始化、VASP显存估算和分段能带放进一个终端菜单。在算例目录输入一个命令即可开始:
yskit
按屏幕编号选择,0返回,q退出,不需要Shift或方向键。菜单1和2准备文件,菜单3只读估算;菜单4先生成工作流,再按文档明确提交。文件生成不等于任务已经在运行。
下载本篇命令示例、Si输入、真实后处理数据与绘图脚本。yskit使用系统Python,无需另外编译;本例绘图/独立读取使用amset/0.5.1环境中的Pymatgen与Matplotlib,原生能带提取使用VASPKIT 1.5.1。
1 菜单1:把适合自己的脚本复制到当前目录#
核时用户按量使用资源;套餐用户在所购套餐的资源范围内使用。选择菜单1后,先选自己的用户类型,再选软件、版本和节点类型,最后选脚本。
本次实际测试的两条选择路径:
| 用户类型 | 选择路径 |
|---|---|
| 核时 | VASP → 普通VASP → 6.6.1 → P100 → 提交脚本 |
| 套餐 | VASP → 普通VASP → 6.6.1 → P100 → 提交脚本 |
脚本以原文件名复制,内容和权限保持;同名文件已存在时保留旧文件,不自动覆盖。本次两类菜单均完成实际复制和同名文件保护检查。提交前先查看资源设置:
ls sub_vasp*.sh
sed -n '1,35p' sub_vasp.6.6.1_p100.sh
确认节点、GPU数、MPI进程数和输入文件匹配,再提交:
sbatch sub_vasp.6.6.1_p100.sh
squeue -u "$USER"
也可直接进入复制菜单,或列出当前模板:
yskit copy
yskit list
本篇核对时清单有513份模板;以后数量可能随软件更新变化。模板存在不表示对应资源此刻空闲或适用于所有账户,应同时检查队列/门户状态。复制操作本身没有提交作业。
2 菜单2:ATAT与Gaussian个人初始化#
选择菜单2,再选ATAT或Gaussian。ATAT创建缺失的个人配置;Gaussian按个人目录准备环境与示例,需要有权使用对应软件。已有配置和同名文件保留,初始化不会自动提交计算。
DP-GEN入口在菜单1的软件列表中:先选用户类型,再选DP-GEN,依次选择训练、探索、标注的软件环境与资源,预览后生成。它仍需要用户提供科学参数和初始数据;不能把生成machine.json理解为已经完成机器学习势训练。运行中的DP-GEN工作目录应保持原有配置。
相关操作见ATAT专题、Gaussian专题;本篇附件不分发Gaussian安装包,也不改其他用户的个人配置。
3 菜单3:先看每卡显存,不先启动VASP#
进入包含INCAR、POSCAR、POTCAR、KPOINTS的算例目录,运行yskit,选菜单3,按提示选择显卡、卡数、程序类型及目录。它读取输入,显示每张卡中最高占用卡的估算;不会启动VASP。Line-mode或无法自动确定实际NKPTS的情况,按提示提供实际点数。
本例使用既有Si96显存标定输入:NBANDS=280、ENCUT=350 eV、8个实际k点、KPAR=1、NSIM=32。完整INCAR如下;它是短电子步显存标定设置,不能据此报告收敛能量。正式科学计算请按目标精度收敛,例如一般教程常用EDIFF=1E-6。
ISTART = 0
ICHARG = 2
ENCUT = 350
PREC = Normal
ISMEAR = 0
SIGMA = 0.1
LREAL = Auto
EDIFF = 1E-4
LWAVE = .FALSE.
LCHARG = .FALSE.
ISYM = 2
IBRION = -1
ISIF = 2
NSW = 0
ISPIN = 1
ADDGRID = .TRUE.
ALGO = Normal
NCORE = 1
NELM = 10
NELMIN = 10
NBANDS = 280
KPAR = 1
NSIM = 32
KPOINTS:
Memory extension
0
Gamma
2 2 2
0 0 0
对同一输入实际执行八次只读报告,结果如下;其中“实测匹配”来自既有GPU标定数据,其他是模型估算。这不是八次新的GPU模拟。
| GPU | 卡数 | 报告的最高单卡峰值/GiB | 类型 |
|---|---|---|---|
| P100 | 1 | 4.6888 | 标定范围内估算 |
| P100 | 2 | 2.8316 | 标定范围内估算 |
| P100 | 4 | 2.2501 | 实测匹配 |
| P100 | 8 | 1.5707 | 标定范围内估算 |
| V100 | 1 | 4.8597 | 标定范围内估算 |
| V100 | 2 | 3.1147 | 标定范围内估算 |
| V100 | 4 | 2.7574 | 实测匹配 |
| V100 | 8 | 2.5059 | 标定范围内估算 |

例如四卡P100的报告约2.2501 GiB/卡,工程范围2.0251–2.7001 GiB,建议每卡预留可用显存约3.2001 GiB。报告的范围与预留量不是统计置信区间,也不能保证不会OOM;其他方法、不同版本或接近容量上限的算例要结合短试算判断。
具体参数影响和标定背景见VASP GPU显存规划。附件的显存步骤需先把本例匹配的、自己有权使用的Si POTCAR放入inputs/memory;附件不提供POTCAR。换用不同版本赝势时,可能从实测匹配变为一般估算。
bash run.sh memory
cat LAST-RUN.txt
4 菜单4:每条完整高对称路径分开算#
先准备结构,菜单4生成KPATH.in;确认晶胞与坐标约定,再完成收敛SCF;回到菜单4准备工作流,最后提交并提取结果。默认沿用VASPKIT每段20点。用户可以在生成工作流之前修改KPATH.in中的20;工作流生成后按冻结输入运行,不能临时改点数而沿用旧结果。
每个任务计算一条完整路径,例如Γ→X、X→M、M→Γ。全部完成后按原顺序合并。它需要完整收敛的静态SCF作为共同参考,不能拿优化中间步、MD快照的旧输出或不同结构的CHGCAR随意拼接。当前不接入Libxc SCF分支,也不合并PROCAR/WAVECAR/vasprun.xml;投影能带需要相应的独立流程。
完整客户步骤、输入与显存实测见yskit VASP分段能带工作流。本次重新核对该文实际Si2 PBE/HSE及Si128单卡/双卡数据,并重新运行VASPKIT提取:普通路径用211,含规则SCF点的杂化格式用252。合并与完整路径参考的最大能量差,PBE/Si128为0,HSE约1E-6 eV,未重新计算DFT。

生成的工作流根目录中运行:
bash extract.sh
即可调用相应VASPKIT任务,得到BAND.dat、REFORMATTED_BAND.dat、KLABELS等文件。不要把普通211任务直接套到含SCF网格点的杂化文件上。
5 用Pymatgen读取旧合并文件#
新生成的yskit工作流已经采用兼容的k点行格式。若手头是旧合并EIGENVAL,VASPKIT可正常提取,而某些Pymatgen版本会因行首空白格式漏读;附件提供只写新副本的转换命令,不改变坐标、权重、能量或占据:
python format_eigenval.py EIGENVAL EIGENVAL.formatted
随后明确检查读取的k点数:
from pymatgen.io.vasp.outputs import Eigenval
e = Eigenval('EIGENVAL.formatted')
assert len(e.kpoints) == e.nkpt
print(e.nkpt, e.nbands)
本次四组实际输出均通过Pymatgen完整读取,并与原生VASPKIT提取的数据逐项一致。已有工作目录的冻结workflow.py请保持原样,独立转换只针对要交给其他工具读取的文件副本。
6 下载包怎样运行#
bash run.sh all
cat LAST-RUN.txt
默认all运行实际脚本复制/保护检查、菜单说明、当前模板清单、四组数据的格式转换和VASPKIT提取,并重画两张图;不需要POTCAR,不提交计算。默认显存图读取附件中八份已核对报告;需要重新估算时按第3节补入授权POTCAR,再单独运行memory。
每次输出到新的work/时间戳目录,保留旧结果。inputs/是原始示例,reference/是参考结果,LAST-RUN.txt指出最近一次目录。该包没有执行DP-GEN训练或Gaussian安装,相关完整科学流程在各自专题继续介绍。