## 1、GROMACS 概述与安装

GROMACS分子模拟批处理与调度自动化 - 第1节

1.1 GROMACS 到底是什么?

GROMACS,全称 Groningen Machine for Chemical Simulations,是分子动力学领域的瑞士军刀。说白了,它就是一个帮你模拟分子运动的工具——蛋白质怎么折叠、药物怎么和靶点结合、膜怎么变形,都能算。

我第一次接触 GROMACS,是在做一个蛋白-配体结合自由能项目。当时导师扔给我一句话:“去跑个 MD,自由能用 MMPBSA 算。”我心想,啥是 MD?MD 就是分子动力学。GROMACS 把这个过程自动化了不少。你只要给结构、选力场、写参数就行,剩下的计算交给它。

一个小提示: 初学者不用慌。GROMACS 的学习曲线其实挺友好,掌握了几个核心命令,就能跑通标准流程。我当年也是从一条 gmx pdb2gmx 开始的。

1.2 功能特点——为什么选它?

我不吹不黑,GROMACS 在分子动力学模拟领域,确实是最快的那一档。尤其是 GPU 加速,个人觉得比 Amber 和 NAMD 的 GPU 版本更顺手。下面是它几个核心特点:

特点 说明
性能 SIMD、OpenMP、MPI、GPU(CUDA/OpenCL)全支持。我试过在 4 张 A100 上跑 100 万原子体系,速度还能接受。
力场支持 AMBER、CHARMM、GROMOS、OPLS 等主流力场都有,甚至能读入自定义力场。我习惯用 CHARMM36m 做蛋白质模拟。
分析工具 自带 gmx 工具箱,RMSD、RMSF、SASA、氢键、聚类……不用再装额外包。但实话实说,一些高级分析还是得靠 Python(MDAnalysis、MDTraj)。
自动化能力 可以写 Shell/Python 脚本批处理,这正是我们这门课的核心。想一劳永逸?写个自动化流程,丢给集群跑就完了。
跨平台 Linux/Windows/macOS 都能用。但我个人强烈建议:生产环境必须用 Linux。Windows 下 WSL 或者 Docker 也行,但性能会打折扣。

曾经踩过的坑: 我之前在 Windows 下直接装 GROMACS 二进制版,结果跑大型模拟时内存泄漏。后来换了 CentOS 系统,自己编译,稳定多了。所以,后面安装部分我会重点讲 Linux 编译。

1.3 安装与配置

1.3.1 Linux(推荐)——自己编译才放心

为什么非要自己编?因为 GROMACS 的编译选项直接影响性能。比如 GPU 加速、SIMD 指令集、MPI 并行——你选不对,算得慢不说还可能出 bug。我建议你按下面步骤来:

# 下载源码(以 2024.3 为例)
wget https://ftp.gromacs.org/pub/gromacs/gromacs-2024.3.tar.gz
tar xf gromacs-2024.3.tar.gz
cd gromacs-2024.3

# 创建构建目录
mkdir build && cd build

# CMake 配置——给单 GPU 节点用
cmake .. -DGMX_BUILD_OWN_FFTW=ON \
         -DGMX_GPU=CUDA \
         -DCMAKE_INSTALL_PREFIX=/opt/gromacs \
         -DGMX_MPI=ON \
         -DGMX_OPENMP=ON \
         -DGMX_SIMD=AVX2_256 \
         -DGMX_DOUBLE=OFF

# 编译(根据你的 CPU 核心数调整 -j)
make -j 8

# 安装
sudo make install

# 设置环境变量(加到 ~/.bashrc 里)
source /opt/gromacs/bin/GMXRC
  • -DGMX_GPU=CUDA:如果你想用 AMD 卡,改成 OpenCL 或 HIP。
  • -DGMX_SIMD=AVX2_256:根据 CPU 指令集选,比如 AVX512、SSE4.1。我一般用 AVX2_256,兼容性好。
  • -DGMX_MPI=ON:多节点并行必备。单机多核可以不开 MPI,只用 OpenMP 就够了。

避坑指南(我曾经……): 第一次编译时没装 FFTW,结果 CMake 报错。加 -DGMX_BUILD_OWN_FFTW=ON 就能自动下载编译,省心。另外,如果遇到 `cuda_runtime.h` 找不到,记得先 `export CUDA_HOME=/usr/local/cuda`。

1.3.2 Windows——别太指望原生

Windows 下有两种方式:

  1. WSL 2(推荐):在 WSL 里装个 Ubuntu,然后按 Linux 方式编译。我试过,性能损失大概 5%-10%,但兼容性好。
  2. 预编译二进制:官方有 exe 安装包,直接点下一步就行。不过嘛……你要是跑超过 10 万原子的体系,我劝你放弃。反正我经历过一次卡死。

Windows 二进制安装参考(仅体验用):

# 下载安装包
# 从 https://manual.gromacs.org/current/download.html 获取
# 双击安装,默认路径 C:\GROMACS
# 将 C:\GROMACS\bin 加入 PATH 环境变量
# 打开 cmd,运行
gmx --version

注意: Windows 原生命令行不支持 mpirun 等并行工具,想用 MPI 必须上 WSL。而且文件路径里的反斜杠在 GROMACS 拓扑文件里容易出编码问题。我建议把工作目录全部放在 WSL 的 /home 下,别用 /mnt/c 挂载的目录,I/O 性能会差一大截。

1.3.3 macOS——Homebrew 一把梭

macOS 用户最简单:

brew install gromacs

但请注意,Homebrew 的版本可能不是最新的。如果你想要 GPU 加速,还得自行编译(因为 macOS 的 CUDA 支持早就停了)。我用 M1 的 MacBook Air 跑过小体系(5000 原子),CPU 模式勉强能用,但别指望太多。

1.4 验证安装

装完后,第一件事就是确认版本和 GPU 识别:

gmx --version
# 输出应该包含版本号、mdrun 模块、GPU 信息(如果有)

# 跑个简单测试(水盒子能量最小化)
gmx pdb2gmx -f 1aki.pdb -o processed.gro -water spce
gmx editconf -f processed.gro -o box.gro -c -d 1.0 -bt cubic
gmx solvate -cp box.gro -cs spc216.gro -o solv.gro -p topol.top
gmx grompp -f minim.mdp -c solv.gro -p topol.top -o minim.tpr
gmx mdrun -v -deffnm minim

如果最后看到类似 Energy minimization reached convergence 的提示,恭喜你,环境搭好了。

我个人的小习惯: 每次换新机器,我都会跑这个水盒子测试,确保所有模块(特别是 GPU 和 MPI)都能正常工作。别等跑大项目时才发现 GPU 没认出来,那就尴尬了。

1.5 本章知识结构

下面这张图可以帮你快速回顾 GROMACS 的安装选择与核心功能。嗯,我每次给学生讲安装时都会画这个——一目了然。

GROMACS 安装与核心功能速览 Linux (推荐) Windows (WSL 2) macOS (Homebrew) 源码编译 WSL + 编译 Homebrew 编译核心参数 -DGMX_GPU=CUDA -DGMX_SIMD=AVX2_256 -DGMX_MPI=ON -DGMX_OPENMP=ON GPU 加速并行 多力场支持 分析工具箱 批处理自动化 推荐生产环境使用 Linux 源码编译,并开启 GPU + MPI + OpenMP