OpenMM 7: Rapid development of high performance algorithms for molecular dynamics — TEI-tagged view

Peter Eastman, Jason Swails, John D. Chodera, Robert T. McGibbon, Yutong Zhao, Kyle A. Beauchamp, Lee-Ping Wang, Andrew C. Simmonett, Matthew P. Harrigan, Chaya D. Stern, Rafal P. Wiewiora, Bernard R. Brooks, Vijay S. Pande · 2017 · biophysics · doi:10.1371/journal.pcbi.1005659 · TEI xml · tagged edition · index · concepts · authors
Where this record's text came from. 2026-08-30 schema-0.3 pass: every quote verified as an exact substring of the staged text and anchored at merge time; concept terms verified present; every edge endpoint an existing node.
13 quotations on this page contain a reference number where the paper printed a superscript. This journal style prints citations as raised numerals — parameters12,13 — and the extraction flattened them into the line, so the sentence reads parameters 12 , 13 . The digits are citation markers and not part of what the author wrote. The quotes keep them for the same reason they keep every other extraction fault: a quote is reproduced exactly or it proves nothing.
Other fields define these differently the same word, defined another way in another discipline
plugin 2 fields · agreement 2 fields · Amber 2 fields
Tags on this paper every tag the record carries, whether or not the words occur in the text below — a number is how many papers in the corpus carry that tag; a tag with no number is unique to this paper
OpenMM molecular dynamics simulation toolkit extensibility forces with novel functional forms new integration algorithms new simulation protocols CPUs GPUs2 molecular dynamics simulation2 new force fields new sampling methods simulation engines plugin interface core development team layered architecture high-performance library domain specific language complete package Python scripting language forces and integrators mathematical expressions just-in-time compilation efficient implementation Calculations computational kernels plugin2 multiple input pipelines Amber2 CHARMM2 Gromacs Desmond PDBFixer YANK custom forces mechanism for creating interactions interaction energy machine code custom integrators AMOEBA polarizable force field force field conventional point charge force fields multipole moment induced dipole iterative self-consistent field calculation extrapolated polarization approximation large improvement in speed Drude particles dual-thermostat Langevin integrator virtual sites interaction sites triclinic boxes rhombic dodecahedron cost of the simulation Single Precision Mixed Precision Double Precision accuracy of some quantities large decrease in performance DHFR ABL1 MTOR using two GPUs a single GPU energy drift input pipelines forces and energies agreement2 system-or-tool-building173
Method, as described: software architecture description plus molecular-system benchmarks, precision experiments, and cross-package force and energy validation

Colour legend

PLOS Computational Biology<title level="j">A work — the journal / venue title.
2017<date>A year or date.

Peter EastmanpersName, Jason SwailspersName, John D. ChoderapersName, Robert T. McGibbonpersName, Yutong ZhaopersName, Kyle A. BeauchamppersName, Lee-Ping WangpersName, Andrew C. SimmonettpersName, Matthew P. HarriganpersName, Chaya D. SternpersName, Rafal P. WiewiorapersName, Bernard R. BrookspersName, Vijay S. PandepersName (2017date). “OpenMM 7: Rapid development of high performance algorithms for molecular dynamics.” PLOS Computational Biologytitle·j.

Object of study — OpenMMterm 7 architecture, extensibilityterm mechanisms, hardware portability, advanced molecular models, precision modesterm·var, and performance

Research question — how to make new molecular-dynamics methods easy to implement, portable across hardware, performant, and independently distributable

Contribution — a layered molecular-dynamics toolkit combining Python scripting, expression-defined forces and integratorsterm, runtime pluginsterm, and multiple input pipelinesterm

