GROMACS 简介与安装
做分子模拟的朋友,大多绕不开 GROMACS。说实话,我第一次接触它是在读研的时候,导师扔给我一份体系文件,说“跑个 100 ns 看看”。那时候我连 gmx 命令都不熟,硬着头皮啃文档,踩了不少坑。现在回想起来,如果当时有人能把这些基础讲透,至少省下一周时间。
这一章我们聊聊 GROMACS 的来龙去脉、它能干什么、支持哪些文件格式,以及怎么装到你的机器上。嗯,内容不算多,但都是后面做能量特征提取必须知道的底子。
从 Groningen 走出来的利器
GROMACS 最早诞生于荷兰格罗宁根大学,最初是给生物分子模拟设计的。你可能会问,为什么这么多模拟软件,偏偏它成了主流?
我个人觉得,关键在于两点:一是算法效率极高,并行优化做得好;二是社区活跃,几乎覆盖了从溶液到膜的几乎所有体系。我记得 2010 年那会儿,GROMACS 4.0 引入了 GPU 加速,一下子把模拟速度提升了一个数量级——那时的 GPGPU 还像个玩具,GROMACS 团队敢赌,也确实赌赢了。
发展历程快照:
| 年份 | 里程碑 |
|---|---|
| 1991 | 项目启动,H. Berendsen 团队开发 |
| 2001 | GROMACS 3.0 开源发布 |
| 2010 | 引入 GPU 加速(GMX 4.0) |
| 2018 | 支持快速多极性力场(GMX 2018) |
| 2023 | 原生支持 AMD ROCm、Apple Silicon |
现在最新版本已经到了 2024.x,安装方式也越来越友好。
GROMACS 能做什么?
说白了,GROMACS 就是一套分子动力学的全流程工具。从建模、能量最小化、平衡到生产模拟,再到轨迹分析和能量计算,你几乎都能用它搞定。
- 力场支持:OPLS、AMBER、CHARMM 等常见力场都能跑,甚至支持混合力场。
- 并行加速:MPI + OpenMP + GPU 三重并行,一台单卡机器也能跑几十万原子。
- 自由能计算:FEP、TI、WHAM 方法集成,做药物设计很常用。
- 轨迹分析:能量项分解、氢键统计、二面角分析……这些正是我们这门课要重点提取的特征。
- 自动拓扑生成:用
gmx pdb2gmx就能从 PDB 文件直接生成拓扑,省去手写力场参数。
我在项目中遇到过一件哭笑不得的事:跑完 1 μs 的模拟,发现输出的能量文件里有 NaN。排查下来,是初始结构里的一个原子坐标写错导致不合理的键长。所以,第一件事就是学会看能量文件里的异常值。这门课后面会手把手教你写脚本检查这些。
文件格式一览
GROMACS 用到的文件格式特别多,新手很容易搞混。我个人习惯把它们分成三类:拓扑结构、坐标轨迹、参数日志。
| 类型 | 扩展名 | 说明 |
|---|---|---|
| 拓扑 | .top / .itp | 描述原子类型、键角二面角、参数 |
| 结构 | .gro / .pdb | 原子坐标与盒子信息(.gro 是 GROMACS 自家格式) |
| 轨迹 | .xtc / .trr | .xtc 压缩密度小,.trr 保留全部原子信息 |
| 参数 | .mdp | 控制模拟设置,比如步长、温度、压力 |
| 能量 | .edr | 二进制能量文件,包含势能、动能等时间序列 |
| 索引 | .ndx | 指定原子组,用于选择性分析 |
重点提醒:课程后面会反复用到 .edr 和 .xtc。提取能量特征时,.edr 是我们的“金矿”,必须学会用 gmx energy 转成文本格式。
Linux 下的安装(我推荐的方式)
如果你用的是 Ubuntu / Debian 系,直接用包管理器就能装,但不建议这么做——版本太旧,而且没有 GPU 加速。我推荐源码编译,能最大化利用硬件特性。
举个例子,编译支持 CUDA 的版本:
# 下载源码
wget ftp://ftp.gromacs.org/pub/gromacs/gromacs-2024.1.tar.gz
tar -xzf gromacs-2024.1.tar.gz
cd gromacs-2024.1
# 创建构建目录
mkdir build && cd build
# CMake 配置(打开 GPU 加速)
cmake .. -DGMX_GPU=CUDA -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \
-DGMX_FFT_LIBRARY=fftw3 -DCMAKE_INSTALL_PREFIX=/opt/gromacs
# 编译(-j 后面的数字根据 CPU 核心数调整)
make -j8
# 安装
sudo make install
# 设置环境变量(写入 ~/.bashrc)
echo 'source /opt/gromacs/bin/GMXRC' >> ~/.bashrc
source ~/.bashrc
编译过程中你可能会遇到 FFTW 没装的问题,跑一下 sudo apt install libfftw3-dev 就行。我曾经因为没装 OpenMP 库导致单线程跑了三天,后来加了 -DGMX_OPENMP=ON,速度快了 6 倍——避坑指南第一课:编译时要看清楚 CMake 输出。
小技巧:用 ccmake .. 可以打开图形化配置菜单,勾选选项更方便。
Windows 下怎么装?
坦白讲,Windows 用户装 GROMACS 稍微折腾一点。纯 Windows 环境只能跑 CPU 版本,GPU 加速需要 WSL2 或虚拟机。我建议搞双系统或者直接上 WSL2。
方法一:安装预编译的二进制包
从 官网 下载 .exe 安装程序,目前只提供 CPU-only 版本。安装后打开命令提示符,输入 gmx -version 验证。
# 在 cmd 中检查
gmx -version
方法二:使用 WSL2 + 原生 Linux 安装
这是比较推荐的做法:
- 安装 WSL2 和 Ubuntu 发行版(微软商店里就有)。
- 在 WSL2 终端里执行上面的 Linux 编译步骤。
- 注意:WSL2 默认看不到宿主机 GPU,需要安装 CUDA on WSL 驱动,具体可以参考 NVIDIA 官方文档。
方法三:用 Docker 容器
如果你不想污染系统环境,Docker 是个好选择。我平时快速做测试就用这个:
# 拉取官方镜像
docker pull gromacs/gromacs:2024.1
# 运行容器并挂载当前目录
docker run --gpus all -it -v $(pwd):/work gromacs/gromacs:2024.1 bash
注意:Docker 映射 GPU 需要 nvidia-container-toolkit,否则只能跑 CPU 模式。
验证安装与环境
装完之后,跑个最简单的命令确认一切正常:
# 查看版本和编译信息
gmx -version
# 跑一个微体系测试(几秒钟)
gmx mdrun -s /usr/local/gromacs/share/top/water.gro -nsteps 1000 -v
如果看到类似 “Performance: 0.000 ns/day” 这样的输出,说明软件可以正常工作。如果你用的是 GPU 加速,还会看到类似 “Using 1 MPI process and 8 OpenMP threads” 以及 “Using 1 GPU device”。
本章知识结构
整体来看,GROMACS 的安装其实就是三个选择:Linux 源码编译(我最喜欢)、Windows 预编译(省事但功能受限)、Docker(干净)。我建议你一开始就装 Linux 双系统或 WSL2,因为后续所有能量提取的例子都默认在 Linux 终端里跑。等你配好环境,可以顺手试试 gmx energy -f test.edr 看看能量文件长什么样——嗯,这就是我们下一块要啃的内容了。