编译和安装

操作步骤

  1. 使用PuTTY工具,以root用户登录服务器。
  2. 执行以下命令设置环境变量。

    export MPI_HOME=/path/to/HMPI
    export CPPFLAGS=" -I/path/to/HDF5/include -I/path/to/PNETCDF/include -I/path/to/NETCDF/include -I$MPI_HOME/include"
    export CFLAGS=" -I/path/to/HDF5/include -I/path/to/PNETCDF/include -I/path/to/NETCDF/include -I$MPI_HOME/include "
    export CXXFLAGS=" -I/path/to/HDF5/include -I/path/to/PNETCDF/include -I/path-to/NETCDF/include -I$MPI_HOME/include "
    export FCFLAGS=" -I/path/to/HDF5/include -I/path/to/PNETCDF/include"
    export FFLAGS=" -I/path/to/HDF5/include -I/path/to/PNETCDF/include"
    export LDFLAGS=" -L/path/to/HDF5/lib -L/path/to/PNETCDF/lib -L/path/to/PNETCDF/lib”

  3. 执行以下命令创建第三方数学库安装包存放目录“extral”。

    cd /path/to/ABINIT
    mkdir extral

  4. 下载AtomPAW、BigDFT、LibXC、Wannier90软件包。

    下载地址:https://www.abinit.org/fallbacks

    • AtomPAW:atompaw-4.0.1.0.tar.gz
    • BigDFT:bigdft-1.7.1.25.tar.gz
    • LibXC:libxc-3.0.0.tar.gz
    • Wannier90:wannier90-2.0.1.1.tar.gz

  5. 利用SFTP工具将以上下载的软件包上传到“extral”目录下。
  6. 执行以下命令解压安装包。

    cd extral
    tar -xzvf atompaw-4.0.1.0.tar.gz
    tar -xzvf bigdft-1.7.1.25.tar.gz
    tar -xzvf libxc-3.0.0.tar.gz
    tar -xzvf wannier90-2.0.1.1.tar.gz

  7. 返回“/path/to/ABINIT”,执行以下命令解压ABINIT安装包。

    cd /path/to/ABINIT
    tar -zxvf abinit-8.10.3.tar.gz

  8. 执行以下命令进入解压后目录。

    cd abinit-8.10.3

  9. 执行以下命令创建并进入ABINIT软件编译目录。

    mkdir build
    cd build

  10. 执行以下命令进行配置。

    ../configure FC=mpif90 --with-mpi-prefix=/path/to/HMPI/ --with-dft-flavor="libxc+atompaw" --with-trio-flavor="netcdf" --with-tardir=/path/to/ABINIT/extral --with-netcdf-incs="-I/path/to/NETCDF/include" --withnetcdf-libs="-L/path/to/NETCDF/lib -lnetcdf -L/path/to/NETCDF/lib -lnetcdff" FCFLAGS="-g -O2 -ffree-line-length-none" --with-linalg-libs="-L/path/to/OPENBLAS/ -lopenblas" CFLAGS="-O2"

  11. 执行以下命令修改配置文件。

    sed -i -e "s/shiftr/rshift/g" src/78_effpot/m_random_xoroshiro128plus.F90
    sed -i -e "s/shiftl/lshift/g" src/78_effpot/m_random_xoroshiro128plus.F90

  12. 执行以下命令进入“ABINIT”目录。

    cd /path/to/ABINIT/abinit-8.10.3

  13. 执行以下命令修改配置文件。

    sed -i 's/#define HAVE_FC_INT_QUAD 1/#undef HAVE_FC_INT_QUAD/' config.h
    sed -i 's/#define HAVE_FC_LONG_LINES 1/#undef HAVE_FC_LONG_LINES/' config.h
    sed -i 's/#define atomic_mass_units/at_mass_units/' src/77_ddb/m_phonons.F90
    sed -i 's/#define number_of_atom_species/n_atom_species/' src/77_ddb/m_phonons.F90
    sed -i 's/alpha = 0.2/!alpha = 0.2/' src/78_eph/m_phgamma.F90

  14. 执行以下命令修改“src/56_io_mpi/m_hdr.F90”文件。

    1. 打开“src/56_io_mpi/m_hdr.F90”文件。
      vi src/56_io_mpi/m_hdr.F90
    2. 按“i”进入编辑模式,将“integer,public,parameter :: HDR_LATEST_HEADFORM = HDR_KNOWN_HEADFORMS(size(HDR_KNOWN_HEADFORMS))”修改为如下内容。
      integer,private,parameter :: HDR_KNOWN_HEADFORMS(1) = [123]
      integer,public,parameter :: size_hdr_known_headforms = size(HDR_KNOWN_HEADFORMS)
      integer,public,parameter :: HDR_LATEST_HEADFORM = HDR_KNOWN_HEADFORMS(size_hdr_known_headforms)
    3. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。

  15. 执行以下命令修改“src/62_iowfdenpot/m_io_screening.F90”文件。

    1. 打开“src/62_iowfdenpot/m_io_screening.F90”文件。
      vi src/62_iowfdenpot/m_io_screening.F90
    2. 按“i”进入编辑模式,将“integer,private,parameter :: HSCR_KNOWN_HEADFORMS(1) = [80]”修改为如下内容。
      integer,private,parameter :: HSCR_KNOWN_HEADFORMS(1) = [123]
      integer,private,parameter :: size_hscr_known_headforms = size(HSCR_KNOWN_HEADFORMS)
      integer,public,parameter :: HSCR_LATEST_HEADFORM = HSCR_KNOWN_HEADFORMS(size_hscr_known_headforms)
    3. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。

  16. 执行以下命令进行编译安装。

    FC=mpif90 CC=mpicc CXX=mpicxx make multi multi_nprocs=32

    “multi_nprocs”为并发编译的核数,可根据使用机器的核数和需求自由选择,初次编译建议不要并发。

    执行编译命令时,因路径问题可能报“unable to open MODULE file *.mod”错误,解决方法:

    将“.mod”文件拷贝到“incs”目录下,再执行编译安装,因“.mod”文件在编译过程中不断生成,故拷贝“.mod”的操作会持续执行多次。若不想执行多次拷贝操作,可编写一个脚本,例如:
    1. 创建脚本。
      vi cp.sh
    2. 按“i”进入编辑模式,编写如下内容。
      #!/bin/bash
       
      for i in `find -name *.mod`
      do
               cp $i src/incs
      done
    3. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
    4. 执行以下命令运行脚本。
      ./cp.sh

  17. 执行以下命令添加环境变量。

    export ABI_TESTS=/path/to/ABINIT/abinit-8.10.3/tests/
    export ABI_TUTORIAL=$ABI_TESTS/tutorial/
    export ABI_TUTORESPFN=$ABI_TESTS/tutorespfn/
    export ABI_TUTOPARAL=$ABI_TESTS/tutoparal/
    export ABI_TUTOPLUGS=$ABI_TESTS/tutoplugs/
    export ABI_PSPDIR=$ABI_TESTS/Psps_for_tests/
    export PATH=/path/to/ABINIT/abinit-8.10.3/build/src/98_main/:$PATH