计算化学公社

标题: 【BAGEL使用心得】量子化学软件BAGEL的安装 [打印本页]

作者
Author:
Freeman    时间: 2021-12-19 23:52
标题: 【BAGEL使用心得】量子化学软件BAGEL的安装
本帖最后由 Freeman 于 2023-3-13 17:37 编辑

BAGEL是一款很有意思的量子化学计算软件,由Toru Shiozaki团队主导开发,特色是CASPT2和相对论CASSCF的解析梯度。经过测试,BAGEL在CASPT2上能处理的非冻结轨道数多于蓝拱门的32个,而且算速极快,比蓝拱门不知高到哪里去了。这样碉堡的软件居然还是免费的!详见官网https://nubakery.org/和github主页https://github.com/qsimulate-open/bagel
下面介绍一下怎么安装。

配置
Red Hat 4.8.5-39,Intel(R) Xeon(R) Gold 5217 CPU @ 3.00GHz,Intel全家桶2021.4。

安装Intel全家桶
Intel全家桶不能用有bug的2019版本,最好用最新的,本文用的是2021版。
下载,安装
  1. wget https://registrationcenter-download.intel.com/akdlm/irc_nas/18236/l_BaseKit_p_2021.4.0.3422_offline.sh
  2. sh l_BaseKit_p_2021.4.0.3422_offline.sh -a -s --install-dir [Intel安装路径] --eula accept
  3. wget https://registrationcenter-download.intel.com/akdlm/irc_nas/18211/l_HPCKit_p_2021.4.0.3347_offline.sh
  4. sh l_HPCKit_p_2021.4.0.3347_offline.sh -a -s --install-dir [Intel安装路径] --eula accept
复制代码
自动设置环境变量
  1. . [Intel安装路径]/setvars.sh
复制代码
检查一下现在所用的编译器和MPI是不是[Intel安装路径]下的,MKL路径是否正常
  1. which mpicc
  2. which mpicxx
  3. which mpirun
  4. echo $MKLROOT
复制代码

安装Boost库
http://c.biancheng.net/view/7772.html。注意不能用1.77版,否则在BAGEL的configure过程中会报“找不到Regex”的错。笔者用的是1.71。
安装好之后,加入环境变量。
  1. export BOOST_ROOT=[Boost安装路径]
  2. export PATH=$BOOST_ROOT/bin:$PATH
  3. export LD_LIBRARY_PATH=$BOOST_ROOT/lib:$LD_LIBRARY_PATH
复制代码

安装BAGEL
创建文件夹bagel_beta,作为后续的安装路径
  1. mkdir bagel_beta
复制代码
从github主页上下载BAGEL源码,而不要下载v1.2.2版的release,因为后者有奇怪的bug
  1. git clone https://github.com/nubakery/bagel.git
  2. cd bagel
复制代码
Automake
  1. glibtoolize (or, libtoolize)
  2. aclocal
  3. autoconf
  4. autoheader
  5. automake -a
复制代码
最后的automake -a可能会报“找不到patch”的错,很简单,有root的话就yum -y install patch;没有的话就下载下面这个patch,并把含有patch的路径加入环境变量PATH即可。
这里可能还有一个关于“Perl Thread::Queue”的报错,解决方法也分为两个,有root的话用yum就行;没有的话就下载下面的rpm包,然后按照https://blog.csdn.net/GreenHandCGL/article/details/83055151介绍的方法前三步解压,再把解压出来的文件夹添加进环境变量
  1. export PERLLIB=$PERLLIB:[包含Thread文件夹的路径]
复制代码
编译BAGEL
  1. mkdir obj
  2. cd obj
  3. MPICC=mpicc MPICXX=mpicxx CC=mpicc CXX=mpicxx ../configure CXXFLAGS="-DNDEBUG -std=c++11 -lstdc++" --enable-mkl --with-boost=$BOOST_ROOT --with-mpi=intel --prefix=[刚才创建的bagel_beta文件夹]
  4. make -j
  5. make install
复制代码
添加环境变量
  1. export PATH=[刚才创建的bagel_beta文件夹]/bin:$PATH
  2. export LD_LIBRARY_PATH=[刚才创建的bagel_beta文件夹]/lib:$LD_LIBRARY_PATH
复制代码

使用BAGEL
以上环境变量在BAGEL运行过程中仍然需要,所以最好把设置环境变量的步骤和运行BAGEL的步骤写在一个脚本里
  1. . [Intel安装路径]/setvars.sh
  2. export BOOST_ROOT=[Boost安装路径]
  3. export PATH=$BOOST_ROOT/bin:$PATH
  4. export LD_LIBRARY_PATH=$BOOST_ROOT/lib:$LD_LIBRARY_PATH
  5. export PATH=[patch安装路径]:$PATH (取决于安装时是否设置了这个环境变量)
  6. export PERLLIB=$PERLLIB:[包含Thread文件夹的路径] (取决于安装时是否设置了这个环境变量)
  7. export PATH=[刚才创建的bagel_beta文件夹]/bin:$PATH
  8. export LD_LIBRARY_PATH=[刚才创建的bagel_beta文件夹]/lib:$LD_LIBRARY_PATH
  9. mpirun -np 16 BAGEL $input_file > $output_file