Cross-disciplinary analysis
content-tags & facets: phenomenon · claim-type · cross-domain-transfer · mechanism · claim-relation · replication-status · limitation — grounded in the full text
phenomenondelayed and hardware-limited dissemination of new molecular-dynamics methods in monolithic simulation packages — “There are many popular software packages for conducting molecular dynamics simulations. They vary considerably in their capabilities and feature sets. This is especially true when it comes to cutting edge, recently developed simulation techniques. The inventor of a new method will typically implement it in a single package, whichever one they are most comfortable working with. From that point, it may take years to be implemented in other packages, depending on the interests and priorities of the development team behind each one. In many cases, it may never get implemented. Even the initial implementation may not be accepted into an official release of the package it was created in. Or it may have limited usefulness, for example because it executes slowly or cannot be used on advanced hardware such as graphics processing units (GPUs)”
claim-typemethod — “OpenMM is a molecular dynamics simulation toolkit with a unique focus on extensibility. It allows users to easily add new features, including forces with novel functional forms, new integration algorithms, and new simulation protocols. Those features automatically work on all supported hardware types (including both CPUs and GPUs) and perform well on all of them. In many cases they require minimal coding, just a mathematical description of the desired function. They also require no modification to OpenMM itself and can be distributed independently of OpenMM. This makes it an ideal tool for researchers developing new simulation methods, and also allows those new methods to be immediately available to the larger community”
method — evidence — “To evaluate the speed of OpenMM, we benchmarked its performance with three molecular systems of varying size: Dihydrofolate reductase (DHFR), a 2489 atom protein solvated with 7023 water molecules to give a total of 23,558 atoms. Abl kinase (ABL1), a 4067 atom protein solvated with 13,692 water molecules to give a total of 45,143 atoms The mechanistic target of rapamycin (MTOR), a 19,019 atom protein solvated with 56,733 water molecules to give a total of 189,218 atoms. Benchmarks were run on the following types of hardware: An NVIDIA Titan X Pascal GPU. An NVIDIA Tesla K80 GPU. A 4 core, 3.5 GHz Intel Core i7-2700K CPU. All GPU simulations used CUDA 7.5. The K80 consists of two independent GPUs on a single board. OpenMM can parallelize a single simulation across multiple GPUs, or alternatively run a different simulation on each one at the same time. We therefore included benchmarks using only one of the GPUs (thus leaving the other free for a different simulation), as well as ones using both GPUs for a single simulation”
object of study — evidence — “OpenMM is a molecular dynamics simulation toolkit with a unique focus on extensibility. It allows users to easily add new features, including forces with novel functional forms, new integration algorithms, and new simulation protocols. Those features automatically work on all supported hardware types (including both CPUs and GPUs) and perform well on all of them. In many cases they require minimal coding, just a mathematical description of the desired function. They also require no modification to OpenMM itself and can be distributed independently of OpenMM. This makes it an ideal tool for researchers developing new simulation methods, and also allows those new methods to be immediately available to the larger community”
research question — evidence — “Extensibility is built into every layer of the architecture as a fundamental design goal. A guiding philosophy is that users should be able to implement new features as easily as possible, by writing as little code as possible. Those features should then work on all types of hardware, including both CPUs and GPUs, and have good performance on all of them. Finally, the developer of a feature should be able to package and distribute their code independently, without needing the approval or participation of the core OpenMM development team”
contribution — evidence — “OpenMM is based on a layered architecture which (see Fig 1 ), to the best of our knowledge, is unique among molecular dynamics packages. This allows it to be used in several different ways by users with varying needs and interests. Depending on how a particular user chooses to interact with it, OpenMM can act as: A high-performance library , callable from other programs, for performing a wide range of calculations used in molecular modelling and simulation on a range of advanced hardware platforms (both CPUs and GPUs). A domain specific language for easily implementing new algorithms for molecular modelling and simulation. A complete package for running molecular simulations”
mechanismlayered extensibility Python composes protocols, expression classes define calculations, and plugins implement kernels and hardware backends. — “OpenMM is based on a layered architecture which (see Fig 1 ), to the best of our knowledge, is unique among molecular dynamics packages. This allows it to be used in several different ways by users with varying needs and interests. Depending on how a particular user chooses to interact with it, OpenMM can act as: A high-performance library , callable from other programs, for performing a wide range of calculations used in molecular modelling and simulation on a range of advanced hardware platforms (both CPUs and GPUs). A domain specific language for easily implementing new algorithms for molecular modelling and simulation. A complete package for running molecular simulations”mechanisms[0]
mechanismexpression-to-kernel compilation User mathematical expressions are parsed, analyzed, and JIT-compiled into efficient hardware-specific implementations. — “The next layer down defines the calculations that are tied together through Python scripting. This layer includes many classes for creating “custom” forces and integrators. These classes provide a simple but powerful mechanism for extensibility. The user provides one or more mathematical expressions to describe the calculation to be done. For example, they might give an expression for the interaction energy of a pair of particles as a function of the distance between them. The expression is parsed and analyzed, and just-in-time compilation is used to generate an efficient implementation of the code for calculating that interaction [ 15 ]. This allows users to easily define a huge variety of interactions and integration algorithms. They can then be used on any supported type of hardware, and involve little or no loss in performance”mechanisms[1]
mechanismruntime plugin discovery Separately packaged plugins are discovered and loaded dynamically to add calculations or hardware support. — “At the lowest layer, OpenMM is based on a plugin mechanism. Calculations are defined by “computational kernels”. A plugin may define new kernels for doing new types of calculations, or alternatively it may provide new implementations of existing kernels, for example to support a new type of hardware. Plugins are dynamically discovered and loaded at runtime. Each one is packaged as a file that can be distributed separately from the rest of OpenMM and installed by any user”mechanisms[2]
mechanismexternal input-pipeline interoperability Systems prepared with Amber, CHARMM, Gromacs, or Desmond tools can be simulated in OpenMM. — “Another unique feature of OpenMM is its support for multiple input pipelines. Before a molecular system can be simulated, it first must be modelled. This is sometimes a complex process involving such steps as combining multiple molecules into a single file, building missing loops, selecting a force field, and parametrizing small molecules. Typically, each simulation package provides its own tools for doing this. They often differ in significant ways, such as what force fields are available. OpenMM does include modelling tools, but it also can directly read the file formats used by Amber [ 16 ], CHARMM [ 17 ], Gromacs [ 18 ], and Desmond [ 19 ]. A user can prepare their system with the tools from any of those packages, or with other tools that are designed to work with them, then simulate it in OpenMM. This gives great flexibility, since the user can use whatever tools are best suited to the system they want to simulate. It also lets OpenMM easily fit into their existing workflow. A user who is accustomed to a particular tool can continue to use it, but still run their simulation in OpenMM”mechanisms[3]
mechanismanalytic force generation OpenMM differentiates a user-supplied interaction-energy expression and compiles machine code for force and energy. — “In each case, the user provides an algebraic expression for the interaction energy as a function of the relevant variables. OpenMM analytically differentiates the expression to determine the corresponding force, then uses just-in-time compilation to generate machine code for efficiently computing the force and energy on the current hardware (either CPU or GPU)”mechanisms[4]
mechanismoperation-sequence integration Custom integrators specify per-degree, global, constraint, and flow-control operations for each time step. — “Just as custom forces allow users to implement novel interactions, custom integrators allow them to implement novel integration algorithms. The algorithm is defined by a sequence of operations, each defining a calculation to be done. Various types of operations are supported. Examples include: Evaluating a mathematical expression for each degree of freedom, then assigning the result to a variable for each one. Evaluating a mathematical expression once and assigning the result to a global variable. Summing an expression over all degrees of freedom and assigning the result to a global variable. Applying constraints to positions or velocities. In the simplest case, all operations are executed in order to take a single integration time step. In addition, OpenMM 7.0 added support for more complex flow control through if and while blocks”mechanisms[5]
mechanismAMOEBA induced-polarization calculation Multipole atoms carry induced dipoles solved iteratively through mutual interaction. — “OpenMM has an implementation of the AMOEBA polarizable force field which is, to the best of our knowledge, the fastest available in any code [ 3 ]. AMOEBA is designed to transcend the limitations of conventional point charge force fields and achieve much higher accuracy in force and energy computations. It uses two main mechanisms to achieve this. First, instead of approximating atoms as point charges, it assigns each one a multipole moment up to the level of quadrupoles. Second, it explicitly models atomic polarization by assigning an induced dipole to each atom. Because the induced dipoles interact with each other, they must be computed at each time step using an iterative self-consistent field calculation. Both of these features make AMOEBA far slower to simulate than conventional force fields”mechanisms[6]
mechanismextrapolated polarization A few induced-dipole iterations are analytically extrapolated toward the infinite-iteration limit. — “Much research has been done recently on ways to reduce this cost, and new versions of OpenMM have incorporated several of the most recent algorithms. Interactions between multipoles are computed using spherical harmonics in a quasi-internal coordinate system [ 30 , 31 ] (added in OpenMM 7.0). The iterative solver for induced dipoles uses the Direct Inversion in the Iterative Subspace (DIIS) algorithm [ 32 ] (added in OpenMM 6.1). Alternatively, it can use the recently developed extrapolated polarization approximation [ 33 ] (added in OpenMM 7.0). In this method, only a few iterations are performed, and then an analytic approximation is used to extrapolate to the limit of infinite iterations. This can give a large improvement in speed with only a very small loss in accuracy”mechanisms[7]
mechanismgeneral virtual-site coordinates Weighted atom-position vectors define an orthonormal coordinate system and arbitrary site location. — “OpenMM also offers a few specialized rules for positioning virtual sites, but in addition, it has a very general method designed to cover all cases that are ever likely to occur in which a virtual site depends on the positions of three atoms. This method, added in OpenMM 6.1, can reproduce all four of the rules provided by Gromacs, as well as supporting many other situations they could not. In this method, three vectors are first calculated as weighted averages of the positions of the three atoms: o = w 1 o r 1 + w 2 o r 2 + w 3 o r 3 d x = w 1 x r 1 + w 2 x r 2 + w 3 x r 3 d y = w 1 y r 1 + w 2 y r 2 + w 3 y r 3 where r 1 , r 2 , and r 3 are the atom positions, and the coefficients are user-defined. They are then used to construct a set of orthonormal coordinate axes ( x ^ , y ^ , z ^ ): d z = d x × d y x ^ = d x / | d x | z ^ = d z / | d z | y ^ = z ^ × x ^ Finally, the virtual site position is set to an arbitrary user-defined location within this coordinate system: r = o + p 1 x ^ + p 2 y ^ + p 3 z ^ This method is another example of how flexibility and extensibility are core design goals of OpenMM. Instead of supporting only a limited set of specialized virtual site types, it tries to provide a very general type that can cover as wide a range of cases as possible, thus giving maximum flexibility to users in designing their models and force fields”mechanisms[8]
mechanismcross-package input validation Identical prepared systems are loaded into source packages and OpenMM, then forces and energies are compared. — “To validate the accuracy of the input pipelines, we constructed systems using the setup tools from other packages, then loaded them into those packages and into OpenMM and compared the forces and energies. We performed these tests on two systems: DHFR, a 159 residue protein, and 2KOC, a 14-mer hairpin RNA. Comparisons were made to Amber 16, Gromacs 4.6.5, and CHARMM-LITE c40b1. For Amber, we performed comparisons in both explicit solvent and OBC1 implicit solvent. For Gromacs and CHARMM, we compared only explicit solvent”mechanisms[9]
extends OpenMM 4.1 — “OpenMM is a molecular dynamics package designed to address these problems. It began as simply a library for performing certain types of calculations on GPUs, but in recent versions has grown into a complete simulation package with unique and powerful features. This article describes OpenMM 7.0, which is the latest release at the time of writing. An earlier version (OpenMM 4.1) was described in a previous publication [ 14 ]. This article focuses primarily on what has changed since that version, but for completeness there is some overlap between the two”claim_relations[0]
builds-on OpenMM's original GPU calculation library — “OpenMM is a molecular dynamics package designed to address these problems. It began as simply a library for performing certain types of calculations on GPUs, but in recent versions has grown into a complete simulation package with unique and powerful features. This article describes OpenMM 7.0, which is the latest release at the time of writing. An earlier version (OpenMM 4.1) was described in a previous publication [ 14 ]. This article focuses primarily on what has changed since that version, but for completeness there is some overlap between the two”claim_relations[1]
extends single-package molecular-system preparation — “Another unique feature of OpenMM is its support for multiple input pipelines. Before a molecular system can be simulated, it first must be modelled. This is sometimes a complex process involving such steps as combining multiple molecules into a single file, building missing loops, selecting a force field, and parametrizing small molecules. Typically, each simulation package provides its own tools for doing this. They often differ in significant ways, such as what force fields are available. OpenMM does include modelling tools, but it also can directly read the file formats used by Amber [ 16 ], CHARMM [ 17 ], Gromacs [ 18 ], and Desmond [ 19 ]. A user can prepare their system with the tools from any of those packages, or with other tools that are designed to work with them, then simulate it in OpenMM. This gives great flexibility, since the user can use whatever tools are best suited to the system they want to simulate. It also lets OpenMM easily fit into their existing workflow. A user who is accustomed to a particular tool can continue to use it, but still run their simulation in OpenMM”claim_relations[2]
senseOpenMM as an extensible molecular-dynamics toolkit whose added methods remain portable across CPUs and GPUs — “OpenMM is a molecular dynamics simulation toolkit with a unique focus on extensibility. It allows users to easily add new features, including forces with novel functional forms, new integration algorithms, and new simulation protocols. Those features automatically work on all supported hardware types (including both CPUs and GPUs) and perform well on all of them. In many cases they require minimal coding, just a mathematical description of the desired function. They also require no modification to OpenMM itself and can be distributed independently of OpenMM. This makes it an ideal tool for researchers developing new simulation methods, and also allows those new methods to be immediately available to the larger community”senses[0]
senseextensibility as adding and distributing features independently without changing the OpenMM core — “Extensibility is built into every layer of the architecture as a fundamental design goal. A guiding philosophy is that users should be able to implement new features as easily as possible, by writing as little code as possible. Those features should then work on all types of hardware, including both CPUs and GPUs, and have good performance on all of them. Finally, the developer of a feature should be able to package and distribute their code independently, without needing the approval or participation of the core OpenMM development team”senses[1]
senseOpenMM's layered architecture as Python composition, expression-defined calculations, and plugin kernels — “OpenMM is based on a layered architecture which (see Fig 1 ), to the best of our knowledge, is unique among molecular dynamics packages. This allows it to be used in several different ways by users with varying needs and interests. Depending on how a particular user chooses to interact with it, OpenMM can act as: A high-performance library , callable from other programs, for performing a wide range of calculations used in molecular modelling and simulation on a range of advanced hardware platforms (both CPUs and GPUs). A domain specific language for easily implementing new algorithms for molecular modelling and simulation. A complete package for running molecular simulations”senses[2]
senseOpenMM as library, domain-specific language, or complete simulation package depending on how it is used — “OpenMM is based on a layered architecture which (see Fig 1 ), to the best of our knowledge, is unique among molecular dynamics packages. This allows it to be used in several different ways by users with varying needs and interests. Depending on how a particular user chooses to interact with it, OpenMM can act as: A high-performance library , callable from other programs, for performing a wide range of calculations used in molecular modelling and simulation on a range of advanced hardware platforms (both CPUs and GPUs). A domain specific language for easily implementing new algorithms for molecular modelling and simulation. A complete package for running molecular simulations”senses[3]
sensecustom forces as algebraic interaction energies analytically differentiated and JIT-compiled for current hardware — “In each case, the user provides an algebraic expression for the interaction energy as a function of the relevant variables. OpenMM analytically differentiates the expression to determine the corresponding force, then uses just-in-time compilation to generate machine code for efficiently computing the force and energy on the current hardware (either CPU or GPU)”senses[4]
sensecustom integrators as ordered calculation sequences with constraint and flow-control operations — “Just as custom forces allow users to implement novel interactions, custom integrators allow them to implement novel integration algorithms. The algorithm is defined by a sequence of operations, each defining a calculation to be done. Various types of operations are supported. Examples include: Evaluating a mathematical expression for each degree of freedom, then assigning the result to a variable for each one. Evaluating a mathematical expression once and assigning the result to a global variable. Summing an expression over all degrees of freedom and assigning the result to a global variable. Applying constraints to positions or velocities. In the simplest case, all operations are executed in order to take a single integration time step. In addition, OpenMM 7.0 added support for more complex flow control through if and while blocks”senses[5]
senseplugins as separately distributed runtime-loaded implementations of new calculations or hardware backends — “The lowest layer of the OpenMM architecture is based around plugins. This allows new features to be packaged as libraries, distributed independently, and loaded dynamically at runtime. For example, a plugin can implement a new type of interaction or a new integration algorithm, or it can add support for a new type of hardware. In fact, many of the core features of OpenMM are actually implemented as plugins, including its implementations of the AMOEBA force field [ 27 ], ring polymer molecular dynamics (RPMD) [ 28 ], and polarizable Drude particles [ 29 ]. This provides nearly unlimited extensibility, allowing users to implement any feature they might want. Writing a plugin involves far more work than the other extensibility features described above. For example, it is up to the user to write whatever code is necessary to make it work on each type of hardware, such as CUDA or OpenCL code for GPUs. When possible, it is therefore usually preferable to use one of the other mechanisms. Nevertheless, plugins are an important option when extreme extensibility and performance is needed. Like the other mechanisms, they allow a developer to create an extension and distribute it directly to users. No modifications to OpenMM itself are needed”senses[6]
sensemultiple input pipelines as preparing systems in Amber, CHARMM, Gromacs, or Desmond and simulating them in OpenMM — “Another unique feature of OpenMM is its support for multiple input pipelines. Before a molecular system can be simulated, it first must be modelled. This is sometimes a complex process involving such steps as combining multiple molecules into a single file, building missing loops, selecting a force field, and parametrizing small molecules. Typically, each simulation package provides its own tools for doing this. They often differ in significant ways, such as what force fields are available. OpenMM does include modelling tools, but it also can directly read the file formats used by Amber [ 16 ], CHARMM [ 17 ], Gromacs [ 18 ], and Desmond [ 19 ]. A user can prepare their system with the tools from any of those packages, or with other tools that are designed to work with them, then simulate it in OpenMM. This gives great flexibility, since the user can use whatever tools are best suited to the system they want to simulate. It also lets OpenMM easily fit into their existing workflow. A user who is accustomed to a particular tool can continue to use it, but still run their simulation in OpenMM”senses[7]
senseAMOEBA as a polarizable multipole model with induced dipoles computed self-consistently — “OpenMM has an implementation of the AMOEBA polarizable force field which is, to the best of our knowledge, the fastest available in any code [ 3 ]. AMOEBA is designed to transcend the limitations of conventional point charge force fields and achieve much higher accuracy in force and energy computations. It uses two main mechanisms to achieve this. First, instead of approximating atoms as point charges, it assigns each one a multipole moment up to the level of quadrupoles. Second, it explicitly models atomic polarization by assigning an induced dipole to each atom. Because the induced dipoles interact with each other, they must be computed at each time step using an iterative self-consistent field calculation. Both of these features make AMOEBA far slower to simulate than conventional force fields”senses[8]
senseDrude polarizability as paired charges coupled by an anisotropic harmonic force — “A new feature introduced in OpenMM 5.2 is support for Drude particles [ 29 ] as an alternative way of modelling polarizability. In this method, each polarizable atom is modelled as a pair of charges connected by an anisotropic harmonic force. When an electric field is applied, the two particles are displaced from each other, creating a dipole moment. The strength of the force connecting them determines the atomic polarizability. The particle positions can be determined using a self-consistent field calculation or, more commonly, a dual-thermostat Langevin integrator that couples the center of mass of each pair to a high temperature heat bath (e.g. 300K), but the internal motion of each pair to a low temperature heat bath (e.g. 1K). Polarizable force fields based on Drude particles are included with OpenMM. This includes the SWM4-NDP water model [ 34 ], and the CHARMM polarizable force field for proteins [ 4 ]. They aim to incorporate some of the same physical effects as AMOEBA at a lower computational cost”senses[9]
sensevirtual sites as positions recalculated from other particles rather than integrated directly — “Virtual sites are interaction sites within a molecule whose positions are not integrated directly. Instead, they are calculated at each time step based on the positions of other particles. They are often used to provide a more detailed charge distribution than would be possible using only a single point charge for each atom. For example, they appear in many multisite water models (such as TIP-4P and TIP-5P), and also in the CHARMM polarizable protein force field”senses[10]
senseprecision modes as an explicit speed-accuracy choice for GPU molecular dynamics — “Many aspects of a molecular dynamics code involve tradeoffs between speed and accuracy. This is especially true when executing on a GPU, since they often have very poor double precision performance. To optimize execution speed, it is preferable to use single precision whenever possible, resorting to double precision only when absolutely necessary. Unfortunately, there is no unique standard for when it is "necessary". The minimum acceptable level of error can vary widely depending on the details of a simulation and the type of information one wishes to obtain from it”senses[11]
sensebenchmark performance as hardware-, system-, precision-, and simulation-goal dependent — “To evaluate the speed of OpenMM, we benchmarked its performance with three molecular systems of varying size: Dihydrofolate reductase (DHFR), a 2489 atom protein solvated with 7023 water molecules to give a total of 23,558 atoms. Abl kinase (ABL1), a 4067 atom protein solvated with 13,692 water molecules to give a total of 45,143 atoms The mechanistic target of rapamycin (MTOR), a 19,019 atom protein solvated with 56,733 water molecules to give a total of 189,218 atoms. Benchmarks were run on the following types of hardware: An NVIDIA Titan X Pascal GPU. An NVIDIA Tesla K80 GPU. A 4 core, 3.5 GHz Intel Core i7-2700K CPU. All GPU simulations used CUDA 7.5. The K80 consists of two independent GPUs on a single board. OpenMM can parallelize a single simulation across multiple GPUs, or alternatively run a different simulation on each one at the same time. We therefore included benchmarks using only one of the GPUs (thus leaving the other free for a different simulation), as well as ones using both GPUs for a single simulation”senses[12]
senseinput-pipeline validity as cross-package agreement of forces and energy components — “Results are shown for Amber in Tables 6 and 7 , for Gromacs in Tables 8 and 9 , and for CHARMM in Tables 10 and 11 . In all cases the agreement is excellent, with all energy components matching to at least four significant digits. In systems that use PME, the nonbonded energies have somewhat larger differences than other energy components. This is partly because of the larger magnitude of this interaction, and partly because of the fact that different applications compute nonbonded interactions in slightly different ways. For example, Amber uses 4th order splines for charge spreading, while OpenMM uses 5th order splines. Nonetheless, they both compute the forces and energy to similar overall accuracy”senses[13]
noteOpenMM 4.1 — The article focuses on changes through OpenMM 7.0 since the earlier published version. — “OpenMM is a molecular dynamics package designed to address these problems. It began as simply a library for performing certain types of calculations on GPUs, but in recent versions has grown into a complete simulation package with unique and powerful features. This article describes OpenMM 7.0, which is the latest release at the time of writing. An earlier version (OpenMM 4.1) was described in a previous publication [ 14 ]. This article focuses primarily on what has changed since that version, but for completeness there is some overlap between the two”claim_relations[0]
weightOpenMM 4.1 — 0.95 — “OpenMM is a molecular dynamics package designed to address these problems. It began as simply a library for performing certain types of calculations on GPUs, but in recent versions has grown into a complete simulation package with unique and powerful features. This article describes OpenMM 7.0, which is the latest release at the time of writing. An earlier version (OpenMM 4.1) was described in a previous publication [ 14 ]. This article focuses primarily on what has changed since that version, but for completeness there is some overlap between the two”claim_relations[0]
noteOpenMM's original GPU calculation library — The complete package grew from the earlier GPU-focused library. — “OpenMM is a molecular dynamics package designed to address these problems. It began as simply a library for performing certain types of calculations on GPUs, but in recent versions has grown into a complete simulation package with unique and powerful features. This article describes OpenMM 7.0, which is the latest release at the time of writing. An earlier version (OpenMM 4.1) was described in a previous publication [ 14 ]. This article focuses primarily on what has changed since that version, but for completeness there is some overlap between the two”claim_relations[1]
weightOpenMM's original GPU calculation library — 0.95 — “OpenMM is a molecular dynamics package designed to address these problems. It began as simply a library for performing certain types of calculations on GPUs, but in recent versions has grown into a complete simulation package with unique and powerful features. This article describes OpenMM 7.0, which is the latest release at the time of writing. An earlier version (OpenMM 4.1) was described in a previous publication [ 14 ]. This article focuses primarily on what has changed since that version, but for completeness there is some overlap between the two”claim_relations[1]
notesingle-package molecular-system preparation — Multiple input pipelines add interoperability with four established package ecosystems. — “Another unique feature of OpenMM is its support for multiple input pipelines. Before a molecular system can be simulated, it first must be modelled. This is sometimes a complex process involving such steps as combining multiple molecules into a single file, building missing loops, selecting a force field, and parametrizing small molecules. Typically, each simulation package provides its own tools for doing this. They often differ in significant ways, such as what force fields are available. OpenMM does include modelling tools, but it also can directly read the file formats used by Amber [ 16 ], CHARMM [ 17 ], Gromacs [ 18 ], and Desmond [ 19 ]. A user can prepare their system with the tools from any of those packages, or with other tools that are designed to work with them, then simulate it in OpenMM. This gives great flexibility, since the user can use whatever tools are best suited to the system they want to simulate. It also lets OpenMM easily fit into their existing workflow. A user who is accustomed to a particular tool can continue to use it, but still run their simulation in OpenMM”claim_relations[2]
weightsingle-package molecular-system preparation — 0.95 — “Another unique feature of OpenMM is its support for multiple input pipelines. Before a molecular system can be simulated, it first must be modelled. This is sometimes a complex process involving such steps as combining multiple molecules into a single file, building missing loops, selecting a force field, and parametrizing small molecules. Typically, each simulation package provides its own tools for doing this. They often differ in significant ways, such as what force fields are available. OpenMM does include modelling tools, but it also can directly read the file formats used by Amber [ 16 ], CHARMM [ 17 ], Gromacs [ 18 ], and Desmond [ 19 ]. A user can prepare their system with the tools from any of those packages, or with other tools that are designed to work with them, then simulate it in OpenMM. This gives great flexibility, since the user can use whatever tools are best suited to the system they want to simulate. It also lets OpenMM easily fit into their existing workflow. A user who is accustomed to a particular tool can continue to use it, but still run their simulation in OpenMM”claim_relations[2]
noteOpenMM —is-a→ molecular dynamics simulation toolkit — Direct categorical class statement. — “OpenMM is a molecular dynamics simulation toolkit with a unique focus on extensibility. It allows users to easily add new features, including forces with novel functional forms, new integration algorithms, and new simulation protocols. Those features automatically work on all supported hardware types (including both CPUs and GPUs) and perform well on all of them. In many cases they require minimal coding, just a mathematical description of the desired function. They also require no modification to OpenMM itself and can be distributed independently of OpenMM. This makes it an ideal tool for researchers developing new simulation methods, and also allows those new methods to be immediately available to the larger community”concept_edges[0]
relationOpenMM —is-a→ molecular dynamics simulation toolkit — OpenMM is a molecular dynamics simulation toolkit. — “OpenMM is a molecular dynamics simulation toolkit with a unique focus on extensibility. It allows users to easily add new features, including forces with novel functional forms, new integration algorithms, and new simulation protocols. Those features automatically work on all supported hardware types (including both CPUs and GPUs) and perform well on all of them. In many cases they require minimal coding, just a mathematical description of the desired function. They also require no modification to OpenMM itself and can be distributed independently of OpenMM. This makes it an ideal tool for researchers developing new simulation methods, and also allows those new methods to be immediately available to the larger community”concept_edges[0]
noteCalculations —operationalised-as→ computational kernels — The paper explicitly defines the executable calculation unit. — “At the lowest layer, OpenMM is based on a plugin mechanism. Calculations are defined by “computational kernels”. A plugin may define new kernels for doing new types of calculations, or alternatively it may provide new implementations of existing kernels, for example to support a new type of hardware. Plugins are dynamically discovered and loaded at runtime. Each one is packaged as a file that can be distributed separately from the rest of OpenMM and installed by any user”concept_edges[1]
relationCalculations —operationalised-as→ computational kernels — Calculations are defined by computational kernels. — “At the lowest layer, OpenMM is based on a plugin mechanism. Calculations are defined by “computational kernels”. A plugin may define new kernels for doing new types of calculations, or alternatively it may provide new implementations of existing kernels, for example to support a new type of hardware. Plugins are dynamically discovered and loaded at runtime. Each one is packaged as a file that can be distributed separately from the rest of OpenMM and installed by any user”concept_edges[1]
weightCalculations —operationalised-as→ computational kernels — 0.95 — “At the lowest layer, OpenMM is based on a plugin mechanism. Calculations are defined by “computational kernels”. A plugin may define new kernels for doing new types of calculations, or alternatively it may provide new implementations of existing kernels, for example to support a new type of hardware. Plugins are dynamically discovered and loaded at runtime. Each one is packaged as a file that can be distributed separately from the rest of OpenMM and installed by any user”concept_edges[1]
effect directionjust-in-time compilation —causes→ efficient implementation — increases — “The next layer down defines the calculations that are tied together through Python scripting. This layer includes many classes for creating “custom” forces and integrators. These classes provide a simple but powerful mechanism for extensibility. The user provides one or more mathematical expressions to describe the calculation to be done. For example, they might give an expression for the interaction energy of a pair of particles as a function of the distance between them. The expression is parsed and analyzed, and just-in-time compilation is used to generate an efficient implementation of the code for calculating that interaction [ 15 ]. This allows users to easily define a huge variety of interactions and integration algorithms. They can then be used on any supported type of hardware, and involve little or no loss in performance”concept_edges[2]
notejust-in-time compilation —causes→ efficient implementation — A direct unhedged code-generation mechanism. — “The next layer down defines the calculations that are tied together through Python scripting. This layer includes many classes for creating “custom” forces and integrators. These classes provide a simple but powerful mechanism for extensibility. The user provides one or more mathematical expressions to describe the calculation to be done. For example, they might give an expression for the interaction energy of a pair of particles as a function of the distance between them. The expression is parsed and analyzed, and just-in-time compilation is used to generate an efficient implementation of the code for calculating that interaction [ 15 ]. This allows users to easily define a huge variety of interactions and integration algorithms. They can then be used on any supported type of hardware, and involve little or no loss in performance”concept_edges[2]
relationjust-in-time compilation —causes→ efficient implementation — Just-in-time compilation generates an efficient implementation of the parsed expression. — “The next layer down defines the calculations that are tied together through Python scripting. This layer includes many classes for creating “custom” forces and integrators. These classes provide a simple but powerful mechanism for extensibility. The user provides one or more mathematical expressions to describe the calculation to be done. For example, they might give an expression for the interaction energy of a pair of particles as a function of the distance between them. The expression is parsed and analyzed, and just-in-time compilation is used to generate an efficient implementation of the code for calculating that interaction [ 15 ]. This allows users to easily define a huge variety of interactions and integration algorithms. They can then be used on any supported type of hardware, and involve little or no loss in performance”concept_edges[2]
weightjust-in-time compilation —causes→ efficient implementation — 0.95 — “The next layer down defines the calculations that are tied together through Python scripting. This layer includes many classes for creating “custom” forces and integrators. These classes provide a simple but powerful mechanism for extensibility. The user provides one or more mathematical expressions to describe the calculation to be done. For example, they might give an expression for the interaction energy of a pair of particles as a function of the distance between them. The expression is parsed and analyzed, and just-in-time compilation is used to generate an efficient implementation of the code for calculating that interaction [ 15 ]. This allows users to easily define a huge variety of interactions and integration algorithms. They can then be used on any supported type of hardware, and involve little or no loss in performance”concept_edges[2]
notecustom forces —is-a→ mechanism for creating interactions — Direct categorical class statement. — “custom forces are a mechanism for creating interactions between particles with entirely novel functional forms”concept_edges[3]
relationcustom forces —is-a→ mechanism for creating interactions — Custom forces are a mechanism for creating interactions with novel forms. — “custom forces are a mechanism for creating interactions between particles with entirely novel functional forms”concept_edges[3]
noteAMOEBA polarizable force field —is-a→ force field — This is explicitly marked as a compound-name inference. — “OpenMM has an implementation of the AMOEBA polarizable force field which is, to the best of our knowledge, the fastest available in any code [ 3 ]. AMOEBA is designed to transcend the limitations of conventional point charge force fields and achieve much higher accuracy in force and energy computations. It uses two main mechanisms to achieve this. First, instead of approximating atoms as point charges, it assigns each one a multipole moment up to the level of quadrupoles. Second, it explicitly models atomic polarization by assigning an induced dipole to each atom. Because the induced dipoles interact with each other, they must be computed at each time step using an iterative self-consistent field calculation. Both of these features make AMOEBA far slower to simulate than conventional force fields”concept_edges[4]
relationAMOEBA polarizable force field —is-a→ force field — The compound name AMOEBA polarizable force field encodes its force-field class. — “OpenMM has an implementation of the AMOEBA polarizable force field which is, to the best of our knowledge, the fastest available in any code [ 3 ]. AMOEBA is designed to transcend the limitations of conventional point charge force fields and achieve much higher accuracy in force and energy computations. It uses two main mechanisms to achieve this. First, instead of approximating atoms as point charges, it assigns each one a multipole moment up to the level of quadrupoles. Second, it explicitly models atomic polarization by assigning an induced dipole to each atom. Because the induced dipoles interact with each other, they must be computed at each time step using an iterative self-consistent field calculation. Both of these features make AMOEBA far slower to simulate than conventional force fields”concept_edges[4]
noteAMOEBA polarizable force field —contrasted-with→ conventional point charge force fields — The paper directly contrasts their atom and polarization representations. — “OpenMM has an implementation of the AMOEBA polarizable force field which is, to the best of our knowledge, the fastest available in any code [ 3 ]. AMOEBA is designed to transcend the limitations of conventional point charge force fields and achieve much higher accuracy in force and energy computations. It uses two main mechanisms to achieve this. First, instead of approximating atoms as point charges, it assigns each one a multipole moment up to the level of quadrupoles. Second, it explicitly models atomic polarization by assigning an induced dipole to each atom. Because the induced dipoles interact with each other, they must be computed at each time step using an iterative self-consistent field calculation. Both of these features make AMOEBA far slower to simulate than conventional force fields”concept_edges[5]
relationAMOEBA polarizable force field —contrasted-with→ conventional point charge force fields — AMOEBA uses multipoles and induced dipoles instead of conventional point-charge approximations. — “OpenMM has an implementation of the AMOEBA polarizable force field which is, to the best of our knowledge, the fastest available in any code [ 3 ]. AMOEBA is designed to transcend the limitations of conventional point charge force fields and achieve much higher accuracy in force and energy computations. It uses two main mechanisms to achieve this. First, instead of approximating atoms as point charges, it assigns each one a multipole moment up to the level of quadrupoles. Second, it explicitly models atomic polarization by assigning an induced dipole to each atom. Because the induced dipoles interact with each other, they must be computed at each time step using an iterative self-consistent field calculation. Both of these features make AMOEBA far slower to simulate than conventional force fields”concept_edges[5]
weightAMOEBA polarizable force field —contrasted-with→ conventional point charge force fields — 0.95 — “OpenMM has an implementation of the AMOEBA polarizable force field which is, to the best of our knowledge, the fastest available in any code [ 3 ]. AMOEBA is designed to transcend the limitations of conventional point charge force fields and achieve much higher accuracy in force and energy computations. It uses two main mechanisms to achieve this. First, instead of approximating atoms as point charges, it assigns each one a multipole moment up to the level of quadrupoles. Second, it explicitly models atomic polarization by assigning an induced dipole to each atom. Because the induced dipoles interact with each other, they must be computed at each time step using an iterative self-consistent field calculation. Both of these features make AMOEBA far slower to simulate than conventional force fields”concept_edges[5]
effect directionextrapolated polarization approximation —causes→ large improvement in speed — increases — “Much research has been done recently on ways to reduce this cost, and new versions of OpenMM have incorporated several of the most recent algorithms. Interactions between multipoles are computed using spherical harmonics in a quasi-internal coordinate system [ 30 , 31 ] (added in OpenMM 7.0). The iterative solver for induced dipoles uses the Direct Inversion in the Iterative Subspace (DIIS) algorithm [ 32 ] (added in OpenMM 6.1). Alternatively, it can use the recently developed extrapolated polarization approximation [ 33 ] (added in OpenMM 7.0). In this method, only a few iterations are performed, and then an analytic approximation is used to extrapolate to the limit of infinite iterations. This can give a large improvement in speed with only a very small loss in accuracy”concept_edges[6]
noteextrapolated polarization approximation —causes→ large improvement in speed — The paper uses 'can', so paper strength is moderate. — “Much research has been done recently on ways to reduce this cost, and new versions of OpenMM have incorporated several of the most recent algorithms. Interactions between multipoles are computed using spherical harmonics in a quasi-internal coordinate system [ 30 , 31 ] (added in OpenMM 7.0). The iterative solver for induced dipoles uses the Direct Inversion in the Iterative Subspace (DIIS) algorithm [ 32 ] (added in OpenMM 6.1). Alternatively, it can use the recently developed extrapolated polarization approximation [ 33 ] (added in OpenMM 7.0). In this method, only a few iterations are performed, and then an analytic approximation is used to extrapolate to the limit of infinite iterations. This can give a large improvement in speed with only a very small loss in accuracy”concept_edges[6]
relationextrapolated polarization approximation —causes→ large improvement in speed — The extrapolated polarization approximation can give a large speed improvement. — “Much research has been done recently on ways to reduce this cost, and new versions of OpenMM have incorporated several of the most recent algorithms. Interactions between multipoles are computed using spherical harmonics in a quasi-internal coordinate system [ 30 , 31 ] (added in OpenMM 7.0). The iterative solver for induced dipoles uses the Direct Inversion in the Iterative Subspace (DIIS) algorithm [ 32 ] (added in OpenMM 6.1). Alternatively, it can use the recently developed extrapolated polarization approximation [ 33 ] (added in OpenMM 7.0). In this method, only a few iterations are performed, and then an analytic approximation is used to extrapolate to the limit of infinite iterations. This can give a large improvement in speed with only a very small loss in accuracy”concept_edges[6]
weightextrapolated polarization approximation —causes→ large improvement in speed — 0.7 — “Much research has been done recently on ways to reduce this cost, and new versions of OpenMM have incorporated several of the most recent algorithms. Interactions between multipoles are computed using spherical harmonics in a quasi-internal coordinate system [ 30 , 31 ] (added in OpenMM 7.0). The iterative solver for induced dipoles uses the Direct Inversion in the Iterative Subspace (DIIS) algorithm [ 32 ] (added in OpenMM 6.1). Alternatively, it can use the recently developed extrapolated polarization approximation [ 33 ] (added in OpenMM 7.0). In this method, only a few iterations are performed, and then an analytic approximation is used to extrapolate to the limit of infinite iterations. This can give a large improvement in speed with only a very small loss in accuracy”concept_edges[6]
effect directionMixed Precision —causes→ accuracy of some quantities — increases — “OpenMM 5.0 introduced support for multiple precision modes. When running on a GPU, the user has a choice of three modes: Single Precision : Nearly all calculations are done in single precision. Double is used in only a handful of places where it has negligible impact on performance and is most important for accuracy. Mixed Precision : Forces are computed in single precision, but integration and energy accumulation are done in double precision. This gives a large improvement in the accuracy of some quantities, while only having a small impact in performance. Double Precision : All calculations are done in double precision. This gives the best accuracy, but often has a very large effect on performance”concept_edges[7]
noteMixed Precision —causes→ accuracy of some quantities — The performance of this mode is stated directly. — “OpenMM 5.0 introduced support for multiple precision modes. When running on a GPU, the user has a choice of three modes: Single Precision : Nearly all calculations are done in single precision. Double is used in only a handful of places where it has negligible impact on performance and is most important for accuracy. Mixed Precision : Forces are computed in single precision, but integration and energy accumulation are done in double precision. This gives a large improvement in the accuracy of some quantities, while only having a small impact in performance. Double Precision : All calculations are done in double precision. This gives the best accuracy, but often has a very large effect on performance”concept_edges[7]
relationMixed Precision —causes→ accuracy of some quantities — Mixed precision gives a large improvement in the accuracy of some quantities. — “OpenMM 5.0 introduced support for multiple precision modes. When running on a GPU, the user has a choice of three modes: Single Precision : Nearly all calculations are done in single precision. Double is used in only a handful of places where it has negligible impact on performance and is most important for accuracy. Mixed Precision : Forces are computed in single precision, but integration and energy accumulation are done in double precision. This gives a large improvement in the accuracy of some quantities, while only having a small impact in performance. Double Precision : All calculations are done in double precision. This gives the best accuracy, but often has a very large effect on performance”concept_edges[7]
weightMixed Precision —causes→ accuracy of some quantities — 0.95 — “OpenMM 5.0 introduced support for multiple precision modes. When running on a GPU, the user has a choice of three modes: Single Precision : Nearly all calculations are done in single precision. Double is used in only a handful of places where it has negligible impact on performance and is most important for accuracy. Mixed Precision : Forces are computed in single precision, but integration and energy accumulation are done in double precision. This gives a large improvement in the accuracy of some quantities, while only having a small impact in performance. Double Precision : All calculations are done in double precision. This gives the best accuracy, but often has a very large effect on performance”concept_edges[7]
noteusing two GPUs —contrasted-with→ a single GPU — The comparison is measured and explicitly conditional on molecule and settings. — “Depending on the molecule and settings, using two GPUs is anywhere from 22% to 62% faster than a single GPU, with the larger molecules generally having the higher speedups. If the goal is to run a single simulation as quickly as possible, using multiple GPUs is therefore quite useful. On the other hand, if the goal is to generate as much total simulation time as possible, it is more efficient to run a separate simulation on each one”concept_edges[9]
relationusing two GPUs —contrasted-with→ a single GPU — Using two GPUs is compared with a single GPU and is 22 to 62 percent faster depending on system and settings. — “Depending on the molecule and settings, using two GPUs is anywhere from 22% to 62% faster than a single GPU, with the larger molecules generally having the higher speedups. If the goal is to run a single simulation as quickly as possible, using multiple GPUs is therefore quite useful. On the other hand, if the goal is to generate as much total simulation time as possible, it is more efficient to run a separate simulation on each one”concept_edges[9]
weightusing two GPUs —contrasted-with→ a single GPU — 0.95 — “Depending on the molecule and settings, using two GPUs is anywhere from 22% to 62% faster than a single GPU, with the larger molecules generally having the higher speedups. If the goal is to run a single simulation as quickly as possible, using multiple GPUs is therefore quite useful. On the other hand, if the goal is to generate as much total simulation time as possible, it is more efficient to run a separate simulation on each one”concept_edges[9]
auditAmber —contrasted-with→ OpenMM — Audit 2026-09-28: DOUBTFUL - read against its span and kept, but Amber and OpenMM AGREE to four digits and differ in spline order; contrasted-with overstates. — “Results are shown for Amber in Tables 6 and 7 , for Gromacs in Tables 8 and 9 , and for CHARMM in Tables 10 and 11 . In all cases the agreement is excellent, with all energy components matching to at least four significant digits. In systems that use PME, the nonbonded energies have somewhat larger differences than other energy components. This is partly because of the larger magnitude of this interaction, and partly because of the fact that different applications compute nonbonded interactions in slightly different ways. For example, Amber uses 4th order splines for charge spreading, while OpenMM uses 5th order splines. Nonetheless, they both compute the forces and energy to similar overall accuracy”concept_edges[10]
noteAmber —contrasted-with→ OpenMM — The paper directly contrasts a numerical implementation choice. — “Results are shown for Amber in Tables 6 and 7 , for Gromacs in Tables 8 and 9 , and for CHARMM in Tables 10 and 11 . In all cases the agreement is excellent, with all energy components matching to at least four significant digits. In systems that use PME, the nonbonded energies have somewhat larger differences than other energy components. This is partly because of the larger magnitude of this interaction, and partly because of the fact that different applications compute nonbonded interactions in slightly different ways. For example, Amber uses 4th order splines for charge spreading, while OpenMM uses 5th order splines. Nonetheless, they both compute the forces and energy to similar overall accuracy”concept_edges[10]
relationAmber —contrasted-with→ OpenMM — Amber and OpenMM use different spline orders for charge spreading while reaching similar overall accuracy. — “Results are shown for Amber in Tables 6 and 7 , for Gromacs in Tables 8 and 9 , and for CHARMM in Tables 10 and 11 . In all cases the agreement is excellent, with all energy components matching to at least four significant digits. In systems that use PME, the nonbonded energies have somewhat larger differences than other energy components. This is partly because of the larger magnitude of this interaction, and partly because of the fact that different applications compute nonbonded interactions in slightly different ways. For example, Amber uses 4th order splines for charge spreading, while OpenMM uses 5th order splines. Nonetheless, they both compute the forces and energy to similar overall accuracy”concept_edges[10]
weightAmber —contrasted-with→ OpenMM — 0.95 — “Results are shown for Amber in Tables 6 and 7 , for Gromacs in Tables 8 and 9 , and for CHARMM in Tables 10 and 11 . In all cases the agreement is excellent, with all energy components matching to at least four significant digits. In systems that use PME, the nonbonded energies have somewhat larger differences than other energy components. This is partly because of the larger magnitude of this interaction, and partly because of the fact that different applications compute nonbonded interactions in slightly different ways. For example, Amber uses 4th order splines for charge spreading, while OpenMM uses 5th order splines. Nonetheless, they both compute the forces and energy to similar overall accuracy”concept_edges[10]
relationOpenMM → high-performance library — OpenMM can act as a high-performance library. — “OpenMM is based on a layered architecture which (see Fig 1 ), to the best of our knowledge, is unique among molecular dynamics packages. This allows it to be used in several different ways by users with varying needs and interests. Depending on how a particular user chooses to interact with it, OpenMM can act as: A high-performance library , callable from other programs, for performing a wide range of calculations used in molecular modelling and simulation on a range of advanced hardware platforms (both CPUs and GPUs). A domain specific language for easily implementing new algorithms for molecular modelling and simulation. A complete package for running molecular simulations”unhoused_relations[0]
weightOpenMM → high-performance library — 0.95 — “OpenMM is based on a layered architecture which (see Fig 1 ), to the best of our knowledge, is unique among molecular dynamics packages. This allows it to be used in several different ways by users with varying needs and interests. Depending on how a particular user chooses to interact with it, OpenMM can act as: A high-performance library , callable from other programs, for performing a wide range of calculations used in molecular modelling and simulation on a range of advanced hardware platforms (both CPUs and GPUs). A domain specific language for easily implementing new algorithms for molecular modelling and simulation. A complete package for running molecular simulations”unhoused_relations[0]
relationOpenMM → domain specific language — OpenMM can act as a domain-specific language for implementing algorithms. — “OpenMM is based on a layered architecture which (see Fig 1 ), to the best of our knowledge, is unique among molecular dynamics packages. This allows it to be used in several different ways by users with varying needs and interests. Depending on how a particular user chooses to interact with it, OpenMM can act as: A high-performance library , callable from other programs, for performing a wide range of calculations used in molecular modelling and simulation on a range of advanced hardware platforms (both CPUs and GPUs). A domain specific language for easily implementing new algorithms for molecular modelling and simulation. A complete package for running molecular simulations”unhoused_relations[1]
weightOpenMM → domain specific language — 0.95 — “OpenMM is based on a layered architecture which (see Fig 1 ), to the best of our knowledge, is unique among molecular dynamics packages. This allows it to be used in several different ways by users with varying needs and interests. Depending on how a particular user chooses to interact with it, OpenMM can act as: A high-performance library , callable from other programs, for performing a wide range of calculations used in molecular modelling and simulation on a range of advanced hardware platforms (both CPUs and GPUs). A domain specific language for easily implementing new algorithms for molecular modelling and simulation. A complete package for running molecular simulations”unhoused_relations[1]
relationOpenMM → complete package — OpenMM can act as a complete molecular-simulation package. — “OpenMM is based on a layered architecture which (see Fig 1 ), to the best of our knowledge, is unique among molecular dynamics packages. This allows it to be used in several different ways by users with varying needs and interests. Depending on how a particular user chooses to interact with it, OpenMM can act as: A high-performance library , callable from other programs, for performing a wide range of calculations used in molecular modelling and simulation on a range of advanced hardware platforms (both CPUs and GPUs). A domain specific language for easily implementing new algorithms for molecular modelling and simulation. A complete package for running molecular simulations”unhoused_relations[2]
weightOpenMM → complete package — 0.95 — “OpenMM is based on a layered architecture which (see Fig 1 ), to the best of our knowledge, is unique among molecular dynamics packages. This allows it to be used in several different ways by users with varying needs and interests. Depending on how a particular user chooses to interact with it, OpenMM can act as: A high-performance library , callable from other programs, for performing a wide range of calculations used in molecular modelling and simulation on a range of advanced hardware platforms (both CPUs and GPUs). A domain specific language for easily implementing new algorithms for molecular modelling and simulation. A complete package for running molecular simulations”unhoused_relations[2]
relationplugin → computational kernels — A plugin defines new computational kernels or new implementations of existing kernels. — “At the lowest layer, OpenMM is based on a plugin mechanism. Calculations are defined by “computational kernels”. A plugin may define new kernels for doing new types of calculations, or alternatively it may provide new implementations of existing kernels, for example to support a new type of hardware. Plugins are dynamically discovered and loaded at runtime. Each one is packaged as a file that can be distributed separately from the rest of OpenMM and installed by any user”unhoused_relations[3]
weightplugin → computational kernels — 0.95 — “At the lowest layer, OpenMM is based on a plugin mechanism. Calculations are defined by “computational kernels”. A plugin may define new kernels for doing new types of calculations, or alternatively it may provide new implementations of existing kernels, for example to support a new type of hardware. Plugins are dynamically discovered and loaded at runtime. Each one is packaged as a file that can be distributed separately from the rest of OpenMM and installed by any user”unhoused_relations[3]
relationmultiple input pipelines → Amber — Multiple input pipelines let OpenMM read Amber formats and use Amber preparation tools. — “Another unique feature of OpenMM is its support for multiple input pipelines. Before a molecular system can be simulated, it first must be modelled. This is sometimes a complex process involving such steps as combining multiple molecules into a single file, building missing loops, selecting a force field, and parametrizing small molecules. Typically, each simulation package provides its own tools for doing this. They often differ in significant ways, such as what force fields are available. OpenMM does include modelling tools, but it also can directly read the file formats used by Amber [ 16 ], CHARMM [ 17 ], Gromacs [ 18 ], and Desmond [ 19 ]. A user can prepare their system with the tools from any of those packages, or with other tools that are designed to work with them, then simulate it in OpenMM. This gives great flexibility, since the user can use whatever tools are best suited to the system they want to simulate. It also lets OpenMM easily fit into their existing workflow. A user who is accustomed to a particular tool can continue to use it, but still run their simulation in OpenMM”unhoused_relations[4]
weightmultiple input pipelines → Amber — 0.95 — “Another unique feature of OpenMM is its support for multiple input pipelines. Before a molecular system can be simulated, it first must be modelled. This is sometimes a complex process involving such steps as combining multiple molecules into a single file, building missing loops, selecting a force field, and parametrizing small molecules. Typically, each simulation package provides its own tools for doing this. They often differ in significant ways, such as what force fields are available. OpenMM does include modelling tools, but it also can directly read the file formats used by Amber [ 16 ], CHARMM [ 17 ], Gromacs [ 18 ], and Desmond [ 19 ]. A user can prepare their system with the tools from any of those packages, or with other tools that are designed to work with them, then simulate it in OpenMM. This gives great flexibility, since the user can use whatever tools are best suited to the system they want to simulate. It also lets OpenMM easily fit into their existing workflow. A user who is accustomed to a particular tool can continue to use it, but still run their simulation in OpenMM”unhoused_relations[4]
relationrhombic dodecahedron → cost of the simulation — A rhombic-dodecahedron box reduces simulation cost by requiring less solvent. — “Earlier versions of OpenMM supported only rectangular periodic boxes. In OpenMM 6.3 it was extended to support triclinic boxes as well: ones formed by combinations of three arbitrary lattice vectors. It can be shown that this formulation is extremely general; all standard periodic box shapes, including the popular rhombic dodecahedron and truncated octahedron, can be represented as triclinic boxes [ 35 ]. This feature serves two important functions. First, it allows one to simulate crystals, which very often have non-rectangular unit cells. Second, it is useful when simulating freely rotating molecules in solvent. One needs to include a certain amount of padding around the molecule to ensure that no two periodic copies ever come too close together. Because the molecule can freely rotate, the same padding is required along all directions, so one wants the periodic box to be as close as possible to spherical. For a given padding distance, the rhombic dodecahedron has only about 71% the volume of a rectangular unit cell. It therefore requires less solvent and reduces the cost of the simulation”unhoused_relations[5]
weightrhombic dodecahedron → cost of the simulation — 0.95 — “Earlier versions of OpenMM supported only rectangular periodic boxes. In OpenMM 6.3 it was extended to support triclinic boxes as well: ones formed by combinations of three arbitrary lattice vectors. It can be shown that this formulation is extremely general; all standard periodic box shapes, including the popular rhombic dodecahedron and truncated octahedron, can be represented as triclinic boxes [ 35 ]. This feature serves two important functions. First, it allows one to simulate crystals, which very often have non-rectangular unit cells. Second, it is useful when simulating freely rotating molecules in solvent. One needs to include a certain amount of padding around the molecule to ensure that no two periodic copies ever come too close together. Because the molecule can freely rotate, the same padding is required along all directions, so one wants the periodic box to be as close as possible to spherical. For a given padding distance, the rhombic dodecahedron has only about 71% the volume of a rectangular unit cell. It therefore requires less solvent and reduces the cost of the simulation”unhoused_relations[5]
relationvirtual sites → interaction sites — Virtual sites are interaction sites within a molecule. — “Virtual sites are interaction sites within a molecule whose positions are not integrated directly. Instead, they are calculated at each time step based on the positions of other particles. They are often used to provide a more detailed charge distribution than would be possible using only a single point charge for each atom. For example, they appear in many multisite water models (such as TIP-4P and TIP-5P), and also in the CHARMM polarizable protein force field”unhoused_relations[6]
relationusing two GPUs → a single GPU — For aggregate simulation time it is more efficient to run a separate simulation on each GPU than one simulation on both. — “Depending on the molecule and settings, using two GPUs is anywhere from 22% to 62% faster than a single GPU, with the larger molecules generally having the higher speedups. If the goal is to run a single simulation as quickly as possible, using multiple GPUs is therefore quite useful. On the other hand, if the goal is to generate as much total simulation time as possible, it is more efficient to run a separate simulation on each one”unhoused_relations[7]
weightusing two GPUs → a single GPU — 0.95 — “Depending on the molecule and settings, using two GPUs is anywhere from 22% to 62% faster than a single GPU, with the larger molecules generally having the higher speedups. If the goal is to run a single simulation as quickly as possible, using multiple GPUs is therefore quite useful. On the other hand, if the goal is to generate as much total simulation time as possible, it is more efficient to run a separate simulation on each one”unhoused_relations[7]
no type for thisOpenMM → high-performance library — OpenMM can act as a high-performance library. — “OpenMM is based on a layered architecture which (see Fig 1 ), to the best of our knowledge, is unique among molecular dynamics packages. This allows it to be used in several different ways by users with varying needs and interests. Depending on how a particular user chooses to interact with it, OpenMM can act as: A high-performance library , callable from other programs, for performing a wide range of calculations used in molecular modelling and simulation on a range of advanced hardware platforms (both CPUs and GPUs). A domain specific language for easily implementing new algorithms for molecular modelling and simulation. A complete package for running molecular simulations”unhoused_relations[0]
no type for thisOpenMM → domain specific language — OpenMM can act as a domain-specific language for implementing algorithms. — “OpenMM is based on a layered architecture which (see Fig 1 ), to the best of our knowledge, is unique among molecular dynamics packages. This allows it to be used in several different ways by users with varying needs and interests. Depending on how a particular user chooses to interact with it, OpenMM can act as: A high-performance library , callable from other programs, for performing a wide range of calculations used in molecular modelling and simulation on a range of advanced hardware platforms (both CPUs and GPUs). A domain specific language for easily implementing new algorithms for molecular modelling and simulation. A complete package for running molecular simulations”unhoused_relations[1]
no type for thisOpenMM → complete package — OpenMM can act as a complete molecular-simulation package. — “OpenMM is based on a layered architecture which (see Fig 1 ), to the best of our knowledge, is unique among molecular dynamics packages. This allows it to be used in several different ways by users with varying needs and interests. Depending on how a particular user chooses to interact with it, OpenMM can act as: A high-performance library , callable from other programs, for performing a wide range of calculations used in molecular modelling and simulation on a range of advanced hardware platforms (both CPUs and GPUs). A domain specific language for easily implementing new algorithms for molecular modelling and simulation. A complete package for running molecular simulations”unhoused_relations[2]
no type for thisplugin → computational kernels — A plugin defines new computational kernels or new implementations of existing kernels. — “At the lowest layer, OpenMM is based on a plugin mechanism. Calculations are defined by “computational kernels”. A plugin may define new kernels for doing new types of calculations, or alternatively it may provide new implementations of existing kernels, for example to support a new type of hardware. Plugins are dynamically discovered and loaded at runtime. Each one is packaged as a file that can be distributed separately from the rest of OpenMM and installed by any user”unhoused_relations[3]
no type for thismultiple input pipelines → Amber — Multiple input pipelines let OpenMM read Amber formats and use Amber preparation tools. — “Another unique feature of OpenMM is its support for multiple input pipelines. Before a molecular system can be simulated, it first must be modelled. This is sometimes a complex process involving such steps as combining multiple molecules into a single file, building missing loops, selecting a force field, and parametrizing small molecules. Typically, each simulation package provides its own tools for doing this. They often differ in significant ways, such as what force fields are available. OpenMM does include modelling tools, but it also can directly read the file formats used by Amber [ 16 ], CHARMM [ 17 ], Gromacs [ 18 ], and Desmond [ 19 ]. A user can prepare their system with the tools from any of those packages, or with other tools that are designed to work with them, then simulate it in OpenMM. This gives great flexibility, since the user can use whatever tools are best suited to the system they want to simulate. It also lets OpenMM easily fit into their existing workflow. A user who is accustomed to a particular tool can continue to use it, but still run their simulation in OpenMM”unhoused_relations[4]
no type for thisrhombic dodecahedron → cost of the simulation — A rhombic-dodecahedron box reduces simulation cost by requiring less solvent. — “Earlier versions of OpenMM supported only rectangular periodic boxes. In OpenMM 6.3 it was extended to support triclinic boxes as well: ones formed by combinations of three arbitrary lattice vectors. It can be shown that this formulation is extremely general; all standard periodic box shapes, including the popular rhombic dodecahedron and truncated octahedron, can be represented as triclinic boxes [ 35 ]. This feature serves two important functions. First, it allows one to simulate crystals, which very often have non-rectangular unit cells. Second, it is useful when simulating freely rotating molecules in solvent. One needs to include a certain amount of padding around the molecule to ensure that no two periodic copies ever come too close together. Because the molecule can freely rotate, the same padding is required along all directions, so one wants the periodic box to be as close as possible to spherical. For a given padding distance, the rhombic dodecahedron has only about 71% the volume of a rectangular unit cell. It therefore requires less solvent and reduces the cost of the simulation”unhoused_relations[5]
no type for thisvirtual sites → interaction sites — Virtual sites are interaction sites within a molecule. — “Virtual sites are interaction sites within a molecule whose positions are not integrated directly. Instead, they are calculated at each time step based on the positions of other particles. They are often used to provide a more detailed charge distribution than would be possible using only a single point charge for each atom. For example, they appear in many multisite water models (such as TIP-4P and TIP-5P), and also in the CHARMM polarizable protein force field”unhoused_relations[6]
no type for thisusing two GPUs → a single GPU — For aggregate simulation time it is more efficient to run a separate simulation on each GPU than one simulation on both. — “Depending on the molecule and settings, using two GPUs is anywhere from 22% to 62% faster than a single GPU, with the larger molecules generally having the higher speedups. If the goal is to run a single simulation as quickly as possible, using multiple GPUs is therefore quite useful. On the other hand, if the goal is to generate as much total simulation time as possible, it is more efficient to run a separate simulation on each one”unhoused_relations[7]
limitationNew molecular-dynamics methods may take years to reach other packages, may never be ported, or may remain slow and hardware-limited. — “There are many popular software packages for conducting molecular dynamics simulations. They vary considerably in their capabilities and feature sets. This is especially true when it comes to cutting edge, recently developed simulation techniques. The inventor of a new method will typically implement it in a single package, whichever one they are most comfortable working with. From that point, it may take years to be implemented in other packages, depending on the interests and priorities of the development team behind each one. In many cases, it may never get implemented. Even the initial implementation may not be accepted into an official release of the package it was created in. Or it may have limited usefulness, for example because it executes slowly or cannot be used on advanced hardware such as graphics processing units (GPUs)”limitations[0]
limitationMonolithic simulation engines make even simple extensions labor-intensive and dependent on core-team approval. — “The main reason for this problem is that most molecular dynamics packages were not designed with extensibility in mind. Adding new features, even very simple ones, is often labor intensive and requires a deep understanding of the code. Once a prototype implementation is complete, it may be even more difficult to turn that into a well optimized version that works on all hardware types. In most cases the simulation engines are also monolithic, so the only way to add features to them is to directly modify their source code. There is no plugin interface or other mechanism for allowing new features to be implemented and distributed independently. This turns the core development team into gatekeepers, restricting what features can be added to the package”limitations[1]
limitationPackage-specific preparation tools, formats, and force fields make switching or combining features difficult. — “A complete molecular dynamics package is, of course, much more than just a simulation engine. Each one typically has its own collection of tools for preparing molecular systems to simulate, its own file formats, and sometimes even its own force fields. This makes it difficult for users to switch back and forth between them, or to combine features from different packages”limitations[2]
limitationPlugins offer extreme extensibility but demand hardware-specific implementation work, so simpler mechanisms are preferred when possible. — “The lowest layer of the OpenMM architecture is based around plugins. This allows new features to be packaged as libraries, distributed independently, and loaded dynamically at runtime. For example, a plugin can implement a new type of interaction or a new integration algorithm, or it can add support for a new type of hardware. In fact, many of the core features of OpenMM are actually implemented as plugins, including its implementations of the AMOEBA force field [ 27 ], ring polymer molecular dynamics (RPMD) [ 28 ], and polarizable Drude particles [ 29 ]. This provides nearly unlimited extensibility, allowing users to implement any feature they might want. Writing a plugin involves far more work than the other extensibility features described above. For example, it is up to the user to write whatever code is necessary to make it work on each type of hardware, such as CUDA or OpenCL code for GPUs. When possible, it is therefore usually preferable to use one of the other mechanisms. Nevertheless, plugins are an important option when extreme extensibility and performance is needed. Like the other mechanisms, they allow a developer to create an extension and distribute it directly to users. No modifications to OpenMM itself are needed”limitations[3]
limitationAMOEBA's multipoles and self-consistent induced dipoles make it much slower than conventional force fields. — “OpenMM has an implementation of the AMOEBA polarizable force field which is, to the best of our knowledge, the fastest available in any code [ 3 ]. AMOEBA is designed to transcend the limitations of conventional point charge force fields and achieve much higher accuracy in force and energy computations. It uses two main mechanisms to achieve this. First, instead of approximating atoms as point charges, it assigns each one a multipole moment up to the level of quadrupoles. Second, it explicitly models atomic polarization by assigning an induced dipole to each atom. Because the induced dipoles interact with each other, they must be computed at each time step using an iterative self-consistent field calculation. Both of these features make AMOEBA far slower to simulate than conventional force fields”limitations[4]
limitationThe acceptable speed-accuracy precision tradeoff depends on simulation details and the information being sought. — “Many aspects of a molecular dynamics code involve tradeoffs between speed and accuracy. This is especially true when executing on a GPU, since they often have very poor double precision performance. To optimize execution speed, it is preferable to use single precision whenever possible, resorting to double precision only when absolutely necessary. Unfortunately, there is no unique standard for when it is "necessary". The minimum acceptable level of error can vary widely depending on the details of a simulation and the type of information one wishes to obtain from it”limitations[5]
limitationUsing both GPUs accelerates one simulation but can be less efficient for maximizing aggregate simulated time. — “Depending on the molecule and settings, using two GPUs is anywhere from 22% to 62% faster than a single GPU, with the larger molecules generally having the higher speedups. If the goal is to run a single simulation as quickly as possible, using multiple GPUs is therefore quite useful. On the other hand, if the goal is to generate as much total simulation time as possible, it is more efficient to run a separate simulation on each one”limitations[6]
limitationNonbonded energies differ slightly across packages because their numerical implementations, including spline order, differ. — “Results are shown for Amber in Tables 6 and 7 , for Gromacs in Tables 8 and 9 , and for CHARMM in Tables 10 and 11 . In all cases the agreement is excellent, with all energy components matching to at least four significant digits. In systems that use PME, the nonbonded energies have somewhat larger differences than other energy components. This is partly because of the larger magnitude of this interaction, and partly because of the fact that different applications compute nonbonded interactions in slightly different ways. For example, Amber uses 4th order splines for charge spreading, while OpenMM uses 5th order splines. Nonetheless, they both compute the forces and energy to similar overall accuracy”limitations[7]
Content tags
content-observations: finding · quantity · variable · definition · key-term — grounded in the full text
findingOpenMM additions can be defined with minimal code, remain independent of the core, and run across supported CPUs and GPUs. — “OpenMM is a molecular dynamics simulation toolkit with a unique focus on extensibility. It allows users to easily add new features, including forces with novel functional forms, new integration algorithms, and new simulation protocols. Those features automatically work on all supported hardware types (including both CPUs and GPUs) and perform well on all of them. In many cases they require minimal coding, just a mathematical description of the desired function. They also require no modification to OpenMM itself and can be distributed independently of OpenMM. This makes it an ideal tool for researchers developing new simulation methods, and also allows those new methods to be immediately available to the larger community”content_tags.findings[0]
findingThe layered architecture supports use as a library, domain-specific language, or complete simulation package. — “OpenMM is based on a layered architecture which (see Fig 1 ), to the best of our knowledge, is unique among molecular dynamics packages. This allows it to be used in several different ways by users with varying needs and interests. Depending on how a particular user chooses to interact with it, OpenMM can act as: A high-performance library , callable from other programs, for performing a wide range of calculations used in molecular modelling and simulation on a range of advanced hardware platforms (both CPUs and GPUs). A domain specific language for easily implementing new algorithms for molecular modelling and simulation. A complete package for running molecular simulations”content_tags.findings[1]
findingCustom force expressions are analytically differentiated and JIT-compiled with little or no performance loss. — “Custom forces are designed to achieve several goals that usually conflict with each other. First, it should be exceptionally easy to implement completely new functional forms for interactions. As seen in Listing 2, it often requires no more than a few lines of Python code. Second, a single implementation should work on all types of hardware. The exact same code can be used whether the program is being run on a CPU or GPU. Third, the user should not need to sacrifice performance. Because the expression is converted to machine code before the simulation is run, there often is little or no difference in speed between a custom force and a hand-written implementation of the same interaction”content_tags.findings[2]
findingPlugins can add calculations or hardware implementations but require substantially more development effort. — “The lowest layer of the OpenMM architecture is based around plugins. This allows new features to be packaged as libraries, distributed independently, and loaded dynamically at runtime. For example, a plugin can implement a new type of interaction or a new integration algorithm, or it can add support for a new type of hardware. In fact, many of the core features of OpenMM are actually implemented as plugins, including its implementations of the AMOEBA force field [ 27 ], ring polymer molecular dynamics (RPMD) [ 28 ], and polarizable Drude particles [ 29 ]. This provides nearly unlimited extensibility, allowing users to implement any feature they might want. Writing a plugin involves far more work than the other extensibility features described above. For example, it is up to the user to write whatever code is necessary to make it work on each type of hardware, such as CUDA or OpenCL code for GPUs. When possible, it is therefore usually preferable to use one of the other mechanisms. Nevertheless, plugins are an important option when extreme extensibility and performance is needed. Like the other mechanisms, they allow a developer to create an extension and distribute it directly to users. No modifications to OpenMM itself are needed”content_tags.findings[3]
findingThe extrapolated polarization approximation improves AMOEBA speed with a small accuracy loss. — “Much research has been done recently on ways to reduce this cost, and new versions of OpenMM have incorporated several of the most recent algorithms. Interactions between multipoles are computed using spherical harmonics in a quasi-internal coordinate system [ 30 , 31 ] (added in OpenMM 7.0). The iterative solver for induced dipoles uses the Direct Inversion in the Iterative Subspace (DIIS) algorithm [ 32 ] (added in OpenMM 6.1). Alternatively, it can use the recently developed extrapolated polarization approximation [ 33 ] (added in OpenMM 7.0). In this method, only a few iterations are performed, and then an analytic approximation is used to extrapolate to the limit of infinite iterations. This can give a large improvement in speed with only a very small loss in accuracy”content_tags.findings[4]
findingThe general three-atom virtual-site formulation covers all four Gromacs rules and additional cases. — “OpenMM also offers a few specialized rules for positioning virtual sites, but in addition, it has a very general method designed to cover all cases that are ever likely to occur in which a virtual site depends on the positions of three atoms. This method, added in OpenMM 6.1, can reproduce all four of the rules provided by Gromacs, as well as supporting many other situations they could not. In this method, three vectors are first calculated as weighted averages of the positions of the three atoms: o = w 1 o r 1 + w 2 o r 2 + w 3 o r 3 d x = w 1 x r 1 + w 2 x r 2 + w 3 x r 3 d y = w 1 y r 1 + w 2 y r 2 + w 3 y r 3 where r 1 , r 2 , and r 3 are the atom positions, and the coefficients are user-defined. They are then used to construct a set of orthonormal coordinate axes ( x ^ , y ^ , z ^ ): d z = d x × d y x ^ = d x / | d x | z ^ = d z / | d z | y ^ = z ^ × x ^ Finally, the virtual site position is set to an arbitrary user-defined location within this coordinate system: r = o + p 1 x ^ + p 2 y ^ + p 3 z ^ This method is another example of how flexibility and extensibility are core design goals of OpenMM. Instead of supporting only a limited set of specialized virtual site types, it tries to provide a very general type that can cover as wide a range of cases as possible, thus giving maximum flexibility to users in designing their models and force fields”content_tags.findings[5]
findingA rhombic-dodecahedron box uses about 71 percent of the rectangular-cell volume for the same padding. — “Earlier versions of OpenMM supported only rectangular periodic boxes. In OpenMM 6.3 it was extended to support triclinic boxes as well: ones formed by combinations of three arbitrary lattice vectors. It can be shown that this formulation is extremely general; all standard periodic box shapes, including the popular rhombic dodecahedron and truncated octahedron, can be represented as triclinic boxes [ 35 ]. This feature serves two important functions. First, it allows one to simulate crystals, which very often have non-rectangular unit cells. Second, it is useful when simulating freely rotating molecules in solvent. One needs to include a certain amount of padding around the molecule to ensure that no two periodic copies ever come too close together. Because the molecule can freely rotate, the same padding is required along all directions, so one wants the periodic box to be as close as possible to spherical. For a given padding distance, the rhombic dodecahedron has only about 71% the volume of a rectangular unit cell. It therefore requires less solvent and reduces the cost of the simulation”content_tags.findings[6]
findingTwo GPUs are 22 to 62 percent faster than one for a single simulation, depending on molecule and settings. — “Depending on the molecule and settings, using two GPUs is anywhere from 22% to 62% faster than a single GPU, with the larger molecules generally having the higher speedups. If the goal is to run a single simulation as quickly as possible, using multiple GPUs is therefore quite useful. On the other hand, if the goal is to generate as much total simulation time as possible, it is more efficient to run a separate simulation on each one”content_tags.findings[7]
findingDouble precision is much slower, while mixed precision substantially improves accuracy at low performance cost. — “The speed difference between single and mixed precision is quite small, whereas double precision is much slower. This is especially true on the Titan X, a GPU primarily targeted at consumers that has very poor double precision performance. The Tesla K80, which is targeted at high performance computing, does much better, although there is still a large decrease in performance. Overall, the Titan X is far faster in single or mixed precision modes, while the K80 is faster in double precision mode”content_tags.findings[8]
findingInput-pipeline energy components match source packages to at least four significant digits. — “Results are shown for Amber in Tables 6 and 7 , for Gromacs in Tables 8 and 9 , and for CHARMM in Tables 10 and 11 . In all cases the agreement is excellent, with all energy components matching to at least four significant digits. In systems that use PME, the nonbonded energies have somewhat larger differences than other energy components. This is partly because of the larger magnitude of this interaction, and partly because of the fact that different applications compute nonbonded interactions in slightly different ways. For example, Amber uses 4th order splines for charge spreading, while OpenMM uses 5th order splines. Nonetheless, they both compute the forces and energy to similar overall accuracy”content_tags.findings[9]
quantityroughly 200 — lines of code reported for the simulated-tempering implementation — “This script runs a simple simulation, much like one might run in any molecular dynamics package. More sophisticated or exotic algorithms and protocols can be implemented in exactly the same way. Here are some examples of features or applications that use or extend OpenMM’s Python scripting features: A class for simulated tempering [ 10 ], an accelerated sampling method that varies the temperature of a simulation to accelerate barrier crossings. The entire algorithm was implemented in roughly 200 lines of code. PDBFixer, an application for cleaning up molecular models in preparation for simulating them. It includes such features as building missing loops, replacing nonstandard amino acids with standard ones, adding hydrogens, and building solvent boxes. By using the features provided by OpenMM, all of these algorithms were implemented in only about 1000 lines of code. YANK [ 22 ] a sophisticated application and toolkit for alchemical free energy calculations. It implements Hamiltonian exchange molecular dynamics simulations to efficiently sample multiple alchemical states, and utilizes the “custom” forces provided by OpenMM to allow exploration of many different alchemical intermediate functional forms. Although these tools are written in Python, all expensive calculations are done by OpenMM and take full advantage of the available hardware, including GPUs and multicore CPUs. Because they interact with OpenMM only through well-defined public interfaces, they can be packaged and distributed independently. No changes to OpenMM itself are required to use them”content_tags.quantities[0]
quantityabout 1000 — lines of code reported for PDBFixer algorithms — “This script runs a simple simulation, much like one might run in any molecular dynamics package. More sophisticated or exotic algorithms and protocols can be implemented in exactly the same way. Here are some examples of features or applications that use or extend OpenMM’s Python scripting features: A class for simulated tempering [ 10 ], an accelerated sampling method that varies the temperature of a simulation to accelerate barrier crossings. The entire algorithm was implemented in roughly 200 lines of code. PDBFixer, an application for cleaning up molecular models in preparation for simulating them. It includes such features as building missing loops, replacing nonstandard amino acids with standard ones, adding hydrogens, and building solvent boxes. By using the features provided by OpenMM, all of these algorithms were implemented in only about 1000 lines of code. YANK [ 22 ] a sophisticated application and toolkit for alchemical free energy calculations. It implements Hamiltonian exchange molecular dynamics simulations to efficiently sample multiple alchemical states, and utilizes the “custom” forces provided by OpenMM to allow exploration of many different alchemical intermediate functional forms. Although these tools are written in Python, all expensive calculations are done by OpenMM and take full advantage of the available hardware, including GPUs and multicore CPUs. Because they interact with OpenMM only through well-defined public interfaces, they can be packaged and distributed independently. No changes to OpenMM itself are required to use them”content_tags.quantities[1]
quantity71% — rhombic-dodecahedron volume relative to a rectangular unit cell at equal padding — “Earlier versions of OpenMM supported only rectangular periodic boxes. In OpenMM 6.3 it was extended to support triclinic boxes as well: ones formed by combinations of three arbitrary lattice vectors. It can be shown that this formulation is extremely general; all standard periodic box shapes, including the popular rhombic dodecahedron and truncated octahedron, can be represented as triclinic boxes [ 35 ]. This feature serves two important functions. First, it allows one to simulate crystals, which very often have non-rectangular unit cells. Second, it is useful when simulating freely rotating molecules in solvent. One needs to include a certain amount of padding around the molecule to ensure that no two periodic copies ever come too close together. Because the molecule can freely rotate, the same padding is required along all directions, so one wants the periodic box to be as close as possible to spherical. For a given padding distance, the rhombic dodecahedron has only about 71% the volume of a rectangular unit cell. It therefore requires less solvent and reduces the cost of the simulation”content_tags.quantities[2]
quantity23,558 — atoms in the DHFR benchmark system — “To evaluate the speed of OpenMM, we benchmarked its performance with three molecular systems of varying size: Dihydrofolate reductase (DHFR), a 2489 atom protein solvated with 7023 water molecules to give a total of 23,558 atoms. Abl kinase (ABL1), a 4067 atom protein solvated with 13,692 water molecules to give a total of 45,143 atoms The mechanistic target of rapamycin (MTOR), a 19,019 atom protein solvated with 56,733 water molecules to give a total of 189,218 atoms. Benchmarks were run on the following types of hardware: An NVIDIA Titan X Pascal GPU. An NVIDIA Tesla K80 GPU. A 4 core, 3.5 GHz Intel Core i7-2700K CPU. All GPU simulations used CUDA 7.5. The K80 consists of two independent GPUs on a single board. OpenMM can parallelize a single simulation across multiple GPUs, or alternatively run a different simulation on each one at the same time. We therefore included benchmarks using only one of the GPUs (thus leaving the other free for a different simulation), as well as ones using both GPUs for a single simulation”content_tags.quantities[3]
quantity45,143 — atoms in the ABL1 benchmark system — “To evaluate the speed of OpenMM, we benchmarked its performance with three molecular systems of varying size: Dihydrofolate reductase (DHFR), a 2489 atom protein solvated with 7023 water molecules to give a total of 23,558 atoms. Abl kinase (ABL1), a 4067 atom protein solvated with 13,692 water molecules to give a total of 45,143 atoms The mechanistic target of rapamycin (MTOR), a 19,019 atom protein solvated with 56,733 water molecules to give a total of 189,218 atoms. Benchmarks were run on the following types of hardware: An NVIDIA Titan X Pascal GPU. An NVIDIA Tesla K80 GPU. A 4 core, 3.5 GHz Intel Core i7-2700K CPU. All GPU simulations used CUDA 7.5. The K80 consists of two independent GPUs on a single board. OpenMM can parallelize a single simulation across multiple GPUs, or alternatively run a different simulation on each one at the same time. We therefore included benchmarks using only one of the GPUs (thus leaving the other free for a different simulation), as well as ones using both GPUs for a single simulation”content_tags.quantities[4]
quantity189,218 — atoms in the MTOR benchmark system — “To evaluate the speed of OpenMM, we benchmarked its performance with three molecular systems of varying size: Dihydrofolate reductase (DHFR), a 2489 atom protein solvated with 7023 water molecules to give a total of 23,558 atoms. Abl kinase (ABL1), a 4067 atom protein solvated with 13,692 water molecules to give a total of 45,143 atoms The mechanistic target of rapamycin (MTOR), a 19,019 atom protein solvated with 56,733 water molecules to give a total of 189,218 atoms. Benchmarks were run on the following types of hardware: An NVIDIA Titan X Pascal GPU. An NVIDIA Tesla K80 GPU. A 4 core, 3.5 GHz Intel Core i7-2700K CPU. All GPU simulations used CUDA 7.5. The K80 consists of two independent GPUs on a single board. OpenMM can parallelize a single simulation across multiple GPUs, or alternatively run a different simulation on each one at the same time. We therefore included benchmarks using only one of the GPUs (thus leaving the other free for a different simulation), as well as ones using both GPUs for a single simulation”content_tags.quantities[5]
quantity22% to 62% — single-simulation speedup from two GPUs versus one — “Depending on the molecule and settings, using two GPUs is anywhere from 22% to 62% faster than a single GPU, with the larger molecules generally having the higher speedups. If the goal is to run a single simulation as quickly as possible, using multiple GPUs is therefore quite useful. On the other hand, if the goal is to generate as much total simulation time as possible, it is more efficient to run a separate simulation on each one”content_tags.quantities[6]
quantitymore than two orders of magnitude — single-precision energy drift relative to mixed or double precision — “The energy drift in single precision is more than two orders of magnitude larger than in mixed or double precision. When accurate energy conservation is important, using mixed precision has a very large benefit at low cost. The average drift rates in mixed and double precision are not significantly different from each other, indicating that numeric precision is no longer the dominant source of error. In other cases, such as when using a smaller step size or when simulating a larger molecule, statistically significant differences between them might emerge”content_tags.quantities[7]
quantityten — independent simulations used for each precision-mode drift estimate — “The energy drift in single precision is more than two orders of magnitude larger than in mixed or double precision. When accurate energy conservation is important, using mixed precision has a very large benefit at low cost. The average drift rates in mixed and double precision are not significantly different from each other, indicating that numeric precision is no longer the dominant source of error. In other cases, such as when using a smaller step size or when simulating a larger molecule, statistically significant differences between them might emerge”content_tags.quantities[8]
quantityat least four significant digits — minimum reported agreement of cross-package energy components — “Results are shown for Amber in Tables 6 and 7 , for Gromacs in Tables 8 and 9 , and for CHARMM in Tables 10 and 11 . In all cases the agreement is excellent, with all energy components matching to at least four significant digits. In systems that use PME, the nonbonded energies have somewhat larger differences than other energy components. This is partly because of the larger magnitude of this interaction, and partly because of the fact that different applications compute nonbonded interactions in slightly different ways. For example, Amber uses 4th order splines for charge spreading, while OpenMM uses 5th order splines. Nonetheless, they both compute the forces and energy to similar overall accuracy”content_tags.quantities[9]
variablehardware types (portability dimension for extensions) — “Extensibility is built into every layer of the architecture as a fundamental design goal. A guiding philosophy is that users should be able to implement new features as easily as possible, by writing as little code as possible. Those features should then work on all types of hardware, including both CPUs and GPUs, and have good performance on all of them. Finally, the developer of a feature should be able to package and distribute their code independently, without needing the approval or participation of the core OpenMM development team”content_tags.variables[0]
variablemathematical expressions (user specification compiled into calculations) — “The next layer down defines the calculations that are tied together through Python scripting. This layer includes many classes for creating “custom” forces and integrators. These classes provide a simple but powerful mechanism for extensibility. The user provides one or more mathematical expressions to describe the calculation to be done. For example, they might give an expression for the interaction energy of a pair of particles as a function of the distance between them. The expression is parsed and analyzed, and just-in-time compilation is used to generate an efficient implementation of the code for calculating that interaction [ 15 ]. This allows users to easily define a huge variety of interactions and integration algorithms. They can then be used on any supported type of hardware, and involve little or no loss in performance”content_tags.variables[1]
variableprecision mode (choice governing speed, numerical accuracy, and energy drift) — “Many aspects of a molecular dynamics code involve tradeoffs between speed and accuracy. This is especially true when executing on a GPU, since they often have very poor double precision performance. To optimize execution speed, it is preferable to use single precision whenever possible, resorting to double precision only when absolutely necessary. Unfortunately, there is no unique standard for when it is "necessary". The minimum acceptable level of error can vary widely depending on the details of a simulation and the type of information one wishes to obtain from it”content_tags.variables[2]
variablemolecule and settings (conditions governing multi-GPU speedup) — “Depending on the molecule and settings, using two GPUs is anywhere from 22% to 62% faster than a single GPU, with the larger molecules generally having the higher speedups. If the goal is to run a single simulation as quickly as possible, using multiple GPUs is therefore quite useful. On the other hand, if the goal is to generate as much total simulation time as possible, it is more efficient to run a separate simulation on each one”content_tags.variables[3]
variablerate of energy change (regression-estimated outcome for precision comparison) — “The energy drift in single precision is more than two orders of magnitude larger than in mixed or double precision. When accurate energy conservation is important, using mixed precision has a very large benefit at low cost. The average drift rates in mixed and double precision are not significantly different from each other, indicating that numeric precision is no longer the dominant source of error. In other cases, such as when using a smaller step size or when simulating a larger molecule, statistically significant differences between them might emerge”content_tags.variables[4]
variableforces and energies (validation quantities compared across input pipelines) — “To validate the accuracy of the input pipelines, we constructed systems using the setup tools from other packages, then loaded them into those packages and into OpenMM and compared the forces and energies. We performed these tests on two systems: DHFR, a 159 residue protein, and 2KOC, a 14-mer hairpin RNA. Comparisons were made to Amber 16, Gromacs 4.6.5, and CHARMM-LITE c40b1. For Amber, we performed comparisons in both explicit solvent and OBC1 implicit solvent. For Gromacs and CHARMM, we compared only explicit solvent”content_tags.variables[5]
definitionOpenMM — “OpenMM is a molecular dynamics simulation toolkit with a unique focus on extensibility. It allows users to easily add new features, including forces with novel functional forms, new integration algorithms, and new simulation protocols. Those features automatically work on all supported hardware types (including both CPUs and GPUs) and perform well on all of them. In many cases they require minimal coding, just a mathematical description of the desired function. They also require no modification to OpenMM itself and can be distributed independently of OpenMM. This makes it an ideal tool for researchers developing new simulation methods, and also allows those new methods to be immediately available to the larger community”content_tags.definitions[0]
definitioncustom forces — “In addition to the standard forces provided by OpenMM (such as Lennard-Jones forces, PME and reaction field electrostatics, and generalized Born models), custom forces are a mechanism for creating interactions between particles with entirely novel functional forms. There are many different custom force classes, each supporting a particular category of interactions. They are listed in Table 1 . Since OpenMM 4.1 was described in an earlier publication, several new custom force classes have been added, including CustomCompoundBondForce (added in OpenMM 5.0), CustomManyParticleForce (added in OpenMM 6.2), and CustomCentroidBondForce (added in OpenMM 7.0)”content_tags.definitions[1]
definitioncustom integrators — “Just as custom forces allow users to implement novel interactions, custom integrators allow them to implement novel integration algorithms. The algorithm is defined by a sequence of operations, each defining a calculation to be done. Various types of operations are supported. Examples include: Evaluating a mathematical expression for each degree of freedom, then assigning the result to a variable for each one. Evaluating a mathematical expression once and assigning the result to a global variable. Summing an expression over all degrees of freedom and assigning the result to a global variable. Applying constraints to positions or velocities. In the simplest case, all operations are executed in order to take a single integration time step. In addition, OpenMM 7.0 added support for more complex flow control through if and while blocks”content_tags.definitions[2]
definitionplugin — “At the lowest layer, OpenMM is based on a plugin mechanism. Calculations are defined by “computational kernels”. A plugin may define new kernels for doing new types of calculations, or alternatively it may provide new implementations of existing kernels, for example to support a new type of hardware. Plugins are dynamically discovered and loaded at runtime. Each one is packaged as a file that can be distributed separately from the rest of OpenMM and installed by any user”content_tags.definitions[3]
definitionvirtual sites — “Virtual sites are interaction sites within a molecule whose positions are not integrated directly. Instead, they are calculated at each time step based on the positions of other particles. They are often used to provide a more detailed charge distribution than would be possible using only a single point charge for each atom. For example, they appear in many multisite water models (such as TIP-4P and TIP-5P), and also in the CHARMM polarizable protein force field”content_tags.definitions[4]
definitionSingle Precision — “OpenMM 5.0 introduced support for multiple precision modes. When running on a GPU, the user has a choice of three modes: Single Precision : Nearly all calculations are done in single precision. Double is used in only a handful of places where it has negligible impact on performance and is most important for accuracy. Mixed Precision : Forces are computed in single precision, but integration and energy accumulation are done in double precision. This gives a large improvement in the accuracy of some quantities, while only having a small impact in performance. Double Precision : All calculations are done in double precision. This gives the best accuracy, but often has a very large effect on performance”content_tags.definitions[5]
definitionMixed Precision — “OpenMM 5.0 introduced support for multiple precision modes. When running on a GPU, the user has a choice of three modes: Single Precision : Nearly all calculations are done in single precision. Double is used in only a handful of places where it has negligible impact on performance and is most important for accuracy. Mixed Precision : Forces are computed in single precision, but integration and energy accumulation are done in double precision. This gives a large improvement in the accuracy of some quantities, while only having a small impact in performance. Double Precision : All calculations are done in double precision. This gives the best accuracy, but often has a very large effect on performance”content_tags.definitions[6]
definitionDouble Precision — “OpenMM 5.0 introduced support for multiple precision modes. When running on a GPU, the user has a choice of three modes: Single Precision : Nearly all calculations are done in single precision. Double is used in only a handful of places where it has negligible impact on performance and is most important for accuracy. Mixed Precision : Forces are computed in single precision, but integration and energy accumulation are done in double precision. This gives a large improvement in the accuracy of some quantities, while only having a small impact in performance. Double Precision : All calculations are done in double precision. This gives the best accuracy, but often has a very large effect on performance”content_tags.definitions[7]
Concepts
terms this paper carries, each with the sentence it was cut from — the layer that joins one paper to another. Terms with no quote yet are on CONCEPTS.html.
conceptOpenMM — not defined in this paper's own words; extensible toolkit and package for molecular-dynamics simulation — “OpenMM is a molecular dynamics simulation toolkit with a unique focus on extensibility. It allows users to easily add new features, including forces with novel functional forms, new integration algorithms, and new simulation protocols. Those features automatically work on all supported hardware types (including both CPUs and GPUs) and perform well on all of them. In many cases they require minimal coding, just a mathematical description of the desired function. They also require no modification to OpenMM itself and can be distributed independently of OpenMM. This makes it an ideal tool for researchers developing new simulation methods, and also allows those new methods to be immediately available to the larger community”concepts[0]
conceptmolecular dynamics simulation toolkit — not defined in this paper's own words; software class assigned to OpenMM — “OpenMM is a molecular dynamics simulation toolkit with a unique focus on extensibility. It allows users to easily add new features, including forces with novel functional forms, new integration algorithms, and new simulation protocols. Those features automatically work on all supported hardware types (including both CPUs and GPUs) and perform well on all of them. In many cases they require minimal coding, just a mathematical description of the desired function. They also require no modification to OpenMM itself and can be distributed independently of OpenMM. This makes it an ideal tool for researchers developing new simulation methods, and also allows those new methods to be immediately available to the larger community”concepts[1]
conceptextensibility — not defined in this paper's own words; ability to add, package, and distribute new simulation features independently — “OpenMM is a molecular dynamics simulation toolkit with a unique focus on extensibility. It allows users to easily add new features, including forces with novel functional forms, new integration algorithms, and new simulation protocols. Those features automatically work on all supported hardware types (including both CPUs and GPUs) and perform well on all of them. In many cases they require minimal coding, just a mathematical description of the desired function. They also require no modification to OpenMM itself and can be distributed independently of OpenMM. This makes it an ideal tool for researchers developing new simulation methods, and also allows those new methods to be immediately available to the larger community”concepts[2]
conceptforces with novel functional forms — not defined in this paper's own words; new interaction models expressible in OpenMM — “OpenMM is a molecular dynamics simulation toolkit with a unique focus on extensibility. It allows users to easily add new features, including forces with novel functional forms, new integration algorithms, and new simulation protocols. Those features automatically work on all supported hardware types (including both CPUs and GPUs) and perform well on all of them. In many cases they require minimal coding, just a mathematical description of the desired function. They also require no modification to OpenMM itself and can be distributed independently of OpenMM. This makes it an ideal tool for researchers developing new simulation methods, and also allows those new methods to be immediately available to the larger community”concepts[3]
conceptnew integration algorithms — not defined in this paper's own words; new time-evolution procedures addable to the toolkit — “OpenMM is a molecular dynamics simulation toolkit with a unique focus on extensibility. It allows users to easily add new features, including forces with novel functional forms, new integration algorithms, and new simulation protocols. Those features automatically work on all supported hardware types (including both CPUs and GPUs) and perform well on all of them. In many cases they require minimal coding, just a mathematical description of the desired function. They also require no modification to OpenMM itself and can be distributed independently of OpenMM. This makes it an ideal tool for researchers developing new simulation methods, and also allows those new methods to be immediately available to the larger community”concepts[4]
conceptnew simulation protocols — not defined in this paper's own words; new simulation workflows addable without modifying OpenMM — “OpenMM is a molecular dynamics simulation toolkit with a unique focus on extensibility. It allows users to easily add new features, including forces with novel functional forms, new integration algorithms, and new simulation protocols. Those features automatically work on all supported hardware types (including both CPUs and GPUs) and perform well on all of them. In many cases they require minimal coding, just a mathematical description of the desired function. They also require no modification to OpenMM itself and can be distributed independently of OpenMM. This makes it an ideal tool for researchers developing new simulation methods, and also allows those new methods to be immediately available to the larger community”concepts[5]
conceptCPUs — not defined in this paper's own words; supported processor hardware — “OpenMM is a molecular dynamics simulation toolkit with a unique focus on extensibility. It allows users to easily add new features, including forces with novel functional forms, new integration algorithms, and new simulation protocols. Those features automatically work on all supported hardware types (including both CPUs and GPUs) and perform well on all of them. In many cases they require minimal coding, just a mathematical description of the desired function. They also require no modification to OpenMM itself and can be distributed independently of OpenMM. This makes it an ideal tool for researchers developing new simulation methods, and also allows those new methods to be immediately available to the larger community”concepts[6]
conceptGPUs — not defined in this paper's own words; supported accelerator hardware — “OpenMM is a molecular dynamics simulation toolkit with a unique focus on extensibility. It allows users to easily add new features, including forces with novel functional forms, new integration algorithms, and new simulation protocols. Those features automatically work on all supported hardware types (including both CPUs and GPUs) and perform well on all of them. In many cases they require minimal coding, just a mathematical description of the desired function. They also require no modification to OpenMM itself and can be distributed independently of OpenMM. This makes it an ideal tool for researchers developing new simulation methods, and also allows those new methods to be immediately available to the larger community”concepts[7]
conceptmolecular dynamics simulation — not defined in this paper's own words; computational simulation field served by OpenMM — “Molecular dynamics simulation is a rapidly advancing field. Many aspects of it are subjects of current research and development. Some of the more important examples include the development of new force fields [ 1 , 2 ], sometimes involving novel functional forms for the interactions [ 3 , 4 ]; new integration algorithms [ 5 – 7 ]; new sampling methods [ 8 – 10 ]; and support for new types of hardware”concepts[8]
conceptnew force fields — not defined in this paper's own words; one area of active molecular-dynamics development — “Molecular dynamics simulation is a rapidly advancing field. Many aspects of it are subjects of current research and development. Some of the more important examples include the development of new force fields [ 1 , 2 ], sometimes involving novel functional forms for the interactions [ 3 , 4 ]; new integration algorithms [ 5 – 7 ]; new sampling methods [ 8 – 10 ]; and support for new types of hardware”concepts[9]
conceptnew sampling methods — not defined in this paper's own words; one area of active molecular-dynamics development — “Molecular dynamics simulation is a rapidly advancing field. Many aspects of it are subjects of current research and development. Some of the more important examples include the development of new force fields [ 1 , 2 ], sometimes involving novel functional forms for the interactions [ 3 , 4 ]; new integration algorithms [ 5 – 7 ]; new sampling methods [ 8 – 10 ]; and support for new types of hardware”concepts[10]
conceptsimulation engines — not defined in this paper's own words; core execution components described as monolithic in most packages — “The main reason for this problem is that most molecular dynamics packages were not designed with extensibility in mind. Adding new features, even very simple ones, is often labor intensive and requires a deep understanding of the code. Once a prototype implementation is complete, it may be even more difficult to turn that into a well optimized version that works on all hardware types. In most cases the simulation engines are also monolithic, so the only way to add features to them is to directly modify their source code. There is no plugin interface or other mechanism for allowing new features to be implemented and distributed independently. This turns the core development team into gatekeepers, restricting what features can be added to the package”concepts[11]
conceptplugin interface — not defined in this paper's own words; extension mechanism absent from the packages criticized by the paper — “The main reason for this problem is that most molecular dynamics packages were not designed with extensibility in mind. Adding new features, even very simple ones, is often labor intensive and requires a deep understanding of the code. Once a prototype implementation is complete, it may be even more difficult to turn that into a well optimized version that works on all hardware types. In most cases the simulation engines are also monolithic, so the only way to add features to them is to directly modify their source code. There is no plugin interface or other mechanism for allowing new features to be implemented and distributed independently. This turns the core development team into gatekeepers, restricting what features can be added to the package”concepts[12]
conceptcore development team — not defined in this paper's own words; team turned into a gatekeeper by monolithic source modification — “The main reason for this problem is that most molecular dynamics packages were not designed with extensibility in mind. Adding new features, even very simple ones, is often labor intensive and requires a deep understanding of the code. Once a prototype implementation is complete, it may be even more difficult to turn that into a well optimized version that works on all hardware types. In most cases the simulation engines are also monolithic, so the only way to add features to them is to directly modify their source code. There is no plugin interface or other mechanism for allowing new features to be implemented and distributed independently. This turns the core development team into gatekeepers, restricting what features can be added to the package”concepts[13]
conceptlayered architecture — not defined in this paper's own words; OpenMM architecture separating scripting, custom calculations, and kernels — “OpenMM is based on a layered architecture which (see Fig 1 ), to the best of our knowledge, is unique among molecular dynamics packages. This allows it to be used in several different ways by users with varying needs and interests. Depending on how a particular user chooses to interact with it, OpenMM can act as: A high-performance library , callable from other programs, for performing a wide range of calculations used in molecular modelling and simulation on a range of advanced hardware platforms (both CPUs and GPUs). A domain specific language for easily implementing new algorithms for molecular modelling and simulation. A complete package for running molecular simulations”concepts[14]
concepthigh-performance library — not defined in this paper's own words; one role in which OpenMM can be used — “OpenMM is based on a layered architecture which (see Fig 1 ), to the best of our knowledge, is unique among molecular dynamics packages. This allows it to be used in several different ways by users with varying needs and interests. Depending on how a particular user chooses to interact with it, OpenMM can act as: A high-performance library , callable from other programs, for performing a wide range of calculations used in molecular modelling and simulation on a range of advanced hardware platforms (both CPUs and GPUs). A domain specific language for easily implementing new algorithms for molecular modelling and simulation. A complete package for running molecular simulations”concepts[15]
conceptdomain specific language — not defined in this paper's own words; one role in which OpenMM can be used to implement algorithms — “OpenMM is based on a layered architecture which (see Fig 1 ), to the best of our knowledge, is unique among molecular dynamics packages. This allows it to be used in several different ways by users with varying needs and interests. Depending on how a particular user chooses to interact with it, OpenMM can act as: A high-performance library , callable from other programs, for performing a wide range of calculations used in molecular modelling and simulation on a range of advanced hardware platforms (both CPUs and GPUs). A domain specific language for easily implementing new algorithms for molecular modelling and simulation. A complete package for running molecular simulations”concepts[16]
conceptcomplete package — not defined in this paper's own words; one role in which OpenMM can run molecular simulations — “OpenMM is based on a layered architecture which (see Fig 1 ), to the best of our knowledge, is unique among molecular dynamics packages. This allows it to be used in several different ways by users with varying needs and interests. Depending on how a particular user chooses to interact with it, OpenMM can act as: A high-performance library , callable from other programs, for performing a wide range of calculations used in molecular modelling and simulation on a range of advanced hardware platforms (both CPUs and GPUs). A domain specific language for easily implementing new algorithms for molecular modelling and simulation. A complete package for running molecular simulations”concepts[17]
conceptPython scripting language — not defined in this paper's own words; highest architectural layer for composing and extending simulations — “The highest layer of the architecture is based on the Python scripting language. Users can easily extend it by writing their own Python code to implement the algorithms of their choice. A wide range of simulation protocols, sampling methods, etc. can be implemented in this way, often with only a few lines of code”concepts[18]
conceptforces and integrators — not defined in this paper's own words; expression-driven extensibility classes in the next layer — “The next layer down defines the calculations that are tied together through Python scripting. This layer includes many classes for creating “custom” forces and integrators. These classes provide a simple but powerful mechanism for extensibility. The user provides one or more mathematical expressions to describe the calculation to be done. For example, they might give an expression for the interaction energy of a pair of particles as a function of the distance between them. The expression is parsed and analyzed, and just-in-time compilation is used to generate an efficient implementation of the code for calculating that interaction [ 15 ]. This allows users to easily define a huge variety of interactions and integration algorithms. They can then be used on any supported type of hardware, and involve little or no loss in performance”concepts[19]
conceptmathematical expressions — not defined in this paper's own words; user descriptions parsed into executable calculations — “The next layer down defines the calculations that are tied together through Python scripting. This layer includes many classes for creating “custom” forces and integrators. These classes provide a simple but powerful mechanism for extensibility. The user provides one or more mathematical expressions to describe the calculation to be done. For example, they might give an expression for the interaction energy of a pair of particles as a function of the distance between them. The expression is parsed and analyzed, and just-in-time compilation is used to generate an efficient implementation of the code for calculating that interaction [ 15 ]. This allows users to easily define a huge variety of interactions and integration algorithms. They can then be used on any supported type of hardware, and involve little or no loss in performance”concepts[20]
conceptjust-in-time compilation — not defined in this paper's own words; runtime generation of efficient calculation code — “The next layer down defines the calculations that are tied together through Python scripting. This layer includes many classes for creating “custom” forces and integrators. These classes provide a simple but powerful mechanism for extensibility. The user provides one or more mathematical expressions to describe the calculation to be done. For example, they might give an expression for the interaction energy of a pair of particles as a function of the distance between them. The expression is parsed and analyzed, and just-in-time compilation is used to generate an efficient implementation of the code for calculating that interaction [ 15 ]. This allows users to easily define a huge variety of interactions and integration algorithms. They can then be used on any supported type of hardware, and involve little or no loss in performance”concepts[21]
conceptefficient implementation — not defined in this paper's own words; compiled result generated for a user-defined interaction — “The next layer down defines the calculations that are tied together through Python scripting. This layer includes many classes for creating “custom” forces and integrators. These classes provide a simple but powerful mechanism for extensibility. The user provides one or more mathematical expressions to describe the calculation to be done. For example, they might give an expression for the interaction energy of a pair of particles as a function of the distance between them. The expression is parsed and analyzed, and just-in-time compilation is used to generate an efficient implementation of the code for calculating that interaction [ 15 ]. This allows users to easily define a huge variety of interactions and integration algorithms. They can then be used on any supported type of hardware, and involve little or no loss in performance”concepts[22]
conceptCalculations — not defined in this paper's own words; operations defined by computational kernels — “At the lowest layer, OpenMM is based on a plugin mechanism. Calculations are defined by “computational kernels”. A plugin may define new kernels for doing new types of calculations, or alternatively it may provide new implementations of existing kernels, for example to support a new type of hardware. Plugins are dynamically discovered and loaded at runtime. Each one is packaged as a file that can be distributed separately from the rest of OpenMM and installed by any user”concepts[23]
conceptcomputational kernels — not defined in this paper's own words; low-level calculation definitions implemented by plugins — “At the lowest layer, OpenMM is based on a plugin mechanism. Calculations are defined by “computational kernels”. A plugin may define new kernels for doing new types of calculations, or alternatively it may provide new implementations of existing kernels, for example to support a new type of hardware. Plugins are dynamically discovered and loaded at runtime. Each one is packaged as a file that can be distributed separately from the rest of OpenMM and installed by any user”concepts[24]
conceptplugin — not defined in this paper's own words; dynamically loaded extension defining or implementing kernels — “At the lowest layer, OpenMM is based on a plugin mechanism. Calculations are defined by “computational kernels”. A plugin may define new kernels for doing new types of calculations, or alternatively it may provide new implementations of existing kernels, for example to support a new type of hardware. Plugins are dynamically discovered and loaded at runtime. Each one is packaged as a file that can be distributed separately from the rest of OpenMM and installed by any user”concepts[25]
conceptmultiple input pipelines — not defined in this paper's own words; support for preparing systems with external package tools — “Another unique feature of OpenMM is its support for multiple input pipelines. Before a molecular system can be simulated, it first must be modelled. This is sometimes a complex process involving such steps as combining multiple molecules into a single file, building missing loops, selecting a force field, and parametrizing small molecules. Typically, each simulation package provides its own tools for doing this. They often differ in significant ways, such as what force fields are available. OpenMM does include modelling tools, but it also can directly read the file formats used by Amber [ 16 ], CHARMM [ 17 ], Gromacs [ 18 ], and Desmond [ 19 ]. A user can prepare their system with the tools from any of those packages, or with other tools that are designed to work with them, then simulate it in OpenMM. This gives great flexibility, since the user can use whatever tools are best suited to the system they want to simulate. It also lets OpenMM easily fit into their existing workflow. A user who is accustomed to a particular tool can continue to use it, but still run their simulation in OpenMM”concepts[26]
conceptAmber — not defined in this paper's own words; molecular-dynamics package whose formats OpenMM reads — “Another unique feature of OpenMM is its support for multiple input pipelines. Before a molecular system can be simulated, it first must be modelled. This is sometimes a complex process involving such steps as combining multiple molecules into a single file, building missing loops, selecting a force field, and parametrizing small molecules. Typically, each simulation package provides its own tools for doing this. They often differ in significant ways, such as what force fields are available. OpenMM does include modelling tools, but it also can directly read the file formats used by Amber [ 16 ], CHARMM [ 17 ], Gromacs [ 18 ], and Desmond [ 19 ]. A user can prepare their system with the tools from any of those packages, or with other tools that are designed to work with them, then simulate it in OpenMM. This gives great flexibility, since the user can use whatever tools are best suited to the system they want to simulate. It also lets OpenMM easily fit into their existing workflow. A user who is accustomed to a particular tool can continue to use it, but still run their simulation in OpenMM”concepts[27]
conceptCHARMM — not defined in this paper's own words; molecular-dynamics package whose formats OpenMM reads — “Another unique feature of OpenMM is its support for multiple input pipelines. Before a molecular system can be simulated, it first must be modelled. This is sometimes a complex process involving such steps as combining multiple molecules into a single file, building missing loops, selecting a force field, and parametrizing small molecules. Typically, each simulation package provides its own tools for doing this. They often differ in significant ways, such as what force fields are available. OpenMM does include modelling tools, but it also can directly read the file formats used by Amber [ 16 ], CHARMM [ 17 ], Gromacs [ 18 ], and Desmond [ 19 ]. A user can prepare their system with the tools from any of those packages, or with other tools that are designed to work with them, then simulate it in OpenMM. This gives great flexibility, since the user can use whatever tools are best suited to the system they want to simulate. It also lets OpenMM easily fit into their existing workflow. A user who is accustomed to a particular tool can continue to use it, but still run their simulation in OpenMM”concepts[28]
conceptGromacs — not defined in this paper's own words; molecular-dynamics package whose formats OpenMM reads — “Another unique feature of OpenMM is its support for multiple input pipelines. Before a molecular system can be simulated, it first must be modelled. This is sometimes a complex process involving such steps as combining multiple molecules into a single file, building missing loops, selecting a force field, and parametrizing small molecules. Typically, each simulation package provides its own tools for doing this. They often differ in significant ways, such as what force fields are available. OpenMM does include modelling tools, but it also can directly read the file formats used by Amber [ 16 ], CHARMM [ 17 ], Gromacs [ 18 ], and Desmond [ 19 ]. A user can prepare their system with the tools from any of those packages, or with other tools that are designed to work with them, then simulate it in OpenMM. This gives great flexibility, since the user can use whatever tools are best suited to the system they want to simulate. It also lets OpenMM easily fit into their existing workflow. A user who is accustomed to a particular tool can continue to use it, but still run their simulation in OpenMM”concepts[29]
conceptDesmond — not defined in this paper's own words; molecular-dynamics package whose formats OpenMM reads — “Another unique feature of OpenMM is its support for multiple input pipelines. Before a molecular system can be simulated, it first must be modelled. This is sometimes a complex process involving such steps as combining multiple molecules into a single file, building missing loops, selecting a force field, and parametrizing small molecules. Typically, each simulation package provides its own tools for doing this. They often differ in significant ways, such as what force fields are available. OpenMM does include modelling tools, but it also can directly read the file formats used by Amber [ 16 ], CHARMM [ 17 ], Gromacs [ 18 ], and Desmond [ 19 ]. A user can prepare their system with the tools from any of those packages, or with other tools that are designed to work with them, then simulate it in OpenMM. This gives great flexibility, since the user can use whatever tools are best suited to the system they want to simulate. It also lets OpenMM easily fit into their existing workflow. A user who is accustomed to a particular tool can continue to use it, but still run their simulation in OpenMM”concepts[30]
conceptPDBFixer — not defined in this paper's own words; OpenMM-based application for preparing molecular models — “This script runs a simple simulation, much like one might run in any molecular dynamics package. More sophisticated or exotic algorithms and protocols can be implemented in exactly the same way. Here are some examples of features or applications that use or extend OpenMM’s Python scripting features: A class for simulated tempering [ 10 ], an accelerated sampling method that varies the temperature of a simulation to accelerate barrier crossings. The entire algorithm was implemented in roughly 200 lines of code. PDBFixer, an application for cleaning up molecular models in preparation for simulating them. It includes such features as building missing loops, replacing nonstandard amino acids with standard ones, adding hydrogens, and building solvent boxes. By using the features provided by OpenMM, all of these algorithms were implemented in only about 1000 lines of code. YANK [ 22 ] a sophisticated application and toolkit for alchemical free energy calculations. It implements Hamiltonian exchange molecular dynamics simulations to efficiently sample multiple alchemical states, and utilizes the “custom” forces provided by OpenMM to allow exploration of many different alchemical intermediate functional forms. Although these tools are written in Python, all expensive calculations are done by OpenMM and take full advantage of the available hardware, including GPUs and multicore CPUs. Because they interact with OpenMM only through well-defined public interfaces, they can be packaged and distributed independently. No changes to OpenMM itself are required to use them”concepts[31]
conceptYANK — not defined in this paper's own words; OpenMM-based toolkit for alchemical free-energy calculations — “This script runs a simple simulation, much like one might run in any molecular dynamics package. More sophisticated or exotic algorithms and protocols can be implemented in exactly the same way. Here are some examples of features or applications that use or extend OpenMM’s Python scripting features: A class for simulated tempering [ 10 ], an accelerated sampling method that varies the temperature of a simulation to accelerate barrier crossings. The entire algorithm was implemented in roughly 200 lines of code. PDBFixer, an application for cleaning up molecular models in preparation for simulating them. It includes such features as building missing loops, replacing nonstandard amino acids with standard ones, adding hydrogens, and building solvent boxes. By using the features provided by OpenMM, all of these algorithms were implemented in only about 1000 lines of code. YANK [ 22 ] a sophisticated application and toolkit for alchemical free energy calculations. It implements Hamiltonian exchange molecular dynamics simulations to efficiently sample multiple alchemical states, and utilizes the “custom” forces provided by OpenMM to allow exploration of many different alchemical intermediate functional forms. Although these tools are written in Python, all expensive calculations are done by OpenMM and take full advantage of the available hardware, including GPUs and multicore CPUs. Because they interact with OpenMM only through well-defined public interfaces, they can be packaged and distributed independently. No changes to OpenMM itself are required to use them”concepts[32]
conceptcustom forces — not defined in this paper's own words; mechanism for novel particle interactions — “In addition to the standard forces provided by OpenMM (such as Lennard-Jones forces, PME and reaction field electrostatics, and generalized Born models), custom forces are a mechanism for creating interactions between particles with entirely novel functional forms. There are many different custom force classes, each supporting a particular category of interactions. They are listed in Table 1 . Since OpenMM 4.1 was described in an earlier publication, several new custom force classes have been added, including CustomCompoundBondForce (added in OpenMM 5.0), CustomManyParticleForce (added in OpenMM 6.2), and CustomCentroidBondForce (added in OpenMM 7.0)”concepts[33]
conceptmechanism for creating interactions — not defined in this paper's own words; class description assigned to custom forces — “In addition to the standard forces provided by OpenMM (such as Lennard-Jones forces, PME and reaction field electrostatics, and generalized Born models), custom forces are a mechanism for creating interactions between particles with entirely novel functional forms. There are many different custom force classes, each supporting a particular category of interactions. They are listed in Table 1 . Since OpenMM 4.1 was described in an earlier publication, several new custom force classes have been added, including CustomCompoundBondForce (added in OpenMM 5.0), CustomManyParticleForce (added in OpenMM 6.2), and CustomCentroidBondForce (added in OpenMM 7.0)”concepts[34]
conceptinteraction energy — not defined in this paper's own words; user-supplied algebraic function differentiated into force — “In each case, the user provides an algebraic expression for the interaction energy as a function of the relevant variables. OpenMM analytically differentiates the expression to determine the corresponding force, then uses just-in-time compilation to generate machine code for efficiently computing the force and energy on the current hardware (either CPU or GPU)”concepts[35]
conceptmachine code — not defined in this paper's own words; compiled implementation for force and energy evaluation — “In each case, the user provides an algebraic expression for the interaction energy as a function of the relevant variables. OpenMM analytically differentiates the expression to determine the corresponding force, then uses just-in-time compilation to generate machine code for efficiently computing the force and energy on the current hardware (either CPU or GPU)”concepts[36]
conceptcustom integrators — not defined in this paper's own words; operation-sequence mechanism for novel integration algorithms — “Just as custom forces allow users to implement novel interactions, custom integrators allow them to implement novel integration algorithms. The algorithm is defined by a sequence of operations, each defining a calculation to be done. Various types of operations are supported. Examples include: Evaluating a mathematical expression for each degree of freedom, then assigning the result to a variable for each one. Evaluating a mathematical expression once and assigning the result to a global variable. Summing an expression over all degrees of freedom and assigning the result to a global variable. Applying constraints to positions or velocities. In the simplest case, all operations are executed in order to take a single integration time step. In addition, OpenMM 7.0 added support for more complex flow control through if and while blocks”concepts[37]
conceptAMOEBA polarizable force field — not defined in this paper's own words; polarizable multipole force field implemented in OpenMM — “OpenMM has an implementation of the AMOEBA polarizable force field which is, to the best of our knowledge, the fastest available in any code [ 3 ]. AMOEBA is designed to transcend the limitations of conventional point charge force fields and achieve much higher accuracy in force and energy computations. It uses two main mechanisms to achieve this. First, instead of approximating atoms as point charges, it assigns each one a multipole moment up to the level of quadrupoles. Second, it explicitly models atomic polarization by assigning an induced dipole to each atom. Because the induced dipoles interact with each other, they must be computed at each time step using an iterative self-consistent field calculation. Both of these features make AMOEBA far slower to simulate than conventional force fields”concepts[38]
conceptforce field — not defined in this paper's own words; model class encoded in the AMOEBA compound name — “OpenMM has an implementation of the AMOEBA polarizable force field which is, to the best of our knowledge, the fastest available in any code [ 3 ]. AMOEBA is designed to transcend the limitations of conventional point charge force fields and achieve much higher accuracy in force and energy computations. It uses two main mechanisms to achieve this. First, instead of approximating atoms as point charges, it assigns each one a multipole moment up to the level of quadrupoles. Second, it explicitly models atomic polarization by assigning an induced dipole to each atom. Because the induced dipoles interact with each other, they must be computed at each time step using an iterative self-consistent field calculation. Both of these features make AMOEBA far slower to simulate than conventional force fields”concepts[39]
conceptconventional point charge force fields — not defined in this paper's own words; non-polarizable comparison class that AMOEBA seeks to transcend — “OpenMM has an implementation of the AMOEBA polarizable force field which is, to the best of our knowledge, the fastest available in any code [ 3 ]. AMOEBA is designed to transcend the limitations of conventional point charge force fields and achieve much higher accuracy in force and energy computations. It uses two main mechanisms to achieve this. First, instead of approximating atoms as point charges, it assigns each one a multipole moment up to the level of quadrupoles. Second, it explicitly models atomic polarization by assigning an induced dipole to each atom. Because the induced dipoles interact with each other, they must be computed at each time step using an iterative self-consistent field calculation. Both of these features make AMOEBA far slower to simulate than conventional force fields”concepts[40]
conceptmultipole moment — not defined in this paper's own words; up-to-quadrupole representation assigned to atoms in AMOEBA — “OpenMM has an implementation of the AMOEBA polarizable force field which is, to the best of our knowledge, the fastest available in any code [ 3 ]. AMOEBA is designed to transcend the limitations of conventional point charge force fields and achieve much higher accuracy in force and energy computations. It uses two main mechanisms to achieve this. First, instead of approximating atoms as point charges, it assigns each one a multipole moment up to the level of quadrupoles. Second, it explicitly models atomic polarization by assigning an induced dipole to each atom. Because the induced dipoles interact with each other, they must be computed at each time step using an iterative self-consistent field calculation. Both of these features make AMOEBA far slower to simulate than conventional force fields”concepts[41]
conceptinduced dipole — not defined in this paper's own words; explicit atomic-polarization quantity in AMOEBA — “OpenMM has an implementation of the AMOEBA polarizable force field which is, to the best of our knowledge, the fastest available in any code [ 3 ]. AMOEBA is designed to transcend the limitations of conventional point charge force fields and achieve much higher accuracy in force and energy computations. It uses two main mechanisms to achieve this. First, instead of approximating atoms as point charges, it assigns each one a multipole moment up to the level of quadrupoles. Second, it explicitly models atomic polarization by assigning an induced dipole to each atom. Because the induced dipoles interact with each other, they must be computed at each time step using an iterative self-consistent field calculation. Both of these features make AMOEBA far slower to simulate than conventional force fields”concepts[42]
conceptiterative self-consistent field calculation — not defined in this paper's own words; calculation of mutually interacting induced dipoles — “OpenMM has an implementation of the AMOEBA polarizable force field which is, to the best of our knowledge, the fastest available in any code [ 3 ]. AMOEBA is designed to transcend the limitations of conventional point charge force fields and achieve much higher accuracy in force and energy computations. It uses two main mechanisms to achieve this. First, instead of approximating atoms as point charges, it assigns each one a multipole moment up to the level of quadrupoles. Second, it explicitly models atomic polarization by assigning an induced dipole to each atom. Because the induced dipoles interact with each other, they must be computed at each time step using an iterative self-consistent field calculation. Both of these features make AMOEBA far slower to simulate than conventional force fields”concepts[43]
conceptextrapolated polarization approximation — not defined in this paper's own words; approximation extrapolating from few iterations — “Much research has been done recently on ways to reduce this cost, and new versions of OpenMM have incorporated several of the most recent algorithms. Interactions between multipoles are computed using spherical harmonics in a quasi-internal coordinate system [ 30 , 31 ] (added in OpenMM 7.0). The iterative solver for induced dipoles uses the Direct Inversion in the Iterative Subspace (DIIS) algorithm [ 32 ] (added in OpenMM 6.1). Alternatively, it can use the recently developed extrapolated polarization approximation [ 33 ] (added in OpenMM 7.0). In this method, only a few iterations are performed, and then an analytic approximation is used to extrapolate to the limit of infinite iterations. This can give a large improvement in speed with only a very small loss in accuracy”concepts[44]
conceptlarge improvement in speed — not defined in this paper's own words; reported benefit of extrapolated polarization — “Much research has been done recently on ways to reduce this cost, and new versions of OpenMM have incorporated several of the most recent algorithms. Interactions between multipoles are computed using spherical harmonics in a quasi-internal coordinate system [ 30 , 31 ] (added in OpenMM 7.0). The iterative solver for induced dipoles uses the Direct Inversion in the Iterative Subspace (DIIS) algorithm [ 32 ] (added in OpenMM 6.1). Alternatively, it can use the recently developed extrapolated polarization approximation [ 33 ] (added in OpenMM 7.0). In this method, only a few iterations are performed, and then an analytic approximation is used to extrapolate to the limit of infinite iterations. This can give a large improvement in speed with only a very small loss in accuracy”concepts[45]
conceptDrude particles — not defined in this paper's own words; alternative particle-pair representation of polarizability — “A new feature introduced in OpenMM 5.2 is support for Drude particles [ 29 ] as an alternative way of modelling polarizability. In this method, each polarizable atom is modelled as a pair of charges connected by an anisotropic harmonic force. When an electric field is applied, the two particles are displaced from each other, creating a dipole moment. The strength of the force connecting them determines the atomic polarizability. The particle positions can be determined using a self-consistent field calculation or, more commonly, a dual-thermostat Langevin integrator that couples the center of mass of each pair to a high temperature heat bath (e.g. 300K), but the internal motion of each pair to a low temperature heat bath (e.g. 1K). Polarizable force fields based on Drude particles are included with OpenMM. This includes the SWM4-NDP water model [ 34 ], and the CHARMM polarizable force field for proteins [ 4 ]. They aim to incorporate some of the same physical effects as AMOEBA at a lower computational cost”concepts[46]
conceptdual-thermostat Langevin integrator — not defined in this paper's own words; common method for evolving paired Drude charges — “A new feature introduced in OpenMM 5.2 is support for Drude particles [ 29 ] as an alternative way of modelling polarizability. In this method, each polarizable atom is modelled as a pair of charges connected by an anisotropic harmonic force. When an electric field is applied, the two particles are displaced from each other, creating a dipole moment. The strength of the force connecting them determines the atomic polarizability. The particle positions can be determined using a self-consistent field calculation or, more commonly, a dual-thermostat Langevin integrator that couples the center of mass of each pair to a high temperature heat bath (e.g. 300K), but the internal motion of each pair to a low temperature heat bath (e.g. 1K). Polarizable force fields based on Drude particles are included with OpenMM. This includes the SWM4-NDP water model [ 34 ], and the CHARMM polarizable force field for proteins [ 4 ]. They aim to incorporate some of the same physical effects as AMOEBA at a lower computational cost”concepts[47]
conceptvirtual sites — not defined in this paper's own words; non-integrated molecular interaction sites — “Virtual sites are interaction sites within a molecule whose positions are not integrated directly. Instead, they are calculated at each time step based on the positions of other particles. They are often used to provide a more detailed charge distribution than would be possible using only a single point charge for each atom. For example, they appear in many multisite water models (such as TIP-4P and TIP-5P), and also in the CHARMM polarizable protein force field”concepts[48]
conceptinteraction sites — not defined in this paper's own words; site class assigned to virtual sites — “Virtual sites are interaction sites within a molecule whose positions are not integrated directly. Instead, they are calculated at each time step based on the positions of other particles. They are often used to provide a more detailed charge distribution than would be possible using only a single point charge for each atom. For example, they appear in many multisite water models (such as TIP-4P and TIP-5P), and also in the CHARMM polarizable protein force field”concepts[49]
concepttriclinic boxes — not defined in this paper's own words; general periodic boxes formed by three arbitrary lattice vectors — “Earlier versions of OpenMM supported only rectangular periodic boxes. In OpenMM 6.3 it was extended to support triclinic boxes as well: ones formed by combinations of three arbitrary lattice vectors. It can be shown that this formulation is extremely general; all standard periodic box shapes, including the popular rhombic dodecahedron and truncated octahedron, can be represented as triclinic boxes [ 35 ]. This feature serves two important functions. First, it allows one to simulate crystals, which very often have non-rectangular unit cells. Second, it is useful when simulating freely rotating molecules in solvent. One needs to include a certain amount of padding around the molecule to ensure that no two periodic copies ever come too close together. Because the molecule can freely rotate, the same padding is required along all directions, so one wants the periodic box to be as close as possible to spherical. For a given padding distance, the rhombic dodecahedron has only about 71% the volume of a rectangular unit cell. It therefore requires less solvent and reduces the cost of the simulation”concepts[50]
conceptrhombic dodecahedron — not defined in this paper's own words; triclinic periodic box with lower volume for isotropic padding — “Earlier versions of OpenMM supported only rectangular periodic boxes. In OpenMM 6.3 it was extended to support triclinic boxes as well: ones formed by combinations of three arbitrary lattice vectors. It can be shown that this formulation is extremely general; all standard periodic box shapes, including the popular rhombic dodecahedron and truncated octahedron, can be represented as triclinic boxes [ 35 ]. This feature serves two important functions. First, it allows one to simulate crystals, which very often have non-rectangular unit cells. Second, it is useful when simulating freely rotating molecules in solvent. One needs to include a certain amount of padding around the molecule to ensure that no two periodic copies ever come too close together. Because the molecule can freely rotate, the same padding is required along all directions, so one wants the periodic box to be as close as possible to spherical. For a given padding distance, the rhombic dodecahedron has only about 71% the volume of a rectangular unit cell. It therefore requires less solvent and reduces the cost of the simulation”concepts[51]
conceptcost of the simulation — not defined in this paper's own words; computational cost reduced by requiring less solvent — “Earlier versions of OpenMM supported only rectangular periodic boxes. In OpenMM 6.3 it was extended to support triclinic boxes as well: ones formed by combinations of three arbitrary lattice vectors. It can be shown that this formulation is extremely general; all standard periodic box shapes, including the popular rhombic dodecahedron and truncated octahedron, can be represented as triclinic boxes [ 35 ]. This feature serves two important functions. First, it allows one to simulate crystals, which very often have non-rectangular unit cells. Second, it is useful when simulating freely rotating molecules in solvent. One needs to include a certain amount of padding around the molecule to ensure that no two periodic copies ever come too close together. Because the molecule can freely rotate, the same padding is required along all directions, so one wants the periodic box to be as close as possible to spherical. For a given padding distance, the rhombic dodecahedron has only about 71% the volume of a rectangular unit cell. It therefore requires less solvent and reduces the cost of the simulation”concepts[52]
conceptSingle Precision — not defined in this paper's own words; precision mode using single precision for nearly all calculations — “OpenMM 5.0 introduced support for multiple precision modes. When running on a GPU, the user has a choice of three modes: Single Precision : Nearly all calculations are done in single precision. Double is used in only a handful of places where it has negligible impact on performance and is most important for accuracy. Mixed Precision : Forces are computed in single precision, but integration and energy accumulation are done in double precision. This gives a large improvement in the accuracy of some quantities, while only having a small impact in performance. Double Precision : All calculations are done in double precision. This gives the best accuracy, but often has a very large effect on performance”concepts[53]
conceptMixed Precision — not defined in this paper's own words; precision mode combining single-precision forces with double integration and energy accumulation — “OpenMM 5.0 introduced support for multiple precision modes. When running on a GPU, the user has a choice of three modes: Single Precision : Nearly all calculations are done in single precision. Double is used in only a handful of places where it has negligible impact on performance and is most important for accuracy. Mixed Precision : Forces are computed in single precision, but integration and energy accumulation are done in double precision. This gives a large improvement in the accuracy of some quantities, while only having a small impact in performance. Double Precision : All calculations are done in double precision. This gives the best accuracy, but often has a very large effect on performance”concepts[54]
conceptDouble Precision — not defined in this paper's own words; precision mode using double precision throughout — “OpenMM 5.0 introduced support for multiple precision modes. When running on a GPU, the user has a choice of three modes: Single Precision : Nearly all calculations are done in single precision. Double is used in only a handful of places where it has negligible impact on performance and is most important for accuracy. Mixed Precision : Forces are computed in single precision, but integration and energy accumulation are done in double precision. This gives a large improvement in the accuracy of some quantities, while only having a small impact in performance. Double Precision : All calculations are done in double precision. This gives the best accuracy, but often has a very large effect on performance”concepts[55]
conceptaccuracy of some quantities — not defined in this paper's own words; accuracy improved by mixed precision — “OpenMM 5.0 introduced support for multiple precision modes. When running on a GPU, the user has a choice of three modes: Single Precision : Nearly all calculations are done in single precision. Double is used in only a handful of places where it has negligible impact on performance and is most important for accuracy. Mixed Precision : Forces are computed in single precision, but integration and energy accumulation are done in double precision. This gives a large improvement in the accuracy of some quantities, while only having a small impact in performance. Double Precision : All calculations are done in double precision. This gives the best accuracy, but often has a very large effect on performance”concepts[56]
conceptlarge decrease in performance — not defined in this paper's own words; speed penalty reported for double precision — “The speed difference between single and mixed precision is quite small, whereas double precision is much slower. This is especially true on the Titan X, a GPU primarily targeted at consumers that has very poor double precision performance. The Tesla K80, which is targeted at high performance computing, does much better, although there is still a large decrease in performance. Overall, the Titan X is far faster in single or mixed precision modes, while the K80 is faster in double precision mode”concepts[57]
conceptDHFR — not defined in this paper's own words; small benchmark molecular system — “To evaluate the speed of OpenMM, we benchmarked its performance with three molecular systems of varying size: Dihydrofolate reductase (DHFR), a 2489 atom protein solvated with 7023 water molecules to give a total of 23,558 atoms. Abl kinase (ABL1), a 4067 atom protein solvated with 13,692 water molecules to give a total of 45,143 atoms The mechanistic target of rapamycin (MTOR), a 19,019 atom protein solvated with 56,733 water molecules to give a total of 189,218 atoms. Benchmarks were run on the following types of hardware: An NVIDIA Titan X Pascal GPU. An NVIDIA Tesla K80 GPU. A 4 core, 3.5 GHz Intel Core i7-2700K CPU. All GPU simulations used CUDA 7.5. The K80 consists of two independent GPUs on a single board. OpenMM can parallelize a single simulation across multiple GPUs, or alternatively run a different simulation on each one at the same time. We therefore included benchmarks using only one of the GPUs (thus leaving the other free for a different simulation), as well as ones using both GPUs for a single simulation”concepts[58]
conceptABL1 — not defined in this paper's own words; medium benchmark molecular system — “To evaluate the speed of OpenMM, we benchmarked its performance with three molecular systems of varying size: Dihydrofolate reductase (DHFR), a 2489 atom protein solvated with 7023 water molecules to give a total of 23,558 atoms. Abl kinase (ABL1), a 4067 atom protein solvated with 13,692 water molecules to give a total of 45,143 atoms The mechanistic target of rapamycin (MTOR), a 19,019 atom protein solvated with 56,733 water molecules to give a total of 189,218 atoms. Benchmarks were run on the following types of hardware: An NVIDIA Titan X Pascal GPU. An NVIDIA Tesla K80 GPU. A 4 core, 3.5 GHz Intel Core i7-2700K CPU. All GPU simulations used CUDA 7.5. The K80 consists of two independent GPUs on a single board. OpenMM can parallelize a single simulation across multiple GPUs, or alternatively run a different simulation on each one at the same time. We therefore included benchmarks using only one of the GPUs (thus leaving the other free for a different simulation), as well as ones using both GPUs for a single simulation”concepts[59]
conceptMTOR — not defined in this paper's own words; large benchmark molecular system — “To evaluate the speed of OpenMM, we benchmarked its performance with three molecular systems of varying size: Dihydrofolate reductase (DHFR), a 2489 atom protein solvated with 7023 water molecules to give a total of 23,558 atoms. Abl kinase (ABL1), a 4067 atom protein solvated with 13,692 water molecules to give a total of 45,143 atoms The mechanistic target of rapamycin (MTOR), a 19,019 atom protein solvated with 56,733 water molecules to give a total of 189,218 atoms. Benchmarks were run on the following types of hardware: An NVIDIA Titan X Pascal GPU. An NVIDIA Tesla K80 GPU. A 4 core, 3.5 GHz Intel Core i7-2700K CPU. All GPU simulations used CUDA 7.5. The K80 consists of two independent GPUs on a single board. OpenMM can parallelize a single simulation across multiple GPUs, or alternatively run a different simulation on each one at the same time. We therefore included benchmarks using only one of the GPUs (thus leaving the other free for a different simulation), as well as ones using both GPUs for a single simulation”concepts[60]
conceptusing two GPUs — not defined in this paper's own words; multi-GPU execution condition — “Depending on the molecule and settings, using two GPUs is anywhere from 22% to 62% faster than a single GPU, with the larger molecules generally having the higher speedups. If the goal is to run a single simulation as quickly as possible, using multiple GPUs is therefore quite useful. On the other hand, if the goal is to generate as much total simulation time as possible, it is more efficient to run a separate simulation on each one”concepts[61]
concepta single GPU — not defined in this paper's own words; single-device comparison condition — “Depending on the molecule and settings, using two GPUs is anywhere from 22% to 62% faster than a single GPU, with the larger molecules generally having the higher speedups. If the goal is to run a single simulation as quickly as possible, using multiple GPUs is therefore quite useful. On the other hand, if the goal is to generate as much total simulation time as possible, it is more efficient to run a separate simulation on each one”concepts[62]
conceptenergy drift — not defined in this paper's own words; rate of energy change used to compare precision modes — “The energy drift in single precision is more than two orders of magnitude larger than in mixed or double precision. When accurate energy conservation is important, using mixed precision has a very large benefit at low cost. The average drift rates in mixed and double precision are not significantly different from each other, indicating that numeric precision is no longer the dominant source of error. In other cases, such as when using a smaller step size or when simulating a larger molecule, statistically significant differences between them might emerge”concepts[63]
conceptinput pipelines — not defined in this paper's own words; external-package system-preparation routes validated against OpenMM — “To validate the accuracy of the input pipelines, we constructed systems using the setup tools from other packages, then loaded them into those packages and into OpenMM and compared the forces and energies. We performed these tests on two systems: DHFR, a 159 residue protein, and 2KOC, a 14-mer hairpin RNA. Comparisons were made to Amber 16, Gromacs 4.6.5, and CHARMM-LITE c40b1. For Amber, we performed comparisons in both explicit solvent and OBC1 implicit solvent. For Gromacs and CHARMM, we compared only explicit solvent”concepts[64]
conceptforces and energies — not defined in this paper's own words; quantities compared across packages during input-pipeline validation — “To validate the accuracy of the input pipelines, we constructed systems using the setup tools from other packages, then loaded them into those packages and into OpenMM and compared the forces and energies. We performed these tests on two systems: DHFR, a 159 residue protein, and 2KOC, a 14-mer hairpin RNA. Comparisons were made to Amber 16, Gromacs 4.6.5, and CHARMM-LITE c40b1. For Amber, we performed comparisons in both explicit solvent and OBC1 implicit solvent. For Gromacs and CHARMM, we compared only explicit solvent”concepts[65]
conceptagreement — not defined in this paper's own words; reported cross-package energy-component correspondence — “Results are shown for Amber in Tables 6 and 7 , for Gromacs in Tables 8 and 9 , and for CHARMM in Tables 10 and 11 . In all cases the agreement is excellent, with all energy components matching to at least four significant digits. In systems that use PME, the nonbonded energies have somewhat larger differences than other energy components. This is partly because of the larger magnitude of this interaction, and partly because of the fact that different applications compute nonbonded interactions in slightly different ways. For example, Amber uses 4th order splines for charge spreading, while OpenMM uses 5th order splines. Nonetheless, they both compute the forces and energy to similar overall accuracy”concepts[66]

