前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >离线安装PySCF程序(1.5及更高版本)

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

作者头像
用户7592569
发布2020-07-27 15:19:23
1.4K0
发布2020-07-27 15:19:23
举报
文章被收录于专栏:量子化学量子化学

本公众号之前已发过《离线安装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个压缩包

代码语言:javascript
复制
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。

解压:

代码语言:javascript
复制
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

代码语言:javascript
复制
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 ..

make && make install

注意:

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

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

(3)安装路径

/home/$USER/software/cint_and_xc

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

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

3. 编译和安装libxc

代码语言:javascript
复制
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

代码语言:javascript
复制
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 ..

make && make install

上述四步完成后,可以在

/home/$USER/software/cint_and_xc

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

还需要做两件事:

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

代码语言:javascript
复制
export LD_LIBRARY_PATH=/home/$USER/software/cint_and_xc/lib:$LD_LIBRARY_PATH

然后source使之生效。

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

5. 安装PySCF

代码语言:javascript
复制
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。

代码语言:javascript
复制
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文件:

代码语言:javascript
复制
export PYTHONPATH=/home/$USER/software/pyscf-1.5.4:$PYTHONPATH

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

6. 运行简单例子

代码语言:javascript
复制
$ 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 初版
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量子化学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云函数
云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。云函数是实时文件处理和数据处理等场景下理想的计算平台。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档