gromacs显卡支持启用

662 阅读3分钟

安装cmake和开发库和fftw

# 安装 GCC 11
sudo apt install gcc-11 g++-11

# 注册选择器
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 130
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 130
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 110
# 选择合适版本
sudo update-alternatives --config gcc
sudo update-alternatives --config g++


apt-get install cmake build-essential


cd ~/software # 进入上一步建立的software目录
wget http://www.fftw.org/fftw-3.3.8.tar.gz # 利用wget获取安装包
tar -xzvf fftw-3.3.8.tar.gz # 解压
cd fftw-3.3.8 ## 进入fftw目录
./configure --prefix=/usr/local/fftw338 --enable-sse2 --enable-avx --enable-float --enable-shared --enable-avx2 # 设置编译安装路径
make install -j #开始编译

export PATH=$PATH:/usr/local/fftw338/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/fftw338/lib
# 配置
加入到~/.bashrc

1. 下载并解压 GROMACS 2024

wget https://ftp.gromacs.org/gromacs/gromacs-2024.tar.gz
tar xfz gromacs-2024.tar.gz
cd gromacs-2024
mkdir build && cd build

2025

wget https://ftp.gromacs.org/gromacs/gromacs-2025.2.tar.gz
tar xfz gromacs-2025.2.tar.gz
cd gromacs-2025.2

2025必须手动下载cmake新版本

wget https://github.com/Kitware/CMake/releases/download/v4.0.3/cmake-4.0.3-linux-x86_64.tar.gz
tar xfz cmake-4.0.3-linux-x86_64.tar.gz
# 位置
~/cmake-4.0.3-linux-x86_64/bin/cmake -h 

2. 创建构建目录

mkdir build && cd build

3. 创建运行目录(可自定义)

export GMX_INSTALL_DIR=~/gromacs2024GPU
mkdir -p $GMX_INSTALL_DIR

4. 确保 CUDA 版本正确

nvcc --version  # 检查 CUDA 版本

5. 配置 CMake,启用 CUDA 支持

先写下不指定cuda的 纯cpu DREGRESSIONTEST_DOWNLOAD 是开启官方示例下载

cmake .. \
  -DGMX_BUILD_OWN_FFTW=ON \
  -DGMX_GPU=OFF \
  -DREGRESSIONTEST_DOWNLOAD=ON \
  -DCMAKE_INSTALL_PREFIX=/目标位置

2025.2很奇怪 又要指定显卡架构 很莫名其妙

sudo /home/rainsc/cmake-4.0.3-linux-x86_64/bin/cmake .. \
    -DGMX_BUILD_OWN_FFTW=ON \
    -DGMX_GPU=CUDA \
    -DREGRESSIONTEST_DOWNLOAD=ON \
    -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \
    -DCUDA_INCLUDE_DIRS=/usr/local/cuda/include \
    -DCUDA_CUDART_LIBRARY=/usr/local/cuda/lib64 \
    -DCMAKE_INSTALL_PREFIX=/usr/local/gromacs-2025.2 \
    -DCMAKE_CUDA_ARCHITECTURES=61 \
    -DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc

下面指定的cuda需要和已安装或者已有的cuda版本相同 位置相同 不然会报错

cmake .. \
  -DGMX_BUILD_OWN_FFTW=ON \
  -DGMX_GPU=CUDA \
  -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-12.2 \
  -DCUDA_INCLUDE_DIRS=/usr/local/cuda-12.2/include \
  -DCUDA_CUDART_LIBRARY=/usr/local/cuda-12.2/lib64 \
  -DCMAKE_INSTALL_PREFIX=$GMX_INSTALL_DIR

cuda不对会提示

CMake Error at /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find CUDA (missing: CUDA_NVCC_EXECUTABLE CUDA_INCLUDE_DIRS
  CUDA_CUDART_LIBRARY) (Required is at least version "11.0")
Call Stack (most recent call first):
  /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-3.22/Modules/FindCUDA.cmake:1264 (find_package_handle_standard_args)
  cmake/gmxManageCuda.cmake:45 (find_package)
  CMakeLists.txt:699 (include)
