yhli0906的个人博客分享 http://blog.sciencenet.cn/u/yhli0906

博文

abinit编译过程中的一些坑

已有 4670 次阅读 2021-10-23 18:04 |个人分类:计算机软件|系统分类:科研笔记

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文件

suse_gnu_7.5_openmpi.ac9

hpc_intel_19.0_openmpi.ac9




https://blog.sciencenet.cn/blog-2909108-1309162.html

上一篇:Audacity内录教程
收藏 IP: 111.47.27.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-23 15:13

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部