计算化学公社

标题: Amber22和AmberTools23的编译 [打印本页]

作者
Author:
snljty2    时间: 2023-8-24 17:55
标题: Amber22和AmberTools23的编译
本帖最后由 snljty2 于 2024-6-20 16:53 编辑

参考教材链接都在正文中。本人水平有限,难免有疏漏,恳请指正。

该方法在CentOS 7,Ubuntu 20.04,CentOS 8 Stream下测试均没有报错,简单跑了几个任务结果正常。没有经过更广泛的测试。
以下全部步骤使用root身份编译,默认安装者有基本的Linux使用经验。文中xxxxxx一律代表当前软件想要的安装目录,请不要直接复制粘贴,而是改成自己想要的目录。通常集群的话,建议装在/opt下。默认使用的shell是bash。

0. 使用包管理器装一些软件。
下面以CentOS 8 Stream/RockyLinux 8.8等系统的dnf命令为例,CentOS 7请换成yum命令,Ubuntu系统请使用apt命令并且包的名字往往有差异,如果提示找不到包可以上网搜一下具体发行版下这个包叫什么名字,一般来说许多包都有发行版和开发版的区别,前者主要是这个软件提供的二进制程序包等等,后者提供这个程序辅助组件的静态/动态链接库和头文件等,方便别的程序使用这个软件里的环境进行编译开发。有些情况只要前者,有些情况两者都要装。一般诸如加上一个名字叫abc的包,直接装包的发行版本身命令可能是apt/dnf install abc,而装开发版的包可能命令是apt install libabc或者apt install libabc-dev,而dnf的命令则是dnf install abc-devel。当然这个说法也不绝对,请自行调整。

我们要装的包主要有g++ gfortran、tcl的开发包、一些压缩算法的开发包如bzip2、zip等,较高版本的cmake。需要注意的是gcc版本不能过低,不推荐使用CentOS 7自带的gcc 4.8.5,下文会提到。
  1. dnf install -y bzip2-devel cmake3 gcc-gfortran gcc-c++ lzip tcl-devel zlib libzip-devel epel-release cmake3
复制代码

对于内网服务器,请将安装用的完整版镜像文件挂载作为离线源使用。
如果gcc版本太旧,可以下载https://mirrors.tuna.tsinghua.ed ... .0/gcc-8.5.0.tar.xz以及依赖的gmp、mpfr、mpc、isl包(具体要求解压gcc源码包后在/contrib/download_prerequisites文件里有提到)然后按照诸如 在Linux下编译gcc 的教程编译安装gcc,记得在前面多一步按照编译mpfr相同的方法编译安装isl,加载isl的环境,并在编译gcc本体的时候加入--with-isl=xxxxxx。
对cmake有一定版本要求。我用的是3.22.2.如果包管理器装的太久,可以到CMake下载较新的二进制安装文件,然后执行安装到一个目录,并把这个目录加到PATH环境变量的最前面。


1. 强烈推荐安装Environment Modules来管理环境。

Environment Modules官网下载源码包,解压后
  1. ./configure --prefix=xxxxxx
  2. make
  3. make install
复制代码


然后在.bashrc里面加入
  1. source xxxxxx/init/bash
  2. source xxxxxx/init/bash_completion
复制代码
退出终端重启,使用module 命令即可查看。
Environment Modules使用十分简单,module load xxx/xxxx加载环境,unload卸载环境,purge卸载全部环境。为了配置某个环境,需要写一个modulefile文件,通常是使用Tcl语言,放在$MODULEPATH环境变量指定的目录中,允许在多重子目录下。比如上面gcc的环境假如装在/opt/gcc/9.5.0,$MODULEPATH是/opt/Modules/modulefiles,那可以写一个如下的modulefile,文件名叫9.5.0,放在/opt/Modules/modules/gcc目录下:
  1. #%Module -*- tcl -*-
  2. ##
  3. ## modulefile
  4. ##

  5. proc ModulesHelp { } {
  6.         puts stderr "\tAdds GCC 9.5.0 environment paths\n
  7. }

  8. module-whatis   "loads GCC 9.5.0 module"

  9. module load gmp/6.1.0
  10. prereq gmp/6.1.0
  11. module load mpfr/3.1.4
  12. prereq mpfr/3.1.4
  13. module load mpc/1.0.3
  14. prereq mpc/1.0.3
  15. module load isl/0.18
  16. prereq isl/0.18
  17. set             prefix               /opt/gcc/9.5.0
  18. prepend-path    PATH                 $prefix/bin
  19. prepend-path    INCLUDE              $prefix/include
  20. prepend-path    C_INCLUDE_PATH       $prefix/include
  21. prepend-path    CPLUS_INCLUDE_PATH   $prefix/include
  22. prepend-path    LD_LIBRARY_PATH      $prefix/lib
  23. prepend-path    LD_LIBRARY_PATH      $prefix/lib64
  24. prepend-path    LIBRARY_PATH         $prefix/lib
  25. prepend-path    LIBRARY_PATH         $prefix/lib64
  26. prepend-path    MANPATH              $prefix/share/man
  27. setenv          CC                   $prefix/bin/gcc
  28. setenv          FC                   $prefix/bin/gfortran
  29. setenv          CXX                  $prefix/bin/g++