# 3070 最新cuda
# 这里有点莫名奇妙  硬要加环境变量
export CUDACXX=/usr/local/cuda/bin/nvcc
# 加了环境变量就能跑出来了
cmake .. \
  -DGMX_BUILD_OWN_FFTW=ON \
  -DGMX_GPU=CUDA \
  -DREGRESSIONTEST_DOWNLOAD=ON \
  -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \
  -DCUDA_INCLUDE_DIRS=/usr/local/cuda/include \
  -DCUDA_CUDART_LIBRARY=/usr/local/cuda/lib64 \
  -DCMAKE_INSTALL_PREFIX=/usr/local/gromacs-2024
# 3090
export CUDA_HOME=/usr/local/cuda-12.4
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH

cmake .. \
  -DGMX_BUILD_OWN_FFTW=ON \
  -DGMX_GPU=CUDA \
  -DREGRESSIONTEST_DOWNLOAD=ON \
  -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-12.4 \
  -DCUDA_INCLUDE_DIRS=/usr/local/cuda-12.4/include \
  -DCUDA_CUDART_LIBRARY=/usr/local/cuda-12.4/lib64/libcudart.so \
  -DCMAKE_INSTALL_PREFIX=/usr/local/gromacs-2024
# # 1080ti 12.9
# 这里有点莫名奇妙  硬要加环境变量
export CUDACXX=/usr/local/cuda-12.9/bin/nvcc
# 加了环境变量就能跑出来了
cmake .. \
  -DGMX_BUILD_OWN_FFTW=ON \
  -DGMX_GPU=CUDA \
  -DREGRESSIONTEST_DOWNLOAD=ON \
  -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-12.9 \
  -DCUDA_INCLUDE_DIRS=/usr/local/cuda-12.9/include \
  -DCUDA_CUDART_LIBRARY=/usr/local/cuda-12.9/lib64 \
  -DCMAKE_INSTALL_PREFIX=/usr/local/gromacs-2025

6. 编译并安装

make -j           # 使用所有可用核心加速编译
make check        # 运行测试,确保正确编译
make install      # 安装到指定目录

7. 设置环境变量(添加到 ~/.bashrc)

echo "source $GMX_INSTALL_DIR/bin/GMXRC" >> ~/.bashrc

source ~/.bashrc

8. 验证安装是否成功

gmx -version

问题

  1. cuda版本问题导致的报错 一般是指定的不详细 或者有多个版本 还有一个比较讨厌的问题 在线安装nvcc之后 会发现nvcc没出来 需要修改 /etc/profile 最后一行加上nvcc的路径 export PATH=/usr/local/cuda-12.8/bin:$PATH 这个问题同样会报错驱动问题

    CMake Error at cmake/gmxManageCuda.cmake:116 (enable_language): No CMAKE_CUDA_COMPILER could be found. Tell CMake where to find the compiler by setting either the environment variable "CUDACXX" or the CMake cache entry CMAKE_CUDA_COMPILER to the full path to the compiler, or to the compiler name if it is in the PATH. Call Stack (most recent call first): CMakeLists.txt:699 (include) -- Configuring incomplete, errors occurred!

  2. c和c++版本不一致

make check CMake Warning at cmake/gmxTestCompilerProblems.cmake:45 (message): 
The versions of the C and C++ compilers do not match (12.3.0 and 11.4.0, 
respectively). Mixing different C/C++ compilers can cause problems. 
Call Stack (most recent call first): CMakeLists.txt:446 (gmx_test_compiler_problems)

查看版本

gcc --version
g++ --version

切换版本

这个错误提示说明 g++gcc 的从属项(slave),因此不能直接用 update-alternatives 来作为主选项进行配置。

步骤 1:为 gcc 配置替代项

首先,确保 gccg++ 版本一致。你需要为 gcc 设置 update-alternatives

  1. 设置 gccg++ 版本 12 为默认:

    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100
    sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100
    

步骤 2:检查是否切换成功

你可以通过 update-alternatives 手动切换默认的编译器:

  1. 手动配置 gccg++

    sudo update-alternatives --config gcc
    sudo update-alternatives --config g++
    
  2. 然后检查它们的版本,确保它们指向相同的版本:

    gcc --version
    g++ --version
    

完成后,gccg++ 应该会使用相同的版本,你就可以重新运行 make check 看问题是否解决。

参考: [1]使用conda安装Amber和Gromacs - 知乎 [2]官方文档 manual.gromacs.org/current/ins…