计算化学公社

标题: 求助,SCF并行化方案 [打印本页]

作者
Author:
zha23    时间: 2022-3-31 12:51
标题: 求助,SCF并行化方案
我现在的程序实现了omp多线程计算,现在考虑使用MPI多进程并行,以支持多核计算。我想麻烦问一下各位大佬,psi4和pycf的并行是如何做的,我看pyscf的代码其C语言部分只用了omp。还有GAMESS,它的多线程使用的库好像不太一样。自洽场程序编写有专门的文献吗,如果有可以麻烦告诉一下吗,十分感激。

作者
Author:
sobereva    时间: 2022-3-31 14:27
PSI4完全基于OpenMP
GAMESS-US的并行看最近的介绍原文J. Chem. Phys. 152, 154102 (2020); doi: 10.1063/5.0005188
作者
Author:
hebrewsnabla    时间: 2022-3-31 15:14
你说的没错,pyscf只用了omp。

omp够用了,为什么一定要mpi呢,想跨节点?
作者
Author:
wzkchem5    时间: 2022-3-31 16:17
只有很大规模的计算才值得做MPI并行,如果要做大规模计算的话,建议把RI-J、FMM、MPEC、COSX之类的近似计算双电子项的算法实现一下,尤其是后两者是基于格点的方法,容易并行。如果能在已有方法基础上做一些改进,那还可以顺便发文章。
作者
Author:
zjxitcc    时间: 2022-3-31 16:29
wzkchem5 发表于 2022-3-31 16:17
只有很大规模的计算才值得做MPI并行,如果要做大规模计算的话,建议把RI-J、FMM、MPEC、COSX之类的近似计算 ...

MPEC是啥?
作者
Author:
wzkchem5    时间: 2022-3-31 16:52
zjxitcc 发表于 2022-3-31 09:29
MPEC是啥?

multipolar expansion Coulomb,是BDF做Coulomb项的方案,和Dmol的原理比较接近,就是把原子密度做Becke划分,近似为原子中心多极矩的贡献之和,在实空间格点上算Coulomb potential,再在实空间格点上和基函数做contraction
作者
Author:
卡开发发    时间: 2022-3-31 17:01
zjxitcc 发表于 2022-3-31 16:29
MPEC是啥?

10.1063/1.458452
作者
Author:
zha23    时间: 2022-3-31 17:22
谢谢各位,我所在的课题组是做EDA的,老师觉得GAMESS的效率拖累了EDA的效率,所以想重新写一个自洽场。
作者
Author:
zha23    时间: 2022-3-31 17:26
这个是我的代码
作者
Author:
wzkchem5    时间: 2022-3-31 18:47
zha23 发表于 2022-3-31 10:26
这个是我的代码

还是得多写点注释。。。这种基本没啥注释的,隔时间长了你自己都看不懂。。。
你是做的conventional计算吗(预先算好所有积分,然后存着用)?这样有点太费内存了,如果只想做10~20原子的体系没啥问题,但是做大体系还是需要用integral direct算法,把产生积分的代码写到组装Fock矩阵的最里面那层loop里,需要哪个双电子积分就产生哪个,整个程序不涉及任何O(N^3)或O(N^4)的存储
作者
Author:
zha23    时间: 2022-3-31 18:51
wzkchem5 发表于 2022-3-31 18:47
还是得多写点注释。。。这种基本没啥注释的,隔时间长了你自己都看不懂。。。
你是做的conventional计算 ...

不是,我是用的direct方法。
作者
Author:
hebrewsnabla    时间: 2022-3-31 18:56
zha23 发表于 2022-3-31 17:22
谢谢各位,我所在的课题组是做EDA的,老师觉得GAMESS的效率拖累了EDA的效率,所以想重新写一个自洽场。

那可以直接依托现有的开源程序来做啊
作者
Author:
zha23    时间: 2022-3-31 19:24
pyscf中有一个参数我不明白,其积分中有一个为cache缓存的参数,但我不知道其作用是什么,以及怎么用
(*intor)(buf, NULL, shls, atm, natm, bas, nbas, env, cintopt, cache),这个参数是libcint中没有的
作者
Author:
wzkchem5    时间: 2022-3-31 19:46
zha23 发表于 2022-3-31 11:51
不是,我是用的direct方法。