复制代码
其中module load 命令用来加载其他写好的环境配置文件,prereq代表此环境依赖于后面的环境。set是内部命令,不对外生效。setenv AAA aaa相当于export AAA=aaa,prepend-path AAA aaa基本相当于export AAA=aaa:$AAA 。其中PATH是用来找可执行文件的环境变量,LD_LIBRARY_PATH找运行时动态链接库,LIBRARY_PATH找编译时库,C_INCLUDE_PATH和CPLUS_INCLUDE_PATH分别是C和C++语言头文件的查找路径。如果用了这个方法,加载编译好的gcc环境再执行后面的操作。
假设$MODULEPATH是/opt/Modules/modulefiles(其实MODULEPATH是跟PATH类似,用冒号(Linux)或分号(Windows)分割的一系列路径,从前往后搜索,用找到的第一个文件),那上面的这个modulefile既然是/opt/Modules/modulefiles/gcc/9.5.0,那只需要
  1. module load gcc/9.5.0
复制代码

即可加载这个module。
2. 编译Open MPI 4.1.1。
别的版本应该也行,这里就直接复用了之前装好的版本。参考卢老师教程量子化学程序ORCA的安装方法 中Open MPI的安装方式编译Open MPI。需要注意的是如果用的不是系统的gcc而是上面编译的gcc,一定先加载想用的gcc版本的环境,然后用这个版本的gcc来编译Open MPI。如果以前已经用旧版本的gcc编译了Open MPI,那只好重新编译一份。加载编译好的Open MPI环境。

