| 多谢各位,问题找到了,是screening时我是每次计算积分前都要在差值密度矩阵中寻找一对shell的最大值,这样就要慢很多,我看了pyscf的代码他是提前将这一部分算好的,这样可以节省很多时间。 |
|
AO积分的8-fold对称性考虑了吗?既然你是用libcint做积分,这一块可以参考pyscf/lib/vhf/nr_direct.c 如8楼所说,pyscf默认不开密度拟合。不过体系过小的时候scf是incore的。 prescreening可以参考pyscf/lib/vhf/optimizer.c 据我所知pyscf应该没有FMM。 有没有检查决速步是哪一步?电子积分以外的步骤(如张量运算)不能太慢。 |
zha23 发表于 2022-3-26 23:44 如果不用incremental fock,那么每一次迭代都要完整地算一遍电子积分,完整地构建fock矩阵。incremental fock好像是用近似的办法,从前一步的fock矩阵推出后一步的fock矩阵,可以帮direct-scf省很多时间。如果用orca做direct-scf的话,能从输出文件中看到哪些步是incremental fock来的,哪些步是完整地构建fock矩阵来的。 |
| 密度拟合你在测pyscf的时候没主动开,就是没开,scf也都是direct的。还是多从screening的技巧上去提速吧 |
| 我猜还可能是用了半direct方法,存储了部分的双电子积分,但我不知道这时是如何存的,如果用数组存储,在用的时候如何快速查找以及存储的标准是什么,各位大佬可以麻烦解答一下吗。 |
| 如果是用密度矩阵的差值更新Fock矩阵做了。 |
zjxitcc 发表于 2022-3-26 23:41 麻烦问一下,什么是incremental Fock |
| 用了施瓦兹不等式,积分库用的是libcint,其他程序的对称性都关了。 |
|
本帖最后由 zjxitcc 于 2022-3-26 23:42 编辑 施瓦兹不等式筛选积分、incremental Fock等技术考虑了没?这些程序里是否有开启?你的程序或其他程序用了点群对称性加速么?关了没? |
|
FMM和传统方法的crossover没有这么早,大概在60个原子左右,对于一维体系可能早一些,但也不会在乙烷就crossover。所以我觉得psi4、pyscf的线性标度可能其实是常数时间overhead+O(N^2)标度的结果,不是真线性标度。 你做Schwarz prescreening了吗?另外积分库是调用的现成的库还是自己写的积分代码?分子增大以后高角动量积分,比如(dd|dd)占总积分的比例会增加,如果高角动量积分算得不够快,可能就会出现你看到的这种现象。 |
手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图
GMT+8, 2026-2-21 23:36 , Processed in 0.176864 second(s), 25 queries , Gzip On.