CentOS7编译安装gromacs-2022.3+GPU+ONEAPI

基本信息

操作系统:CentOS7.9

FFTW:3.3.10

CMAKE:3.23.5

MPI:intel的ONEAPI-2022

CUDA:根据自己机子显卡对应版本下载,这里使用11.8版本

GCC:8.3.1

PYTHON:3.6.7
所有软件百度网盘下载链接
链接:https://pan.baidu.com/s/1CV_M1ToP7y83i5M11v6b-Q?pwd=6666
提取码:6666

0. 安装依赖

yum install -y kernel-headers
yum install -y kernel-devel
yum install -y kernel-devel-kernel-devel-3.10.0-514.21.1.el7.x86_64
yum install -y gcc
yum install -y gcc-c++
yum install -y gcc-gfortran
yum install -y cmake
yum install -y blas-devel
yum install -y lapack-devel
yum install -y boost-devel
yum install -y libxml2-devel
yum install -y libpng-devel
yum install -y doxygen

1. CMAKE安装

下面安装包需要开梯子,如果下载不了,使用上面百度网盘的。

wget https://github.com/Kitware/CMake/releases/download/v3.23.5/cmake-3.23.5-linux-x86_64.tar.gz

安装

tar -xf cmake-3.23.5-linux-x86_64.tar.gz
./configure --prefix=/data/apps/cmake-3.23.5 --DCMAKE_USE_OPENSSL=OFF
gmake -j 10
gmake install -j 10  #根据自己机子核心数决定使用多少核编译,这里选择10核

2.FFTW安装

下载

wget http://www.fftw.org/fftw-3.3.10.tar.gz

安装,这里选择单精度

tar -xf fftw-3.3.10.tar.gz
#双精度
./configure --prefix=/data/apps/fftw-3.3.10 --enable-static --enable-sse --enable-sse2 --enable-avx --enable-float --enable-shared

#单精度
./configure --prefix=/data/apps/fftw-3.3.10 --enable-static --enable-sse --enable-sse2 --enable-avx --enable-shared

make -j 10
make install -j 10

3. ONEAPI安装

下载

wget https://registrationcenter-download.intel.com/akdlm/irc_nas/18852/l_BaseKit_p_2022.3.0.8767_offline.sh

wget https://registrationcenter-download.intel.com/akdlm/irc_nas/18679/l_HPCKit_p_2022.3.0.8751_offline.sh

wget https://registrationcenter-download.intel.com/akdlm/irc_nas/18898/l_onemkl_p_2022.2.0.8748_offline.sh
3.1 HPCKit安装
sh l_HPCKit_p_2022.3.0.8751_offline.sh

选择Accept & customize

选择Next

鼠标移动到最后,按ctrl+回退键删除默认路径,然后输入指定路径,如果是使用默认路径选择Next,按回车

选择install,这里会提示缺什么库,按提示用yum安装即可

选择Next

选择开始安装,选择第二条

3.2 Basekit安装

跟上面步骤类似,安装路径选择/data/apps/intel

3.3 onemkl安装

跟上面步骤类似,安装路径选择/data/apps/intel

4. Python3安装

下载

wget https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tar.xz

安装

./configure --prefix=/data/apps/python3/
make -j 10
make install -j 10

5.GCC临时环境配置

下面命令会在终端形成一个虚拟环境,gcc版本为8.3.1,退出终端后,gcc回到原版本。

yum install centos-release-scl -y
yum install devtoolset-8 -y
scl enable devtoolset-8 bash

查看gcc版本

# gcc --version
gcc (GCC) 8.3.1 20190311 (Red Hat 8.3.1-3)
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

6.CUDA安装

安装cuda前,需要将显卡驱动安装好,可以参考网上教程。

# sh cuda_11.8.0_520.61.05_linux.run --no-opengl-libs

1、accept
2、提示是否要安装显卡驱动,去掉drive前面的X,表示不安装显卡驱动。
3、提示是否安装Toolkit,输入y。
4、选择安装路径,可根据实际情况定义,输入/public/apps/cuda-11.8。
5、提示是否需要创建软链接至/usr/local/cuda,输入y。

安装完后会出现如下提示
Please make sure that
 -   PATH includes /usr/local/cuda-11.8/bin
 -   LD_LIBRARY_PATH includes /usr/local/cuda-11.8/lib64, or, add /usr/local/cuda-11.8/lib64 to /etc/ld.so.conf and run ldconfig as root