3. 编译FFTW 3.3.10.
FFTW 3.3.10下载源码,解压,进入目录,用以下脚本适当修改编译安装。改一下前面的安装目录和编译并行核数。

  1. #! /bin/bash -e

  2. npara=16
  3. fftwpref=/opt/fftw/3.3.10

  4. ./configure --prefix=${fftwpref} --with-g77-wrappers --enable-shared --enable-threads --enable-openmp --enable-float --enable-sse --enable-sse2 --enable-avx --enable-avx2 --enable-avx512 && make -j ${npara} && make install && make clean
  5. ./configure --prefix=${fftwpref} --with-g77-wrappers --enable-shared --enable-threads --enable-openmp --enable-sse2 --enable-avx --enable-avx2 --enable-avx512 && make -j ${npara} && make install && make clean
  6. ./configure --prefix=${fftwpref} --with-g77-wrappers --enable-shared --enable-threads --enable-openmp --enable-long-double && make -j ${npara} && make install && make clean
  7. ./configure --prefix=${fftwpref} --with-g77-wrappers --enable-shared --enable-threads --enable-openmp --enable-quad-precision && make -j ${npara} && make install && make clean
  8. ./configure --prefix=${fftwpref} --with-g77-wrappers --enable-threads --enable-openmp --enable-float --enable-sse --enable-sse2 --enable-avx --enable-avx2 --enable-avx512 && make -j ${npara} && make install && make clean
  9. ./configure --prefix=${fftwpref} --with-g77-wrappers --enable-threads --enable-openmp --enable-sse2 --enable-avx --enable-avx2 --enable-avx512 && make -j ${npara} && make install && make clean
  10. ./configure --prefix=${fftwpref} --with-g77-wrappers --enable-threads --enable-openmp --enable-long-double && make -j ${npara} && make install && make clean
  11. ./configure --prefix=${fftwpref} --with-g77-wrappers --enable-threads --enable-openmp --enable-quad-precision && make -j ${npara} && make install && make clean

  12. ./configure --prefix=${fftwpref} --with-g77-wrappers --enable-shared --enable-threads --enable-openmp --enable-float --enable-sse --enable-sse2 --enable-avx --enable-avx2 --enable-avx512 && make -j ${npara} && make install && make clean
  13. ./configure --prefix=${fftwpref} --with-g77-wrappers --enable-shared --enable-threads --enable-openmp --enable-sse2 --enable-avx --enable-avx2 --enable-avx512 && make -j ${npara} && make install && make clean
  14. ./configure --prefix=${fftwpref} --with-g77-wrappers --enable-shared --enable-threads --enable-openmp --enable-long-double && make -j ${npara} && make install && make clean
  15. ./configure --prefix=${fftwpref} --with-g77-wrappers --enable-shared --enable-threads --enable-openmp --enable-quad-precision && make -j ${npara} && make install && make clean
  16. ./configure --prefix=${fftwpref} --with-g77-wrappers --enable-threads --enable-openmp --enable-float --enable-sse --enable-sse2 --enable-avx --enable-avx2 --enable-avx512 && make -j ${npara} && make install && make clean
  17. ./configure --prefix=${fftwpref} --with-g77-wrappers --enable-threads --enable-openmp --enable-sse2 --enable-avx --enable-avx2 --enable-avx512 && make -j ${npara} && make install && make clean
  18. ./configure --prefix=${fftwpref} --with-g77-wrappers --enable-threads --enable-openmp --enable-long-double && make -j ${npara} && make install && make clean
  19. ./configure --prefix=${fftwpref} --with-g77-wrappers --enable-threads --enable-openmp --enable-quad-precision && make -j ${npara} && make install && make clean
复制代码


加载FFTW的环境,示例modulefile($MODULEPATH/fftw/3.3.10)为
  1. #%Module1.0#####################################################################
  2. ##
  3. ## module-info modulefile
  4. ##
  5. proc ModulesHelp { } {
  6.     puts stderr "\tModule FFTW 3.3.10 loaded."
  7. }

  8. module-whatis   "Module FFTW 3.3.10."

  9. set prefix /opt/fftw/3.3.10
  10. prepend-path PATH $prefix/bin
  11. prepend-path LD_LIBRARY_PATH $prefix/lib
  12. prepend-path LIBRARY_PATH $prefix/lib
  13. prepend-path C_INCLUDE_PATH $prefix/include
  14. prepend-path CPLUS_INCLUDE_PATH $prefix/include
复制代码


4. 安装Intel OneAPI BaseKit和HPCKit
参考教程Linux下安装Intel OneAPI BaseKit和HPCKit。也可以
  1. cat > /etc/yum.repos.d/oneAPI.repo << EOF
  2. [oneAPI]
  3. name=Intel® oneAPI repository
  4. baseurl=https://yum.repos.intel.com/oneapi
  5. enabled=1
  6. gpgcheck=1
  7. repo_gpgcheck=1
  8. gpgkey=https://yum.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
  9. EOF
  10. dnf makecache
  11. dnf install intel-basekit intel-hpckit
复制代码


。安装好后如果需要加载编译器的环境,modulefile可以写诸如
  1. set prefix /opt/intel/oneapi
  2. source-sh bash $prefix/compiler/latest/env/vars.sh intel64
复制代码
对于数学库MKL和Intel MPI,分别把上面的compiler换成mkl和mpi即可(mkl可以在intel64后面再加个参数llp64)。这三个环境暂时不用加载。

5. 安装Anaconda3
Anaconda3下载Anaconda3安装脚本,按提示执行,安装目录建议用/opt/anaconda3,最后选择是否往.bashrc里面写入环境选择否,然后modulefile写诸如
  1. set prefix /opt/anaconda3
  2. source-sh bash $prefix/bin/activate
复制代码
即可。加载Anaconda 3的环境。

6. 安装基于Open MPI的MPI4Py

