查看原文
其他

离线安装PySCF程序2

jxzou 量子化学 2022-07-07

本公众号前已发过《离线安装PySCF程序》一文,可在“文章分类->软件教程->PySCF”中查看。当时的安装教程适用于PySCF 1.5之前的版本,而在1.5及之后,由于需要版本更高的xcfun库,若仍按前文安装会出现XC_PARTIAL_DERIVATIVES变量未定义等问题。现更新适用于PySCF 1.5及之后版本的安装教程。


安装环境:GCC版本4.8.5MKL库来自Intel 2019 update 1已事先装好Anaconda Python 3,撰写安装教程时所用的PySCF版本为1.5.4。安装较新的xcfun-master要求cmake版本不低于3.5。可用cmake --version查看当前cmake版本号,如果低于3.5需要先升级至符合要求。


1.下载电子积分库libcint,密度泛函库libxcxcfun,PySCF4个压缩包

https://github.com/sunqm/libcint/tree/cint3

https://github.com/dftlibs/xcfun/tree/master

http://sunqm.net/pyscf/files/src/libxc-3.0.0.tar.gz

https://github.com/sunqm/pyscf

注意原安装教程中的xcfun-stable-1.x.zip对于PySCF 1.5或更高版本已不再适用,需要去xcfun官网下载更新的xcfun-master


解压:

unzip libcint-cint3.zip

unzip xcfun-master.zip

tar -zxvf libxc-3.0.0.tar.gz

unzip pyscf-master.zip

mv pyscf-master pyscf-1.5.4

最后一步也可以不改文件夹名称,纯粹是个人习惯。

 

2.编译和安装libcint

cd libcint-cint3

mkdir build && cd build


cmake -DWITH_F12=1 \

-DWITH_RANGE_COULOMB=1 \

-DWITH_COULOMB_ERF=1 \

-DCMAKE_INSTALL_PREFIX:PATH=/home/$USER/software/cint_and_xc \

-DCMAKE_INSTALL_LIBDIR:PATH=lib ..

1)注意最后有个“..”,表示CMakeLists.txt在上级目录。(2)反斜杠\表示续行符,将下一行连在一起,适用于参数太多一行写不完。(3)安装路径

/home/$USER/software/cint_and_xc

是我自己的习惯,可以根据自己实际情况修改。后面要安装的libxcxcfun库我们也要将其安装至此目录。最后安装PySCF时要用到该路径,里面有所需的库文件。(4)这里的lib不需要写绝对路径。


make && make install


3.编译和安装libxc

cd libxc-3.0.0

./configure --prefix=/home/$USER/software/cint_and_xc \

--libdir=/home/$USER/software/cint_and_xc/lib \

--enable-shared --disable-fortran LIBS=-lm

注意这里的libdir需要写绝对路径。这一步与官网说的略有不同,建议直接./configure;如果建了build再在build文件夹里../configure,会造成build里还有个build,然后两处文件依赖的情况。


make && make install


4.编译和安装xcfun

cd xcfun-master

mkdir build && cd build

 

cmake -DCMAKE_BUILD_TYPE=RELEASE \

-DBUILD_SHARED_LIBS=1 \

-DXC_MAX_ORDER=3 \

-DXCFUN_ENABLE_TESTS=0 \

-DCMAKE_INSTALL_PREFIX:PATH=/home/$USER/software/cint_and_xc \

-DCMAKE_INSTALL_LIBDIR:PATH=lib ..

这一步与第2步类似。

make && make install


上述四步完成后,可以在

/home/$USER/software/cint_and_xc

下发现有bin,include, sharelib四个文件夹。还需要做两件事:

1)将lib路径添加进环境变量:

export LD_LIBRARY_PATH=/home/$USER/software/cint_and_xc/lib:$LD_LIBRARY_PATH

然后source使之生效。

2)将include/XCFun/xcfun.h文件复制到 include/下。

 

5.安装PySCF

cd pyscf-1.5.4/pyscf/lib


打开这里的CMakeLists.txt文件,在set(BLAS_LIBRARIES一行处删除注释符号“#”,更改mkl库路径为当前系统下的mkl路径,一般是

/opt/intel/compilers_and_libraries/linux/mkl/lib/intel64/

下面几行“or”部分不用动。在引号中-lmkl_avx后插入-lmkl_avx2 -lmkl_def

 

mkdir build && cd build

 

cmake -DBUILD_LIBCINT=0 \

-DBUILD_LIBXC=0 -DBUILD_XCFUN=0 \

-DCMAKE_INSTALL_PREFIX:PATH=/home/$USER/software/cint_and_xc ..

 

make

 

安装完成后将PySCF的环境变量添加进~/.bashrc文件:

export PYTHONPATH=/home/$USER/software/pyscf-1.5.4:$PYTHONPATH

完成安装。那些压缩包和解压出的文件夹都可以删除,只留下cint_and_xcPySCF文件夹即可。

 

6.运行简单例子

$ python

>>from pyscf import gto, scf

>>mol = gto.M(atom='H 0 0 0; H 0 0 1.2',basis='ccpvdz')

>>mf = scf.RHF(mol)

>>mf.kernel()

得到结果

converged SCF energy = -1.06111199785749

-1.0611119978574881

小数点第10位以后可能会有点差别,但是不重要,后面已经不是有效数字了。

 

7.其他离线安装方式

有的同学直接把某个联网节点上装好的PySCF发送到未联网的节点上,有时会发现无法重新编译或者使用,原因一般有两点:(1)两节点上库环境、版本有差别;(2)两节点用户名不同和(或)安装目录不同。解决方法:

进入pyscf/lib/build目录,先将除deps之外的目录和文件全部删除,接着将deps/src/下的 libxcfun-build目录删除,然后回到build目录里执行cmake ..make即可。这样PySCF会认为几个库已经下载完毕,再次编译即可使用。


8.更换CC++编译器

安装PySCF时默认的GCC编译器是gccg++,如果想用iccicpc,可以打开pyscf/lib/CMakeLists.txt文件,在project一行上面插入两行

set(CMAKE_C_COMPILER icc的绝对路径)

set(CMAKE_CXX_COMPILER icpc的绝对路径)

设定好编译器路径即可。

 

9.万一将来需要更新的库怎么办

打开pyscf/lib/CMakeLists.txt文件,搜索git,查看每个库对应的网址和版本号,它们就是在线安装时自动下载的版本,自己去下载与其一致的版本,发送到未联网的节点就行。

 

参考来源

https://sunqm.github.io/pyscf/install.html


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存