|
|
本帖最后由 万里云 于 2023-10-3 21:04 编辑
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有很大区别,以上经验很可能不适用,因此要多做测试。磨刀不误砍柴工,参数选得好,相比于最差的情形能节省三分之一的时间。 |
|