参考教程安装基于Open MPI的MPI4Py 下载MPI4Py 3.1.4,解压,进入目录,编辑mpi.cfg,在[openmpi]字段把[color=rgba(0, 0, 0, 0.9)]mpi_dir后面的路径改为OpenMPI 4.1.1真实的安装路径。建议不要装进Anaconda环境,而是另建一个安装目录。
然后
  1. python setup.py build --mpi=openmpi
  2. python setup.py install --prefix=/opt/mpi4py/3.1.4-openmpi-4.1.1
复制代码
对于RockyLinux 8.8,前者可能会出现一些诡异的报错,找不到gcc的C标准库的一些库文件和里面的函数。我的解决办法是把/lib64的这些动态链接库(libdl.so.2,librt.so.1,libm.so.6,libutil.so.1,libz.so.1)都先软链接到OpenMPI安装目录下的lib目录中,编译安装完再删掉软链接。
modulefile可以写诸如
  1. set prefix /opt/mpi4py/3.1.4-openmpi-4.1.1
  2. prepend-path PYTHONPATH $prefix/lib/python3.11/site-packages:$PYTHONPATH
复制代码

加载MPI4Py的环境。

7. 安装Boost
确认已经安装好Open MPI,加载Open MPI的环境。参考教程Boost.MPI安装教程,到Boost下载Boost 1.82.0,解压,进入目录,
  1. ./bootstrap.sh --prefix=xxxxxx --with-libraries=all --with-toolset=gcc
复制代码
然后在project-config.jam添加一行
  1. using mpi : /opt/openmpi/4.11.1/bin/mpicxx ;
复制代码

,注意分号不能少,然后
  1. ./b2 -j8 --layout=tagged link=static,shared threading=multi install
复制代码
示例modulefile如下
  1. set prefix /opt/boost/1.82.0-openmpi-4.1.1
复制代码
加载Boost环境。

8. 安装CUDA。
先装显卡驱动
Nvidia显卡驱动官网下载最新的Linux版对应GPU的显卡驱动,然后在以下四个文件添加两行(第四个文件只加第一行):
/etc/modprobe.d/nvidia-installer-disable-nouveau.conf
/lib/modprobe.d/nvidia-installer-disable-nouveau.conf
/usr/lib/modprobe.d/nvidia-installer-disable-nouveau.conf
/etc/modprobe.d/blacklist.conf
  1. blacklist nouveau
  2. options nouveau modeset=0
复制代码
/etc/default/grub的GRUB_CMDLINE_LINUX项里面加入
  1. rd.driver.blacklist=nouveau nouveau.modeset=0
复制代码

然后
  1. grub2-mkconfig -o /boot/grub2/grub.cfg
复制代码
退出,按Ctrl+Alt+F2用tty的root身份登录,
  1. init 3
  2. mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
  3. dracut /boot/initramfs-$(uname -r).img $(uname -r)
复制代码
重启系统,还是用Ctrl+Alt+F2登录

  1. init 3
  2. ./NVIDIA*.run --no-opengl-files
复制代码
这里这个--no-opengl-files参数非常关键,尤其是装CentOS时候选了gnome,gnome的opengl和NVidia的会有冲突,且gnome用不了NVidia的opengl。所以要在装的时候选择不装opengl。
之后跟着提示走,32位兼容库选yes,X config选no。装完后
  1. init 5
复制代码
重启系统,Ctrl+Alt+F1回到GUI登录界面,root登录。
CUDA按照提示的wget那行命令下载最新的CUDA,并执行这个shell脚本,按照提示走,都用默认选项即可。

示例Modulefile如下
  1. #%Module -*- tcl -*-
  2. ##
  3. ## modulefile
  4. ##

  5. proc ModulesHelp { } {
  6.         puts stderr "\tAdds CUDA 12.1 environment paths\n\tPlease note that this module only works for GPU nodes\n"
  7. }

  8. module-whatis   "loads CUDA 12.1"

  9. set             root            /usr/local/cuda-12.1

  10. prepend-path    PATH            $root/bin
  11. prepend-path    INCLUDE         $root/include
  12. prepend-path    LD_LIBRARY_PATH $root/lib64
  13. prepend-path    LIBRARY_PATH $root/lib64
复制代码


