|
|
关于这个问题,抛砖引玉一下。我在vasp6.1.1跑的。
结论:设置KPAR是不可约K点的因数;NCORE是总核心数➗️KPAR得到值的因数。
细节:
1. NPAR = 总进程数 / NCORE,总进程数即是节点数;官网建议仅设置NCORE,不设置NPAR。
2. (1)KPAR的理解:N = (总核心数 / KPAR) 个计算核心组成的一个组将共同处理单个 k 点。(即最佳理解是,先拿np除以KPAR,得到类似NCORE,不妨名为KCORE,即核数/K点)
(2)NCORE = 几个核/带。
3. vasp的处理流程是先把可用核心数按照KPAR分组,再按照NCORE分组。
例如40核,KPAR=5,NCORE=4;那么核数分5组,每组8个核且每组1个K点,即每个K点8个核。(此时如果恰有5个K点,通信成本最低;但是有10个K点时,会轮询方式,即每个组总共负责2个K点,但是存在先后顺序,即先算完一个K,再去算另外一个K点)
然后8核按照NCORE划分,即每个带4个核。
在共同处理单个 k 点的这 N 个核心组内,将应用常规的能带和/或平面波系数并行机制(由 NCORE 和 NPAR 标签设置)。
4. 可以理解成代算任务是不可约K点行乘以NBANDS列的矩阵,KPAR决定几行几行地算;NCORE决定每条带(band)使用几个CPU。故KPAR最好是不可约K点的因数;NCORE是总核心数➗️KPAR得到值的因数 |
|