本人新采购了一台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来说,参考这个即可:
即执行(从外网下载东西比较慢,如果安装报错如Unable to fetch some archives,就多尝试几次):
sudo apt -y install tcsh make gcc gfortran flex bison patch bc wget xorg-dev libz-dev libbz2-dev
sudo apt -y install openmpi-bin libopenmpi-dev openssh-client
sudo apt -y install cmake gcc g++ gfortran #GUN三剑客的版本后面换了
安装命令很简单,但是重点来了。。。
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
2024.10.30更新:这次使用默认编译指令即可安装成功:
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
三、安装串行-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
2024.10.30更新:这次编译安装成功没有取消pytraj:
cmake $AMBER_PREFIX/amber22_src \
-DCMAKE_INSTALL_PREFIX=$AMBER_PREFIX/amber22 \
-DCOMPILER=GNU -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,即可测试使用。
附:这部分本人最终使用的编译指令:
cpu并行(sander.MPI):
cmake $AMBER_PREFIX/amber22_src \
-DCMAKE_INSTALL_PREFIX=$AMBER_PREFIX/amber22 \
-DCOMPILER=GNU \
-DMPI=TRUE -DCUDA=FALSE -DINSTALL_TESTS=TRUE \
-DDOWNLOAD_MINICONDA=TRUE \
2>&1 | tee cmake.log
gpu并行(pmemd.cuda.MPI):
cmake $AMBER_PREFIX/amber22_src \
-DCMAKE_INSTALL_PREFIX=$AMBER_PREFIX/amber22 \
-DCOMPILER=GNU -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,编译完成!
2024.10.30更新:第二次安装没报这个问题,神奇
(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(这两个是解决一个问题的不同算法),编译通过。
2024.10.30更新:第二次安装没报这个问题,神奇
(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
本文来自博客园,作者:计算之道,转载请注明原文链接:https://www.cnblogs.com/jszd/p/17736208.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步