deepmodeling / deepmodeling/deepmd-kit

pair_style deepmd/kk does not populate global virial / thermo pressure for a DPA4 pt_expt model

Open
#5,983 2 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Python
Stars
2k
Forks
649
Avg merge
6d 18h
Merged PRs (30d)
15

Description

### Bug summary

When using a converted DPA4 pt_expt model with LAMMPS, pair_style deepmd/kk produces correct per-atom virials but fails to populate the global virial used by LAMMPS thermo pressure. As a result, Press, Pxx, Pyy, and Pzz contain only the kinetic contribution; at zero velocity they are exactly zero.
The same structure and model work correctly with the non-Kokkos path, pair_style deepmd.
This is important for NPT simulations: the barostat receives an incorrect pressure signal, which can cause unphysical cell evolution.

### DeePMD-kit Version

Source checkout at commit 14a71f13

### Backend and its version

PyTorch 2.11.0+cu126 (CUDA 12.6)

### How did you download the software?

Built from source

### Input Files, Running Commands, Error Log, etc.

## Environment

- LAMMPS: `patch_4Jul2026` (`LAMMPS (4 Jul 2026)`)
- GPU: NVIDIA A40
- CUDA: 12.6
- DeePMD-kit was built from source at commit `14a71f13`.
- The DPA4 model was converted with:

dp convert-backend --atomic-virial DPA4-Pro-MPtrj.pt DPA4-Pro-converted.pt2

## Minimal test
The same relaxed alpha-quartz SiO2 structure was evaluated with zero velocities and `run 0`.
Input:

read_data quartz_dpa_relaxed.lmp
mass 1 28.0855
mass 2 15.9994
pair_style deepmd/kk DPA4-Pro-converted.pt2
pair_coeff * * Si O
compute stress all centroid/stress/atom NULL virial
thermo_style custom step temp press pxx pyy pzz
run 0

## Observed behavior
With `pair_style deepmd/kk`, thermo output is exactly zero at zero velocity:
Press = 0
Pxx = 0
Pyy = 0
Pzz = 0

However, `compute centroid/stress/atom` returns nonzero per-atom virials. Their sum agrees with an independent ASE stress calculation within approximately 0.1%.
For the same structure and converted model, replacing only:
pair_style deepmd/kk DPA4-Pro-converted.pt2
with:
pair_style deepmd DPA4-Pro-converted.pt2
produces nonzero thermo pressure/stress consistent with both ASE and the summed per-atom virial.
Therefore, the issue appears specific to the Kokkos path.

### Steps to Reproduce

1. Convert a DPA4-Pro-MPtrj checkpoint to pt_expt format with:
dp convert-backend --atomic-virial DPA4-Pro-MPtrj.pt DPA4-Pro-converted.pt2
2. Build LAMMPS with Kokkos/CUDA support against this DeePMD-kit checkout.
3. Run the input below (relaxed alpha-quartz SiO2, 72 atoms) with
pair_style deepmd/kk, using:
lmp -k on g 1 -sf kk -pk kokkos newton on neigh half -in in.lammps
4. Observe that thermo Press/Pxx/Pyy/Pzz are exactly zero, while
compute centroid/stress/atom still gives correct nonzero per-atom
virials (summed, they agree with an independent ASE calculation
within ~0.1%).
5. Repeat step 3 with pair_style deepmd (no /kk) instead, changing
nothing else. Thermo pressure/stress becomes correct and nonzero.

### Further Information, Files, and Links

Source-level observation:
- `source/lmp/pair_deepmd.cpp` performs the explicit global-virial reduction under `if (vflag)`.
- `source/lmp/pair_deepmd_kokkos.cpp` performs the corresponding reduction under `if (vflag_global)`.
In the failing reproduction, `vflag` is nonzero (`10` when the per-atom virial compute is requested), whereas `vflag_global = 0`. Therefore, the explicit Kokkos reduction is skipped. The per-atom virial buffer is nevertheless nonzero and agrees with the non-Kokkos result; the LAMMPS global `virial[]` / thermo pressure remains zero.
I have attached a zip archive containing the minimal structure, the two LAMMPS input files, the two comparison logs, and a README. The converted model is not included because it is large; it can be regenerated from the DPA4-Pro-MPtrj checkpoint using the conversion command given above.
The `DEBUG_VFLAG` lines in the attached logs were added locally for diagnosis and are not part of the upstream DeePMD-kit output.

[deepmd_kk_virial_bug_report.zip](https://github.com/user-attachments/files/31256420/deepmd_kk_virial_bug_report.zip)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.