#这一步可以不做,后面编译Gromacs时,手动指定即可。

7. 设置环境变量

vim /data/apps/gromacs_env.sh
#!/bin/bash

# cmake
export  PATH=/data/apps/cmake-3.23.5/bin:$PATH
export  INCLUDE=/data/apps/cmake-3.23.5/include:$INCLUDE
export  LD_LIBRARY_PATH=/data/apps/cmake-3.23.5/lib

# fftw
export  PATH=/data/apps/fftw-3.3.10/bin:$PATH
export  INCLUDE=/data/apps/fftw-3.3.10/include:$INCLUDE
export  LD_LIBRARY_PATH=/data/apps/fftw-3.3.10/lib

# oneapi
source /data/apps/intel/oneapi/setvar.sh

# python3
export  PATH=/data/apps/python3/bin:$PATH
export  INCLUDE=/data/apps/python3/include:$INCLUDE
export  LD_LIBRARY_PATH=/data/apps/python3/lib

8. GROMACS安装

# 第一步
source /data/apps/gromacs_env.sh # 加载上述软件环境变量
cmake .. -DGMX_MPI=ON \
-DGMX_BUILD_OWN_FFTW=OFF \
-DGMX_GPU=CUDA \
-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \
-DCUDA_INCLUDE_DIRS=/usr/local/cuda/include \
-DCUDA_CUDART_LIBRARY=/usr/local/cuda/lib64 \
-DCMAKE_INSTALL_PREFIX=/public/apps/gromacs-GPU-2022.3

# 第二步
make -j 10 # 如果多核报错,则去掉-j

# 第三步
make install -j 10

# 说明
-DGMX_MPI # 是否要开启,取决于是否需要跨节点计算,如果集群没有IB网络,可设置OFF,此时编译出来的程序名是gmx,不是gmx_mpi。

-DGMX_GPU # Gromacs软件在2021版本后,由ON修改为CUDA,注意如果只是编译CPU版本,同时服务器有安装cuda,则建议设置-DGMX_GPU=OFF。

-DCUDA_TOOLKIT_ROOT_DIR 
-DCUDA_INCLUDE_DIRS
-DCUDA_CUDART_LIBRARY   # 这三个参数是cuda环境变量,手动指定比较稳妥,否则会报下面常见错误1。

-DCMAKE_INSTALL_PREFIX  # 指定安装路径
-DGMX_BUILD_OWN_FFTW # ON表示自动从网上下载安装,OFF表示使用本地已安装的,可使用-DFFTW_LIB=/path/to/fftw/lib/强制指定
-DGMX_DOUBLE     # ON表示双精度版本,此时编译FFTW时,需要去掉--enable-float。双精度可执行文件是gmx_d,单精度的是gmx,因此单精度和双精度的可执行文件可以同时存在于同一目录,互不冲突

9. 编译错误

常见错误1
# 出现以下错误,根据第7步,指定cuda三个环境变量即可。
CMake Error at /usr/share/cmake-3.23.3/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")
常见错误2
# 出现以下错误,按第5步,安装临时环境,临时升级GCC版本。
CMake Error in /sob/gromacs-2021.3/build/CMakeFiles/CMakeTmp/CMakeLists.txt:
  Target "cmTC_90232" requires the language dialect "CXX17" , but CMake does
  not know the compile flags to use to enable it.

CMake Error at cmake/gmxDetectTargetArchitecture.cmake:44 (try_compile):
  Failed to generate test project build system.
Call Stack (most recent call first):
  CMakeLists.txt:168 (gmx_detect_target_architecture)
常见错误3
# 出现以下错误,可能是并行编译时内存不足,去掉-j。
g++: fatal error: Killed signal terminated program cc1plus
compilation terminated.
make[2]: *** [sql/CMakeFiles/sql_gis.dir/gis/crosses.cc.o] Error 1
make[1]: *** [sql/CMakeFiles/sql_gis.dir/all] Error 2
make: *** [all] Error 2

c++: Internal error: Killed (program cc1plus)
Please submit a full bug report.
See <http://bugzilla.redhat.com/bugzilla> for instructions.
make[2]: *** [sql/CMakeFiles/sql.dir/item_geofunc.cc.o] Error 1
make[1]: *** [sql/CMakeFiles/sql.dir/all] Error 2
make: *** [all] Error 2