计算之道

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

    本人新采购了一台DELL工作站,准备作为计算平台。最近又听说AMBER22学术免费了,于是尝试在工作站上安装。

    安装过程主要参考的是Amber22手册。其实手册中给的安装流程并不复杂,难的是由于安装环境和依赖项的原因,编译安装过程中往往会出现各种各样的问题,需要不断地Google,一个一个问题耐心地解决。

* 安装环境:Ubuntu 22.04.3 LTS,RTX 4090,【gcc,g++,gfortran】10.5.0,CUDA 11.2,cmake 3.2.1

一、获取AMBER22安装包并解压

1、在AMBER官网直接下载AmberTools23和Amber22,信息随便填

(1) AmberTools23.tar.bz2

(2) Amber22.tar.bz2

这边下载后放在 /home/mrc/software/Amber22

2,解压
tar xvfj AmberTools23.tar.bz2 # (Extracts into an “amber22_src” directory.)
tar xvfj Amber22.tar.bz2

 二、安装依赖和库(最费劲的一步)

        我这里因为机器只有我一个人用,所以所有的依赖和库都是用Ubuntu系统自带的软件包管理器apt安装的。这里有不同的操作系统需要安装的依赖,除此之外,PATH中还要确保有cmake。对于Ubuntu22.04来说,参考这个即可:

    安装命令很简单,但是重点来了。。。

   1、关于cuda版本(我之前安装的cuda版本是12.2)

    AMBER手册中有这样的介绍:

    也就是AMBER22不支持cuda12.X,它最高支持cuda11.2 。因为后期要安装AMBER22的cuda版,因此,我根据这个安装使用cuda11.2。

    需要注意CUDA的版本切换问题:如果只在环境变量中改版本,即使nvcc -V显示版本已经变了,但是AMBER22编译时候还是显示cuda12.2,所以必须这样进行多版本切换

    CUDA默认安装在/usr/local下,进入该目录,使用stat命令查看当前CUDA软链接指向哪个CUDA版本,如(我这里已经改成了CUDA11.2):

     切换版本只需要将软链接指向新的CUDA版本:

    ①删除原来的链接: sudo rm -rf /usr/local/cuda

    ②建立新链接,指向需要的CUDA版本:sudo ln -s /usr/local/cuda-11.2 /usr/local/cuda

    切换完毕后可以再次通过stat和nvcc -V命令查看。

2、关于GNU编译器版本

     根据CUDA和GCC的对应表,可以知道哪个版本的 gcc 适用于当前的 Cuda 版本(11.2):

     根据这个表,我需要gcc-10。为了使编译不出问题,g++和gfortran的版本也尽量保持一致,即需要g++-10和gfortran-10。

(1)先看下当前默认安装的版本是什么(我这里是version 11):

$ gcc --version
$ g++ --version
$ gfortran --version

(2)安装GNU10

sudo apt-get install gcc-10 g++-10 gfortran-10

(3)使用update-alternatives命令分别切换gcc,g++和gfortran的版本

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 20                   #最后的数字越大,代表优先级越高
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 20
$ sudo update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-10 20

PS:改变优先级:

$ sudo update-alternatives --config gcc      #g++和gfortran类似

 三、安装串行-cpu版

    Amber从20开始采用cmake编译。在解压获得的amber22_src的build文件夹中(图上是我已经安装好,build_initialcopy是最初build的拷贝),有一个run_cmake文件。里面是预写好的cmake编译指令,用户可以根据安装需求进行更改。

  该文件真正有用的是这几行:

#  Assume this is Linux:
  cmake $AMBER_PREFIX/amber22_src \
    -DCMAKE_INSTALL_PREFIX=$AMBER_PREFIX/amber22 \
    -DCOMPILER=GNU  \
    -DMPI=FALSE -DCUDA=FALSE -DINSTALL_TESTS=TRUE \
    -DDOWNLOAD_MINICONDA=TRUE \
    2>&1 | tee  cmake.log

  其中,官方文档提醒:使用cmake时,安装文件夹(即-DCMAKE_INSTALL_PREFIX后面跟的路径)必须与amber22_src不在一个地方。#默认就不在

  修改好run_cmake文件后执行:

  sudo ./run_cmake   

  然后执行:

  sudo make install  或者 sudo make install -j N   #N是编译安装使用的线程,可以自己定。推荐先使用后者,如果出问题了,再使用前者。因为前者虽然慢,但呈现问题更清晰一些。 

  PS:这里编译安装时候要用sudo,我最开始没有加sudo,结果报错“Failed to build Boost.Build build engine”

  如果编译安装正常结束,那么$AMBER_PREFIX/amber22中会有新文件出现,包括一个amber.sh文件。$AMBER_PREFIX/amber22/bin下是安装好的可执行文件。如下:

   此时只需要source /home/mrc/software/Amber22/amber22/amber.sh,即可使用AMBER串行版!

    如果安装失败,需要调整。需要执行  ./clean_build -f         # 先全部清理再run_cmake

