GPUMD专题

qNEP求解器与力的数值核对

比较Ewald与三个PPPM网格,使用实际零时间步能量差分检查力,并说明GPU浮点、输出单位与电荷约定。

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

本篇接qNEP静态计算,使用同一个已训练PbTe模型。下载完整输入和原生结果,保存为qnep.zip。本集群实际运行16个单卡任务:8个参考帧分别在P10016G和V10016G计算,每个任务23次GPUMD/nep调用。程序为GPUMD5.9.1,GCC13.3/CUDA12.9;分析使用ASE3.29.0。

1. 先统一长程求解器#

kspace ewald

GPUMD默认是PPPM,默认最大网格间距1Å;NEP预测走直接Ewald。做两端数值对照时,在run.in明确写kspace ewald。这个关键字应在第一次run之前,整个文件只设一次。

要比较PPPM精度,分别放在独立目录:

kspace pppm 1.0
kspace pppm 0.5
kspace pppm 0.25

每个目录使用同一个模型和结构,其余设置保持不变。网格由程序自动选择,实际间距可能小于请求值;参数定义见官方kspace说明。更细网格增加计算量,应按自己的能量/力需求做对照。

2. 查看实际网格与差异#

unzip qnep.zip -d qnep
cd qnep
bash analysis.sh
head analysis/pppm-mesh.csv

以P100第24帧为例:

请求PPPM间距/Å 实际网格 与Ewald的能量差/eV·atom⁻¹ 最大力分量差/eV·Å⁻¹
1.0 20×20×20 6.082712e-05 0.00027198158
0.5 40×40×40 1.36776e-06 1.9789401e-05
0.25 80×80×80 1.32676e-06 2.0215372e-05

八帧两平台的PPPM网格对照,基准为直接Ewald

两平台的曲线大部分重合。这个例子中,从1Å细化到0.5Å明显减小差异;进一步到0.25Å不保证每个分量继续单调变小,浮点与离散误差会形成平台。不要把“网格更细”直接等同于所有体系都更准确,也不要把不同求解器的结果不加说明混在同一统计里。

3. 用能量差分检查力#

配套程序选定一个原子,分别沿x/y/z移动±h:

F_x ≈ -[E(x+h)-E(x-h)] / (2h)

所有计算使用time_step 0,不让MD演化改变位移。三个预先选定步长是0.03、0.01、0.003Å,主比较固定使用0.01Å,不逐原子分量挑最好结果。

head analysis/finite-differences.csv
cat reference-data/p100-f24/fd-0p01-0-plus/run.in
head reference-data/p100-f24/fd-0p01-0-plus/model.xyz
cat reference-data/p100-f24/fd-0p01-0-plus/thermo.out

上面文件分别给出设置、真正改变后的坐标和该点能量。0.01Å下,16组中选定原子三个力分量的最大差约 4.26×10⁻⁴eV/Å。差分步长过大有截断误差,过小又会放大GPU浮点及能量相减噪声,所以需要看一组步长,而不是无限减小h。

所有差分步长及GPUMD/nep力对照

4. 用nep预测作另一项数值对照#

本例预测的完整nep.in:

version 4
type 2 Te Pb
cutoff 8 4
n_max 6 6
basis_size 6 6
l_max 4 2 0
neuron 30
charge_mode 2
prediction 1

要在分配到的GPU作业中执行nep,不能把gpumd和nep的输入文件混用。元素顺序、截断半径、描述符和神经元数必须与nep.txt一致。

energy_train.out的预测能量为eV/atom,GPUMD的thermo.out第三列为整胞eV,比较前先除原子数。电荷则按前篇说明统一到中性化定义,原文件全部保留。

16组对照指标 实际最大差
Ewald GPUMD/nep能量 3.76×10⁻⁶eV/atom
力分量 8.53×10⁻⁶eV/Å
同一定义的电荷分量 1.64×10⁻⁶e

NEP文本输出有六位有效数字的舍入,不能要求它与高精度XYZ输出逐字节相同。以上是两个运行入口与数值梯度的一致性,不是对DFT或实验准确度的独立检验。

5. 重新运行自己的工作区#

python3 prepare.py
python3 make_jobs.py
cd cases/p100-f24
sbatch job.slurm

已有cases时不要再次prepare覆盖。16组全部结束后,在根目录:

bash analysis.sh --new
ls analysis-new figures-new

不带--new时只查看自带参考;带参数时明确分析自己新跑的cases。小体系的静态数值检查不代替MD稳定性、独立测试集或目标物性验证。qNEP可用能量/力数据训练而不强制要求目标原子电荷,但若要解释电荷、BEC或介电响应,应加入相应约束或独立验证;不是加上电荷头就自然得到已拟合物性。

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

查看配图

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

100%查看原图 ↗