Skip to content

Releases: openmm/openmm

OpenMM 8.1.1

13 Jan 03:54
ec797ac
Compare
Choose a tag to compare

This is a patch release containing the following changes.

#4351: Fixed bug in large blocks optimization with triclinic boxes
#4364: Fixed error in barostat

OpenMM 8.1.0

27 Nov 16:24
43f571d
Compare
Choose a tag to compare

This release contains many performance improvements, particularly to the CUDA and OpenCL platforms. The largest speedups are for very large systems, in the range of 1 million particles or more, which can now be much faster. Other simulations will also often be faster, though by smaller amounts. Some examples of cases that have been specifically optimized include PME on the OpenCL platform; very small systems (less than 3000 particles) on the CUDA platform; CUDA or OpenCL simulations on Windows; CUDA simulations that are parallelized across multiple GPUs; and CUDA or OpenCL simulations that use CustomHbondForce.

This release adds a new class called ATMForce that implements the Alchemical Transfer Method. This is an efficient, relatively easy to use method for doing alchemical free energy calculations. See https://doi.org/10.1021/acs.jcim.1c01129 for more information.

There is a new XTCReporter class for writing simulation trajectories to XTC files. This is an alternative to DCD for efficiently storing trajectories. It stores coordinates with reduced precision, which leads to significantly smaller files.

When running local energy minimizations, it is now possible to pass a reporter to the minimizer. This allows you to monitor the progress of minimization and optionally to stop it early when custom criteria are met.

The GromacsTopFile class now supports GROMACS files that use GROMOS force fields.

This release adds a new piece of low level infrastructure for use when writing plugins: the CustomCPPForceImpl class. It is used for writing plugins that are implemented entirely in platform-independent C++. This is useful, for example, when writing plugins that interface to other libraries or programs. By using the new mechanism, the amount of code needed for plugins of that sort is dramatically reduced.

One significant feature has been removed: GromacsTopFile can no longer read files that use implicit solvent. GROMACS removed all support for implicit solvent a few years ago, and it had not worked correctly for several years before that. OpenMM continued to support GROMACS files with implicit solvent, but it required you to have an increasingly obsolete version of GROMACS installed on your computer. That support has now been removed.

OpenMM 8.1.0 beta

09 Oct 23:05
432b583
Compare
Choose a tag to compare
OpenMM 8.1.0 beta Pre-release
Pre-release

This release contains many performance improvements, particularly to the CUDA and OpenCL platforms. The largest speedups are for very large systems, in the range of 1 million particles or more, which can now be much faster. Other simulations will also often be faster, though by smaller amounts. Some examples of cases that have been specifically optimized include PME on the OpenCL platform; very small systems (less than 3000 particles) on the CUDA platform; CUDA or OpenCL simulations on Windows; CUDA simulations that are parallelized across multiple GPUs; and CUDA or OpenCL simulations that use CustomHbondForce.

This release adds a new class called ATMForce that implements the Alchemical Transfer Method. This is an efficient, relatively easy to use method for doing alchemical free energy calculations. See https://doi.org/10.1021/acs.jcim.1c01129 for more information.

There is a new XTCReporter class for writing simulation trajectories to XTC files. This is an alternative to DCD for efficiently storing trajectories. It stores coordinates with reduced precision, which leads to significantly smaller files.

When running local energy minimizations, it is now possible to pass a reporter to the minimizer. This allows you to monitor the progress of minimization and optionally to stop it early when custom criteria are met.

The GromacsTopFile class now supports GROMACS files that use GROMOS force fields.

This release adds a new piece of low level infrastructure for use when writing plugins: the CustomCPPForceImpl class. It is used for writing plugins that are implemented entirely in platform-independent C++. This is useful, for example, when writing plugins that interface to other libraries or programs. By using the new mechanism, the amount of code needed for plugins of that sort is dramatically reduced.

One significant feature has been removed: GromacsTopFile can no longer read files that use implicit solvent. GROMACS removed all support for implicit solvent a few years ago, and it had not worked correctly for several years before that. OpenMM continued to support GROMACS files with implicit solvent, but it required you to have an increasingly obsolete version of GROMACS installed on your computer. That support has now been removed.

OpenMM 8.0.0

31 Jan 03:42
a780005
Compare
Choose a tag to compare

A major focus of this release is on better supporting machine learning potentials. Many of the changes are internal ones that are not directly visible, but are needed by the OpenMM-Torch and OpenMM-ML plugins.

