GROMACS 编译及使用
GROMACS是一套分子动力学模拟程序包,主要用来模拟研究蛋白质、脂质、核酸等生物分子的性质。该程序由荷兰格罗宁根大学生物化学系开发,目前由来自世界各地的大学和研究机构维护。GROMACS 是开源免费的软件。下面将介绍如何在 SonmiHPC 集群上编译安装该软件。
源码下载
从官网下载 GROMACS 最新版本给的源码:
shell
wget https://ftp.gromacs.org/gromacs/gromacs-2024.4.tar.gz
wget https://ftp.gromacs.org/gromacs/gromacs-2024.4.tar.gz
解压源码包:
shell
tar xzvf gromacs-2024.4.tar.gz
cd gromacs-2024.4/
tar xzvf gromacs-2024.4.tar.gz
cd gromacs-2024.4/
编译安装
编译需要依赖 cmake, 如果需要支持 GPU 加速需要提前安装好 CUDA 以及显卡驱动。
激活 Intel OneAPI 环境:
shell
source /opt/intel/oneapi/setvars.sh
source /opt/intel/oneapi/setvars.sh
创建build目录:
shell
mkdir build
cd build
mkdir build
cd build
生成 CPU 版本 Makefile 文件:
shell
cmake .. -DGMX_BUILD_OWN_FFTW=ON -DCMAKE_INSTALL_PREFIX=/share/apps/gromacs/2024.4
cmake .. -DGMX_BUILD_OWN_FFTW=ON -DCMAKE_INSTALL_PREFIX=/share/apps/gromacs/2024.4
生成 GPU 版本 Makefile 文件:
shell
cmake .. -DGMX_GPU=CUDA \
-DGMX_BUILD_OWN_FFTW=ON \
-DCMAKE_INSTALL_PREFIX=/share/apps/gromacs/2024.4
cmake .. -DGMX_GPU=CUDA \
-DGMX_BUILD_OWN_FFTW=ON \
-DCMAKE_INSTALL_PREFIX=/share/apps/gromacs/2024.4
编译安装:
shell
make -j && make check && make install
make -j && make check && make install
Modulefile 编写
编译好的程序可以通过 Module 模块的方式提供给集群上其他用户使用,可以编写如下的 Modulefile 文件:
shell
mkdir -p /share/apps/modulefiles/gromacs
mkdir -p /share/apps/modulefiles/gromacs
在该路径下创建modulefile:
shell
vim /share/apps/modulefiles/gromacs/2024.4
vim /share/apps/modulefiles/gromacs/2024.4
内容如下:
tcl
#%Module###########################################
set modulefilename "GROMACS"
set modulefilever "2024.4"
set min_tcl_ver 8.4
if { $tcl_version < $min_tcl_ver } {
puts stderr " "
puts stderr "ERROR: This modulefile requires tcl $min_tcl_ver or greater."
puts stderr "Your system reports that tclsh version $tcl_version is installed."
exit 1
}
if { [ module-info mode load ] } {
puts stderr "Loading $modulefilename version $modulefilever"
}
if { [ module-info mode ] == "unload" || [ module-info mode ] == "remove" } {
puts stderr "Removing $modulefilename version $modulefilever"
puts stderr "Use to view any remaining dependent modules."
}
prereq cuda/12.6
set version 2024.4
set app gromacs
set root /share/apps/gromacs/${version}
prepend-path PATH $root/bin
prepend-path LD_RUN_PATH $root/lib
prepend-path LD_LIBRARY_PATH $root/lib
prepend-path MANPATH $root/share/man
setenv GMXDIR $root
setenv GMXBIN $root/bin
setenv GMXLDLIB $root/lib
setenv GMXMAN $root/share/man
setenv GMXDATA $root/share
setenv GMXFONT 10x20
#%Module###########################################
set modulefilename "GROMACS"
set modulefilever "2024.4"
set min_tcl_ver 8.4
if { $tcl_version < $min_tcl_ver } {
puts stderr " "
puts stderr "ERROR: This modulefile requires tcl $min_tcl_ver or greater."
puts stderr "Your system reports that tclsh version $tcl_version is installed."
exit 1
}
if { [ module-info mode load ] } {
puts stderr "Loading $modulefilename version $modulefilever"
}
if { [ module-info mode ] == "unload" || [ module-info mode ] == "remove" } {
puts stderr "Removing $modulefilename version $modulefilever"
puts stderr "Use to view any remaining dependent modules."
}
prereq cuda/12.6
set version 2024.4
set app gromacs
set root /share/apps/gromacs/${version}
prepend-path PATH $root/bin
prepend-path LD_RUN_PATH $root/lib
prepend-path LD_LIBRARY_PATH $root/lib
prepend-path MANPATH $root/share/man
setenv GMXDIR $root
setenv GMXBIN $root/bin
setenv GMXLDLIB $root/lib
setenv GMXMAN $root/share/man
setenv GMXDATA $root/share
setenv GMXFONT 10x20
保存文件后,设置一下权限:
shell
chmod -R 755 /share/apps/modulefiles
chmod -R 755 /share/apps/modulefiles
集群上面用户可以通过下面的命令来查看该模块:
[sonmi@sonmi ~]$ module avail
------------------- /share/apps/modulefiles -------------------
gromacs/2024.4
[sonmi@sonmi ~]$ module avail
------------------- /share/apps/modulefiles -------------------
gromacs/2024.4
用户可以通过下面的命令来加载该模块:
shell
module load gromacs/2024.4
module load gromacs/2024.4
使用示例
在用户目录下创建一个案例目录:
shell
mkdir gromacs-example
cd gromacs-example
mkdir gromacs-example
cd gromacs-example
创建提交脚本:
shell
vim gmx.sub
vim gmx.sub
任务使用1个核心与1个GPU显卡来运行,脚本内容如下:
shell
#!/bin/bash
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -p sonmi
#SBATCH -J gmx
#SBATCH --nodelist=compute-0-0
#SBATCH --gres=gpu:1
cd $SLURM_SUBMIT_DIR
ulimit -s unlimited
ulimit -l unlimited
module load gromacs/2024.4
export GMX_CUDA_GRAPH=1
gmx mdrun -v -deffnm test -pin on -bonded gpu -nsteps 2500000 -resetstep 500000 -pinoffset 0 -pinstride 1 -ntmpi 1 -gpu_id 0
#!/bin/bash
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -p sonmi
#SBATCH -J gmx
#SBATCH --nodelist=compute-0-0
#SBATCH --gres=gpu:1
cd $SLURM_SUBMIT_DIR
ulimit -s unlimited
ulimit -l unlimited
module load gromacs/2024.4
export GMX_CUDA_GRAPH=1
gmx mdrun -v -deffnm test -pin on -bonded gpu -nsteps 2500000 -resetstep 500000 -pinoffset 0 -pinstride 1 -ntmpi 1 -gpu_id 0
上传输入文件 test.tpr 到当前目录下。
提交任务:
shell
sbatch gmx.sub
sbatch gmx.sub