pylammpsmpi - Parallel Lammps Python interface¶
With pylammpsmpi
you can control a mpi4py
parallel LAMMPS instance from a serial python process or a
Jupyter notebook. Internally pylammpsmpi
leverages the pympipool
communication interface to connect the
serial python process the user interacts with, with the mpi4py
parallel LAMMPS instance. The advantage of
separating the mpi4py
parallel LAMMPS instance from the rest of the workflow is that the workflow can be written
as serial python code, while still benefiting from the parallel performance of LAMMPS. Still this comes at the cost of
additional data transfer, as the LAMMPS pointers cannot be transferred this way and the linked data has to be copied
instead. So copying large atomistic structures can decrease the performance of the pylammpsmpi
interface in
comparison to writing your own fully mpi4py
parallel LAMMPS workflows.
Interfaces¶
The pylammpsmpi
module implements three different interfaces for different use cases:
pylammpsmpi.LammpsBase
: The most basic interface is theLammpsBase
, it implements the same commands like the defaultlammps.lammps
interface and returns the same datatypes. With this API compatibility to the standard interface, this interface is commonly the easiest way to accelerate a serial LAMMPS based workflow by leveragingmpi4py
parallel LAMMPS instances.pylammpsmpi.LammpsConcurrent
: Inspired by theconcurrent.futures
module in the standard python library thepylammpsmpi.LammpsConcurrent
interface implements the same API as thepylammpsmpi.LammpsBase
class but rather than holding the controlling process until thempi4py
parallel LAMMPS instance finishes the execution of a given set of commands, thepylammpsmpi.LammpsConcurrent
interface returns aconcurrent.futures.Future
object. This enables the development of asynchronous / concurrent workflows.pylammpsmpi.LammpsLibrary
: Finally, thepylammpsmpi.LammpsLibrary
interface adds a higher level interface on top of the defaultlammps.lammps
interface. This higher level interface provides direct access to the commands and thermodynamic properties used in the LAMMPS input files. Especially for experienced LAMMPS users who are familiar with the LAMMPS input files this interface simplifies switching from file based input to using the python interface.
The choice of interface depends on the users background, experience and the simulation protocol the user wants to
implement. Still internally all three interfaces are based on the pylammpsmpi.LammpsConcurrent
interface, so
they use an additional thread to connect the mpi4py
parallel LAMMPS instance to the serial python process or
Jupyter notebook.