附:这部分本人最终使用的编译指令:

  cmake $AMBER_PREFIX/amber22_src \
    -DCMAKE_INSTALL_PREFIX=$AMBER_PREFIX/amber22 \
    -DCOMPILER=GNU -DDISABLE_TOOLS="pytraj"  \
    -DMPI=FALSE -DCUDA=FALSE -DINSTALL_TESTS=TRUE \
    -DDOWNLOAD_MINICONDA=TRUE \
    2>&1 | tee  cmake.log

 三、安装串行-CUDA版

   AMBER手册中是让在上一步的build文件夹中修改run_cmake文件进行操作,这样的好处是一些软件可以不用重复安装(比如-DDOWNLOAD_MINICONDA=TRUE可以改为FALSE)。但是稳妥起见,我选择再创建一个文件build2-cuda,在该文件夹下进行cuda版的安装(PS:这说明可以直接安装串行-cuda版,不需要在此之前先安装好串行-cpu版)。

    根据AMBER手册,安装cuda 版只需要对run_cmake文件进行:

    修改 -DCUDA=FALSE -DCUDA=TRUE

     然后执行  sudo ./run_cmake  ; sudo make install

    如果安装成功,执行source amber.sh,即可测试使用。

附:这部分本人最终使用的编译指令:

  cmake $AMBER_PREFIX/amber22_src \
    -DCMAKE_INSTALL_PREFIX=$AMBER_PREFIX/amber22 \
    -DCOMPILER=GNU -DDISABLE_TOOLS="pytraj" -DDISABLE_TOOLS="pbsa" -DDISABLE_TOOLS="rism"   \
    -DMPI=FALSE -DCUDA=TRUE -DINSTALL_TESTS=TRUE \
    -DDOWNLOAD_MINICONDA=TRUE \
    2>&1 | tee  cmake.log

 四、安装并行版

    我这里安装的是并行CPU+GPU,一般情况下,安装并行CPU就行了。比如我这里虽然安装了并行CPU+GPU,但是我只有一块儿卡,并行GPU(pmemd.cuda.MPI)无用武之地啊。

    安装并行版之前务必已经安装好任何串行版,并且已经source过amber.sh,不然会报错。

    首先确保系统中已经安装了MPI(尝试mpi),并且mpicc和mpif90也在PATH中。

     然后修改 -DMPI=FALSE -DMPI=TRUE,

     然后执行  sudo ./run_cmake  ; sudo make install

    如果安装成功,执行source amber.sh,即可测试使用。

 

附:这部分本人最终使用的编译指令:
  cmake $AMBER_PREFIX/amber22_src \
    -DCMAKE_INSTALL_PREFIX=$AMBER_PREFIX/amber22 \
    -DCOMPILER=GNU -DDISABLE_TOOLS="pytraj" -DDISABLE_TOOLS="pbsa" -DDISABLE_TOOLS="rism"   \
    -DMPI=TRUE -DCUDA=TRUE -DINSTALL_TESTS=TRUE \
    -DDOWNLOAD_MINICONDA=TRUE \
    2>&1 | tee  cmake.log

五、一些报错及处理

(1)安装串行cpu版本的时候, make没问题,但是make install报错:error: command '/usr/bin/gcc' failed with exit code 1

 

 于是根据http://archive.ambermd.org/202302/0101.html,在run_cmake中加入了-DDISABLE_TOOLS="pytraj"。加上这个,并且gcc,g++,gfortran版本选择10.5,编译完成!

(2)后面安装cuda版时候又出了这个报错:

[ 77%] Building NVCC (Device) object AmberTools/src/pbsa/CMakeFiles/pbsa.cuda.dir/pbsa.cuda_generated_cusparse_LinearSolvers.cu.o
/usr/local/amber22_src/AmberTools/src/pbsa/cusparse_LinearSolvers.cu(82): error: identifier "CUSPARSE_SPMV_ALG_DEFAULT" is undefined
/usr/local/amber22_src/AmberTools/src/pbsa/cusparse_LinearSolvers.cu(236): error: identifier "CUSPARSE_SPMV_ALG_DEFAULT" is undefined
2 errors detected in the compilation of "/usr/local/amber22_src/AmberTools/src/pbsa/cusparse_LinearSolvers.cu".
CMake Error at pbsa.cuda_generated_cusparse_LinearSolvers.cu.o.RELEASE.cmake:278 (message):

     我最初还是尝试在run_cmake中加入了-DDISABLE_TOOLS="pbsa",重新编译(不清楚是否有效?忘了)

    最终是根据这个,将/home/mrc/software/Amber22/amber22_src/AmberTools/src/pbsa/cusparse_LinearSolvers.cu文件中的CUSPARSE_SPMV_ALG_DEFAULT 全部换为 CUSPARSE_MV_ALG_DEFAULT(这两个是解决一个问题的不同算法),编译通过。

(3)安装并行版的时候,报这个错:

src/mpi4py.MPI.c:198:12: fatal error: longintrepr.h: No such file or directory

解决:经查阅资料可知,这是python3.11所导致的问题,用python3.10即可。

    根据http://archive.ambermd.org/202307/0083.html,需要在/home/mrc/software/Amber22/amber22_src/cmake/UseMiniconda.cmake文件中的set(MINICONDA_INSTALLER_FILENAME "Miniconda$……一行前面添加 set(MINICONDA_VERSION py310_23.5.2-0)。强制安装miniconda3.10(默认python版本为3.10),即可解决。

 

 

参考:

http://archive.ambermd.org/202302/0090.html 中的 http://archive.ambermd.org/202302/att-0090/Amber_22_and_Tools_22_install_Ubuntu_22.pdf

https://www.bilibili.com/read/cv23212288/

https://zhuanlan.zhihu.com/p/479919955

 

posted on 2023-09-28 17:14  计算之道  阅读(1144)  评论(0编辑  收藏  举报