There are many optimizations to the CPU platform. You should see some improvement in most situations, but in certain cases it's especially dramatic.

  • Custom forces are much faster than before on ARM CPUs. Previously it only supported JIT compilation of custom expressions on x86. On other architectures they needed to be evaluated with an interpreter, which was much slower. JIT compilation is now supported on ARM as well.

  • CustomNonbondedForce should be much faster in most cases. Previously the JIT compiler was only able to produce scalar code that evaluated a single interaction at a time. It now can produce vectorized code, allowing the expression to be evaluated for multiple interactions at once.

  • NonbondedForce is also much faster when the nonbonded method is NoCutoff. Previously the code for computing interactions with a cutoff was vectorized, but without a cutoff it was not. That code is now vectorized also, leading to large speedups.

  • Previously we used FFTW to compute FFTs. We switched to PocketFFT, which in our internal testing is usually faster. This should improve the performance of PME on the CPU platform.

There also are a number of optimizations that affect other platforms as well. Some apply only to very specific situations. For example, recomputing the long range correction coefficient for CustomNonbondedForce is much faster.

CustomNonbondedForce now supports per-particle computed values, similar to CustomGBForce. You provide an expression that gets evaluated for each particle, and the result can be used in the energy expression. This can improve performance a lot in some cases, by only computing intermediate quantities once per particle instead of once per interaction.

When building solvent boxes, Modeller.addSolvent() has a new boxShape option for building non-rectangular boxes (rhombic dodecahedron or truncated octahedron). This makes it much easier to build non-rectangular boxes without needing to compute box vectors yourself.

As part of that feature, addSolvent() has changed how it interprets the "padding" option. It now makes a rigorous guarantee that no atom will be closer than the padding distance to any atom of any periodic copy. Previously it didn't guarantee that, and the amount of solvent it added could be either more or less than what was required. The new behavior should be better and closer to what you expect in almost all cases. Just be aware that it has changed. This may impact existing workflows that build solvent boxes.

The OpenCL platform now has improved support for low end GPUs that don't support 64 bit atomic operations. That includes, for example, the embedded GPUs found in Intel and Apple processors. Previusly there were certain Forces that couldn't be used on those GPUs, such as CustomManyParticleForce and AmoebaMultipoleForce. All Forces are now fully supported on those processors. In addition, performance on them will often be better than before.

When simulating a system with Drude particles, the temperature reported by StateDataReporter was previously a weighted average of the system temperature and Drude temperature, which tended to confuse people. It now reports the system temperature, and should match the value specified in the integrator.

OpenMM 8.0.0 rc1

17 Jan 23:43
e1c4e1f
Compare
Choose a tag to compare
OpenMM 8.0.0 rc1 Pre-release
Pre-release

This is the first release candidate for OpenMM 8.0.

OpenMM 8.0.0 beta

21 Oct 00:05
cf82438
Compare
Choose a tag to compare
OpenMM 8.0.0 beta Pre-release
Pre-release

This is a beta of the OpenMM 8.0 release. Here are some of the more significant changes.

This release contains a variety of internal changes needed to better support machine learning potentials. Those changes are mostly not directly visible, but are needed by the OpenMM-Torch and OpenMM-ML plugins.

There are many optimizations to the CPU platform. You should see some improvement in most situations, but in certain cases it's especially dramatic.

  • Custom forces are much faster than before on ARM CPUs. Previously it only supported JIT compilation of custom expressions on x86. On other architectures they needed to be evaluated with an interpreter, which was much slower. JIT compilation is now supported on ARM as well.

  • CustomNonbondedForce should be much faster in most cases. Previously the JIT compiler was only able to produce scalar code that evaluated a single interaction at a time. It now can produce vectorized code, allowing the expression to be evaluated for multiple interactions at once.

  • NonbondedForce is also much faster when the nonbonded method is NoCutoff. Previously the code for computing interactions with a cutoff was vectorized, but without a cutoff it was not. That code is now vectorized also, leading to large speedups.

  • Previously we used FFTW to compute FFTs. We switched to PocketFFT, which in our internal testing is usually faster. This should improve the performance of PME on the CPU platform.

There also are a number of optimizations that affect other platforms as well. Some apply only to very specific situations. For example, recomputing the long range correction coefficient for CustomNonbondedForce is much faster.

CustomNonbondedForce now supports per-particle computed values, similar to CustomGBForce. You provide an expression that gets evaluated for each particle, and the result can be used in the energy expression. This can improve performance a lot in some cases, by only computing intermediate quantities once per particle instead of once per interaction.

When building solvent boxes, Modeller.addSolvent() has a new boxShape option for building non-rectangular boxes (rhombic dodecahedron or truncated octahedron). This makes it much easier to build non-rectangular boxes without needing to compute box vectors yourself.

