离线安装pyscf 2.0

PySCF联网在线安装只需pip install pyscf一行命令即可,能联网的建议通过联网安装。本文介绍的是离线安装步骤,适合不允许联网或很难联网的内部节点。读者在开始编译前需确认自己机子上有gcc和g++编译器,有MKL数学库,以及cmake软件。运行如下命令可查看自己机子上是否存在

which gcc
which g++
which cmake
cmake --version
echo $MKLROOT

笔者撰文时用的gcc版本为4.8.5(更高版本亦可),cmake版本为3.19(不能低于3.5),MKL数学库用的是Intel Parallel Studio XE 2019 update 5里的(更高版本的更好,最新的Intel OneAPI也可),Python用的是Anaconda Python 3,版本为3.7.6(不推荐低于3.7)。读者机子上若缺少任一前提条件请自行安装。

1.下载

先到官网下载PySCF压缩包

***/pyscf/pyscf/releases

本文以2.1.1版为例,但安装过程对目前所有2.x版均适用。下载得到pyscf-2.1.1.tar.gz。解压,进入lib目录

tar -zxf pyscf-2.1.1.tar.gz
cd pyscf-2.1.1/pyscf/lib

打开此目录下的CMakeLists.txt文件,搜索URL或GIT_REPOSITORY可以看到所需三个库的网址和版本号,然后到对应网址去下载相应版本的压缩包即可。方便起见,这里把网址也贴出来

***/sunqm/libcint/archive/refs/tags/v5.1.5.tar.gz
***/libxc/libxc/-/archive/5.2.0/libxc-5.2.0.tar.gz
***/fishjojo/xcfun/archive/refs/tags/cmake-3.5.tar.gz

笔者按照这些网址下载下来的压缩包分别是

libcint-5.1.5.tar.gz
libxc-5.2.0.tar.gz
xcfun-cmake-3.5.tar.gz

注意:不是随便什么版本、或最新版本的库都能搭配pyscf-2.1.1。版本搭配见下表

PySCF libcint libxc xcfun
1.7.6 4.0.7 4.3.4 cmake-3.5
2.0.0 4.4.5 5.1.7 cmake-3.5
2.0.1 4.4.6 5.1.7 cmake-3.5
2.1.0 5.1.5 5.2.0 cmake-3.5
2.1.1 5.1.5 5.2.0 cmake-3.5

2.编译libcint

到存放压缩包的目录下(与刚刚pyscf-2.1.1/pyscf/lib目录可以无关),依次执行

tar -zxf libcint-5.1.5.tar.gz
cd libcint-5.1.5
mkdir build && cd build
cmake -DWITH_F12=1 -DWITH_RANGE_COULOMB=1 -DWITH_COULOMB_ERF=1
-DMIN_EXPCUTOFF=20 -DKEEP_GOING=1
-DCMAKE_INSTALL_PREFIX:PATH=/home/$USER/software/cint_and_xc
-DCMAKE_INSTALL_LIBDIR:PATH=lib ..
make -j8
make install

这里的库存放路径/home/$USER/software/cint_and_xc是笔者的个人偏好,读者可以按照自己的喜好或需求更改。-j8表示8核并行编译,若读者机子没有8核,则应去掉-j8。

3.编译libxc

到存放压缩包的目录下,依次执行

tar -zxf libxc-5.2.0.tar.gz
cd libxc-5.2.0
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_SHARED_LIBS=1
-DCMAKE_INSTALL_PREFIX:PATH=/home/$USER/software/cint_and_xc
-DCMAKE_INSTALL_LIBDIR:PATH=lib ..
make -j8
make install

4.编译xcfun

到存放压缩包的目录下,依次执行

tar -zxf xcfun-cmake-3.5.tar.gz
cd xcfun-cmake-3.5
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_SHARED_LIBS=1
-DXCFUN_MAX_ORDER=3
-DCMAKE_INSTALL_PREFIX:PATH=/home/$USER/software/cint_and_xc
-DCMAKE_INSTALL_LIBDIR:PATH=lib ..
make -j8
make install

上述四步完成后,可以在/home/$USER/software/cint_and_xc下发现有bin、include、share和lib四个文件夹。接着将lib路径添加进环境变量,即打开~/.bashrc文件写入

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

