| 截断能太大了,一般50Ry就差不多了,截断能越大内存占用越多。Ry与eV的换算可以使用这个网站:https://citizenmaths.com/zh-cn/e ... tronvolts-converter |
卡开发发 发表于 2023-10-5 09:47 感谢卡老师 |
|
额外补充两点: 1、磁矩和迭代参数适当调整。好的初猜和平顺的迭代可能一些能带收敛会较快,那么后面的步骤对角化的速度会逐渐变快。 2、在确保数值稳定的情况,对角化可以使用RMM-Davidson或者RMM-Paro用RMM-DIIS对个别过程进行加速。 |
丁越 发表于 2023-10-3 21:27 ni指定了同时计算多少个image的受力,单节点多image很可能爆内存。 |
| 参与人数Participants 1 | eV +5 | 收起 理由Reason |
|---|---|---|
|
| + 5 | 谢谢 |
本帖最后由 丁越 于 2023-10-3 21:31 编辑 万里云 发表于 2023-10-3 21:03 感谢老师详细解答 ![]() 我还有个问题请教一下老师,假如NEB计算是在单个节点内进行,那么这个nimage的划分是否是有必要的呢? 另外这句话中"nk/nb/nb"应该是笔误了: nk/nb/nb相当于KPAR/NPAR/NCORE。nd是scalapack并行时矩阵分块方案 |
| 参与人数Participants 1 | eV +5 | 收起 理由Reason |
|---|---|---|
|
| + 5 | 谢谢 |
本帖最后由 万里云 于 2023-10-3 21:04 编辑 丁越 发表于 2023-10-3 20:30 ni/nk/kb/ntg分别对应image, kpoint, bands和FFT格点并行,这四个参数相乘必需等于申请的总核数。大致规律是并行层级越高,跨进程数据交换量越少,内存占用量越大。并行层级越低,数据交换量越大,内存占用越少。但内存占用看峰值,耗时看总和。因此内存占用满足这个规律,耗时不一定满足。 如果是做NEB计算,假设插入6个image,就申请6个节点,同时将ni设置成6。这样每个节点只在算出相应image的受力后才调用一次MPI,数据交换量是最小的。又假设每个节点有32个物理核心,那么nk*nb*nt必需等于32。据个人经验,如果是100原子左右,不可约k点在10以内的体系,用VASP的话1*1*32效率是最高的,也就是KPAR=1, NCORE=32。NPAR会自动设置为1。 如果是静态计算、优化、能带计算等单image计算,假设有4个不可约k点,建议申请4个节点,设置KPAR=4,NCORE=32,即每个节点负责一部分k点,节点内禁用band并行,所有的核都用来作FFT并行。 以上是在双路6326 CPU/256GB内存/IB互联集群上测试的结果。QE的并行方案可能和VASP有很大区别,以上经验很可能不适用,因此要多做测试。磨刀不误砍柴工,参数选得好,相比于最差的情形能节省三分之一的时间。 |
万里云 发表于 2023-9-30 10:38
请问一下老师,这个-nimage参数我有点没看明白到底和NEB的插点数目(image)怎么对应联系的?即每个插点结构用多少个核心并行和这个参数是怎么一个对应关系。我看后面几个参数要优化的时候还必须要知道FFT格点,KS states 的数目等等才能估计,还挺麻烦的,不知道老师有什么简易的优化策略? |
| MPI+OpenMP混合并行效率一般是比不过纯MPI的。MPI是进程级并行,内存占用大,为了不爆内存,进程数有时候要小于物理核心数。为了不浪费剩下的核心,就通过OpenMP进行线程级并行。 |
| 也和编译有关 |
ahxb 发表于 2023-9-30 13:44 要达到最高运行效率,需要合理搭配openmp+mpi杂化并行 |
| qe可以用OpenMP并行,也能用MPI并行,具体是否支持和怎么编译有关。如果原先使用全MPI并行,可以考虑设置OpenMP并行核数,能适当加快计算时间,一般也会节约一些内存。 |
万里云 发表于 2023-9-30 10:38 多谢老师,解释的非常清楚。感谢老师指导。 |
|
本帖最后由 万里云 于 2023-10-3 22:26 编辑 输入文件中用了80Ry的动能截断,相当于1000多eV,又是Ga和O这样的主族元素,如果是PAW势,精度很高了。VASP的ENCUT要设置成同样的值才能做比较。 无论VASP还是QE,只要是采用平面波基组的程序,做变体积的变胞优化时都会遇到Pulay应力的问题。解决办法有两个:加大动能截断,或者做定体积变胞再手动拟合状态方程。因此可以把动能截断砍掉一些,然后定体积变胞。 再就是调节QE的并行参数。这些参数不是写在输入文件里面,而是在命令行指定,记得有-ni -nk -nb -nt -nd几个。ni是对image并行,只在NEB计算时才有意义。nk/nb/nt相当于KPAR/NPAR/NCORE。nd是scalapack并行时矩阵分块方案,貌似vasp中没开放这个参数。具体要做测试。 |
手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图
GMT+8, 2026-2-20 17:53 , Processed in 0.202766 second(s), 32 queries , Gzip On.