哦,看错了,我以为update_fock_rhf里的循环是主循环,原来只是循环一个shell quartet的
作者
Author:
Freeman    时间: 2022-4-1 23:25
zha23 发表于 2022-3-31 17:22
谢谢各位,我所在的课题组是做EDA的,老师觉得GAMESS的效率拖累了EDA的效率,所以想重新写一个自洽场。

GAMESS效率好像就是不太行。不过我建议,不用自己写一个SCF,而是换用现有已知的做SCF很快的程序。这些程序用上了很多加速SCF的技巧,而要自己实现的话,就很麻烦,很花时间,甚至舍本求末了。
当然了,如果你的目标不仅是完成老师布置的任务,而是想自己从头写一个计算化学程序,那倒是自己发明轮子比较好。那样的话,我们可以多多交流。
作者
Author:
hebrewsnabla    时间: 2022-4-2 00:32
zha23 发表于 2022-3-31 19:24
pyscf中有一个参数我不明白,其积分中有一个为cache缓存的参数,但我不知道其作用是什么,以及怎么用
(*in ...

你可以去issue区提问
作者
Author:
zjxitcc    时间: 2022-4-2 00:54
本帖最后由 zjxitcc 于 2022-4-2 01:07 编辑
zha23 发表于 2022-3-31 17:22
谢谢各位,我所在的课题组是做EDA的,老师觉得GAMESS的效率拖累了EDA的效率,所以想重新写一个自洽场。

GAMESS慢 倒还不是主要问题,你看PSI4也没快到哪里去,但是能免费做SAPT这个特点就是很香;GAMESS的SCF收敛性差,收敛关键词太少,收敛功能太弱、不支持检验波函数稳定性等等缺点限制了GKS-EDA的用途。这些我跟苏老师交流过。

论坛上有很多人做EDA过程中SCF不收敛,为了临时地解决这个问题,我去年在MOKIT里写了frag_guess_wfn小程序(https://gitlab.com/jxzou/mokit),此小程序可以自动调用Gaussian做HF/DFT计算,然后生成GKS-EDA输入文件(内含坐标、基组和片段及整体的轨道,及GKS-EDA关键词),这样在GAMESS里的GKS-EDA时间就基本可以忽略不计了,一般算3圈就很可能收敛了。

我倒是建议你直接基于PySCF或ORCA,看能否调用他们的接口,加上你自己GKS-EDA做分解部分的代码,得到GKS-EDA分解结果,这样不仅计算速度快,开发程序也快。如果你还能整合进pyscf主分支,或添加进ORCA开源脚本区https://github.com/ORCAQuantumChemistry/CompoundScripts,那就造福大量人了。当然,如果你的抱负是开发一整个量化程序,那从最基本的开始写是可以的。
作者
Author:
zha23    时间: 2022-4-2 19:23
zjxitcc 发表于 2022-4-2 00:54
GAMESS慢 倒还不是主要问题,你看PSI4也没快到哪里去,但是能免费做SAPT这个特点就是很香;GAMESS的SCF收 ...

多谢您的建议,我这一部分代码是寒假为了复习之前知识写的,主要我对这方面有一定兴趣,以及除了EDA,XMVB计算的SCF效率也较低,老师也想自己做一套独立的,正好也可以当作明年研究生开题的课题。
作者
Author:
喵星大佬    时间: 2022-4-2 23:40
zha23 发表于 2022-4-2 19:23
多谢您的建议,我这一部分代码是寒假为了复习之前知识写的,主要我对这方面有一定兴趣,以及除了EDA,XMV ...

那毕业估计比较危险了
作者
Author:
hebrewsnabla    时间: 2022-4-3 20:29
你的上一个帖子不是已经解决了效率问题吗,为什么在issue里面还说efficiency much lower than pyscf
作者
Author:
wzkchem5    时间: 2022-4-3 21:54
zha23 发表于 2022-4-2 12:23
多谢您的建议,我这一部分代码是寒假为了复习之前知识写的,主要我对这方面有一定兴趣,以及除了EDA,XMV ...

那我倒觉得不如把XMVB的源码要来,然后在上面改,改善XMVB的效率,这样受益的不止你一个,还有所有XMVB的用户。相比之下,你自己写SCF代码哪怕确实比XMVB快了,也肯定很难有比XMVB更多的用户。
量化软件也是国外卡中国脖子的方向之一,如果每个有志向写量化程序的人都从SCF从头做起,那中国永远也做不出能匹敌国外的软件,等于有100个地基但是没有一座高楼。




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