OpenMM
简介
OpenMM是一款开源的分子动力学模拟软件包。可以作为一款运行模拟的独立应用,也可以作为库在用户的代码中调用。OpenMM为用户提供了高度灵活性(通过自定义力和积分器)、开放性和性能(尤其在GPU上)的结合,是一款非常独特的模拟软件。知名的商业分子动力学模拟软件CHARMM的GPU加速即通过OpenMM的API实现,另外还有自由能软件包YANK也通过OpenMM实现。详见官网:openmm.org
编译方法
DTK中提供的OpenMM是稳定版本7.5.0,由于OpenMM作为一般MD模拟软件使用时,通常使用Python运行,且依赖于其他Python包,故最好安装在conda环境中。 需要正确安装DTK和fftw库,以使用yum安装为例:
yum install rocm-dev -y
yum install fftw-devel -y
创建conda环境:
conda create -p 安装路径/conda-env
conda activate 安装路径/conda-env
conda install -c https://mirrors.bfsu.edu.cn/anaconda/cloud/conda-forge numpy swig doxygen cython -y
编译安装:
export INSTALL_DIR=安装路径
#以下配置将会编译python,c以及fortranAPI
cmake3 .. \
-DCMAKE_CXX_COMPILER=g++ \
-DCMAKE_C_COMPILER=gcc \
-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
-DOPENMM_BUILD_PYTHON_WRAPPERS=ON \
-DOPENMM_BUILD_C_AND_FORTRAN_WRAPPERS=ON \
-DOPENMM_GENERATE_API_DOCS=ON \
-DOPENCL_INCLUDE_DIR=${ROCM_PATH}/opencl/include \
-DOPENCL_LIBRARY=${ROCM_PATH}/opencl/lib/libOpenCL.so
#编译
make -j 线程数
#安装
make install
#安装python模块到conda环境
make PythonInstall
#单元测试验证,已知OpenCLCustomGBForce
#OpenCLGayBerneForceDouble
#OpenCLLangevinIntegratorDouble
#OpenCLNonbondedForceDouble
#有显存段错误或数据类型错误问题,应是源代码有bug,避免使用以下功能
ctest -E "(OpenCLCustomGBForce|OpenCLGayBerneForceDouble|OpenCLLangevinIntegratorDouble|OpenCLNonbondedForceDouble)"
使用方法
DTK中提供的OpenMM是稳定版本7.5.0,包括C/C++,Fortran和Python版的API(安装路径中的conda环境conda-env中),如果作为一般的MD模拟软件使用,可以执行conda环境中的Python并加载OpenMM模块来使用;如果作为库使用则需要在用户自己的C/Fortran程序中调用OpenMM的API,并进行相应的编译,或者自己编写Python脚本,另外OpenMM本身没有MPI通信的部分,但可以通过CUDA,OpenCL等平台调用多GPU,要使用多节点大规模计算还需要用户自己编写通过MPI并行的代码。
作为Python模块使用:
salloc -p 可用队列 -N 1 -n 32 --gres=dcu:4
#通过environment module加载环境
module load #openmm
python3
#或直接运行conda环境中的python
#/path/to/openmm/conda-env/bin/python3
在Python中调用openmm模块:
import simtk.openmm as nm
import simtk.unit as unit
python API的用法也可以参考OpenMM路径下examples目录中的*.py脚本。
作为C/Fortran库使用:
请参考OpenMM路径下examples目录中的HelloArgon.cpp,HelloArgonInC.c,HelloArgonInFortran.f90等用C/C++,Fortran语言编写的示例程序。
编译时注意给编译器提供OpenMM路径下的include和lib路径。
example目录中有Makefile文件可以作为编译的参考,注意需要修改OpenMM_INSTALL_DIR为OpenMM安装路径。
在运行时,注意添加环境变量,以使用不同的底层(CPU,OpenCL等):
export OPENMM_PLUGIN_DIR=/openmm路径/lib/plugins
OpenMM更详细的用法和API说明请参考官网。