9. 安装Amber和AmberTools
首先确定已经加载上面所有的环境(Intel的只要MKL),示例:
  1. module load cmake/3.22.2
  2. prereq cmake/3.22.2
  3. module load gcc/8.5.0
  4. prereq gcc/8.5.0
  5. module load fftw/3.3.10
  6. prereq fftw/3.3.10
  7. module load openmpi/4.1.1-gnu-8.5.0
  8. prereq openmpi/4.1.1-gnu-8.5.0
  9. module load anaconda/3
  10. prereq anaconda/3
  11. module load mpi4py/3.1.4-openmpi-4.1.1-gnu-8.5.0
  12. prereq mpi4py/3.1.4-openmpi-4.1.1-gnu-8.5.0
  13. module load boost/1.82.0-openmpi-4.1.1-gnu-8.5.0
  14. prereq boost/1.82.0-openmpi-4.1.1-gnu-8.5.0
  15. module load intel/oneapi/mkl
  16. prereq intel/oneapi/mkl
  17. module load cuda/11.4
  18. prereq cuda/11.4
复制代码


补充:根据 18# @Yancyan 的提醒,内网服务器也可以把补丁装上去,而不用强行跳过update。只需要在官网 Amber Bug Fixes and Updates 找到对应版本的所有patches,传到服务器上,使用
  1. ./update_amber --apply-patch=update.xxx
复制代码
来更新即可。感谢补充。

Amber和AmberTools现在已经全世界可以免费下载了,在官网Amber。把AmberTools和Amber两个包都下载,解压,
CMakeLists.txt前面加入add_compile_definitions(THRUST_IGNORE_CUB_VERSION_CHECK)
cd build,编辑run_cmake文件,在Linux那段把-DCMAKE_INSTALL_PREFIX修改为想安装的目录。下面有些描述是因为我们是内网服务器,其他环境下有些操作可以不要。
-DDOWNLOAD_MINICONDA选为FALSE,删除后面的-DMINICONDA_USE_PY3(如果有),加入-DTRUST_SYSTEM_LIBS=TRUE,加入-DOPENMP=TRUE,-DMPI改成TRUE,然后

  1. ./run_cmake
  2. make -j 8
  3. make install
复制代码
即可编译MPI和OpenMP版本的。
把-DOPENMP后面改成FALSE,如果有超过一张计算显卡而且想要跨卡运行-DMPI后面写TRUE,否则写FALSE,加入-DCUDA=TRUE -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-??.?,其中??.?是刚装的CUDA版本号。使用NVLink的话要加-DNCCL=TRUE。这样就可以编译GPU版本了。
  1. ./run_cmake
  2. make -j 8
  3. make install
复制代码
最后把前面加载了的环境都写入modulefile,并在后面写上诸如
  1. set prefix /opt/amber/22
  2. source-sh bash $prefix/amber.sh
复制代码
然后加载这个module,应该就可以运行Amber了。



作者
Author:
wangzuwei    时间: 2023-9-20 18:48
非常感谢!但我到最后编译Amber的时候遇到了一个问题,load的anaconda似乎会把之前load的openmpi覆盖掉,这个该怎么解决呢?
作者
Author:
snljty2    时间: 2023-9-20 19:03
wangzuwei 发表于 2023-9-20 18:48
非常感谢!但我到最后编译Amber的时候遇到了一个问题,load的anaconda似乎会把之前load的openmpi覆盖掉,这 ...

检查下modulefile是怎么写的呢?可以贴上来看一下
作者
Author:
wangzuwei    时间: 2023-9-20 20:03
snljty2 发表于 2023-9-20 19:03
检查下modulefile是怎么写的呢?可以贴上来看一下

我贴上来了,应该基本和贴文里写的差不多

作者
Author:
wangzuwei    时间: 2023-9-20 20:07
snljty2 发表于 2023-9-20 19:03
检查下modulefile是怎么写的呢?可以贴上来看一下

CMake的日志如下

