Enhanced Sampling in Molecular Dynamics Simulations with Julia
07-28, 13:50–14:00 (UTC), Blue

When performing molecular dynamics simulations of materials in chemistry, physics and
biology, there exists a large gap between the time scales that can be probed
computationally to the ones observed in experiments. Two strategies to tackle this
problem are both to develop algorithms to explore the simulation space more efficiently, and to
employ hardware accelerators. I would like to share my experience and perspectives using
Julia to make faster developments in both fronts.


When performing molecular dynamics (MD) simulations of materials in chemistry, physics and
biology, there exists a large gap between the time scales that can be probed
computationally to the ones observed in experiments. One strategy to approach this issue
has been to develop algorithms to enhance sampling over the simulated system's
configuration space, overcoming the otherwise hard to surmount energetic barriers limiting
the observation of certain possible states. These algorithms themselves are not enough to
really push toward larger timescales, one also needs to implement them in hardware
accelerators such as GPUs. In fact, a good number of the most recently developed
algorithms tend to become a bottleneck for molecular simulations accelerated on GPUs, as
they are commonly implemented in CPUs even when some of them heavily rely on machine
learning strategies.

Within our research group, we are trying to provide a library that can be hooked to
different molecular dynamics simulations packages, allowing the user to perform enhanced
sampling simulations through a uniform interface without sacrificing the efficiency of the
underlying MD code. The library is currently located here:
https://github.com/SSAGESLabs/PySAGES, and although it is a Python library it has
continuously been prototyped in Julia. For example, here
https://github.com/pabloferz/ReactionCoordinates.jl and here
https://github.com/pabloferz/DLPack.jl are some of the pieces that we have built for such
purpose. The prototypes, being written in Julia, are of course faster than the current
Python implementation.

I would like to share my experience and perspective using Julia to build these tools.

I'm currently a postdoctoral researcher at the University of Chicago working on a class of strategies used to accelerate learning the properties of systems simulated with molecular dynamics.