GPUMD专题

GPUMD 力常数势 FCP 实操

从Si二三阶力常数到GPU静态计算,讲清参考坐标、文件布局和两类误差。

更新于 2026-10-30约 4 分钟阅读按任务与环境选择适用配置
阅读本篇目录

手里已有二阶、三阶力常数时,可以用GPUMD的FCP接口把位移展开模型带到GPU上计算。本篇把真实Si力数据拟合得到的模型,与原始力常数参考分别运行,说明文件怎么放、原子怎么对齐、结果如何比较。

原生FCP与独立多项式的能量、力误差

1. 力常数势计算什么#

相对于参考坐标r₀,位移为u=r−r₀。二阶能量是Φ₂uu/2,三阶增加Φ₃uuu/6;力由这个多项式求负导数。它适合参考结构附近的晶格振动,不自动成为可描述任意扩散、反应或熔化的通用势。

本例包含四种模型:original-order2/3 是已有ABACUS位移数据导出的力常数;fit-order2/3 是hiPhive仅用28个训练构型重新拟合的模型。8个留出构型对后者没有进入拟合;原始力常数用过整套历史数据,所以只能作接口参考,不能用同样的8个构型声称独立预测。

2. 文件放在同一套参考结构下#

以三阶模型为例,potential.txt 完整内容:

fcp 1 Si
3 3
fc

第一个3是力使用的最高阶数;第二个3是热流使用的最高阶数,后者仅能选2或3。fc 是相对目录,末尾不加斜杠。目录内有:

fc/r0.in
fc/fcs_order2.in
fc/clusters_order2.in
fc/fcs_order3.in
fc/clusters_order3.in

r0.in 每行对应一个原子的参考笛卡尔坐标,单位Å;必须与 model.xyz 原子顺序和周期镜像一致。这里的GPUMD5.9.1 FCP按x−r₀直接取位移,不会替你做最小镜像。把其中一个文件wrap进盒子、另一个不wrap,会把小位移变成接近整格的位移。不要单独排序原子。

3. 先做静态检查#

bash run.sh fit-order3-random1
cat work-fcp/fit-order3-random1/base/potential.txt
cat work-fcp/fit-order3-random1/base/thermo.out

此入口在已分配GPU的任务内运行。完整 run.in 为:

potential potential.txt
time_step 0
ensemble nve
dump_thermo 1
dump_xyz 1 snapshot.xyz precision double mass force potential virial
run 1

每组计算原构型与第0个原子x方向±0.001、±0.0005Å四个位移。44组覆盖四种模型、真实位移构型与三种随机位移幅度。

实际五点能量与多项式曲线

4. 分开看两类误差#

本次220个FCP静态状态中,GPUMD与独立float64多项式的最大力差约6.18×10⁻⁶eV/Å、能量差约2.37×10⁻⁷eV。hiPhive的ASE计算器也独立计算同一套张量。它们说明导出文件、原子对应及引擎调用一致,不等于对DFT的误差这么小。

GPUMD5.9.1 FCP的部分参考坐标、系数和内部累加使用float32;输出设置 precision double 只提高文本精度,不会改变内部计算精度。实际对DFT的留出力误差见hiPhive力拟合,约0.013–0.015eV/Å,量级明显不同。

FCP驱动文件和r₀格式见官方FCP说明。本文实际运行二、三阶;更高阶、长期MD和热导计算需要各自的数据、模型稳定性与采样检查,不能从这一静态例子直接推出。

下载与完整运行#

下载输入、真实力数据、参考输出和全部绘图脚本,解压到自己的工作目录。先重画随包结果,不重新计算:

bash analyze.sh

输出在 reference/analysis/ 和 reference/figures/。在新解压目录提交完整的两种hiPhive拟合、7组层状结构和44组FCP条件:

sbatch run.slurm

默认一张P100、一个CPU核、30分钟,分区为 gpu-8p100-hs;GPU套餐用户按自己的权限改为例如 gpu-8p100-tc。需要按条件并行提交时:

bash submit.sh

这会生成带依赖的拟合、51个条件和分析作业。只生成脚本用 bash submit.sh --dry-run。全部结束后查看 work/analysis/ 和 work/figures/,或重新分析:

bash analyze.sh work work-fcp fit

bash fit.sh 是CPU拟合入口,bash run.sh 条件名 是已经分配计算资源后的单例入口;不要在登录节点直接启动GPUMD。拟合脚本不覆盖已有 fit/,计算也不覆盖已有结果;重新计算整套请重新解压。单例完成后可以直接查看输出,统一分析需要整套条件齐全。

本例使用GPUMD5.9.1 P100构建(GCC13.3、CUDA12.9)、hiPhive1.5及ASE环境,读取导出文件使用Phonopy4.8.3、phono3py4.8.2。入口脚本会加载对应模块或已安装的工具环境。当前示例是短小的操作参考,不代替势函数、超胞、截断、位移幅度与采样的收敛检查。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