||
abinit是和QE并列的两大开源第一性原理软件。若论历史比QE还要悠久(abinit: 1997, QE: 2002),赝势库和功能也很全面,但安装和使用都非常复杂,导致一致不温不火。我刚上研究生时就学过这个软件,但被天书一般的输入文件折磨得头大不已,最后转去学了QE。最近因为工作需要,又把这个软件编译了一次。中间不少波折,在这里记录下来。
1. 编译配置
abinit使用autotools配置编译选项。这套工具也被很多软件所采用,configure/make/make install三步基本能搞定。但abinit的configure脚本可能多年未更新,在如今大多数工作站都安装64位系统的情况下,仍然固执地去lib目录下面找库文件。这导致无法通过命令行的方式指定各种库的相关设置。事实上,abinit官方也不推荐通过命令行给configure指定库,而是建议在hostname.ac9中完成设置。这个文件中,关于某个库的设置通常有下面几行(以FFTW为例):
# Flavor of FFT framework to support (default is auto)
#
with_fft_flavor="fftw3"
# Install prefix for the FFTW3 library
#
#with_fftw3="${HOME}/local"
# C preprocessor flags for the FFTW3 library (default is unset)
#
FFTW3_CPPFLAGS="-I${HOME}/local/include"
# C flags for the FFTW3 library (default is unset)
#
FFTW3_CFLAGS="-I${HOME}/local/include"
# Fortran flags for the FFTW3 library (default is unset)
#
FFTW3_FCFLAGS="-I${HOME}/local/include"
# Link flags for the FFTW3 library (default is unset)
#
#FFTW3_LDFLAGS="-L/${HOME}/local/lib64"
# Library flags for the FFTW3 library (default is unset)
#
FFTW3_LIBS="-L/${HOME}/local/lib64 -lfftw3 -lfftw3f"
按照ac9文件模板中所说的,只要通过with_xxx参数指定库的安装位置即可,configure会自动设置相关的FLAGS和LIBS。但由于上一段提到的原因,这个功能除了对MPI还有效外,对其余的库都是废的。所以必须手动设置FLAGS和LIBS才可以。对于HDF5、NetCDF等库,同样需要做此设置。
2. 依赖库版本
这是第二个坑巨多的地方。在官方编译教程中,没有看到对库版本的要求,只能一个个尝试。版本太低了不行,太高了也不行。有时configure还会强行认错版本,比如会把hdf5-1.10.6认成1.10.7,然后配置失败。经过多次尝试后,最终确定和abinit-9.6.1兼容的库版本为:
- hdf5-1.10.7
- netcdf-c-4.6.3
- netcdf-fortran-4.5.2
编译过程可以参考https://docs.abinit.org/tutorial/compilation/,按照教程操作即可。这篇教程的质量很高,学通的话编译其它程序也不在话下。关于FFTW,有一点需要说一下,就是abinit不支持同时启用MKL+FFTW。如果用了MKL,就只能使用MKL中的DFTI;如果用了FFTW,就只能弃用MKL,另选线性代数库。这实际上限定了只能用MKL。用MKL会遇到另一个问题,就是编译时会提示找不到mkl_dfti.f90,而这个文件明明就在$MKLROOT/include下面!分析报错信息可知,$MKLROOT/include就没有被写进Makefile里。这就需要手动把mkl_dfti.f90复制到$HOME/local/include下面,然后就可以继续编译了。
3. 编译方法
安装好各库并编辑好hostname.ac9后,将abinit源代码解压,在根目录下创建一个tmp目录并将hostname.ac9复制到该目录。然后../configure --with-config-file=./hostname.ac9,配置无误后make,编译完后make test_fast即可。除了test_fast外,abinit还自带了非常多的测试案例,全部运行的话很耗时,不建议在超算中心上运行这些案例。
测试无误后,make install即可安装到指定目录(hostname.ac9中的prefix选项)。
附件:在工作站和超算中心上基于GNU和Intel编译器的hostname.ac9文件
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-23 15:13
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社