Full text — tagged

The reference list is not part of the text we hold for this paper. Our copy was extracted from the publisher's page and the bibliography did not survive that extraction, so the article below ends before its references. Nothing has been removed by us.

OpenMMterm 7: Rapid development of high performance algorithms for molecular dynamics Abstract OpenMMterm is a molecular dynamics simulation toolkitterm with a unique focus on extensibilityterm. It allows users to easily add new features, including forces with novel functional formsterm, new integration algorithmsterm, and new simulation protocolsterm. Those features automatically work on all supported hardware typesterm·var (including both CPUsterm and GPUsterm) and perform well on all of them. In many cases they require minimal coding, just a mathematical description of the desired function. They also require no modification to OpenMMterm itself and can be distributed independently of OpenMMterm. This makes it an ideal tool for researchers developing new simulation methods, and also allows those new methods to be immediately available to the larger community.

This is a PLOS Computational Biology Software paper.

Introduction Background Molecular dynamics simulationterm is a rapidly advancing field. Many aspects of it are subjects of current research and development. Some of the more important examples include the development of new force fieldsterm [ 1 , 2 ], sometimes involving novel functional forms for the interactions [ 3 , 4 ]; new integration algorithmsterm [ 5 – 7 ]; new sampling methodsterm [ 8 – 10 ]; and support for new types of hardware [ 11 – 13 ].

