Skip to content

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

参考链接

  1. GROMACS源码下载链接
  2. GROMACS官方安装指南

本站内容未经授权禁止转载
联系邮箱: [email protected]