OpenMM 8.2 beta

The functionality of OpenMM will (eventually) include everything that one would need to run modern molecular simulation.
POST REPLY
User avatar
Peter Eastman
Posts: 2593
Joined: Thu Aug 09, 2007 1:25 pm

OpenMM 8.2 beta

Post by Peter Eastman » Fri Sep 27, 2024 4:59 pm

The beta release of OpenMM 8.2 is now available. This release is a major update with a focus on improving performance.

For the first time in many years, this release introduces a new platform. It is based on AMD's HIP framework. When running on recent AMD GPUs, it delivers roughly double performance compared to the OpenCL platform. (Many thanks to Anton Gorenko for his amazing work on this!)

There also are many other optimizations. Some are low level optimizations that will benefit lots of simulations. Others are narrowly focused on particular features. DrudeSCFIntegrator, CustomHbondForce, and ATMForce are all faster. Energy minimization is often faster. Calling updateParametersInContext() methods to modify parameters is often faster. The overhead of using a reporter to save a trajectory to disk is decreased.

There also are some new features, though most are fairly minor. They include,
  • The position of a virtual site is now permitted to depend on another virtual site, a feature required for certain force fields.
  • GromacsTopFile supports more types of virtual sites.
  • Topology can now store atomic formal charges. When reading a PDB or PDBx/mmCIF file that includes formal charges, they are recorded in the Topology.
  • Modeller.addHydrogens() has a new option that lets you specify exactly what hydrogens to add for a residue.
There are a few API improvements. Although minor, they affect very commonly used functions, allowing for slightly less wordy code. When calling Context.getState(), you can omit the word "get" from the arguments specifying what information to retrieve. For example, you can write getState(positions=True, forces=True) instead of getState(getPositions=True, getForces=True). To retrieve the Platform with a certain name, you can call Platform.getPlatform(name) instead of Platform.getPlatformByName(name). The old versions of these APIs are still supported, so existing code will continue to work.

There is one significant change in behavior. Since LangevinMiddleIntegrator was introduced in OpenMM 7.5, the old LangevinIntegrator class has been supported only for backward compatibility. It is never recommended, since it is based on a less accurate discretization of the Langevin equation. Nonetheless, we frequently observe people using it, not realizing there is a better alternative and their results are unnecessarily inaccurate. After four years, the harm caused by this outweighs any remaining benefits of backward compatibility. This release changes LangevinIntegrator to use the same algorithm as LangevinMiddleIntegrator. The two classes are now identical in all respects except name. If for some reason you really want the old discretization, you can still use a CustomIntegrator to recreate it.

You can install it with conda or mamba using the command

Code: Select all

mamba install -c conda-forge/label/openmm_rc -c conda-forge openmm
or if you want to get the HIP platform,

Code: Select all

mamba install -c conda-forge/label/openmm_rc -c conda-forge openmm-hip
Please give it a try and post how it works for you!

POST REPLY