There are many popular software packages for conducting molecular dynamics simulationsterm. They vary considerably in their capabilities and feature sets. This is especially true when it comes to cutting edge, recently developed simulation techniques. The inventor of a new method will typically implement it in a single package, whichever one they are most comfortable working with. From that point, it may take years to be implemented in other packages, depending on the interests and priorities of the development team behind each one. In many cases, it may never get implemented. Even the initial implementation may not be accepted into an official release of the package it was created in. Or it may have limited usefulness, for example because it executes slowly or cannot be used on advanced hardware such as graphics processing units (GPUsterm).

The main reason for this problem is that most molecular dynamics packages were not designed with extensibilityterm in mind. Adding new features, even very simple ones, is often labor intensive and requires a deep understanding of the code. Once a prototype implementation is complete, it may be even more difficult to turn that into a well optimized version that works on all hardware typesterm·var. In most cases the simulation enginesterm are also monolithic, so the only way to add features to them is to directly modify their source code. There is no plugin interfaceterm or other mechanism for allowing new features to be implemented and distributed independently. This turns the core development teamterm into gatekeepers, restricting what features can be added to the package.

A complete molecular dynamics package is, of course, much more than just a simulation engineterm. Each one typically has its own collection of tools for preparing molecular systems to simulate, its own file formats, and sometimes even its own force fieldsterm. This makes it difficult for users to switch back and forth between them, or to combine features from different packages.

