概述
适用场景: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/...),统一封装 PATH、LD_LIBRARY_PATH、CMAKE_PREFIX_PATH、FFTW3F_ROOT_DIR,避免每次手动 export。6. Slurm 作业示例(HPC)
-nb gpu -pme gpu -bonded gpu为 GPU 版典型 offload 组合;纯 CPU 版去掉--gres=gpu:1与-nb/-pme/-bonded的gpu参数即可。
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_256或Auto。
- ⚠️ 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。
- 作者:sky12378
- 链接:https://a.111103.xyz/article/3b986076-8817-818a-b36a-f17419a0eb56
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
