GROMACS是一款功能强大的分子动力学模拟软件,全称为GROningen MAchine for Chemical Simulations,即格罗宁根化学模拟体系。它主要用于模拟研究生物分子,如蛋白质、脂质、核酸等的性质。GROMACS最初由荷兰格罗宁根大学生物化学系开发,现在由全球的大学和研究机构维护。
GROMACS的安装指南和用户平台分别有CPU版和GPU版,可以利用CPU或GPU进行计算,特别是在使用GPU时,单GPU卡的运行效率较高。本教程提供CPU版本和GPU版本安装教程。
如何获取Gromacs
Gromacs官方网站参考地址:https://manual.gromacs.org/
点击所需版本获取下载地址和安装教程参考。
本教程以gromacs-2022版本为例,其他版本可参考
CPU版本编译安装环境配置
安装编译环境Intel oneAPI
具体可参考上期推送内容:
安装部署oneAPI
https://blog.csdn.net/u013206206/article/details/139010576?spm=1001.2014.3001.5502
安装编译环境GNU
gromacs-2022版本需要GNU (gcc/libstdc++) 7的版本,以后的版本需要用 (gcc/libstdc++) 9版本。但是GNU安装方法基本类似。本教程以gcc-9.1为例。
下载以下安装包
-
GMP安装包:“gmp-6.1.0.tar.bz2”
-
MPFR安装包:“mpfr-3.1.4.tar.bz2”
-
MPC安装包:“mpc-1.0.3.tar.gz”
-
GCC安装包:“gcc-9.1.0.tar.xz”
下载地址:
-
http://gcc.gnu.org/pub/gcc/infrastructure/
-
https://ftp.gnu.org/gnu/gcc/gcc-9.1.0/
gmp-6.1.0部署
./configure --prefix=intall-gmp
make && make install
export LD_LIBRARY_PATH=intall-gmp/lib:$LD_LIBRARY_PATH
mpfr-3.1.4部署
./configure --prefix=intall-mpfr --with-gmp=intall-gmp
make && make install
export LD_LIBRARY_PATH=intall-mpfr /lib:$LD_LIBRARY_PATH
mpc-1.0.3部署
./configure --prefix=intall-mpc --with-gmp=intall-gmp --with-mpfr=intall-mpfr
make && make install
export LD_LIBRARY_PATH=intall-mpc:$LD_LIBRARY_PATH
gcc-9.1.0部署
mkdir obj
../configure --disable-multilib --enable-languages=c,c++,fortran --prefix=intall-gcc --with-gmp=intall-gmp --with-mpfr=intall-mpfr --with-mpc=intall-mpc
make -j 20
make install
配置环境变量
vim gcc-9.1.0.sh
GCC_HOME=intall-gcc
export PATH=${GCC_HOME}/bin:$PATH
export LIBRARY_PATH=${GCC_HOME}/lib64:${GCC_HOME}/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=${GCC_HOME}/lib64:${GCC_HOME}/lib:${GCC_HOME}/external_libs/lib:$LD_LIBRARY_PATH
export MANPATH=${GCC_HOME}/share/man:
export INFOPATH=${GCC_HOME}/share/info
export C_INCLUDE_PATH=${GCC_HOME}/include/c++/8.5.0:${GCC_HOME}/include/c++/8.5.0/aarch64-unknown-linux-gnu:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=${GCC_HOME}/include/c++/8.5.0:${GCC_HOME}/include/c++/8.5.0/aarch64-unknown-linux-gnu:$CPLUS_INCLUDE_PATH
CPU版本编译参考
解压安装
tar -xvf gromacs-xx.tgz
编译选项参考:
cmake .. -DCMAKE_INSTALL_PREFIX=intall-gromacs \
-DGMX_MPI=ON \
-DGMX_GPU=OFF \
-DGMX_SIMD=AVX2_256 \
-DGMX_FFT_LIBRARY=mkl \
-DCMAKE_C_COMPILER=icx \
-DCMAKE_CXX_COMPILER=icpx
./cmake.sh :执行cmak脚本,进行编译选项配置
cmake编译参数介绍:
-DGMX_MPI=ON :是否支持编译并行版本
-DGMX_GPU=OFF :是否支持GPU版本
-DGMX_SIMD=AVX2_256 :编译支持符合硬件平台的指令集
intel平台优化,使用avx512指令
AMD Zen2平台,修改为-DGMX_SIMD=AVX2_256
-DGMX_FFT_LIBRARY=mkl :FFT数学库来源:fftw3,mkl
如果使用自己编译安装的fftw3数学库,需要使用以下参数指定路径
-DFFTWF_LIBARY=" /xx /fftw-xx-/lib/libfftw3f.so"
-DFFTWF_INCLUDE_DIR="/fftw-xx/includ"
编译器选择,高版本的gromacs不再支持icc/icpc如果要用intel编译器需要用icx/icpx编译
-DCMAKE_C_COMPILER=icx /mpicc
-DCMAKE_CXX_COMPILER=icpx /mpicxx
make -j 20 && make install
在intall-path/bin 目录下生成如下可执行文件
./gmx_mpi –version
查看Gromacs版本基本信息
GPU版本编译安装环境配置
在已有CPU编译环境下,安装GPU版本所需的cuda环境。
cuda安装
检查驱动是否安装
nvidia-smi
显示如下内容,表示cuda驱动已安装,如果未安装,则需要先根据实际配置的显卡安装对应的驱动。
1、NVIDIA显卡&GPU卡驱动官网下载链接
https://www.nvidia.cn/Download/index.aspx?lang=cn
2、按照显卡或者GPU卡具体型号、系统版本下载相应的驱动
一、 安装步骤
1、以7版本系统为例,请按照步骤操作执行,把下载好的驱动上传到系统
2、把nouveau驱动拉黑屏蔽
3、停止gdm服务
4、运行模式切换到3
5、把nouveau卸载掉
6、进入到/boot下,备份initramfs文件,然后重新生成一个initramfs文件
7、然后安装驱动
1)如果使用显卡做输出,则不加任何参数,直接安装
2)如果不使用显卡做输出,或者使用的是GPU卡,则需要添加--no-opengl-files参数
8、选择Yes
9、选择No
由于不使用显卡做输出,则选择No,不更新X配置
10、安装完成,选择OK
11、重启机器,测试nvidia-smi命令可以正常输出,安装完成。
根据需要安装对应的CUDA_TOOLKIT,具体步骤如下:
CUDA Toolkit安装:
https://developer.nvidia.com/cuda-toolkit-archive
安装:
chmod +x cuda_11.3.1_465.19.01_linux.run
执行yes,accept等安装即可,安装时不选择安装驱动,驱动已经单独安装
安装过程大概需要十分钟左右,安装完成后,显示刚才安装的版本号
GPU版本编译参考
cmake .. \
-DCMAKE_INSTALL_PREFIX=/intall-path/gromacs
-DGMX_MPI=on \
-DGMX_GPU=CUDA \
-DCUDA_TOOLKIT_ROOT_DIR=xx/cuda-11.8
-DGMX_FFT_LIBRARY=mkl \
-DGMX_SIMD=AVX2_256 \
-DCMAKE_C_COMPILER=icx \
-DCMAKE_CXX_COMPILER=icpx
-DGMX_GPU:选用CUDA编译器
-DCUDA_TOOLKIT_ROOT_DIR:CUDA_TOOLKIT安装路径
实际使用时,我们发现
A800的卡使用cuda-12.0时不支持compute_35和compute_37的微架构,需要修改gromacs/cmake/gmxManageNvccConfig.cmake文件,注释掉编译有关arch=compute_35,compute_37等选项
测试结果示例
cd /path/case md_cutoff.tpr必须包含xxx.tpr相关的拓扑文件。
CPU版本执行示例
mpirun -np 4 gmx_mpi mdrun -nsteps 6000 -ntomp 1 -v -s md_cutoff.tpr
GPU版本执行示例
mpirun -np 4 gmx_mpi mdrun -nsteps 6000 -npme 1 -ntomp 7 -nb gpu -pme gpu -bonded cpu -s md_cutoff.tpr
上述命令通过mpirun发起4个进程,gmx_mpi mdrun为GROMACS的MD计算命令,其余参数意义分别如下:
-
-nsteps: 指定计算时间步
-
-npme:指定使用一个进程计算PME,多进程运行且使用GPU计算PME时必须指定此选项为1
-
-ntomp:指定每个进程使用openmp线程数
-
-nb:指定短程非成键力在CPU或GPU上计算
-
-pme:指定长程静电力在CPU或GPU上计算
-
-bonded:指定成键力在CPU或GPU上计算
-
-s:指定tpr输入文件名
-
-o:指定轨迹输出文件名
-
-c:指定结构输出文件名
-
-e:指定能量输出文件名
-
-g:指定日志输出文件
vim output.log或者md.log
图中ns/day值为性能参数,值越大性能越好。