LAMMPS CPU与GPU计算准确性
相同构型的能量、力、压力与短时NVE对照。
阅读本篇目录
GPU加速是否可信,需要在相同物理输入下检查能量、力和时间积分表现。本轮使用非零力的有限温度构型,并按原子ID对齐;Cu/EAM、Si/Tersoff及SPC/E水的两档规模分别与CPU double参考比较,覆盖P100/V100的GPU mixed和KOKKOS double单/双卡。
相同坐标的能量和力#
共有54项相同构型检查,54项通过预设检查。最大能量差为6.21e-07 eV/atom,最大力分量差为0.000153 eV/Å。水的real单位已统一换算,所有比较的坐标、原子类型、势与固定PPPM设置一致。
验收要求能量差不超过1e-5 eV/atom、最大力分量差不超过1e-3 eV/Å,同时报告RMS力差、相对RMS差和压力变化。这里是CPU/GPU实现一致性检查,不替代力场的物理准确性、时间步、PPPM精度或科学体系收敛验证。

相同构型CPU/GPU能量与力偏差;重合点代表相近结果
对数图将零值及更小值显示在1e-16绘图下限,原始误差仍以CSV为准。两条实现路线的汇总如下,范围包含两种GPU、两档规模和单/双卡。
| 模型 | 实现与精度 | 最大能量差 / eV·atom⁻¹ | 最大力分量差 / eV·Å⁻¹ | 最大RMS力差 / eV·Å⁻¹ |
|---|---|---|---|---|
| Cu / EAM | gpu / mixed | 7.0772e-08 | 5.51802e-05 | 9.16536e-06 |
| Cu / EAM | kokkos / double | 2.72848e-15 | 2.58682e-14 | 8.93947e-16 |
| Si / Tersoff | gpu / mixed | 6.20578e-07 | 0.000152827 | 2.54798e-05 |
| Si / Tersoff | kokkos / double | 0 | 8.43769e-15 | 1.23822e-15 |
| SPC/E 水 / PPPM | gpu / mixed | 2.33111e-08 | 5.3985e-05 | 3.12838e-06 |
| SPC/E 水 / PPPM | kokkos / double | 1.48643e-13 | 7.03112e-13 | 9.76364e-15 |
主矩阵的压力张量核对#
另对18个公共初态获取CPU double的完整压力张量参考,比较xx、yy、zz、xy、xz、yz六个分量。金属单位bar乘0.1、水的atm乘0.101325,统一为MPa;主矩阵开始前固定实现一致性预算0.1MPa,即1bar。它是本轮实现对照标准,不是所有材料压力预测准确性的保证。
能量和压力张量由全部原子计算;大体系的逐原子力另采用覆盖全部元素类型的分层抽样,水的抽样同时包含O与H。下图每个点取该规模、该平台与实现的有效卡数配置中最大的压力分量误差,不将失败配置的低值作为优势。