OpenMMterm OpenMMterm is a molecular dynamics package designed to address these problems. It began as simply a library for performing certain types of calculationsterm on GPUsterm, but in recent versions has grown into a complete simulation package with unique and powerful features. This article describes OpenMMterm 7.0, which is the latest release at the time of writing. An earlier version (OpenMMterm 4.1) was described in a previous publication [ 14 ]. This article focuses primarily on what has changed since that version, but for completeness there is some overlap between the two.

OpenMMterm is based on a layered architectureterm which (see Fig 1 ), to the best of our knowledge, is unique among molecular dynamics packages. This allows it to be used in several different ways by users with varying needs and interests. Depending on how a particular user chooses to interact with it, OpenMMterm can act as: A high-performance libraryterm , callable from other programs, for performing a wide range of calculationsterm used in molecular modelling and simulation on a range of advanced hardware platforms (both CPUsterm and GPUsterm).

A domain specific languageterm for easily implementing new algorithms for molecular modelling and simulation.

A complete packageterm for running molecular simulations.

Architecture of OpenMMterm.

Extensibilityterm is built into every layer of the architecture as a fundamental design goal. A guiding philosophy is that users should be able to implement new features as easily as possible, by writing as little code as possible. Those features should then work on all types of hardware, including both CPUsterm and GPUsterm, and have good performance on all of them. Finally, the developer of a feature should be able to package and distribute their code independently, without needing the approval or participation of the core OpenMMterm development team.

