科学计算软件编译安装方法说明 --- gromacs 篇
官网地址:
http://www.gromacs.org/
下载地址:
http://www.gromacs.org/Downloads
1. 什么是GROMACS?
GROMACS 是用于研究生物分子体系的分子动力学程序包。它可以用分子动力学、随机动力学或者路径积分方法模拟溶液或晶体中的任意分子,进行分子能量的最小化,分析构象等。它的模拟程序包包含 GROMACS 力场(蛋白质、核苷酸、糖等),研究的范围可以包括玻璃和液晶、到聚合物、晶体和生物分子溶液。GROMACS 是一个功能强大的分子动力学的模拟软件,其在模拟大量分子系统的牛顿运动方面具有极大的优势。
2. lammps编译环境
Intel Compiler /GNU Compiler + MPI Compiler + CMAKE + FFTW + (CUDA)
3. 安装 Intel Compiler 编译器,设置编译环境
Intel Compiler /GNU Compiler + MPI Compiler
如果使用的是Intel的CPU,建议使用Intel的编译器。
详细安装方法参见博客相关文章。
例如使用TH-1A的Intel 2013编译器编译lammps,可以加载如下环境变量:
source /opt/intel/composer_xe_2013.0.079/bin/iccvars.sh intel64
4.安装 MPI Compiler,设置编译环境
编译并行版的程序需要并行编译器,例如MPI并行的程序需要MPI编译器,常用的MPI例如Intel MPI 、MPICH 、OPENMPI等。
不同的机器可能针对自身硬件进行MPI优化,天河系统的MPI是基于开源MPICH进行的二次开发优化,进而支持性能卓越的天河自主高速互联网络。
详细安装方法参见博客相关文章。
例如使用TH-1A的Intel 2013编译器编译的mpich,可以加载如下环境变量:
export MPI_HOME=/usr/local/mpi-intel2013
export PATH=$MPI_HOME/bin:$PATH
export LD_LIBRARY_PATH=$MPI_HOME/lib:$LD_LIBRARY_PATH
4.安装CMAKE
如果系统环境中未安装cmake,那么需要自行编译下,简介如下:
4.1 下载
http://www.cmake.org/download/
4.2 编译
tar zxvf cmake-3.8.0.tar.gz
cd cmake-3.8.0
./bootstrap --prefix=$HOME/software/cmake-3.8.0 2>&1 | tee b.log
make 2>&1 | tee m.log
make install 2>&1 | tee mi.log
# 配置环境(可以写入.bashrc)
# cmake-3.8.0
export CMKAE_HOME=$HOME/software/cmake-3.8.0
export PATH=$CMKAE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CMKAE_HOME/lib:$LD_LIBRARY_PATH
5. 安装FFTW
编译fftw数学库,可以遵循常用的configure + make + make install 的步骤,安装方法参见博客相关文章。
6. 安装GROMACS(CPU+Single/Double)
gromacs可以编译为串行版(略)、并行版(gmp_mpi),同时可以区分为单双精度(使用GMX_DOUBLE参数设置),详细介绍如下:
tar -zxvf gromacs-5.1.4.tar.gz
cd gromacs-5.1.4
# cpu + single
mkdir build-cpu-single
cd build-cpu-single
cmake .. -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx \
-DGMX_MPI=on -DGMX_DOUBLE=off \
-DCMAKE_INSTALL_PREFIX=$HOME/software/gromacs/5.1.4-sp-cpu \
-DGMX_FFT_LIBRARY=fftw3 -DFFTWF_LIBRARY="$(HOME)/software/fftw/3.3.6/lib/libfftw3f.so" \
-DFFTWF_INCLUDE_DIR="$(HOME)/software/fftw/3.3.6/include" 2>&1 | tee cm.log
make 2>&1 | tee m.log
make install 2>&1 | tee m.log
cd ..
mkdir build-cpu-double
cd build-cpu-double
cmake .. -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx \
-DGMX_MPI=on -DGMX_DOUBLE=on \
-DCMAKE_INSTALL_PREFIX=$HOME/software/gromacs/5.1.4-dp-cpu \
-DGMX_FFT_LIBRARY=fftw3 -DFFTW_LIBRARY="$(HOME)/software/fftw/3.3.6/lib/libfftw3.so" \
-DFFTW_INCLUDE_DIR="$(HOME)/software/fftw/3.3.6/include" 2>&1 | tee cm.log
make 2>&1 | tee m.log
make install 2>&1 | tee m.log
cd ..
说明:
1)创建一个子文件夹(build-cpu-single 及 build-cpu-double)是为了在该文件夹内进行编译,不影响源码。
2)参数“-DCMAKE_C_COMPILER”及“-DCMAKE_CXX_COMPILER” 设置C及C++的编译器,不设置的话,默认是gcc及g++。
3)参数“-DGMX_MPI=on” 设置开启mpi,表示编译并行版。
4)参数“-DGMX_DOUBLE=off” 设置double是否开启,不开启则为float版本,开启则为double版本。
4)参数“-DCMAKE_INSTALL_PREFIX=$HOME/software/gromacs/5.1.4-sp” 设置安装目录。
5)参数“-DGMX_FFT_LIBRARY=fftw3 ” 设置fftw库类型。
6)参数“-DFFTWF_LIBRARY”及“-DFFTWF_INCLUDE_DIR” 设置fftw库的库及头文件路径,注意区分单双精度。如果不想用动态库,可以设置为静态库,例如libfftw3f.a。
7) 如果使用多核的cpu可以使用“-j”参数加快编译速度,例如4核的cpu,可以用如下命令 make-j 4 2>&1 | tee m.log
7. 安装GROMACS(GPU)
编译GPU版本的GROMACS,则需要设置cuda的环境,具体方法如下:
7.1 设置cuda环境
预先设置好cuda的编译环境(配置方法此处暂略),在TH-1A环境下已经配置好了,仅需要设置环境即可:
# CUDA
export CUDA_HOME=/vol-th/software/cuda/cuda-7.5
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
7.2 编译GROMACS(GPU+Single)
mkdir build-gpu-single
cd build-gpu-single
cmake .. -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx \
-DGMX_MPI=on -DGMX_DOUBLE=off \
-DCMAKE_INSTALL_PREFIX=$HOME/software/gromacs/5.1.4-sp-gpu \
-DGMX_FFT_LIBRARY=fftw3 -DFFTWF_LIBRARY="$(HOME)/software/fftw/3.3.6/lib/libfftw3f.so" \
-DFFTWF_INCLUDE_DIR="$(HOME)/software/fftw/3.3.6/include" \
-DGMX_GPU=on -DCUDA_TOOLKIT_ROOT_DIR=/vol-th/software/cuda/cuda-7.5 2>&1 | tee cm.log
make 2>&1 | tee m.log
make install 2>&1 | tee m.log
说明:
1)已经介绍的参数见上一节。
2)参数“-DGMX_GPU=on” 设置开启GPU。
3)参数“-DCUDA_TOOLKIT_ROOT_DIR” 设置CUDA路径。
4)此处仅编译单精度版本,双精度版本的请读者自己思考一下(O(∩_∩)O哈哈~)。
8. 测试(以cpu+sp为例)
8.1 设置gromacs的环境
source $HOME/software/gromacs/5.1.4-sp-cpu/bin/GMX.bash
8.2 下载算例
ftp://ftp.gromacs.org/pub/benchmarks/ADH_bench_systems.tar.gz
8.3 解压缩算例,配置脚本
tar xvf ADH_bench_systems.tar.gz
cd adh_cubic
8.4 配置脚本sub.sh
#!/bin/bash
yhrun -N 1 -n 1 -p debugg gmx_mpi grompp -f rf_verlet.mdp
yhrun -N 2 -n 24 -p debug gmx_mpi mdrun -ntomp 1
说明:
1)参数“-ntomp 1”设置每个mpi进程开启1个线程。
8.5 提交脚本
yhbatch -N 2 -n 24 -p debug sub.sh
计算结束后,可以在结果文件中查看计算结果。
P.S 提供GROMACS的测试机会。
欢迎交流。