问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

高性能计算应用优化实践之VASP

创作时间:
作者:
@小白创作中心

高性能计算应用优化实践之VASP

引用
CSDN
1.
https://m.blog.csdn.net/u013206206/article/details/142881996

VASP(Vienna Ab initio Simulation Package)是一种广泛应用于材料科学和凝聚态物理领域的第一性原理计算软件。本文将从编译优化、运行优化以及并行参数优化等多个维度,详细介绍如何在高性能计算环境中优化VASP的性能。

VASP简介

VASP是最常见的第一性原理计算软件之一。第一性原理计算是基于密度泛函理论,通过选择合适的交换关联赝势(GGA或LDA),然后基于迭代方法自洽求解Kohn-Sham方程,直到所求出的新的电荷密度与输入的电荷密度在收敛判据范围内,则认为迭代计算达到收敛,最后求得系统的总能量、能带、波函数、电荷密度、态密度等等。

VASP编译优化

VASP文件中arch目录中有针对不同编译器的配置文件。

其中-xHOST是Intel编译器针对Intel处理器增加的编译优化选项。Intel平台建议开启该选项。非Intel平台不能识别该参数。

VASP_TARGET_CPU ?= -xHOST
FFLAGS += $(VASP_TARGET_CPU)

VASP运行优化

VASP使用MKL库完成其中的数学运算,但该库会通过内部函数检测是否为Intel处理器,在Intel处理器上MKL库的加速效果更好。分析显示MKL使用函数mkl_serv_intel_cpu_true来检测它是否在处理真正的Intel CPU。

非Intel平台在intel mkl 2020版本之前可以通过使用环境变量MKL_DEBUG_CPU_TYPE=5可以强制使用AVX2内核,但后续版本移除了这个变量。我们可以用自己的函数来代替它:

int mkl_serv_intel_cpu_true() {
  return 1;
}

并向其编译为共享库:

gcc -shared -fPIC -o libisintel.so isintel.c

libisintel.so是识别cpu处理器型号的函数,非Intel平台上运行之前可以加载这个库,替换掉MKL中自带的函数,把非Intel平台识别为Intel,以更好发挥MKL数学库的计算能力。

export LD_PRELOAD=/PATH/libisintel.so

共享内存优化参数

export I_MPI_FABRICS=shm

Intelmpi默认是shm:ofi,通信过程在查询时会有一定的耗时,针对Intel平台通信做了相关优化,但在非Intel平台会有影响通信性能,导致计算性能降低。可以通过以上参数改善。

UCX优化参数

export UCX_TLS=sm,dc

调整MPI使用通信协议传输方式为共享内存和动态分配,但UCX参数在单节点测试时,影响不大。

VASP输入文件并行参数优化

VASP主要涉及到K点并行和能带并行两种方式,INCAR主要的并行参数:NCORE,NPAR,KPAR。总核心数=NCORENPARNKPAR。

KPAR表示同时计算多少个K点,默认为1,可用“grep irre OUTCAR ”查看不可约K点数,体系的K点设置为不可约K点数的除数,最大可设置为体系的不可约K点数。

根据计算体系的实际情况选择性设置,K点较少的体系,并行带来的通信消耗会大于计算的性能提升,对整体计算加速效果不佳。

NCORE决定轨道并行策略,单个轨道计算所使用的核数量。

NPAR决定能带并行策略,同时并行计算多少条能带。

Vaspwiki上建议优先设置NPAR,但实际情况下设置NCORE更为方便。结合实际测试,我们建议在HYGON平台运行时,NCORE设置为一个NUMA的核心数,从而减少跨NUMA的通信消耗。

算例实践

算例简介:对128个si原子构成的图中结构进行结构优化;选取PAW赝势,PBE交换关联泛函;截断能520eV,精度为1.0E-05eV;KPOINTS是Γ-centered网格,大小为333

NCORE优化

在使用同样128核心数时,KPAR默认为1,结果显示NCORE=16达到并行效果最好,其中NCORE是一个NUMA的核心数,减少了跨NUMA的通信消耗

KPAR优化

NCORE=16时性能最优,在此基础上进一步优化KPAR

该算例共有4个不可约K点:

测试可不同K点并行的结果:

从测试结果来看,KPAR=2时有10%左右的提升,但KPAR=4性能有所降低,是由于并行带来的通信消耗大于计算性能提升,对计算整体加速效果不佳。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号