然后source ~/.bashrc使之生效。几个库的tar.gz压缩包和解压出来的文件夹都可以删了,保留cint_and_xc文件夹即可.

5.安装PySCF

我们回到本文一开始提到的pyscf-2.1.1/pyscf/lib目录,再次打开CMakeLists.txt文件,找到第一个# set(BLAS_LIBRARIES这一行,在此处删除注释符号“# ”(注意是井号和空格两个字符),更改mkl库路径为当前系统下的mkl路径,例如笔者机子上的是

/opt/intel/mkl/lib/intel64

注意别把前头的-L删了,也别把后面一堆-lmkl_xxx删了。如果读者用的是Intel OneAPI,MKL库路径略有不同,这里举一个例子

/opt/intel/oneapi/mkl/latest/lib/intel64

读者需根据自己机子实际情况修改。注意下面几行“or”部分不用动。接着执行

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-2.1.1:$PYTHONPATH

完成安装。最后同样要记得执行source ~/.bashrc,或者退出重登。

6.测试例子

随便测试个CCSD(T)计算。新建一个文件a.py,写入

from pyscf import gto, scf, cc
mol = gto.M(atom='H 0 0 0; F 0 0 1.1',basis='ccpvdz')
mf = scf.RHF(mol)
mf.kernel()
mycc = cc.CCSD(mf)
mycc.frozen = 1
mycc.kernel()
mycc.ccsd_t()

保存。运行

python a.py

输出

converged SCF energy = -99.9873974403487
E(CCSD) = -100.2018830963878 E_corr = -0.2144856560390928
CCSD(T) correction = -0.00239622928398965

读者可以自行用高斯做个计算对比。注意高斯在电子相关计算中默认冻结芯轨道,而PySCF默认不冻结。对于氟化氢这个例子需要冻结的轨道只有1个,即F原子的1s轨道,因此这里显式地设定了mycc.frozen = 1让其与高斯一致。

7.安装dmrgscf,shciscf等extension

这在pyscf-1.7.6(及更旧版本)里是内置好的module,无需安装。如果读者对DMRG,SHCI计算不感兴趣,则不用安装,可跳过这一步。这个文件夹从pyscf-2.0开始被移出,需要用户手动下载,安装方法见《离线安装PySCF-2.x-extensions》

***/jxzou/qcinstall/-/blob/main/%E7%A6%BB%E7%BA%BF%E5%AE%89%E8%A3%85PySCF-2.x-extensions.md

8.可能遇到的问题

(1)如果编译时报错找不到libmkl_avx.so,并且你使用的是Intel OneAPI 2021.x版本,且你在$MKLROOT/lib/intel64/目录下能找到libmkl_avx.so.1,却找不到libmkl_avx.so,这时需要你手动创建软链接,即

cd /opt/intel/oneapi/mkl/latest/lib/intel64/
ln -s libmkl_avx.so.1 libmkl_avx.so

上述操作需要管理员权限(若Intel编译器没装在/opt/下,而是装在用户目录下,则无需管理员权限),然后再编译PySCF。注意这点与下述(2)是不同的问题,不能混为一谈。
(2)如果运行时报错找不到库mkl_def.so和mkl_avx2.so,可回到上述第5点中再次打开CMakeLists.txt文件,在-lmkl_avx后添加-lmkl_def -lmkl_avx2,保存。进入build目录,从本文第5点cmake处重新开始(含cmake操作)。
(3)如果编译PySCF中途更换了任何相关的编译器或库版本,应先在build/下执行make clean清理上次编译残留文件,然后再进行编译。
(4)若使用Intel 2019 update 3搭配Anaconda Python 3.8.x编译PySCF,运行时可能会报错libmkl_avx.so: undefined symbol: mkl_dnn_getTtl_F32,笔者没什么优美的解决办法,但笔者经过大量尝试,发现安装Anaconda Python 3.7.6(即降版本)或安装更高版本Intel编译器可解决该问题。各个版本的Anaconda Python可以到镜像网站

***/anaconda/archive