复制代码
用官网上随便一个例子测试一下吧!

下期预告
BAGEL虽然能算CASPT2的解析梯度,但是其优化算法太拉跨了,使得几何结构总是在平衡位置左右横跳,在收敛限外蹭蹭就是不进去。为此我写了个Gaussian external的脚本,用Gaussian来优化,效率就提高了很多。这个脚本我稍后再发出来。http://bbs.keinsci.com/thread-27086-1-1.html#pid183460

(, 下载次数 Times of downloads: 12)

(, 下载次数 Times of downloads: 7)




作者
Author:
jiangning198511    时间: 2021-12-20 11:27
可以贴出来两者速度对比结果
作者
Author:
Freeman    时间: 2021-12-20 12:18
jiangning198511 发表于 2021-12-20 11:27
可以贴出来两者速度对比结果

恩。趁我还有蓝拱门的试用版权,我有时间测评一下。
作者
Author:
喵星大佬    时间: 2021-12-21 06:29
boost177似乎没法用全家桶编译,会报不支持c11,用157也是ok的
作者
Author:
pwzhou    时间: 2021-12-21 08:52
的确是,优化稳定构型可能还可以,优化交叉点尤其费劲,上次在交叉点附近调来调去一个多星期才收敛,
作者
Author:
Freeman    时间: 2021-12-21 15:33
pwzhou 发表于 2021-12-21 08:52
的确是,优化稳定构型可能还可以,优化交叉点尤其费劲,上次在交叉点附近调来调去一个多星期才收敛,

我还专门上github的issue区问了,结果发现开发者自己都不用bagel内置的优化器,用的是pyscf同款geometric。
作者
Author:
joeson    时间: 2021-12-21 23:25
本帖最后由 joeson 于 2021-12-21 23:33 编辑

总算有一个免费做多参考的,竟然支持FCI。感谢分享!
作者
Author:
wzkchem5    时间: 2021-12-21 23:58
joeson 发表于 2021-12-21 16:25
总算有一个免费做多参考的,竟然支持FCI。感谢分享!

ORCA也是免费的,做多参考态计算也不错,和BAGEL比主要是差在多参考态方法的解析梯度上面。
另外补充一句,BAGEL还有一个重要的应用是算CASPT2的一阶非绝热耦合矩阵元,可以用来结合MOMAP算内转换速率常数
作者
Author:
喵星大佬    时间: 2021-12-22 14:07
Freeman 发表于 2021-12-20 12:18
恩。趁我还有蓝拱门的试用版权,我有时间测评一下。

并行效率这个事情其实还要注意一下不是所有功能都能mpi并行的,很多功能只能MKL并行
作者
Author:
Freeman    时间: 2021-12-23 19:49
更新一下。
1、测试发现,“1-16核的并行效率似乎约为100%”的表述欠妥,现已删去;(当时可能太激动了,没把握好时间)
2、修改了安装Intel全家桶的命令,加上了“-s”,意为静默安装,否则安装包就会在命令行调出伪图形用户界面,个人感觉十分难用;
3、文末添加了《【BAGEL使用心得】Gaussian、BAGEL联用做CASPT2几何优化的脚本》的链接。
作者
Author:
zjxitcc    时间: 2022-1-30 23:05
joeson 发表于 2021-12-21 23:25
总算有一个免费做多参考的,竟然支持FCI。感谢分享!

免费做多参考、还支持Full CI的程序巨多,例如PySCF, ORCA, OpenMolcas, GAMESS, Dalton, PSI4, Bagel, ...
作者
Author:
Mikasa    时间: 2022-2-7 09:21
BAGEL已经不更新了,Toru做商业化了,貌似还挺成功
https://qsimulate.com/
作者
Author:
hebrewsnabla    时间: 2022-2-7 22:53
Mikasa 发表于 2022-2-7 09:21
BAGEL已经不更新了,Toru做商业化了,貌似还挺成功
https://qsimulate.com/

虽然他们做了商业版本,但是开源的BAGEL二十几天前还在更新吧?
作者
Author:
Freeman    时间: 2022-2-8 00:48
hebrewsnabla 发表于 2022-2-7 22:53
虽然他们做了商业版本,但是开源的BAGEL二十几天前还在更新吧?

就是在修bug而已,貌似没有大的作为。源码里面还有dmrg等官网没提及的方法,但是早就停止更新了,也似乎没有给用户调用的接口。也许想憋个大招留给商业版?
作者
Author:
Mikasa    时间: 2022-2-8 08:11
hebrewsnabla 发表于 2022-2-7 22:53
虽然他们做了商业版本,但是开源的BAGEL二十几天前还在更新吧?

只是修简单的bug,issue里的讨论能看出来商业版的已经再改进更新了
作者
Author:
喵星大佬    时间: 2022-10-11 16:48
gcc11似乎编译不过去了
作者
Author:
Freeman    时间: 2022-10-13 11:29
喵星大佬 发表于 2022-10-11 16:48
gcc11似乎编译不过去了