The highest layer of the architecture is based on the Python scripting languageterm. Users can easily extend it by writing their own Python code to implement the algorithms of their choice. A wide range of simulation protocols, sampling methods, etc. can be implemented in this way, often with only a few lines of code.

The next layer down defines the calculationsterm that are tied together through Python scripting. This layer includes many classes for creating “custom” forces and integratorsterm. These classes provide a simple but powerful mechanism for extensibilityterm. The user provides one or more mathematical expressionsterm to describe the calculationterm to be done. For example, they might give an expression for the interaction energyterm of a pair of particles as a function of the distance between them. The expression is parsed and analyzed, and just-in-time compilationterm is used to generate an efficient implementationterm of the code for calculating that interaction [ 15 ]. This allows users to easily define a huge variety of interactions and integration algorithms. They can then be used on any supported type of hardware, and involve little or no loss in performance.

At the lowest layer, OpenMMterm is based on a pluginterm mechanism. Calculationsterm are defined by “computational kernelsterm”. A pluginterm may define new kernels for doing new types of calculationsterm, or alternatively it may provide new implementations of existing kernels, for example to support a new type of hardware. Pluginsterm are dynamically discovered and loaded at runtime. Each one is packaged as a file that can be distributed separately from the rest of OpenMMterm and installed by any user.