作者
Author:
kingljy    时间: 2023-11-26 17:55
您好,我用environment module load了fftw、openmpi和MKL,但在build 下运行./run_make时,还是出现以下提示:This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found OpenMP_Fortran: -fopenmp
-- Could NOT find MKL (missing: MKL_INTERFACE_LIBRARY MKL_GFORTRAN_INTERFACE_LIBRARY MKL_GNU_THREADING_LIBRARY MKL_CORE_LIBRARY MKL_WORKS MKL_FORTRAN_WORKS)
-- hints given to look for KMMD in DIR:
-- found KMMD?:   KMMD_LIB-NOTFOUND
-- found INCLUDES?:
-- Did not find an external KMMD library, should be able to use bundled. If you have a custom version then set the path with -DKMMD_DIR (missing: KMMD_LIB)
-- Cannot search for FFTW Fortran headers because the serial headers were not found
-- Could NOT find FFTW (missing: FFTW_LIBRARY_SERIAL FFTW_WORKS FFTW_INCLUDES_SERIAL FFTW_FORTRAN_WORKS FFTW_LIBRARY_MPI FFTW_INCLUDES_MPI FFTW_MPI_WORKS)
-- Failed to find NetCDF interface for F77 (NetCDF_INCLUDES_F77 = NetCDF_INCLUDES_F77-NOTFOUND, NetCDF_LIBRARIES_F77 = NetCDF_LIBRARIES_F77-NOTFOUND)
-- Failed to find NetCDF interface for F90 (NetCDF_INCLUDES_F90 = NetCDF_INCLUDES_F90-NOTFOUND, NetCDF_LIBRARIES_F90 = NetCDF_LIBRARIES_F90-NOTFOUND)
-- Could NOT find NetCDF (missing: NetCDF_C_WORKS NetCDF_LIBRARIES NetCDF_INCLUDES)
-- Could NOT find Protobuf (missing: Protobuf_LIBRARIES Protobuf_INCLUDE_DIR)
-- Could NOT find XBLAS (missing: XBLAS_LIBRARY XBLAS_C_WORKS XBLAS_FORTRAN_WORKS)
-- A library with BLAS API not found. Please specify library location.
-- LAPACK requires BLAS
-- A library with LAPACK API not found. Please specify library location.
-- The ARPACK library was not found.  Please set ARPACK_LIBRARY to point to it. (missing: ARPACK_LIBRARY ARPACK_WORKS)
-- Could NOT find PnetCDF (missing: PnetCDF_LIBRARY PnetCDF_INCLUDE_DIR PnetCDF_WORKS)
-- Could not find some or all of the five main APBS libraries. Please set APBS_GENERIC_LIB, APBS_ROUTINES_LIB,
APBS_PMGC_LIB, APBS_MG_LIB, APBS_MC_LIB, APBS_FEM_LIB, UMFPACK_LIB, and APBS_MALOC_LIB to point to the correct libraries (missing: APBS_API_LIB APBS_ROUTINES_LIB APBS_MG_LIB APBS_PMGC_LIB APBS_GENERIC_LIB APBS_FEM_LIB APBS_MC_LIB UMFPACK_LIB APBS_MALOC_LIB APBS_WORKS APBS_INCLUDES)
-- Could NOT find JNI (missing: JAVA_INCLUDE_PATH JAVA_INCLUDE_PATH2 AWT)
-- Could NOT find PUPIL (missing: PUPIL_MAIN_LIB PUPIL_BLIND_LIB PUPIL_TIME_LIB JNI_FOUND PUPIL_WORKS)
-- Could NOT find LIO (missing: LIO_G2G_LIBRARY LIO_AMBER_LIBRARY LIO_WORKS)
-- Could NOT find PLUMED (missing: PLUMED_LIBRARY PLUMED_KERNEL_LIBRARY PLUMED_INCLUDES PLUMED_WORKS) (Required is at least version "2.5")
-- Could NOT find BZip2 (missing: BZIP2_LIBRARIES BZIP2_INCLUDE_DIR)
-- Checking for perl module Chemistry::Mol
-- Checking for perl module Chemistry::Mol - failed
-- Failed to find Perl modules: Chemistry::Mol (missing: PERLMODULES_CHEMISTRY_MOL_MODULE)
-- Unable to build internal Boost without zlib and libbz2
CMake Error at cmake/3rdPartyTools.cmake:108 (message):
  3rd party program boost is required to build Amber, but it is disabled
  (likely because it was not found).
Call Stack (most recent call first):
  cmake/3rdPartyTools.cmake:570 (set_3rdparty)
  CMakeLists.txt:207 (include)


-- Configuring incomplete, errors occurred!

If errors are reported, search for 'CMake Error' in the cmake.log file.

