MDI engine drivers for LAMMPS — MACE and other ML forcefields via MolSSI Driver Interface
Project description
lammps-mdi
MDI engine drivers for LAMMPS — run ML forcefields (MACE, and future models) on GPU via the MolSSI Driver Interface, communicating with a standard LAMMPS binary (no Kokkos compilation needed).
Designed for use with SEAMM, but works with any LAMMPS workflow that supports MDI.
How it works
LAMMPS acts as an MDI driver: it handles atom positions, neighbor lists (at the coarse level), and time integration. The lammps-mdi engine process acts as an MDI engine: it receives coordinates from LAMMPS each step, evaluates the ML model on GPU, and returns energies, forces, and (if periodic) the stress tensor.
mpirun -np 1 mace-mdi -mdi "..." ← GPU process: MACE on A100
: -np 1 lmp -mdi "..." -in input.dat ← CPU process: time integration
The two processes communicate over MPI via the MDI protocol.
Supported engines
| Engine | Status | Notes |
|---|---|---|
| MACE | ✅ | MACE-torch ≥ 0.3, vesin-torch neighbor lists, cuEquivariance optional |
| NequIP | Planned | |
| SevenNet | Planned |
Installation
See INSTALL_CONDA.md for full HPC instructions.
Usage
As a console script (recommended)
SEAMM_FF=/path/to/model.model \
mpirun --mca mpi_yield_when_idle 1 \
-np 1 mdi_bind.sh mace-mdi -mdi "-role ENGINE -name MACE -method MPI" \
: -np 1 mdi_bind.sh lmp -mdi "-role DRIVER -name LAMMPS -method MPI" -in input.dat
The mace-mdi command accepts several options:
mace-mdi --help
-mdi MDI_STRING MDI initialization string [required]
--model PATH Path to MACE model (overrides SEAMM_FF)
--device DEVICE PyTorch device (default: cuda:0)
--dtype {float32,float64}
--enable-cueq Enable cuEquivariance acceleration
--enable-oeq Enable openEquivariance acceleration
--log-level LEVEL DEBUG / INFO / WARNING / ERROR
From lammps.ini (SEAMM)
[local]
installation = conda # or modules, or local
gpu-code = mpirun --mca mpi_yield_when_idle 1 \
-np 1 ~/SEAMM/bin/mdi_bind.sh \
mace-mdi -mdi "-role ENGINE -name MACE -method MPI" \
: -np 1 ~/SEAMM/bin/mdi_bind.sh \
lmp -mdi "-role DRIVER -name LAMMPS -method MPI"
As a Python library
from lammps_mdi import MACEEngine
engine = MACEEngine(
model_path="/path/to/model.model",
device="cuda:0",
default_dtype="float32",
enable_cueq=True,
)
engine.run("-role ENGINE -name MACE -method MPI")
Shell scripts
The package bundles four helper scripts, installed via lammps-mdi install-scripts:
| Script | Purpose |
|---|---|
mdi_bind.sh |
Binds engine (rank 0) to GPU + NUMA-local CPUs, driver (rank 1) to adjacent CPUs; starts nvidia-smi monitor. For standalone machines. |
mdi_monitor.sh |
Lightweight wrapper for SLURM/PBS: only starts GPU monitoring. Scheduler handles binding. |
gpu_bind.sh |
Per-rank GPU binding for native Kokkos LAMMPS (approach A). |
cpu_bind.sh |
CPU-only binding using L3 cache groups (EPYC 7763). |
The CPU/GPU mappings in mdi_bind.sh, gpu_bind.sh, and cpu_bind.sh are
currently hard-coded for a dual-GPU EPYC 7763 system. They will be made
configurable in a future release.
Requirements
| Package | Source | Notes |
|---|---|---|
| Python ≥ 3.10 | HPC module | |
| numpy | HPC module | Do not reinstall |
| mpi4py | HPC module | |
| pymdi ≥ 1.4 | pip | PyPI package for import mdi |
| torch (CUDA) | pip (special index) | Install before lammps-mdi |
| mace-torch ≥ 0.3 | pip | |
| matscipy ≥ 0.8 | pip | CPU fallback neighbor list |
| pint ≥ 0.20 | pip | Unit conversion |
| vesin-torch ≥ 0.3 | pip (optional) | GPU neighbor lists, strongly recommended |
| cuequivariance* | pip (optional) | NVIDIA cuEquivariance acceleration |
Contributing
Issues and pull requests are welcome at https://github.com/molssi-seamm/lammps-mdi.
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lammps_mdi-0.1.7.tar.gz.
File metadata
- Download URL: lammps_mdi-0.1.7.tar.gz
- Upload date:
- Size: 37.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
36674de5d1f37ec7776a9a20d5f65c36a451e3283aa40b74d3f96e9288201fd8
|
|
| MD5 |
2675017ee18c40bc970bf2f8291bb685
|
|
| BLAKE2b-256 |
1cb25485914674d369f1de97dabc1d7fac80444e8eac761119c827d90f8d15b3
|
File details
Details for the file lammps_mdi-0.1.7-py3-none-any.whl.
File metadata
- Download URL: lammps_mdi-0.1.7-py3-none-any.whl
- Upload date:
- Size: 25.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
210fd13bcd17370b9bec5ac9ba872cae544778dc43db478dfcc53e039741273d
|
|
| MD5 |
d91c7f6f6328d28b472c8184a3aaa0ce
|
|
| BLAKE2b-256 |
320bc3acf12481a2d9ef5d98053e05f13c7f3ec280880f228233c3a4dbfc9add
|