Another unique feature of OpenMMterm is its support for multiple input pipelinesterm. Before a molecular system can be simulated, it first must be modelled. This is sometimes a complex process involving such steps as combining multiple molecules into a single file, building missing loops, selecting a force fieldterm, and parametrizing small molecules. Typically, each simulation package provides its own tools for doing this. They often differ in significant ways, such as what force fieldsterm are available.

OpenMMterm does include modelling tools, but it also can directly read the file formats used by Amberterm [ 16 ], CHARMMterm [ 17 ], Gromacsterm [ 18 ], and Desmondterm [ 19 ]. A user can prepare their system with the tools from any of those packages, or with other tools that are designed to work with them, then simulate it in OpenMMterm. This gives great flexibility, since the user can use whatever tools are best suited to the system they want to simulate. It also lets OpenMMterm easily fit into their existing workflow. A user who is accustomed to a particular tool can continue to use it, but still run their simulation in OpenMMterm.

Design and implementation Extensibilityterm Python scripting The highest level of the architecture consists of a set of Python classes and functions. They may be chained together to create simple scripts that run simulations, or more complicated ones that implement a variety of advanced algorithms. These are some of the functions provided by OpenMMterm that may be used by Python scripts: Reading input files, including standard formats like PDB or PDBx/mmCIF, as well as the proprietary formats used by applications such as Amberterm, CHARMMterm, Gromacsterm, and Desmondterm.

Editing molecular models, such as by combining molecules together, adding or deleting atoms, building solvent boxes, etc.

Defining the forces acting on a molecular system, either by specifying them explicitly or by loading a force fieldterm definition from a file.

Computing forces and energiesterm.

Running simulations.

Outputting results.

An example of a script to run a simulation is shown in Listing 1. It loads a PDB file, models the forces with the AMBER99SB-ILDN force fieldterm [ 20 ] and TIP-3P water model [ 21 ], performs a local energy minimization to eliminate clashes, and then simulates 1 million steps of Verlet dynamics. Every 1000 steps, it writes the current structure to a DCD file, and the current time, potential energy, and temperature to a log file.

Listing 1: A Python script executing a complete molecular simulation from a PDB file.

from simtk.openmmterm.app import * from simtk.openmmterm import * from simtk.unit import * pdb = PDBFile('input.pdb') forcefield = ForceField('amber99sbildn.xml', 'tip3p.xml') system = forcefield.createSystem(pdb.topology, nonbondedMethod = PME, nonbondedCutoff = 1*nanometer, constraints = HBonds) integrator = VerletIntegrator(0.002*picoseconds) simulation = Simulation(pdb.topology, system, integrator) simulation.context.setPositions(pdb.positions) simulation.context.setVelocitiesToTemperature(300*kelvin) simulation.minimizeEnergy() simulation.reporters.append(DCDReporter('output.pdb', 1000)) simulation.reporters.append(StateDataReporter('output.log', 1000, time = True, potentialEnergy = True, temperature = True)) simulation.step(1000000) This script runs a simple simulation, much like one might run in any molecular dynamics package. More sophisticated or exotic algorithms and protocols can be implemented in exactly the same way. Here are some examples of features or applications that use or extend OpenMMterm’s Python scripting features: A class for simulated tempering [ 10 ], an accelerated sampling method that varies the temperature of a simulation to accelerate barrier crossings. The entire algorithm was implemented in roughly 200 lines of code.

PDBFixerterm, an application for cleaning up molecular models in preparation for simulating them. It includes such features as building missing loops, replacing nonstandard amino acids with standard ones, adding hydrogens, and building solvent boxes. By using the features provided by OpenMMterm, all of these algorithms were implemented in only about 1000 lines of code.

YANKterm [ 22 ] a sophisticated application and toolkit for alchemical free energy calculationsterm. It implements Hamiltonian exchange molecular dynamics simulationsterm to efficiently sample multiple alchemical states, and utilizes the “custom” forces provided by OpenMMterm to allow exploration of many different alchemical intermediate functional forms.

Although these tools are written in Python, all expensive calculationsterm are done by OpenMMterm and take full advantage of the available hardware, including GPUsterm and multicore CPUsterm. Because they interact with OpenMMterm only through well-defined public interfaces, they can be packaged and distributed independently. No changes to OpenMMterm itself are required to use them.

A set of advanced examples is included in the supporting information. They demonstrate more complex simulation techniques, and show how to use OpenMMterm in combination with other programs.

Custom forcesterm In addition to the standard forces provided by OpenMMterm (such as Lennard-Jones forces, PME and reaction field electrostatics, and generalized Born models), custom forcesterm are a mechanism for creating interactionsterm between particles with entirely novel functional forms. There are many different custom forceterm classes, each supporting a particular category of interactions. They are listed in Table 1 . Since OpenMMterm 4.1 was described in an earlier publication, several new custom forceterm classes have been added, including CustomCompoundBondForce (added in OpenMMterm 5.0), CustomManyParticleForce (added in OpenMMterm 6.2), and CustomCentroidBondForce (added in OpenMMterm 7.0).

Custom forcesterm supported by OpenMMterm 7.0.

In each case, the user provides an algebraic expression for the interaction energyterm as a function of the relevant variables. OpenMMterm analytically differentiates the expression to determine the corresponding force, then uses just-in-time compilationterm to generate machine codeterm for efficiently computing the force and energy on the current hardware (either CPUterm or GPUterm).

As an example, Listing 2 defines a harmonic restraint that can be applied to the angles formed by triplets of atoms. It specifies that the energy of each triplet is given by k ( θ - θ 0 ) 2 . It also specifies that k and θ 0 are per-angle parameters: each triplet can have different values for them.

Listing 2: Implementation of a harmonic angle restraint using a CustomAngleForce.

force = CustomAngleForce('k*(theta-theta0)^2') force.addPerAngleParameter('k') force.addPerAngleParameter('theta0') Custom forcesterm are designed to achieve several goals that usually conflict with each other. First, it should be exceptionally easy to implement completely new functional forms for interactions. As seen in Listing 2, it often requires no more than a few lines of Python code. Second, a single implementation should work on all types of hardware. The exact same code can be used whether the program is being run on a CPUterm or GPUterm. Third, the user should not need to sacrifice performance. Because the expression is converted to machine codeterm before the simulation is run, there often is little or no difference in speed between a custom forceterm and a hand-written implementation of the same interaction.

