Software
OpenMM
The code is open source and actively maintained on Github, licensed under MIT and LGPL.
OpenMM is a high performance toolkit for molecular simulation. Use it as a library, or as an application. It includes extensive language bindings for Python, C, C++, and even Fortran.
In contrast to most common MD software which rely on a monolithic architecture, OpenMM is built upon a layered architecture which gives it a high degree of reusability, extensibility, and hardware non-specificity. Within the layered architecture of OpenMM one finds, at the lowest level, the highly optimized kernels (OpenCL/CUDA, ...) and at higher levels one can find the platform and the application layers. In most of the cases, the users deal only with the higher layers as the lowest layers are already well optimized.
The layered architecture provides OpenMM with a modularity character where new algorithms/methods can be easily incorporated to the software as modules without the need to compile the entire code to add those modules.
On HPC2N we have OpenMM available as a module on Kebnekaise.
Users can find the installed versions of OpenMM by typing:
ml spider openmm
the following versions are installed on Kebnekaise:
OpenMM/7.1.1-Python-2.7.12 OpenMM/7.1.1-Python-3.6.1
both versions support GPU acceleration.
Submit file examples
the OpenMM platforms supported on Kebnekaise are Reference and CUDA. The Reference platform is the default one and you won't need to modify your input scripts. This is the slowest platform and is meant to be used as, its name indicates, a reference with which you can compare your results from other platforms. The following script shows how to run a script with the Reference platform using 6 threads:
Single node using 6 cores
#!/bin/bash #SBATCH -A SNICXXXX-Y-ZZ #Asking for 10 min. #SBATCH -t 00:10:00 #Number of nodes #SBATCH -N 1 #Ask for 6 processes #SBATCH -c 6 #Load modules necessary for running OpenMM ml icc/2017.1.132-GCC-5.4.0-2.26 ifort/2017.1.132-GCC-5.4.0-2.26 CUDA/8.0.44 impi/2017.1.132 ml OpenMM/7.1.1-Python-3.6.1 #Execute OpenMM export OPENMM_CPU_THREADS=6 python -u openmm_run.py
a much faster platform is CUDA where OpenMM runs entirely on GPUs. In this case, you need to modify the wrapper script openmm_run.py to include the platform name and properties:
platform = Platform.getPlatformByName('CUDA') prop = {'CudaDeviceIndex': '0,1,2,3', 'CudaPrecision': 'single'}
and add them to the simulation setup:
simulation = Simulation(psf.topology, system, integrator, platform, prop)
Notice that in the present case we will be using the four devices in the two GPU cards. We recommend to check the performance of your simulation with different number of engines and use the best option for you. In addition to the number of devices one can specify the precision of the simulation on the GPUs which in this case is set to 'single'. The following script for OpenMM will use two GPU cards:
Using OpenMM on GPUs
#!/bin/bash #SBATCH -A SNICXXXX-Y-ZZ #Asking for 10 min. #SBATCH -t 00:10:00 #Number of nodes #SBATCH -N 1 #Two GPU cards #SBATCH --gres=gpu:k80:2 #SBATCH --exclusive #Load modules necessary for running OpenMM ml icc/2017.1.132-GCC-5.4.0-2.26 ifort/2017.1.132-GCC-5.4.0-2.26 CUDA/8.0.44 impi/2017.1.132 ml OpenMM/7.1.1-Python-3.6.1 #Execute OpenMM python -u openmm_run.py
Documentation is available on the OpenMM Online Reference page.
Citations (Principal Papers)
- P. Eastman, et al. (2013) J. Chem. Theory Comput. 9: 461-469. (DOI, Citations of this paper)
- P. Eastman, et al. (2017) PLOS Comput. Biol. (DOI, Citations of this paper)