If the cmake build report looks OK, you should now do the following:

    make install
    source /home/amber22/amber.sh

Consider adding the last line to your login startup script, e.g. ~/.bashrc
--------------------------------------------------------------------------------------------------------

同时,在load了fftw、openmpi和MKL之后,用which命令也是找不到fftw、openmpi和MKL的路径,请您指点一下,怎么解决这个问题,谢谢了!
作者
Author:
snljty2    时间: 2023-11-26 18:46
kingljy 发表于 2023-11-26 17:55
您好,我用environment module load了fftw、openmpi和MKL,但在build 下运行./run_make时,还是出现以下提 ...

which命令只能找$PATH里面的可执行文件,不能找库文件(包括动态链接库(编译、运行都要)和静态链接库(只有编译时候要))。手动检查PATH LD_LIBRARY_PATH LIBRARY_PATH C_INCLUDE_PATH CPLUS_INCLUDE_PATH PYTHONPATH等环境变量设置(以及路径里的文件)没有问题即可。你的报错是因为编译Boost库的时候需要zlib和libbz2这两个库,google一下怎么用包管理器装,apt/dnf/yum安装即可。内网服务器可以用离线源。注意可能要开发版包(带库和头文件)而不仅仅是标准包(主要只带可执行文件和可执行文件依赖的动态库)。以CentOS 7为例,yum install bzip2-devel libzip-devel等即可。
作者
Author:
kingljy    时间: 2023-11-27 10:26
您好,您这个脚本怎么运行:
module load cmake/3.22.2
prereq cmake/3.22.2
module load gcc/8.5.0
prereq gcc/8.5.0
module load fftw/3.3.10
prereq fftw/3.3.10
module load openmpi/4.1.1-gnu-8.5.0
prereq openmpi/4.1.1-gnu-8.5.0
module load anaconda/3
prereq anaconda/3
module load mpi4py/3.1.4-openmpi-4.1.1-gnu-8.5.0
prereq mpi4py/3.1.4-openmpi-4.1.1-gnu-8.5.0
module load boost/1.82.0-openmpi-4.1.1-gnu-8.5.0
prereq boost/1.82.0-openmpi-4.1.1-gnu-8.5.0
module load intel/oneapi/mkl
prereq intel/oneapi/mkl
module load cuda/11.4
prereq cuda/11.4
------------------------------------------------------------------------------------------

特别是我运行prereq的时候提示没有这个命令,还请您指点,谢谢您了!
作者
Author:
snljty2    时间: 2023-11-27 11:06
kingljy 发表于 2023-11-27 10:26
您好,您这个脚本怎么运行:
module load cmake/3.22.2
prereq cmake/3.22.2

上面写的很清楚,重看一遍,这个是Modulefile。
作者
Author:
kingljy    时间: 2023-11-27 11:41
还有一个问题是,运行module load MKL时,提示(base) [root@localhost build]# module load intel/oneapi/mkl
intel/oneapi/mkl(12):ERROR:102: Tcl command execution failed: source-sh bash $prefix/compiler/latest/env/vars.sh intel64

您看看是什么问题?
作者
Author:
snljty2    时间: 2023-11-27 12:48
kingljy 发表于 2023-11-27 11:41
还有一个问题是,运行module load MKL时,提示(base) [root@localhost build]# module load intel/oneapi/m ...

首先,你module名字叫mkl,怎么load的环境是编译器compiler的而不是MKL的呢?其次,检查你的路径是否正确。之后,module命令不加参数打印版本看看,过老的module版本不支持source-sh命令,建议装最新版本,或者用env2把加载环境的shell脚本转化成Tcl语言的modulefile。
作者
Author:
kingljy    时间: 2023-11-27 17:15
您是对的,确实是Environment modules 版本过低的缘故,之前是用yum 装的,只有3.2,手动装了5.3.2 , load 加载mkl 就没有提示那个Tcl错误了.
另外,还是想请教一下您,您这个脚本当做modulefile用module命令具体怎么运行:
module load cmake/3.22.2
prereq cmake/3.22.2
module load gcc/8.5.0
prereq gcc/8.5.0
module load fftw/3.3.10
prereq fftw/3.3.10
module load openmpi/4.1.1-gnu-8.5.0
prereq openmpi/4.1.1-gnu-8.5.0
module load anaconda/3
prereq anaconda/3
module load mpi4py/3.1.4-openmpi-4.1.1-gnu-8.5.0
prereq mpi4py/3.1.4-openmpi-4.1.1-gnu-8.5.0
module load boost/1.82.0-openmpi-4.1.1-gnu-8.5.0
prereq boost/1.82.0-openmpi-4.1.1-gnu-8.5.0
module load intel/oneapi/mkl
prereq intel/oneapi/mkl
module load cuda/11.4
prereq cuda/11.4
------------------------------------------------------------------------------------------
还请您继续指点一下,谢谢您了!
作者
Author:
kingljy    时间: 2023-11-28 11:46
mpi4py的问题,再请教一下您,我参考您的教程,写了mpi4py的modulefile,如下:
#%Module1.0#####################################################################
##
## module-info modulefile
##
proc ModulesHelp { } {
    puts stderr "\tModule mpi4py 3.1.5 loaded."
}

