计算化学公社

标题: vasp计算一般多少核心并行 [打印本页]

作者
Author:
dali    时间: 2023-8-13 13:01
标题: vasp计算一般多少核心并行
请问大家,一台双路服务器,每个CPU有28个物理核心,两个CPU共56个物理核心,现有2个vasp计算任务(可能是结构优化、或振动频率、或态密度的计算任务)需要运行,有如下两种方式:
(1)每个任务用56核心,依次运行2个任务;
(2)每个任务用28核心,同时运行2个任务。
请问:
1. 哪种方式更好,论坛里大家用的都是双路服务器,请问大家通常都是采用哪种方式做计算的?
2. 如果采用(1)的方式,每个任务设置NCORE=28,KPAR=2是否最优? 应设置多少合理?
3. 如果采用(2)的方式,每个任务设置NCORE=14,KPAR=2是否最优? 应设置多少合理?
谢谢大家!!!

作者
Author:
rabbitkiller    时间: 2023-8-13 14:25
同时跑2个计算的话,感觉第(1)种方式会更慢一些……
作者
Author:
Weldingspock    时间: 2023-8-13 16:29
毫无疑问2更快。NCORE和KPAR的设置需要根据体系决定,貌似makefile.include选择带OPENMP选项的话NCORE=1是永远最快的
作者
Author:
乐平    时间: 2023-8-13 16:37
本帖最后由 乐平 于 2023-8-13 21:29 编辑

先不设置 NCORE, KPAR,跑十几分钟(或者跑两三个离子步),跑的过程中看看耗时多少
  1. grep LOOP OUTCAR
复制代码


LOOP 是电子步的耗时
LOOP+ 是离子步的耗时


然后检查一下体系的 K 点数目,能带数目,例如
  1. grep NKP OUTCAR
  2.    k-points           NKPTS =     XXX   k-points in BZ     NKDIM =     XXX   number of bands    NBANDS=     YYY

复制代码

上面的  NKPTS =     XXX,这里 XXX 就是你当前体系的 k 点数目
NBANDS=     YYY,这里 YYY 就是你当前体系的能带数目

停掉计算任务。

然后根据 k 点数目来确定 KPAR 的数值。KPAR 一定要能整除 k 点数目。
具体来说,就是 XXX/KPAR = 整数

至于 NCORE 的大小,要满足 NCORE x KPAR = CPU 核心数。这里的 CPU 核心数不一定非要正好等于你的最大 CPU 核心数,接近就好。
比如 KPAR = 3, NCORE = 18,那么 3 x 18 = 54,也就是用 54 核,而你的 CPU 核心数是 56,也是可以的。


设置好 KPAR, NCORE 之后再跑两三个离子步,再 grep LOOP OUTCAR ,对比一下电子步和离子步的耗时。


作者
Author:
dali    时间: 2023-8-13 18:05
rabbitkiller 发表于 2023-8-13 14:25
同时跑2个计算的话,感觉第(1)种方式会更慢一些……

感谢回复!
作者
Author:
dali    时间: 2023-8-13 18:05
Weldingspock 发表于 2023-8-13 16:29
毫无疑问2更快。NCORE和KPAR的设置需要根据体系决定,貌似makefile.include选择带OPENMP选项的话NCORE=1是 ...

感谢回复!
作者
Author:
dali    时间: 2023-8-13 18:07
乐平 发表于 2023-8-13 16:37
先不设置 NCORE, KPAR,跑十几分钟(或者跑两三个离子步),跑的过程中看看耗时多少

谢谢!你的回复太详细了,终于知道NCORE和KPAR怎么测试了,多谢多谢!!!
作者
Author:
乐平    时间: 2023-8-13 21:19
dali 发表于 2023-8-13 18:07
谢谢!你的回复太详细了,终于知道NCORE和KPAR怎么测试了,多谢多谢!!!

这也是试过好久才摸索出来的。

VASP wiki 里关于 NCORE 的描述实在是费解,绕来绕去看晕了,完全不像是要教会别人的说明书……

网上的各种说法又抄来抄去,看了也不是很清楚。

当然,我这种尝试也不能说是最优的。据说还有跨节点并行,让 NBANDS 和 NCORE 之间再次优化效率。这就没尝试了。

作者
Author:
rabbitkiller    时间: 2023-8-14 08:10
dali 发表于 2023-8-13 18:05
感谢回复!

我用的QE,根据我自己测试的结果,6通道的双路服务器,每个通道分配8个核,即用48个核跑计算速度最快。多一点或者少一点核数,计算速度都慢一些。

这东西最好自己测试一下,就心里有数了。
作者
Author:
乐平    时间: 2023-8-14 22:31
rabbitkiller 发表于 2023-8-14 08:10
我用的QE,根据我自己测试的结果,6通道的双路服务器,每个通道分配8个核,即用48个核跑计算速度最快。多 ...

请问“通道”是指什么呢?
作者
Author:
rabbitkiller    时间: 2023-8-16 11:30
乐平 发表于 2023-8-14 22:31
请问“通道”是指什么呢?

就是主板是几通道(channel)的那个通道,主板说明书上有的。

我是根据自己的经历推测,系统可能是把计算的工作均匀分配给各个已开启的通道(所以主板上的内存条要插满,这样可以开启所有通道),然后发现每个通道分配2^n个核速度最快……
作者
Author:
乐平    时间: 2023-8-16 15:29
rabbitkiller 发表于 2023-8-16 11:30
就是主板是几通道(channel)的那个通道,主板说明书上有的。

我是根据自己的经历推测,系统可能是把 ...

哦哦,通道就是内存插槽的意思,对吧?
作者
Author:
Entropy.S.I    时间: 2023-8-16 15:42
本帖最后由 Entropy.S.I 于 2023-8-16 15:46 编辑
乐平 发表于 2023-8-16 15:29
哦哦,通道就是内存插槽的意思,对吧?

非也。内存通道(Memory channel)对应了CPU上可用的内存控制器(IMC),其数量与DIMM插槽数量无直接联系。CPU支持多少内存通道,应当在CPU厂商的网站上查询;如何插DIMM才能启用所有内存通道,应当在服务器/主板的手册上查询。
作者
Author:
reid    时间: 2023-8-16 20:22
我是定下K点后,验证NCORE是多少时用时最少,电子步设2步、离子步设1步,依次设置NCORE可能的数值。几分钟就能验证完毕
作者
Author:
乐平    时间: 2023-8-17 10:46
Entropy.S.I 发表于 2023-8-16 15:42
非也。内存通道(Memory channel)对应了CPU上可用的内存控制器(IMC),其数量与DIMM插槽数量无直接联系 ...

感谢讲解!
作者
Author:
云空    时间: 2023-9-12 13:47
请问怎么同时运行两个任务,直接在两个终端里输mpirun -np 28 vasp吗




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