我当时用的是intel编译器。
作者
Author:
喵星大佬    时间: 2022-10-14 02:55
Freeman 发表于 2022-10-13 11:29
我当时用的是intel编译器。

并不,你看看写的是mpicxx和mpicc,即使是intelmpi也是对应gcc的,如果是intel编译器应该是mpiicc和mpiicpc
作者
Author:
Freeman    时间: 2022-10-14 16:27
喵星大佬 发表于 2022-10-14 02:55
并不,你看看写的是mpicxx和mpicc,即使是intelmpi也是对应gcc的,如果是intel编译器应该是mpiicc和mpiic ...

抱歉,年代太久远,我已经记不清细节了
作者
Author:
Kalinite    时间: 2022-12-12 18:44
请问大家make -j时有遇到这样的问题吗:

./.libs/libbagel.so: undefined reference to `bagel::Matrix1e_<bagel::Matrix, void>::operator=(bagel::Matrix1e_<bagel::Matrix, void> const&)'
./.libs/libbagel.so: undefined reference to `bagel::Matrix1e_<bagel::Matrix, void>::operator=(bagel::Matrix1e_<bagel::Matrix, void>&&)'

加了--disable-shared --enable-static没用。
作者
Author:
banxia    时间: 2023-2-19 21:46
1.71的boost也找不到Regex,和老师说的有出入,
作者
Author:
ABQTrap    时间: 2023-3-3 14:41
您好!请问您的configure里面”CXXFLAGS="-DNDEBUG -std=c++11 -lstdc++“  -std=c++11 -lstdc++是什么意思呢?看不懂,谢谢!
作者
Author:
Freeman    时间: 2023-3-3 15:28
ABQTrap 发表于 2023-3-3 14:41
您好!请问您的configure里面”CXXFLAGS="-DNDEBUG -std=c++11 -lstdc++“  -std=c++11 -lstdc++是什么意思 ...

用C++11标准,链接C++标准库
作者
Author:
ABQTrap    时间: 2023-3-4 18:27
Freeman 发表于 2023-3-3 15:28
用C++11标准,链接C++标准库

老师再请教一下:如果Linux安装的是c++8.5.0,关键词需要写成-std=c++8吗?
目前bagel安装完成了,安装中没有error,但是运行BAGEL里面的test,总是报错,不知道问题在哪,见图片。linux小白,只装过orca,这个安装太难了。boost版本的确有影响,1.71安装没有报错,更高版本反而报错。
请问:
(1)boost安装时需要加use mpi关键词吗?不加会不会对并行计算有影响?
(2)安装了intel oneAPI 2021版,包括了编译器 mkl mpi部分,是不是相当于安装了intel mpi?
(3)运行bagel:BAGEL /path/to/test/benzene_svp_mp2.json > output &  这样运行方式是否正确?
bagel安装时的configure:./configure --with-mpi=intel --enable-mkl --with-boost=$BOOST_ROOT --prefix=/home/***/bagel-1.2.2 CXXFLAGS="-DNDEBUG -std=c++11 -lstdc++"
万分感谢!感激不尽!

作者
Author:
Freeman    时间: 2023-3-5 00:32
ABQTrap 发表于 2023-3-4 18:27
老师再请教一下:如果Linux安装的是c++8.5.0,关键词需要写成-std=c++8吗?
目前bagel安装完成了,安装 ...

8.5.0是编译器的版本,不是c++的标准,所以不用写成-std=c++8。
我没有亲自装过boost,不太了解。安装并行版的molcas必须要装boost,而串行版的molcas不需要,我猜就是因为boost对并行特别重要。所以如果安装boost时有类似use-mpi的选项,应该要勾选,并且编译器最好和编译bagel的一样。
是的。
是的。要并行的话前面加上mpirun -n [并行核数]。
这个报错我也看不懂。你可以自己写几个小分子的输入文件,测试一下。说不定是内存问题呢。
作者
Author:
ABQTrap    时间: 2023-3-6 17:23
Freeman 发表于 2023-3-5 00:32
8.5.0是编译器的版本,不是c++的标准,所以不用写成-std=c++8。
我没有亲自装过boost,不太了解。安装并 ...

老师好,bagel安装成功了,test通过,之前是mpi没设置好。现在想再连接libxc进行dft计算,configure时加--with-libxc,但总是报错找不到libxc的xc.h,明明已经安装并设置环境变量了,请问是什么原因?谢谢!
作者
Author:
Freeman    时间: 2023-3-6 23:24
ABQTrap 发表于 2023-3-6 17:23
老师好,bagel安装成功了,test通过,之前是mpi没设置好。现在想再连接libxc进行dft计算,configure时加- ...
The pilot KS-DFT code is also implemented using Libxc,5but it is neither efficient nor of production quality; we are hereby soliciting future collaboration for improving the DFT code.

原文说dft部分还不完善。




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3