Custom integratorsterm Just as custom forcesterm allow users to implement novel interactions, custom integratorsterm allow them to implement novel integration algorithms. The algorithm is defined by a sequence of operations, each defining a calculationterm to be done. Various types of operations are supported. Examples include: Evaluating a mathematical expressionterm for each degree of freedom, then assigning the result to a variable for each one.

Evaluating a mathematical expressionterm once and assigning the result to a global variable.

Summing an expression over all degrees of freedom and assigning the result to a global variable.

Applying constraints to positions or velocities.

In the simplest case, all operations are executed in order to take a single integration time step. In addition, OpenMMterm 7.0 added support for more complex flow control through if and while blocks.

Listing 3 shows Python code that uses a custom integratorterm to implement the leapfrog Verlet algorithm. The function addPerDofVariable() defines a new variable that has a different value for each degree of freedom. The function addComputePerDof() defines a calculationterm to be performed independently for each degree of freedom. In the absence of constraints, each time step of this algorithm consists of the operations v ← v + d t · f / m x ← x + d t · v where x is the position at time t , v is the velocity at time t - dt /2, dt is the step size, f is the force, and m is the particle mass. When constraints are present, the positions must then be adjusted to satisfy them, and finally the velocities are recalculated as v ← ( x − x 0 ) / d t where x 0 is the position at the start of the step.

Listing 3: Leapfrog Verlet algorithm implemented as a CustomIntegrator.

integrator = CustomIntegrator(dt) integrator.addPerDofVariable('x0', 0) integrator.addComputePerDof('x0', 'x') integrator.addComputePerDof('v', 'v+dt*f/m') integrator.addComputePerDof('x', 'x+dt*v') integrator.addConstrainPositions() integrator.addComputePerDof('v', '(x-x0)/dt') Far more complicated and sophisticated algorithms can be implemented in the same way. Here are some examples of integrators that have been created with this mechanism.

The rRESPA multiple time step integration algorithm [ 23 ].

The aMD accelerated sampling algorithm [ 9 ].

Metropolis-Hastings Monte Carlo [ 24 ] with Gaussian displacement proposals.

Hybrid Monte Carlo and variants, such as Generalized hybrid Monte Carlo (GHMC) [ 25 ], a Metropolized form of Langevin dynamics.

Nonequilibrium candidate Monte Carlo (NCMC) [ 26 ], where an external field is changed during the course of dynamics and the resulting nonequilibrium proposal accepted or rejected to preserve the equilibrium distribution.

As with custom forcesterm, a single implementation works on all types of hardware. Because just-in-time compilationterm is used to generate efficient machine codeterm for the algorithm, there usually is little or no performance cost relative to using hand-written GPUterm code.

Pluginsterm The lowest layer of the OpenMMterm architecture is based around pluginsterm. This allows new features to be packaged as libraries, distributed independently, and loaded dynamically at runtime. For example, a pluginterm can implement a new type of interaction or a new integration algorithmterm, or it can add support for a new type of hardware. In fact, many of the core features of OpenMMterm are actually implemented as pluginsterm, including its implementations of the AMOEBA force fieldterm [ 27 ], ring polymer molecular dynamics (RPMD) [ 28 ], and polarizable Drude particlesterm [ 29 ].

This provides nearly unlimited extensibilityterm, allowing users to implement any feature they might want. Writing a pluginterm involves far more work than the other extensibilityterm features described above. For example, it is up to the user to write whatever code is necessary to make it work on each type of hardware, such as CUDA or OpenCL code for GPUsterm. When possible, it is therefore usually preferable to use one of the other mechanisms. Nevertheless, pluginsterm are an important option when extreme extensibilityterm and performance is needed. Like the other mechanisms, they allow a developer to create an extension and distribute it directly to users. No modifications to OpenMMterm itself are needed.

Advanced features OpenMMterm has many other features beyond those discussed above, some of which are themselves unique or noteworthy. The following are some of the more significant ones.

AMOEBA OpenMMterm has an implementation of the AMOEBA polarizable force fieldterm which is, to the best of our knowledge, the fastest available in any code [ 3 ]. AMOEBA is designed to transcend the limitations of conventional point charge force fieldsterm and achieve much higher accuracy in force and energy computations. It uses two main mechanisms to achieve this. First, instead of approximating atoms as point charges, it assigns each one a multipole momentterm up to the level of quadrupoles. Second, it explicitly models atomic polarization by assigning an induced dipoleterm to each atom. Because the induced dipolesterm interact with each other, they must be computed at each time step using an iterative self-consistent field calculationterm. Both of these features make AMOEBA far slower to simulate than conventional force fieldsterm.

Much research has been done recently on ways to reduce this cost, and new versions of OpenMMterm have incorporated several of the most recent algorithms. Interactions between multipoles are computed using spherical harmonics in a quasi-internal coordinate system [ 30 , 31 ] (added in OpenMMterm 7.0). The iterative solver for induced dipolesterm uses the Direct Inversion in the Iterative Subspace (DIIS) algorithm [ 32 ] (added in OpenMMterm 6.1). Alternatively, it can use the recently developed extrapolated polarization approximationterm [ 33 ] (added in OpenMMterm 7.0). In this method, only a few iterations are performed, and then an analytic approximation is used to extrapolate to the limit of infinite iterations. This can give a large improvement in speedterm with only a very small loss in accuracy.

Drude particlesterm A new feature introduced in OpenMMterm 5.2 is support for Drude particlesterm [ 29 ] as an alternative way of modelling polarizability. In this method, each polarizable atom is modelled as a pair of charges connected by an anisotropic harmonic force. When an electric field is applied, the two particles are displaced from each other, creating a dipole moment. The strength of the force connecting them determines the atomic polarizability. The particle positions can be determined using a self-consistent field calculationterm or, more commonly, a dual-thermostat Langevin integratorterm that couples the center of mass of each pair to a high temperature heat bath (e.g. 300K), but the internal motion of each pair to a low temperature heat bath (e.g. 1K).

Polarizable force fieldsterm based on Drude particlesterm are included with OpenMMterm. This includes the SWM4-NDP water model [ 34 ], and the CHARMMterm polarizable force fieldterm for proteins [ 4 ]. They aim to incorporate some of the same physical effects as AMOEBA at a lower computational cost.

Virtual sitesterm Virtual sitesterm are interaction sitesterm within a molecule whose positions are not integrated directly. Instead, they are calculated at each time step based on the positions of other particles. They are often used to provide a more detailed charge distribution than would be possible using only a single point charge for each atom. For example, they appear in many multisite water models (such as TIP-4P and TIP-5P), and also in the CHARMMterm polarizable protein force fieldterm.

There are a multitude of possible ways a virtual siteterm position can be specified based on the positions of other mobile atoms. Typically, a simulation package will provide a limited choice of rules, covering only those cases needed for the particular force fieldsterm that package supports. For example, Gromacsterm 5 offers a choice of four methods for calculating a virtual siteterm position based on the positions of three atoms. Each one covers one very specific case that occurs in a supported force fieldterm. One can easily imagine other cases that would be impossible to construct with any of the current rules, and would therefore require adding a fifth rule.

OpenMMterm also offers a few specialized rules for positioning virtual sitesterm, but in addition, it has a very general method designed to cover all cases that are ever likely to occur in which a virtual siteterm depends on the positions of three atoms. This method, added in OpenMMterm 6.1, can reproduce all four of the rules provided by Gromacsterm, as well as supporting many other situations they could not.

In this method, three vectors are first calculated as weighted averages of the positions of the three atoms: o = w 1 o r 1 + w 2 o r 2 + w 3 o r 3 d x = w 1 x r 1 + w 2 x r 2 + w 3 x r 3 d y = w 1 y r 1 + w 2 y r 2 + w 3 y r 3 where r 1 , r 2 , and r 3 are the atom positions, and the coefficients are user-defined. They are then used to construct a set of orthonormal coordinate axes ( x ^ , y ^ , z ^ ): d z = d x × d y x ^ = d x / | d x | z ^ = d z / | d z | y ^ = z ^ × x ^ Finally, the virtual siteterm position is set to an arbitrary user-defined location within this coordinate system: r = o + p 1 x ^ + p 2 y ^ + p 3 z ^ This method is another example of how flexibility and extensibilityterm are core design goals of OpenMMterm. Instead of supporting only a limited set of specialized virtual siteterm types, it tries to provide a very general type that can cover as wide a range of cases as possible, thus giving maximum flexibility to users in designing their models and force fieldsterm.

Triclinic periodic boxes Earlier versions of OpenMMterm supported only rectangular periodic boxes. In OpenMMterm 6.3 it was extended to support triclinic boxesterm as well: ones formed by combinations of three arbitrary lattice vectors. It can be shown that this formulation is extremely general; all standard periodic box shapes, including the popular rhombic dodecahedronterm and truncated octahedron, can be represented as triclinic boxesterm [ 35 ].

This feature serves two important functions. First, it allows one to simulate crystals, which very often have non-rectangular unit cells. Second, it is useful when simulating freely rotating molecules in solvent. One needs to include a certain amount of padding around the molecule to ensure that no two periodic copies ever come too close together. Because the molecule can freely rotate, the same padding is required along all directions, so one wants the periodic box to be as close as possible to spherical. For a given padding distance, the rhombic dodecahedronterm has only about 71% the volume of a rectangular unit cell. It therefore requires less solvent and reduces the cost of the simulationterm.

Multiple precision modesterm·var Many aspects of a molecular dynamics code involve tradeoffs between speed and accuracy. This is especially true when executing on a GPUterm, since they often have very poor double precisionterm performance. To optimize execution speed, it is preferable to use single precisionterm whenever possible, resorting to double precisionterm only when absolutely necessary. Unfortunately, there is no unique standard for when it is "necessary". The minimum acceptable level of error can vary widely depending on the details of a simulation and the type of information one wishes to obtain from it.

OpenMMterm 5.0 introduced support for multiple precision modesterm·var. When running on a GPUterm, the user has a choice of three modes: Single Precisionterm : Nearly all calculationsterm are done in single precisionterm. Double is used in only a handful of places where it has negligible impact on performance and is most important for accuracy.

Mixed Precisionterm : Forces are computed in single precisionterm, but integration and energy accumulation are done in double precisionterm. This gives a large improvement in the accuracy of some quantitiesterm, while only having a small impact in performance.

Double Precisionterm : All calculationsterm are done in double precisionterm. This gives the best accuracy, but often has a very large effect on performance.

The effects of the different modes are illustrated below in Results.

Regardless of the precision modeterm·var, forces are accumulated as 64 bit fixed point values. This improves accuracy when working in single or mixed precisionterm modes, and ensures that force accumulation is deterministic. It also allows force accumulation to be done with integer atomic operations, which substantially improves performance. OpenMMterm has used this method since version 4.0, released in January 2012. Since that time, it has found its way into other GPUterm accelerated MD codes, such as AMBERterm [ 36 ].

Results Performance To evaluate the speed of OpenMMterm, we benchmarked its performance with three molecular systems of varying size: Dihydrofolate reductase (DHFRterm), a 2489 atom protein solvated with 7023 water molecules to give a total of 23,558 atoms.

Abl kinase (ABL1term), a 4067 atom protein solvated with 13,692 water molecules to give a total of 45,143 atoms The mechanistic target of rapamycin (MTORterm), a 19,019 atom protein solvated with 56,733 water molecules to give a total of 189,218 atoms.

Benchmarks were run on the following types of hardware: An NVIDIA Titan X Pascal GPUterm.

An NVIDIA Tesla K80 GPUterm.

A 4 core, 3.5 GHz Intel Core i7-2700K CPUterm.

All GPUterm simulations used CUDA 7.5. The K80 consists of two independent GPUsterm on a single board. OpenMMterm can parallelize a single simulation across multiple GPUsterm, or alternatively run a different simulation on each one at the same time. We therefore included benchmarks using only one of the GPUsterm (thus leaving the other free for a different simulation), as well as ones using both GPUsterm for a single simulation.

In the discussion below, we summarize the most important parameters for each set of simulations. Full details can be found in the scripts used to run the simulations, which are included in the Supplemental Information.

Amberterm We first benchmarked the performance using the AMBER99SB-ILDN force fieldterm and TIP3P water model. All simulations used a Langevin integrator with a temperature of 300 K and a friction coefficient of 1 ps -1 . Long range Coulomb interactions were computed with the Particle Mesh Ewald (PME) method.

Simulations were run using integration time steps of both 2 fs and 5 fs. For the 2 fs simulations, covalent bonds involving a hydrogen atom were modelled as rigid constraints. For the 5 fs simulations, all covalent bonds were modelled as rigid constraints and hydrogen mass repartitioning was used to increase the mass of hydrogen atoms to 4 amu (while decreasing the masses of the atoms they were bonded to so as to keep the total system mass constant). In all cases, water molecules were kept rigid. All of the GPUterm simulations used single precisionterm.

The results are shown in Table 2 .

Benchmark results for various protein systems in explicit solvent simulated with PME.

Depending on the molecule and settingsterm·var, using two GPUsterm is anywhere from 22% to 62% faster than a single GPUterm, with the larger molecules generally having the higher speedups. If the goal is to run a single simulation as quickly as possible, using multiple GPUsterm is therefore quite useful. On the other hand, if the goal is to generate as much total simulation time as possible, it is more efficient to run a separate simulation on each one.

AMOEBA We next benchmarked performance using the AMOEBA2013 force fieldterm. The AMOEBA water model is designed to be flexible rather than rigid, which requires a smaller step size. We therefore used a rRESPA multiple time step integrator, in which bonded forces were evaluated every 1 fs and nonbonded forces every 2 fs. No degrees of freedom were constrained. As above, we used PME for long range Coulomb interactions and single precisionterm.

Simulations were run with two different methods of calculating the induced dipolesterm: Full mutual polarization with a tolerance of 10 −5 for the induced dipolesterm.

The extrapolated polarization approximationterm.

The CPUterm implementation of AMOEBA in OpenMMterm is not well optimized, so we only ran benchmarks on GPUsterm. Using multiple GPUsterm for a single simulation is not supported with AMOEBA. Because AMOEBA is a very expensive force fieldterm and is normally only used for modest sized systems, we only ran benchmarks for DHFRterm.

The results are shown in Table 3 .

Benchmark results for DHFRterm in explicit solvent using AMOEBA2013.

Effect of precision When running on a GPUterm, OpenMMterm gives a choice of three precision modesterm·var: single, mixed, and double. To measure the effect of this choice on performance, we repeated the 2 fs time step DHFRterm simulations in mixed and double modes. The results are shown in Table 4 .

Effect of precision model on performance.

The speed difference between single and mixed precisionterm is quite small, whereas double precisionterm is much slower. This is especially true on the Titan X, a GPUterm primarily targeted at consumers that has very poor double precisionterm performance. The Tesla K80, which is targeted at high performance computing, does much better, although there is still a large decrease in performanceterm. Overall, the Titan X is far faster in single or mixed precisionterm modes, while the K80 is faster in double precisionterm mode.

To see the benefits of higher precision, we performed additional simulations of DHFRterm. Because a thermostat tends to mask the effect of error, these simulations used a leapfrog Verlet integrator to simulate constant energy. All simulations used the AMBER99SB-ILDN force fieldterm, a 2 fs time step, rigid water, and constraints on bonds involving hydrogen.

Each simulation was 1 ns in length. The total energy was recorded every 1 ps, and a linear regression was used to estimate the rate of energy changeterm·var. Ten independent simulations were performed for each precision modeterm·var, giving ten estimates of the rate. Table 5 reports the mean and standard error of those ten rates for each mode.

Energy driftterm for different precision models for the DHFRterm explicit solvent system.

The energy driftterm in single precisionterm is more than two orders of magnitude larger than in mixed or double precisionterm. When accurate energy conservation is important, using mixed precisionterm has a very large benefit at low cost. The average drift rates in mixed and double precisionterm are not significantly different from each other, indicating that numeric precision is no longer the dominant source of error. In other cases, such as when using a smaller step size or when simulating a larger molecule, statistically significant differences between them might emerge.

Input pipelinesterm A key feature of OpenMMterm is its support for multiple input pipelinesterm. This allows users to prepare molecular systems with the tools of their choice, then simulate them in OpenMMterm. Support for Gromacsterm input files was added in OpenMMterm 5.1, Desmondterm file support was added in OpenMMterm 6.0, and CHARMMterm file support was added in OpenMMterm 6.1.

The code in Listing 1 began from a PDB file and force fieldterm definition, using those to construct a description of the molecular system. Listing 4 shows the changes needed to instead construct it from an Amberterm prmtop file, as created by the AmberTools suite of software. More complete examples of using Amberterm and CHARMMterm input files are included in the supporting information.

Listing 4: Loading a system from Amberterm prmtop/inpcrd files.

prmtop = AmberPrmtopFile('input.prmtop') system = prmtop.createSystem(nonbondedMethod = PME, nonbondedCutoff = 1*nanometer, constraints = HBonds) To validate the accuracy of the input pipelinesterm, we constructed systems using the setup tools from other packages, then loaded them into those packages and into OpenMMterm and compared the forces and energiesterm. We performed these tests on two systems: DHFRterm, a 159 residue protein, and 2KOC, a 14-mer hairpin RNA. Comparisons were made to Amberterm 16, Gromacsterm 4.6.5, and CHARMM-LITE c40b1. For Amberterm, we performed comparisons in both explicit solvent and OBC1 implicit solvent. For Gromacsterm and CHARMMterm, we compared only explicit solvent.

To create the Amberterm input files, ParmEd [ 37 ] was used to download PDB files 4M6J (DHFRterm) and 2KOC (RNA hairpin), which were then stripped of water molecules and adjusted to standard amino acids. In the case of 2KOC, the first model was used. Cofactors and phosphates were deleted. Amberterm prmtop and inpcrd files were created with LEaP from the AmberTools 16 distribution. For implicit solvent simulations, mbondi3 GB radii were used; for explicit solvent simulations, the system was solvated with TIP3P waters in an octahedral box with 15 Å of clearance, and 20 Na+ and 20 Cl- counterions were added.

To create the Gromacsterm input files, ParmEd was used to convert the Amberterm prmtop and inpcrd files into Gromacsterm top and gro files.

To create the CHARMMterm input files, CHARMM-GUI [ 38 ] was used to download the 4M6J and 2KOC PDB files. Crystallographic water molecules were deleted, and the system was solvated with a rectangular water box with 15 Å of padding. Default values were accepted for all other options, including replacing nonstandard amino acids and patching terminal residues.

All of the input files, as well as scripts needed to run the comparisons, are included in the Supplemental Information.

Results are shown for Amberterm in Tables 6 and 7 , for Gromacsterm in Tables 8 and 9 , and for CHARMMterm in Tables 10 and 11 . In all cases the agreementterm is excellent, with all energy components matching to at least four significant digits. In systems that use PME, the nonbonded energies have somewhat larger differences than other energy components. This is partly because of the larger magnitude of this interaction, and partly because of the fact that different applications compute nonbonded interactions in slightly different ways. For example, Amberterm uses 4th order splines for charge spreading, while OpenMMterm uses 5th order splines. Nonetheless, they both compute the forces and energy to similar overall accuracy.

Comparison of energy components, as calculated by Amberterm and OpenMMterm.

Comparison of forces as computed by Amberterm and OpenMMterm.

Comparison of energy components, as calculated by Gromacsterm and OpenMMterm.

Comparison of forces as computed by Gromacsterm and OpenMMterm.

Comparison of energy components, as calculated by CHARMMterm and OpenMMterm.

Comparison of forces as computed by CHARMMterm and OpenMMterm.

Availability and future directions OpenMMterm is available from http://openmmterm.org . Ongoing development is conducted through the Github community at https://github.com/pandegroup/openmmterm . Detailed instructions on how to compile it from source are found in the OpenMMterm User Guide at http://openmmterm.org/documentation.html .

Supporting information (ZIP) Click here for additional data file.

(ZIP) Click here for additional data file.

(DOCX) Click here for additional data file.

Interpretive notes.
• Highlighted spans are tagged entities: persName (author), title (venue), placeName (place), date (year), and term (a key concept: domain / ai / method).
• Eponymous or retrospective terms (e.g. “Nash equilibrium”, “segregation”) do not appear in the original source and so are not highlighted — a deliberate choice (see Report 4).
• Some entries begin with a word in capitals. EVIDENCE CORRECTED means the finding still stands and it was our quotation that was wrong — it has been replaced. RETRACTED means the entry itself was wrong; it stays on the page, marked, with its reason, rather than being deleted. WITHDRAWN AND REPLACED means a corrected version of it appears in the entries below. Each mark carries its own reason, because the reasons differ from one entry to the next. An entry we have WITHDRAWN is removed from this page and kept in the record, with its reason. A line reading Audit and a date is a later re-reading of the entry against its whole sentence: DOUBTFUL means it was kept, and the reason says what is loose about it.
• Quotation marks inside the tagger's sentence. Where a tag is the tagger's own sentence, a phrase in quotation marks inside it is borrowed from the paper — the tagger's wording around it is not. The paper's own sentence is the evidence quote shown on the same row, so the borrowing can be checked against the thing borrowed from without leaving this page. Nothing inside quotation marks anywhere on this page is ours: if it is quoted, it is the paper's. Whose words a concept carries. A concept entry records a term the paper itself uses, so the term, the sense given for it, and its evidence are the paper's own words, quoted where the paper fixes them. This is the opposite of a sense entry in the tag table, which is the tagger's sentence about how the paper uses a term. Where a concept entry could not be grounded in the paper's words, the entry says so on its own row.
• Counts: 1 work · 1 date.
Meta-Tagging Project · record eastman2017-openmm-rapid-development-high-performance.
© 2026 Shir Sivroni