下载,其中文件名和版本号的对应关系为
Anaconda3-2020.02-Linux-x86_64.sh <-> Python 3.7.6
Anaconda3-2020.07-Linux-x86_64.sh <-> Python 3.8.3
Anaconda3-2022.05-Linux-x86_64.sh <-> Python 3.9.12

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:dandanxi6@qq.com

(0)
上一篇 2023年 9月 9日 上午11:37
下一篇 2023年 9月 9日 上午11:47

相关推荐

  • 你手机里的羞羞照片,可能全被看光了吗

    近年来,各种互联网隐私泄露事件频出。 对于常年上网冲浪,各种私人数据存于云端的网友来说,实在不是啥好事。 一边是我们无法割舍的移动互联网,一边是盯着我们隐私伺机而动的黑产分子。 哪…

    2023年 6月 21日
  • 三本超绝的“姐弟恋”甜宠文,又甜又宠又撩的姐弟恋文

    Hello!小编我来啦,今天给大家带来的是超甜的姐弟恋言情文:不撩怎么让你知道我心意还在呢,我的小姐姐。 短书评:女主从一穷二白的社畜到中了巨额彩票翻身把奴唱的反转,和看到被娱乐圈…

    2023年 12月 10日
  • 跟着毛佩琦读《庄子》的是谁(毛佩琦讲庄子)

    明史学家毛佩琦先生,撰写了《大家读庄子》上下两册,洋洋40万字的译注,可谓“激活经典,融入当下”。 《庄子》作为老庄哲学的重要组成部分,每个时代都有注释、详解之类的书籍,“或是王霸…

    2023年 5月 9日
  • 咖啡配料表植脂末是什么东西,咖啡中的植脂末喝多了有什么坏处

    #挑战30天在头条写日记# 当你购买咖啡时,有没有留意过咖啡杯里的配料表?通常,第一位会是植脂末,这让人不禁心生疑虑:植脂末是什么?会不会对身体有害?下面就来详细解答一下。 首先,…

    2023年 6月 11日
  • 杨紫从三岁到23岁变化,杨紫26岁生日是几月几号

    杨紫的3岁,12岁,19岁,26岁差别不是一点点! 这张杨紫3岁的照片,笑起来真的非常软萌啊,而且脸蛋上还有点婴儿肥哦!超可爱的啊!感觉一看就有演员的天赋呢,小酒窝真可爱。 12岁…

    2023年 10月 27日
  • 火影忍者,传说中的木叶八色是什么?有哪八色呢

    火影忍者太受大家欢迎了,在追漫之余,很多爱好者联系动漫中的一些情节进行了很多有趣的推理,这些源于现有因素的原创故事,有些真的能够以假乱真,让人感觉完全是正确的,其中流传最广的莫过于…

    2023年 3月 16日
  • 散文|周小平:故园情思

    我的老家是鱼米之乡,位于川南合江县的神臂城。常年在外求学或工作,漫漫长路一走就是36载。悠悠故园情思,荡漾在清澈的溪水、无边的静夜中。 小溪 十多户农家围成一团,村庄四周挨着一块又…

    综合百科 2023年 9月 5日
  • erp,scm,crm这三者的区别是什么

    本文解释了 CMS、 CRM 和 ERP 及其相似之处和不同之处 每天‬分享‬最新‬软件‬开发‬,Devops,敏捷‬,测试‬以及‬项目‬管理‬最新‬,最热门‬的‬文章‬,每天‬花…

    综合百科 2023年 4月 21日
  • 这些无可辩驳的事实证明了侵华日军

    第八个南京大屠杀死难者国家公祭日到来之际,侵华日军南京大屠杀遇难同胞纪念馆利济巷分馆工作人员在湖南新确认7名日军“慰安妇”制度受害者。 10月20日至25日、11月18日至26日,…

    2022年 12月 19日
  • 羊肉宜忌香哈网

    伏羊,就是入暑后的羊肉 从入伏起至之后的一个月间 直至立秋,都是品尝“伏羊”的最好时间 为什么呢? 很多人认为 “冬天吃羊肉补,夏天吃羊肉燥” 实际上 伏天气温高,易出汗 消耗要比…

    2022年 12月 8日