LAMMPS 专题

LAMMPS SNAP:CPU与INTEL双精度操作

Si线性/二次SNAP的四个真实条件,比较能量、力、压力与能量差分,给出CPU提交方法。

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

INTEL加速包是CPU执行路径。本例用相同的Si SNAP线性/二次模型,在64原子扰动结构上比较普通CPU与INTEL双精度计算,随后以能量差分核对力。

1. 下载与看结构#

下载完整输入、实际输出、数据与绘图脚本,保存为example.zip:

python3 -m zipfile -e example.zip .
cd lammps-snap-intel-control
module load ase/3.29.0
bash read.sh
bash plot.sh

这两条脚本默认读取资料包已有结果,在analysis-read/生成CSV,在figures/出图。新计算单独写入work-new/,与参考数据分开。

64原子Si结构、线性SNAP力及普通CPU/INTEL对照

结构采用金刚石Si 2×2×2常规胞,晶格常数5.43 Å,施加0.03 Å高斯扰动。模型是LAMMPS公开Si_Zuo_JPCA2020线性和二次SNAP,随包保留模型与许可证;没有重新训练。

2. 势文件必须成对匹配#

ls inputs/potentials
head -15 inputs/models/Si64-perturbed.data
units metal
atom_style atomic
boundary p p p
read_data ../models/Si64-perturbed.data
pair_style snap
pair_coeff * * ../potentials/Si_Zuo_JPCA2020.snapcoeff ../potentials/Si_Zuo_JPCA2020.snapparam Si
neighbor 1.0 bin
neigh_modify every 1 delay 0 check yes
thermo 1
thermo_style custom step atoms pe pxx pyy pzz pxy pxz pyz
thermo_modify norm no format float %.16g
run 0

二次模型对应.quadratic.snapcoeff和.quadratic.snapparam,两者同时替换,不能只换其中一个文件。元素映射顺序也要与原子类型一致。

3. CPU与INTEL如何启动#

本例实际运行环境为lammps/30Sep2026-8173m,oneAPI C++ 2024.2.1、Intel MPI 2021.13、OpenMP 5.1。四个条件均为单线程,用于数值对照,不代表多核性能。

lmp -in in.lmp
lmp -sf intel -pk intel 0 mode double omp 1 -in in.lmp

上面展示两种后端关键区别;正式新计算用资料包Slurm脚本:

bash submit.sh
squeue -u "$USER"
# 结束后
bash read.sh work-new analysis-new
bash plot.sh analysis-new figures-new work-new

CPU模板按集群整节点规则申请资源,实际本例数值程序仅用1线程;不应据此评估整节点吞吐量,也不要把-sf intel当作CUDA开关。

4. 原子力和能量导数#

线性与二次SNAP的原子力和能量中心差分

对原子1的x、17的y、43的z分量,分别做±10⁻⁵ Å位移,固定其他坐标计算能量中心差分。

cat analysis-read/SNAP-Si64-CPU-INTEL-FD.csv
cat analysis-read/SNAP-Si64-CPU-INTEL-energy-force.csv

普通路径与INTEL的总能量差为0,最大原子力差8.99×10⁻¹⁵ eV/Å,压力张量分量差约1.02×10⁻¹⁰ bar。原子力与能量差分最大差1.34×10⁻⁸ eV/Å。这些是本例的实际数值,不是对任意体系的固定精度承诺。

需要GPU输入时参考SNAP与ML-IAP模型推理;需要选择其他机器学习势时看环境选择表。

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

查看配图

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

100%查看原图 ↗