openmaterials.ai / codes / GPUMD
A molecular dynamics code written in CUDA for GPUs from the start, with its own machine-learned potential (NEP) trained and run in the package, and heat transport on the fly.
A one-hidden-layer network on a Chebyshev radial and angular descriptor, trained by the SNES evolutionary algorithm in the nep executable. It runs at about 1e7 atom steps per second on one V100 GPU (Fan 2022).
One thread per atom sums force, virial and heat current from a pairwise force expression, with no write conflicts. One K40 GPU matched LAMMPS on 100 cores (Fan 2017).
Green-Kubo (compute_hac), HNEMD (compute_hnemd) and NEMD with Langevin heat baths, plus spectral (compute_shc) and modal (compute_hnema) decompositions (Xu 2025).
NVE, NVT and NPT with Berendsen, Nose-Hoover chain, Bussi-Donadio-Parrinello and Langevin thermostats, MTTK barostats, MSST shock, path-integral MD (Xu 2025).
nep trains from nep.in and train.xyz. gpumd runs from run.in and model.xyz, both extended XYZ. Also Tersoff, Stillinger-Weber, EAM and hiphive force constants (Xu 2025).
calorine and PyNEP expose NEP as ASE calculators. gpyumd writes inputs and parses outputs. NEP_CPU runs NEP models on CPUs and provides the LAMMPS interface (Xu 2025).
Measured through-plane conductivity 57 mW/m/K and anisotropy ratio near 900. HNEMD in GPUMD showed kappa dropping from 3.7 to 0.16 W/m/K from bulk to rotated MoS2 at 300 K (Kim 2021). Kim 2021
A NEP fitted to SCAN DFT data, with an HNEMD spectral quantum correction, gives 0.60 W/m/K at 300 K against 0.89 classical, in agreement with NIST data from 275 K to 500 K (Xu 2023). Xu 2023
NEMD in GPUMD matches the ballistic AGF conductance of graphene, 12.2 GW/m2/K classical, when Delta T is taken between source and sink. Langevin baths beat Nose-Hoover chains (Li 2019). Li 2019
Convert DFT outputs to extended XYZ train.xyz with vasp2xyz, cp2k2xyz or similar tools.
Set cutoffs, descriptor sizes, loss weights and generations in nep.in. Run nep: nep.txt.
Write model.xyz in extended XYZ with calorine or gpyumd, or by hand.
In run.in: potential nep.txt, velocity, ensemble, time_step, compute_hnemd or compute_hac.
Read thermo.out, hac.out and the compute files into Python with calorine or gpyumd.