Skip to content

v1.0.2

Choose a tag to compare

@aboys-cb aboys-cb released this 29 Jul 10:38
· 12 commits to main since this release
52321b4

🚀 NEPAdapters v1.0.2

本版本集中统一 CPU、CUDA 与 LAMMPS 的 NEP4 模型协议语义,补齐 CUDA 后端此前缺失的模型能力,并修复小周期盒子和邻居容量问题。

✨ 协议与模型支持

  • 统一 NEP4 解析:CPU/CUDA 现在一致校验参数数量、取值范围、baseline 数量和 counted block;缺少必要的 spin 参数会直接报错。
  • 类型语义:spin_dof_type 严格控制 spin 描述符中心和磁力输出,spin_env_type 控制可进入 spin 环境的邻居元素,并验证自由度类型是环境类型的子集。
  • Cutoff 语义:结构 radial cutoff、spin cutoff 和候选邻居 cutoff 相互独立;支持结构 radial/angular type-dependent cutoff。
  • CUDA 模型能力:补齐 universal、typewise 和 flexible ZBL,以及普通 NEP4 双隐藏层 ANN。
  • 版本边界:明确拒绝已淘汰的 NEP3;本版本不加入 dipole、polarizability 和 temperature model。

🐛 修复与可靠性

  • 修复 CUDA 在 rc_spin != rc_radial 时错误扩大普通结构描述符 cutoff 的问题。
  • 修复 CUDA batch 在小周期盒子中遗漏周期自镜像邻居的问题,覆盖普通 NEP、spin NEP 和 qNEP。
  • CPU batch 将模型声明的邻居容量作为初始 workspace;实际需求更大时自动扩容、重建邻居表并复用高水位容量,不再受固定 1000 或模型导出容量的硬限制。
  • CPU batch、CPU LAMMPS 和 CUDA 对非 spin_dof_type 元素的磁力输出均严格为零。
  • LAMMPS ordinary NEP 与 spin 路径复用统一后的 parser、model 和最大 cutoff 语义。

🧪 验证

  • 本地 CPU 测试 28/28 通过。
  • Sai V100 CPU/CUDA spin、普通 NEP 和 qNEP 测试 47/47 通过。
  • 普通 NEP4 已与 GPUMD 参考实现完成跨后端数值一致性验证;CPU 达到双精度一致性,CUDA 的 energy、force 和 virial 误差处于单精度预期范围。

⚠️ 当前边界

  • qNEP batch 已完成 CPU/CUDA 数值验证;LAMMPS/PPPM qNEP 集成仍不支持。
  • dipole、polarizability 和 temperature model 不在 CUDA 支持范围内。
  • LAMMPS 外部邻居路径使用 ghost atoms,不受本次 CUDA batch 小周期盒子缺陷影响。
python -m pip install --upgrade "nep-adapters[ase]==1.0.2"

Full Changelog: v1.0.1...v1.0.2