18个公共初态的全压力张量对照;每路线取有效卡数中的最大值
零值及低于1e-15MPa的误差显示在绘图下限;完整六分量差值见性能CSV。
- Cu / EAM:有效主矩阵配置的最大分量误差为0.0036384MPa。
- Si / Tersoff:有效主矩阵配置的最大分量误差为0.010124MPa。
- SPC/E 水 / PPPM:有效主矩阵配置的最大分量误差为0.0022463MPa。
压力张量包括热运动和相互作用贡献,不能与某些软件的应力正负号直接混用。需要更严格的压力、弹性或相变判断时,应按目标观测量进一步做精度和采样收敛。
NVE能量漂移和有限温度统计#
使用同一份坐标和速度,在无温控器的NVE下检查能量变化;水保留相同SHAKE约束。Cu和Si各10ps,水10ps。随后短时收集径向分布,数据只用于实现核对,不宣传为材料性质的长时间统计收敛。
长期MD中,舍入误差会逐步放大,CPU/GPU轨迹不要求永久逐步重合。因此下面给出能量漂移、温度/压力波动与径向分布的有限时间观察;不能将轨迹分离直接叫作GPU算错,也不能把总能量相近解释为所有动力学性质均已收敛。
| 模型/原子数 | 资源 | 实现 | 卡数 | 最大能量偏离 / meV·atom⁻¹ | 线性能量漂移 / meV·atom⁻¹·ps⁻¹ | 平均温度 / K |
|---|---|---|---|---|---|---|
| Cu / EAM / 4,000 | CPU56核 | omp | 0 | 0.00053273 | -4.307e-05 | 251.82 |
| Cu / EAM / 4,000 | P100 | gpu | 1 | 0.00052376 | -5.209e-05 | 251.82 |
| Cu / EAM / 4,000 | P100 | gpu | 8 | 0.00052376 | -5.209e-05 | 251.82 |
| Cu / EAM / 4,000 | P100 | kokkos | 1 | 0.00053273 | -4.307e-05 | 251.82 |
| Cu / EAM / 4,000 | P100 | kokkos | 8 | 0.00053273 | -4.307e-05 | 251.82 |
| Cu / EAM / 4,000 | V100 | gpu | 1 | 0.00052376 | -5.209e-05 | 251.82 |
| Cu / EAM / 4,000 | V100 | gpu | 8 | 0.00052376 | -5.209e-05 | 251.82 |
| Cu / EAM / 4,000 | V100 | kokkos | 1 | 0.00053273 | -4.307e-05 | 251.82 |
| Cu / EAM / 4,000 | V100 | kokkos | 8 | 0.00053273 | -4.307e-05 | 251.82 |
| Cu / EAM / 32,000 | CPU56核 | omp | 0 | 0.00037303 | -1.7476e-05 | 220.04 |
| Cu / EAM / 32,000 | P100 | gpu | 1 | 0.00037241 | -1.4973e-05 | 220.04 |
| Cu / EAM / 32,000 | P100 | gpu | 8 | 0.00037241 | -1.4973e-05 | 220.04 |
| Cu / EAM / 32,000 | P100 | kokkos | 1 | 0.00037303 | -1.7476e-05 | 220.04 |
| Cu / EAM / 32,000 | P100 | kokkos | 8 | 0.00037303 | -1.7476e-05 | 220.04 |
| Cu / EAM / 32,000 | V100 | gpu | 1 | 0.00037241 | -1.4973e-05 | 220.04 |
| Cu / EAM / 32,000 | V100 | gpu | 8 | 0.00037241 | -1.4973e-05 | 220.04 |
| Cu / EAM / 32,000 | V100 | kokkos | 1 | 0.00037303 | -1.7476e-05 | 220.04 |
| Cu / EAM / 32,000 | V100 | kokkos | 8 | 0.00037303 | -1.7476e-05 | 220.04 |
| Si / Tersoff / 4,096 | CPU56核 | omp | 0 | 0.0015278 | -1.8905e-05 | 254.30 |
| Si / Tersoff / 4,096 | P100 | gpu | 1 | 0.0014672 | -1.8967e-05 | 254.30 |
| Si / Tersoff / 4,096 | P100 | gpu | 8 | 0.0014672 | -1.8967e-05 | 254.30 |
| Si / Tersoff / 4,096 | P100 | kokkos | 1 | 0.0015278 | -1.8905e-05 | 254.30 |
| Si / Tersoff / 4,096 | P100 | kokkos | 8 | 0.0015278 | -1.8905e-05 | 254.30 |
| Si / Tersoff / 4,096 | V100 | gpu | 1 | 0.0014672 | -1.8967e-05 | 254.30 |
| Si / Tersoff / 4,096 | V100 | gpu | 8 | 0.0014672 | -1.8967e-05 | 254.30 |
| Si / Tersoff / 4,096 | V100 | kokkos | 1 | 0.0015278 | -1.8905e-05 | 254.30 |
| Si / Tersoff / 4,096 | V100 | kokkos | 8 | 0.0015278 | -1.8905e-05 | 254.30 |
| Si / Tersoff / 32,768 | CPU56核 | omp | 0 | 0.0012436 | -2.3607e-05 | 223.58 |
| Si / Tersoff / 32,768 | P100 | gpu | 1 | 0.0012875 | -1.9902e-05 | 223.58 |
| Si / Tersoff / 32,768 | P100 | gpu | 8 | 0.0012875 | -1.9902e-05 | 223.58 |
| Si / Tersoff / 32,768 | P100 | kokkos | 1 | 0.0012436 | -2.3607e-05 | 223.58 |
| Si / Tersoff / 32,768 | P100 | kokkos | 8 | 0.0012436 | -2.3607e-05 | 223.58 |
| Si / Tersoff / 32,768 | V100 | gpu | 1 | 0.0012875 | -1.9902e-05 | 223.58 |
| Si / Tersoff / 32,768 | V100 | gpu | 8 | 0.0012875 | -1.9902e-05 | 223.58 |
| Si / Tersoff / 32,768 | V100 | kokkos | 1 | 0.0012436 | -2.3607e-05 | 223.58 |
| Si / Tersoff / 32,768 | V100 | kokkos | 8 | 0.0012436 | -2.3607e-05 | 223.58 |
| SPC/E 水 / PPPM / 4,500 | CPU56核 | omp | 0 | 0.0081857 | 5.3186e-05 | 298.07 |
| SPC/E 水 / PPPM / 4,500 | P100 | gpu | 1 | 0.0092956 | -0.0003048 | 297.56 |
| SPC/E 水 / PPPM / 4,500 | P100 | gpu | 8 | 0.0069853 | 7.8672e-05 | 297.10 |
| SPC/E 水 / PPPM / 4,500 | P100 | kokkos | 1 | 0.0067399 | -9.909e-05 | 297.41 |
| SPC/E 水 / PPPM / 4,500 | P100 | kokkos | 8 | 0.0099574 | -0.00014299 | 297.11 |
| SPC/E 水 / PPPM / 4,500 | V100 | gpu | 1 | 0.0088658 | -0.00024383 | 296.69 |
| SPC/E 水 / PPPM / 4,500 | V100 | gpu | 8 | 0.010261 | -6.7201e-05 | 297.89 |
| SPC/E 水 / PPPM / 4,500 | V100 | kokkos | 1 | 0.0077766 | -0.00011654 | 298.38 |
| SPC/E 水 / PPPM / 4,500 | V100 | kokkos | 8 | 0.0085469 | -0.00015743 | 297.46 |
| SPC/E 水 / PPPM / 36,000 | CPU56核 | omp | 0 | 0.0057951 | -0.00032678 | 298.93 |
| SPC/E 水 / PPPM / 36,000 | P100 | gpu | 1 | 0.0072937 | -0.00027186 | 298.49 |
| SPC/E 水 / PPPM / 36,000 | P100 | gpu | 8 | 0.0047469 | -0.00029771 | 298.49 |
| SPC/E 水 / PPPM / 36,000 | P100 | kokkos | 1 | 0.0044238 | -0.00016873 | 298.76 |
| SPC/E 水 / PPPM / 36,000 | P100 | kokkos | 8 | 0.0053 | -0.00019113 | 298.38 |
| SPC/E 水 / PPPM / 36,000 | V100 | gpu | 1 | 0.0041507 | -0.00015447 | 298.26 |
| SPC/E 水 / PPPM / 36,000 | V100 | gpu | 8 | 0.0058776 | -0.00030962 | 298.89 |
| SPC/E 水 / PPPM / 36,000 | V100 | kokkos | 1 | 0.006835 | -0.00028889 | 298.66 |
| SPC/E 水 / PPPM / 36,000 | V100 | kokkos | 8 | 0.0049806 | -0.00019092 | 299.08 |

