计算化学公社

标题: 求助:COSX的实现细节 [打印本页]

作者
Author:
zha23    时间: 2022-7-30 18:07
标题: 求助:COSX的实现细节
我自己写了一个COSX加速交换矩阵的模块,其中电子-核积分的计算是我自己写的,其计算效率略高于libcint,但是COSX的效率很低,甚至比不加的还低。麻烦请教各位,COSX计算有哪些需要注意的,以及计算细节。
作者
Author:
wzkchem5    时间: 2022-7-31 04:04
COSX的trick有很多,比如需要做overlap fitting,需要在很多地方做cutoff。如果cutoff做得不够充分,又没做overlap fitting或者overlap fitting做得不好的话,很容易比不用COSX还慢。
作者
Author:
zha23    时间: 2022-7-31 11:06
wzkchem5 发表于 2022-7-31 04:04
COSX的trick有很多,比如需要做overlap fitting,需要在很多地方做cutoff。如果cutoff做得不够充分,又没做 ...

谢谢您的回复。
作者
Author:
Warm_Cloud    时间: 2022-7-31 17:08
我做的也慢。。。你看一下你用的格点的数目,是要比DFT的少很多的。
作者
Author:
zha23    时间: 2022-7-31 19:52
Warm_Cloud 发表于 2022-7-31 17:08
我做的也慢。。。你看一下你用的格点的数目,是要比DFT的少很多的。

我看了psi4的做法,初期使用角度50,径向25,收敛使用角度110,径向35,文献中说平均一个原子有500-600个格点,收敛时近1000个,我的格点对于苯初期是差不多12000个,如果用这个进行迭代收敛小数点第三位就会有差别。ORCA最新的COSX使用的是经过优化的格点。
作者
Author:
Warm_Cloud    时间: 2022-7-31 21:21
zha23 发表于 2022-7-31 19:52
我看了psi4的做法,初期使用角度50,径向25,收敛使用角度110,径向35,文献中说平均一个原子有500-600个 ...

差不多,我对苯的点数是10530,不开COSX是-229.4156288106,开了RICOSX是-229.4163098475,我还做了overlap fitting,不过我对overlap fitting做了点小的改进.点数增加到23484的时候,能量是-229.416168235,还是第三位有问题.
单点问题不大,但是梯度真的是灾难.
作者
Author:
喵星大佬    时间: 2022-7-31 23:11
Warm_Cloud 发表于 2022-7-31 21:21
差不多,我对苯的点数是10530,不开COSX是-229.4156288106,开了RICOSX是-229.4163098475,我还做了overl ...

大师大法好,啥时候更新啊麦斯普
作者
Author:
Warm_Cloud    时间: 2022-8-1 07:54
喵星大佬 发表于 2022-7-31 23:11
大师大法好,啥时候更新啊麦斯普

1-2年内就应该能公开了。
作者
Author:
zha23    时间: 2022-8-8 12:25
Warm_Cloud 发表于 2022-7-31 21:21
差不多,我对苯的点数是10530,不开COSX是-229.4156288106,开了RICOSX是-229.4163098475,我还做了overl ...

你的格点是分块的吗,每一块计算的积分占总积分的比例大概是多少,我现在在重新写COSX,如果将格点分块后,对于苯使用def2-SVPD基组,每一块计算的积分大约为9.76%,水为66.24%。
作者
Author:
Warm_Cloud    时间: 2022-8-8 15:35
zha23 发表于 2022-8-8 12:25
你的格点是分块的吗,每一块计算的积分占总积分的比例大概是多少,我现在在重新写COSX,如果将格点分块后 ...

你说的分块是指?
作者
Author:
zha23    时间: 2022-8-8 16:44
Warm_Cloud 发表于 2022-8-8 15:35
你说的分块是指?

我说的分块指的是将积分格点按照距离相近分为多块,每块包括一定数目的格点,每一块中的格点受到相同部分基组的作用,之后计算按照块进行,这样可以避免不必要的基组计算以及提高并行效率。我的分块方法是参考psi4中使用八叉树的方法进行分块,格点的数目小于100或小于250且格点足够紧凑。
作者
Author:
Warm_Cloud    时间: 2022-8-8 17:00
zha23 发表于 2022-8-8 16:44
我说的分块指的是将积分格点按照距离相近分为多块,每块包括一定数目的格点,每一块中的格点受到相同部分 ...

这个我没有做,技术上和DFT的一样吧(这个我也没做)?
作者
Author:
zha23    时间: 2022-8-8 17:53
Warm_Cloud 发表于 2022-8-8 17:00
这个我没有做,技术上和DFT的一样吧(这个我也没做)?

是的,这个技术相关的函数就是定义在在DFT格点的模块中,这个技术应该也可以提升DFT泛函计算效率。
作者
Author:
Warm_Cloud    时间: 2022-8-8 20:03
zha23 发表于 2022-8-8 17:53
是的,这个技术相关的函数就是定义在在DFT格点的模块中,这个技术应该也可以提升DFT泛函计算效率。

不过,我觉得大头是库伦相互作用,FMM要重点搞,就这个是长程的,交换和相关是短程的相对来说还好。
作者
Author:
卡开发发    时间: 2022-8-8 20:46
Warm_Cloud 发表于 2022-8-8 17:00
这个我没有做,技术上和DFT的一样吧(这个我也没做)?

其实FMM核心也是那个八叉树,要不然远场傻算其实还是O(N^2)的。
大师也许可以看下这个10.1063/1.1771639?
作者
Author:
Warm_Cloud    时间: 2022-8-9 16:50
卡开发发 发表于 2022-8-8 20:46
其实FMM核心也是那个八叉树,要不然远场傻算其实还是O(N^2)的。
大师也许可以看下这个10.1063/1.1771639 ...

冬锅大法好,有时间我康康。
作者
Author:
zha23    时间: 2022-8-17 19:49
wzkchem5 发表于 2022-7-31 04:04
COSX的trick有很多,比如需要做overlap fitting,需要在很多地方做cutoff。如果cutoff做得不够充分,又没做 ...

这个方法我参考psi4的代码重新写了一遍,发现这个方法可能对于小体系小基组要算的确实慢,对于水杨酸,def2-svpd基组,使用COSX时间为37s,不使用为34s,而对于苯-苯体系,使用COSX为195s,不使用为246s。绝对能量的误差都小于1E-3 hartree。




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