As part of that feature, addSolvent() has changed how it interprets the "padding" option. It now makes a rigorous guarantee that no atom will be closer than the padding distance to any atom of any periodic copy. Previously it didn't guarantee that, and the amount of solvent it added could be either more or less than what was required. The new behavior should be better and closer to what you expect in almost all cases. Just be aware that it has changed. This may impact existing workflows that build solvent boxes.

The OpenCL platform now has improved support for low end GPUs that don't support 64 bit atomic operations. That includes, for example, the embedded GPUs found in Intel and Apple processors. Previusly there were certain Forces that couldn't be used on those GPUs, such as CustomManyParticleForce and AmoebaMultipoleForce. All Forces are now fully supported on those processors. In addition, performance on them will often be better than before.

When simulating a system with Drude particles, the temperature reported by StateDataReporter was previously a weighted average of the system temperature and Drude temperature, which tended to confuse people. It now reports the system temperature, and should match the value specified in the integrator.

OpenMM 7.7.0

21 Dec 20:10
130124a
Compare
Choose a tag to compare

A major focus of this release is on improved force field support. The following have been added.

  • GLYCAM is now available for use with Amber14. This is a force field for simulating carbohydrates and glycosylated proteins.
  • GBSA implicit solvent is now available for use with Amber14 and CHARMM36. We previously had it for earlier Amber force fields, but not for the more recent ones.
  • AMOEBA 2018 is now available, superseding the older 2013 version.

Along with the new force fields, here are some of the other significant changes.

MonteCarloFlexibleBarostat is a new barostat for completely flexible unit cells, in which the lengths and angles defining the periodic box are all free to change. This is particularly useful in materials simulations, where the shape of a crystal's unit cell might not be known in advance.

In custom forces that support tabulated functions, you can now use updateParametersInContext() to update the tabulated values in the middle of a simulation. This can be very useful in certain simulation protocols.

CheckpointReporter now has an option to write serialized State objects instead of checkpoints. This is a more portable, although less complete, way of recording the state of a simulation.

The CUDA platform is now better at parallelizing a simulation across multiple GPUs. The scaling of speed with number of GPUs is significantly better than in past releases.

This release also adds lots of error checking to catch various types of user errors: anything from mistyping the name of an argument to specifying a negative bond length for a harmonic bond. Hopefully this will save people from future suffering.

OpenMM 7.7.0 beta

09 Nov 20:26
2f20fbe
Compare
Choose a tag to compare
OpenMM 7.7.0 beta Pre-release
Pre-release
7.7.0beta

Fixed error using AMOEBA 2018 with RNA (#3313)

OpenMM 7.6.0

26 Aug 21:14
ad113a0
Compare
Choose a tag to compare

Here are some of the more significant changes in this release.

The name of the top level Python package has changed to remove "simtk". You can now simply import openmm instead of import simtk.openmm. Likewise, simtk.unit has changed to openmm.unit. We have tried to maintain backward compatibility wherever possible. If you import simtk.openmm it will still work but display a deprecation warning.

ARM based Macs are now fully supported. The previous release had preliminary support but it was not recommended for production use. With this release, they can be considered fully supported.

The AMOEBA implementation has been extensively overhauled. The main result is that it finally works with the OpenCL platform! AMOEBA has always been the only feature of OpenMM that was not supported on all platforms. With this release, we can finally say that all features are supported on all platforms.

CustomCompoundBondForce, CustomCentroidBondForce, and CustomManyParticleForce now support three new functions, pointdistance(), pointangle(), and pointdihedral(). These are similar to the distance(), angle(), and dihedral() functions, but instead of taking particle identifiers, they take the coordinates of the points to base the calculation on. This enables many new types of geometric calculations that were difficult or impossible before. For example, pointdistance(x1, y1, z1, (x2+x3)/2, (y2+y3)/2, (z2+z3)/2) computes the distance from p1 to the midpoint between p2 and p3.

AmberPrmtopFile now supports systems that use the ff19SB force field.

The Python API now performs more robust checking of units passed to functions. Previously, many functions simply converted their arguments to the default unit system: nanometers for distance, picoseconds for time, etc. They did not verify that you had passed the right type of quantity. In this release, most functions now do robust checking of dimensionality. For example, if you pass a distance to a function that expects a time, it will throw an exception.

OpenMM 7.6.0 rc1

18 Aug 16:22
ad113a0
Compare
Choose a tag to compare
OpenMM 7.6.0 rc1 Pre-release
Pre-release
7.6.0rc1

Fixed an error in condensing LJ types in CharmmPsfFile (#3210)