查看原文
其他

离线安装PySCF程序(1.5及更高版本)

jxzou 量子化学 2022-07-07

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


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


1. 下载电子积分库libcint,密度泛函库libxc和xcfun,及PySCF共4个压缩包

https://github.com/sunqm/libcint/tree/cint3https://github.com/dftlibs/xcfun/tree/masterhttp://sunqm.net/pyscf/files/src/libxc-3.0.0.tar.gzhttps://github.com/sunqm/pyscf

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


解压:

unzip libcint-cint3.zipunzip xcfun-master.ziptar -zxvf libxc-3.0.0.tar.gzunzip pyscf-master.zipmv pyscf-master pyscf-1.5.4

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

 

2. 编译和安装libcint

cd libcint-cint3mkdir 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 ..
make && make install

注意:

(1)最后有个“..”,表示CMakeLists.txt在上级目录。

(2)反斜杠\表示续行符,将下一行连在一起,适用于参数太多一行写不完。

(3)安装路径

/home/$USER/software/cint_and_xc

是笔者的习惯,可以根据自己实际情况修改。后面要安装的libxc和xcfun库我们也要将其安装至此目录。最后安装PySCF时要用到该路径,里面有所需的库文件。

(4)这里的lib不需要写绝对路径。


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
make && make install

注意:

这里的libdir需要写绝对路径。这一步与官方的安装方式略有不同,官方需要建立build目录,此处笔者建议直接./configure;如果建了build再在build文件夹里../configure,会造成build里还有个build,然后两处文件依赖的情况。


4. 编译和安装xcfun

cd xcfun-mastermkdir 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 ..
make && make install

上述四步完成后,可以在

/home/$USER/software/cint_and_xc

下发现有bin、include、share和lib四个文件夹。


还需要做两件事:

(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_xc和PySCF文件夹即可。

 

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. 更换C和C++编译器

安装PySCF时默认的编译器是gcc和g++,如果想用icc和icpc,可以打开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


更新日志

  • Jan 25, 2020  minor revision

  • Mar 4, 2019 初版

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

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