相同初态的短时NVE能量变化,零点各自取正式段初始能量
本次有限时间观察如下,比较的是各自相对初始能量的最大偏离,并非CPU/GPU最终构型能量差。
- Cu / EAM、4,000原子:CPU最大偏离0.00053273 meV/atom,GPU各有效配置为0.00052376~0.00053273 meV/atom。
- Cu / EAM、32,000原子:CPU最大偏离0.00037303 meV/atom,GPU各有效配置为0.00037241~0.00037303 meV/atom。
- Si / Tersoff、4,096原子:CPU最大偏离0.0015278 meV/atom,GPU各有效配置为0.0014672~0.0015278 meV/atom。
- Si / Tersoff、32,768原子:CPU最大偏离0.0012436 meV/atom,GPU各有效配置为0.0012436~0.0012875 meV/atom。
- SPC/E 水 / PPPM、4,500原子:CPU最大偏离0.0081857 meV/atom,GPU各有效配置为0.0067399~0.010261 meV/atom。
- SPC/E 水 / PPPM、36,000原子:CPU最大偏离0.0057951 meV/atom,GPU各有效配置为0.0041507~0.0072937 meV/atom。

NVE后短时全原子径向分布;各平台沿用相同邻居与排除规则
该径向分布是全原子定义,水的结果不等于专门的O—O配对RDF,分子内配对还受到neighbor与special_bonds排除规则影响。这里只用相同定义核对实现及有限时长波动;生产研究需要选择正确的原子对、配对排除、采样窗口、误差估计和收敛标准。
能量漂移由势函数光滑性、时间步、约束、邻居更新、长程求和精度及浮点实现共同决定,应先与相同设置的CPU参考比较。平均温度也受准备态、固定晶胞与有限时长影响;本轮不将这些短样本当作热力学参数或扩散系数的可靠预测。
精度边界与未通过记录#
水体系初次固定32³基础网格的估计相对力误差约1.8e-4,未达到原定1e-4,因此保留旧记录但排除正式主比较。改用每基础盒48³网格、order5和gewald0.3后,重新核验所有水的静态对照。不是通过放宽验收阈值获得通过;准备态的生成与正式力计算设置分别归档。
大规模性能任务比较能量和分层抽样原子力;两档小规模准确性对照则比较全部原子。没有将大体系的抽样最大误差冒充全体系最大误差。初态通过也不等于任意长期轨迹或所有势函数都已验收。
本轮完成54次NVE尝试,其中54次通过启动、初态数值与完整步数检查;能量漂移另按上文实际数值讨论,没有另设事后放宽的“漂移通过”标签。