module-whatis   "Module mpi4py 3.1.5."

set prefix /opt/mpi4py/3.1.5-openmpi-4.1.1
prepend-path PYTHONPATH $prefix/lib/python3.11/site-packages:$PYTHONPATH

但是运行module load mpi4py时,提示:
(base) [root@localhost build]# module load mpi4py/3.1.5-openmpi-4.1.1
Loading mpi4py/3.1.5-openmpi-4.1.1
  Module ERROR: can't read "PYTHONPATH": no such variable
        while executing
    "prepend-path PYTHONPATH $prefix/lib/python3.11/site-packages:$PYTHONPATH^M"
        (file "/root/privatemodules/mpi4py/3.1.5-openmpi-4.1.1" line 12)
    Please contact <root@localhost>

不知道是什么问题,请您指点一下,谢谢了!


作者
Author:
snljty2    时间: 2023-11-28 13:24
kingljy 发表于 2023-11-28 11:46
mpi4py的问题,再请教一下您,我参考您的教程,写了mpi4py的modulefile,如下:
#%Module1.0############## ...

可能是换行符的问题,你在Linux系统里写modulefile,或者Windows写的传上去后,dos2unix xxxxxxx一下。
作者
Author:
snljty2    时间: 2023-11-28 13:25
kingljy 发表于 2023-11-28 11:46
mpi4py的问题,再请教一下您,我参考您的教程,写了mpi4py的modulefile,如下:
#%Module1.0############## ...

假设你的$MODULEPATH是/opt/Modules/modulefiles:blabla:blabla,那么如果你的modulefile文件名叫9.5.0,放在/opt/Modules/modulefiles/gcc/ 目录下,那module load gcc/9.5.0即可。
作者
Author:
kingljy    时间: 2023-11-28 17:25
非常感谢您的指点,顺利从Amber16升级到了Amber22, serial和cuda serial的测试基本上都通过了,但是parellel的测试,提示mpirun 不能在root下运行,这个您是怎么处理的?
作者
Author:
snljty2    时间: 2023-11-28 17:42
kingljy 发表于 2023-11-28 17:25
非常感谢您的指点,顺利从Amber16升级到了Amber22, serial和cuda serial的测试基本上都通过了,但是parelle ...

我不用,而且个人强烈不推荐使用root做计算。非用的话看卢老师博文《root用户在用openmpi并行计算时避免加--allow-run-as-root的方法》。
作者
Author:
Yancyan    时间: 2024-3-12 01:47
非常感谢您的分享ubuntu20.04可以正常安装。同时借楼分享几个安装过程中的问题以及解决办法
首先关于补丁的安装
这里强烈建议在解压完amber以及ambertools后用./update_amber --update(服务器可以联网);
如果没有联网可以去官网上下载补丁并放在amber22_src路径中,使用./update_amber --apply-patch=<PATCH>(例如/ubuntu/opt/amber/amber22_src/amber22_patch/update.1)
如果”python': No such file or directory“,可以用sudo apt install -y python-is-python3安装
其次,cuda版本低于11.4会出现error: identifier "CUSPARSE_SPMV_ALG_DEFAULT" is undefined,只要切换到cuda-11.4问题解决
最后,ubuntu20.04需要先安装cpu串行版本(不然会出现amber被安装在amber_src下级路径中),再安装gpu版本




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3