Lazy loaded image
🧪GROMACS 编译安装教程(HPC)
字数 1160阅读时长 3 分钟
2026-8-11
2026-8-11

概述

适用场景:HPC 集群上从源码编译 GROMACS(分子动力学模拟)。本文覆盖 FFTW 依赖编译、CPU(MPI) 版、GPU(CUDA) 版三种典型构建,并给出 Slurm 作业示例。整理自实际可用的编译命令,安装路径与编译选项保留原环境约定(/opt/...)。

1. 前置依赖

  • 编译器:gcc / g++(建议 ≥ 7,需支持目标 SIMD 指令集),gfortran(部分依赖需要)。
  • CMake:≥ 3.16(GROMACS 2023+ 建议 ≥ 3.18/3.21)。本环境多节点并存多个 cmake,构建时按节点实际路径指定,例如 /opt/cmake/bin/cmake/opt/cmake3/bin/cmake,或直接 cmake(确保 which cmake 指向正确版本)。
  • MPI:OpenMPI 或 Intel MPI(仅 MPI 版需要),GMX_MPI=ON 时 cmake 自动查找 mpicc/mpicxx
  • CUDA Toolkit:仅 GPU 版需要,版本需与集群驱动匹配(用 nvidia-smi 查看最高支持版本)。

2. 编译 FFTW(GROMACS 必依赖)

GROMACS 在配置阶段需要 单精度(float)FFTW。推荐自行编译一份并固定到独立 prefix,再让 GROMACS 的 cmake 通过环境变量找到它。
安装完成后,配置以下环境变量(每次编译/运行 GROMACS 前都要生效,建议写进 .bashrc 或 modulefile):
说明:CMAKE_PREFIX_PATH 让 cmake 在 /opt/gmxfftw338 下搜索依赖;FFTW3F_ROOT_DIR 显式指定单精度 FFTW 根目录;LD_LIBRARY_PATH 保证运行时能加载 libfftw3f.so

3. CPU 版(MPI + AVX_512)

适用于纯 CPU 节点或 MPI 多节点并行版本。
若节点 cmake 版本不满足要求,用绝对路径替换 cmake,例如 /opt/cmake3/bin/cmake ..(对应非 MPI 版示例:/opt/cmake3/bin/cmake .. -DCMAKE_INSTALL_PREFIX=/opt/gmxcpu2023 -DGMX_MPI=OFF -DGMX_BUILD_OWN_FFTW=OFF -DGMX_GPU=OFF)。

4. GPU 版(CUDA + AVX_512)

适用于带 NVIDIA GPU 的计算节点,mdrun 会把非键力、PME 等 offload 到 GPU。

关于 -DGMX_GPU 的取值(版本差异,重点)

不同 GROMACS 版本该参数语义不同,别照抄错版本:
  • GROMACS ≤ 2022-DGMX_GPU=ON 即启用 CUDA;OpenCL 用 -DGMX_GPU=OPENCL
    • 例(老版本写法):cmake .. -DCMAKE_INSTALL_PREFIX=/opt/app/gmxgpu2020 -DGMX_MPI=ON -DGMX_BUILD_OWN_FFTW=OFF -DGMX_GPU=ON -DGMX_SIMD=AVX_512
  • GROMACS 2023+-DGMX_GPU=ON 仅“打开 GPU 支持”,需再显式选后端:
    • -DGMX_GPU_CUDA=ON(CUDA)
    • -DGMX_GPU_OPENCL=ON(OpenCL)
    • -DGMX_GPU_SYCL=ON(SYCL,oneAPI)
    • 也可直接 -DGMX_GPU=CUDA(等价于打开 GPU + CUDA 后端),即上面的推荐写法。
经验:能用 GMX_GPU=CUDA 就用它,语义最明确;老版本(2020/2022)仍可用 GMX_GPU=ON 表示 CUDA。

5. 加载与使用

source 官方环境脚本即可把 gmx/gmx_mpi 加入 PATH:
MPI 版可执行文件名通常为 gmx_mpi(而非 gmx)。集群上推荐写成 modulefile(放 /opt/modulefiles/gromacs/...),统一封装 PATHLD_LIBRARY_PATHCMAKE_PREFIX_PATHFFTW3F_ROOT_DIR,避免每次手动 export。

6. Slurm 作业示例(HPC)

-nb gpu -pme gpu -bonded gpu 为 GPU 版典型 offload 组合;纯 CPU 版去掉 --gres=gpu:1-nb/-pme/-bondedgpu 参数即可。

7. 验证

确认输出中的 SIMD 指令集为 AVX_512;GPU 版应能看到检测到的 GPU 设备。

8. 常见坑

  • FFTW 没装就 GMX_BUILD_OWN_FFTW=OFF:会 configure 失败。要么先装好 FFTW 并设好环境变量,要么改用 GMX_BUILD_OWN_FFTW=ON 让 GROMACS 自动编译一份(不推荐生产环境)。
  • ⚠️ AVX_512 需要 CPU 支持:在仅到 AVX2 的老 CPU 上会编译/运行报错,改 -DGMX_SIMD=AVX2_256Auto
  • ⚠️ CUDA 版本与驱动nvidia-smi 显示的驱动最高支持版本必须 ≥ 编译时用的 CUDA Toolkit。
  • 🐞 cmake 路径:多版本共存时一定用绝对路径或 module load cmake,否则可能用到太老的 cmake 导致 configure 失败。
  • 🐞 安装路径拼写:原始命令里出现过 -DCMAKE_INSTALL_PREFIX=/opt/gmxgpu2023-DGMX_MPI=ON(缺空格),会被当成 prefix 的一部分导致装到错误目录,务必在 -DCMAKE_INSTALL_PREFIX=xxx 后留空格再写下一个 -D
上一篇
centos安装显卡驱动
下一篇
slurm脚本-qe