home: cd ~/

Pysages

pysages GPU JAX HPC

PySAGES: No compromises in usability and speed for enhanced-sampling methods

Molecular dynamics (MD) simulations are powerful tools to investigate the static and dynamic properties of a given system. However, even with modern computer architecture and the fastest simulation software, computation time is limited and valuable. As a result, exploring a system by unbiased MD is insufficient to obtain good statistics, especially if the free-energy landscape is separated by high barriers.

To still investigate systems with high energy barriers, enhanced-sampling methods have been established. Typically, a configuration can be reduced to a collective variable (order parameter), and the simulation is biased based on these collective variables. The challenge for computer simulations is that:

  1. Almost every interesting system has its own collective variable description
  2. The implementation of collective variables and methods has to run efficiently on modern computers, to allow reasonable insights into the observable of interest

PySAGES: Addressing the Challenges

PySAGES addresses these challenges by offering a python interface between highly optimized simulation engines and the researcher to implement collective variables and enhanced-sampling methods. If you are new to advanced sampling techniques, you can try out this interactive introduction with PySAGES.

Even better, PySAGES already provides an extensible framework to compute collective variables and to perform enhanced-sampling MD simulations to discover reaction pathways and estimate free energies. Most research objectives are achievable by using these implemented collective variables and methods.

Supported Simulation Engines

PySAGES currently supports automatically connecting these methods to HOOMD-blue and OpenMM. Both engines offer a python interface to the user and implement the simulation on GPUs for best performance.

Performance and Implementation

PySAGES interacts with both backends directly on the GPU memory; copying between GPU and host memory is not required. This approach allows biased simulations without slowing the backend simulation engines down. We achieve this by packaging the GPU/CPU memory arrays as DLPack tensors. And use JAX to allow autodiffrentiation directly from the simulations data with zero copy. PySAGES still implements all methods and collective variables as pure python for access and modification.

Resources

Back to the Top
© 2024 Ludwig Schneider