
VASP是备受专业技术人员认可的DFT计算软件,每年发表论文超过1万篇,至2022年底,文章总量已超过11万篇。其计算结果不仅可以验证实验,更能够预测实验结果,指导实验路线。

本文为华算科技朱老师技术团队的Cilver老师和Ravi老师制作的《VASP官方入门手册》第三篇:VASP的性能优化、串行代码的性能、并行代码在不同机器上的性能。本教程将详细介绍VASP软件及其计算方法,帮助大家快速入门VASP计算,搞定顶刊技能!
为了获得良好的性能,VASP 需要高度优化的 BLAS 例程。该软件包可从许多公共域服务器(如 ftp.netlib.org)上获取。大多数机器供应商也提供经过优化的 BLAS 程序包。例如,BLAS 例程是以下库的一部分:
libblas (available from SGI)
libmkl (available from INTEL)
libgoto (P4/Athlon http://www.cs.utexas.edu/users/kgoto/signup_first.html)
这些软件包在大多数机器上都能达到最佳性能(高达 6 Gflops)。从机器制造商获取这些程序是首选。作为替代方案,也可以安装开源的版本,但对于大型系统来说,这可能会使 VASP 的运行速度降低 1.5 到 2 倍。
如果可能,还应该安装经过优化的 LAPACK,尽管对于较好的性能来说,这并不是那么重要。所有所需的LAPACK例程也可在文件vasp.lib/lapack_double.f中找到。如果没有优化的LAPACK例程可用,通常可以通过在makefile中指定-DNOZTRMM(参见3.5.4节)来稍微提高性能。使用大型测试系统(例如 bench.Hg.tar)并在 INCAR 文件中指定 IALGO=-1 时运行,可以确定 LAPACK 的性能。唯一影响时序的是 ORTHCH。
此外,FFT 程序的性能也相当重要。VASP 附带 J. Furthmuller 编写并优化的例程(它是 Schwarztrauber 多序列 FFT 的一个版本,支持基数 2、3、4、5 和 7)。在大多数机器上,这些例程优于制造商提供的例程(例如 CRAY C90、SGI、DEC)。通过向预编译器提供一个附加标志,可以优化这些例程
T3D -DCACHE_SIZE=8000 DEC ev5 -DCACHE_SIZE=8000
CACHE_SIZE=0有特殊含义。它会在 x 和 y 方向上逐个平面执行 FFT,在某些机器上会增加缓存的一致性。因此这个设置也值得一试。更改 makefile 中的 CACHE_SIZE 后,必须执行以下命令来更新fft3dfurth:
在矢量机上,CACHE_SIZE 应设置为 0。也可以提高这些例程的优化级别(但尽管在我们的测试中我们从未发现显著的性能改进)。
其他一些例程也可以从更高的优化级别中获益:最重要的是 nonl.F 和 nonlr.F。可以使用 bench.Hg.tar 和 IALGO=-1 对这些例程进行测试。当 LREAL=.TRUE 时,RPRO 和 RACC(nonlr.F)的时序会受到影响,而当 LREAL=.FALSE 时,VNLACC 和 PROJ(nonl.F)的时序会受到影响。特别是,可以尝试在 makefile 中设置 -Davoidalloc(参见第 3.5.12 节)。在这种情况下,某些性能敏感区域的 ALLOCATE 和 DEALLOCATE 序列将被避免。值得注意的是,在 Linux 下,ALLOCATE 和 DEALLOCATE 的速度很慢,因此避免使用它可以使 nonlr.F 的性能提高大约 10%(目前在所有 Linux 平台上都选择了这个选项)。
这里给出的基准数据是使用一种模拟VASP性能的基准测试来测量的。该基准由三个独立的程序组成。第一个程序测量矩阵-矩阵性能 (Lincom-TPP),第二个程序测量矩阵-向量性能 (matrix-vec),最后一个程序测量 3d-FFT 性能 (fft)。这三个部分的混合效果与模拟大型体系(40-100 个过渡金属原子)时的效果类似。矩阵×矩阵性能使用 DGEMM,矩阵×矢量使用 DGEMV、do-loops 或 DGEMM(取决于机器得分最高的部分)。fft 基准要么使用制造商提供的优化例程,要么使用 J. Furthmuller 编写并优化的例程。
表中还显示了 bench.Hg.tar 和 bench.PdO 基准的时序,它们位于 VASP 服务器的 src 目录中(bench.Hg.tar.gz 和 bench-PdO.tar.gz)。显示的数字是写在 OUTCAR 文件中 “LOOP+”行的数字(键入grep ’LOOP+’ OUTCA)。
您可以在 VASP.4.X (X>3) 目录下编译 ffttest 和 dgemmtest,然后键入:
这将依次执行 “Lincom-TPP”、”matrix-vec “和 “fft “测试(仅限串行版)。请注意,与 “Lincom-TPP”、”matrix-vec “和 “fft “的合成组合相比,目前的算法使得矩阵-向量部分不那么重要。此外,在 bench.Hg 基准中,矩阵-矩阵部分的性能比合成基准更重要。
目前,所有高性能机器都能很好地运行VASP。最便宜的选择(以最低的价格获得最佳价值)目前是基于AMD Athlon-64和Intel P4 PC的机器。对于编译,我们建议使用ifc编译器。购买哪种处理器(时钟频率)在一定程度上取决于预算和可用空间。如果您需要高填充密度,双Opteron机器是一个不错的选择。基于IBM Power 4的机器,英特尔安腾Intel Itanium(SGI Altix,HP-UX)仍然具有竞争力,但价格比PC稍高。
+VASP.4.4,启用硬件数据流;bench.Hg 在 4 个节点上运行,所有其他数据按节点
++ 系统配备 2 个(第一个)或 4 个(第二个)内存板。
∗∗ 所有 Athlon 结果均使用基于 Atlas 的 BLAS (http://www.netlib.org/atlas/)
x pgf90 -tp athlon,Atlas 针对 TB 优化了 BLAS,133 MHz 内存
1 基准在(双处理器 SMP 机器)2 TRUE 64 上执行两次
2 TRUE 64,其他 Alpha 基准在 LINUX 下执行
i Intel 编译器、ifc、mkl 性能库在 P4 上运行,Atlas 在 Athlon 上运行
A VIA KT 266A,使用 VIA KT 266 执行其他 XP 基准测试
j在 P4 上使用英特尔编译器、ifc7.1、libgoto p4 512-r0.6.so 或 libgoto p4 1024-r0.96.so,在 Athlon 上使用 libgoto opt32-r0.92.so,使用 fftw.3.0.1
kIntel 编译器,ifc7.1,libgoto p4 1024-r0.96.so(在 P4 上)或 libgoto opt32-r0.92.so(在 Opteron 上),fftw.3.0.1 和 -Duse_cray_ptr
lia64,Intel 编译器,ifc9.1,libgoto prescott64p-r1.00.so,fftw.3.1.2 和 -Duse_cray_ptr
p pgi 重要:在 ALPHA-LINUX 上,有两个选项:
export MALLOC_MMAP_MAX_=0
export MALLOC_TRIM_THRESHOLD_=-1
可将性能提高 10-20%!!注意:有时,对于时钟频率相似的机器,表格显示的时序会有很大差异。这通常与编译器或主板的升级有关。
由于历史原因,我们展示了 VASP.4 代码在 T3D 上的用时情况。体系为 l-Fe,晶胞中包含 64 个原子,只使用了 Γ 点,平面波数为 12500,包含的能带数为 384。
当前算法的主要问题在于子空间旋转。子空间旋转需要对一个相对较小的矩阵(本例中为 384×384)进行对角化,而这一步在大型并行机上的表现不佳。VASP 目前使用 scaLAPACK 或 Ian Bush 编写的快速Jacobi 矩阵对角化方案(仅限 T3D、T3E)。在 64 个节点上,Jacobi 方案需要约 1 秒钟对矩阵进行对角化,但增加节点数并不能减少计算时间。scaLAPACK 至少需要 2 秒,而且 scaLAPACK 在 16 节点时就已达到这一性能水平。
图 2 显示了在 SGI 2000 上对 256 个铝原子进行计算的更具代表性的结果。在32个节点以下,可以达到0.8的效率。在目前大多数具有大通信带宽的架构(Infiniband、Myrinet、SGI 等)上,也可以达到类似的效率。在基于千兆以太网的集群上,对于16-32个核心,可以预计高达75%的效率。
图2:在具有千兆以太网的PC集群上的bench.PdO用时
最后的图 3 显示了 SGI(narwal)公司内部最先进机器的用时情况。节点由 QDR Infiniband 交换机连接,每个节点由 8 个内核(两个Intel(R) Xeon(R) CPU E5540 CPU’s, 2.53GHz)组成。在这种情况下,RMM-DIIS 算法的并行效率非常高,从 16 核到 256 核均达到 65%。对于Davidson 算法,在 16 至 256 个内核之间的并行效率仅为 50%左右。
图3:512个原子的GaAs体系的用时。使用了Γ 点版本,并且填充的总带数为 1024。使用默认的平面波截断能量208 eV。其他 VASP 设置为 PREC = A ; ISYM = 0 ; NELMDL = 5; NELM = 8 ; LREAL = A。左图显示了 RMM-DISS(ALGO = V)的计时结果,右图显示了 Davidson(ALGO = N)的计时结果。给出了第 7 次自洽场(SCF)迭代的时间。
“实验+计算”的模式已成为顶刊标配!还在苦于看不懂论文的计算部分?不会分析相关结果?不会回复审稿意见?错失顶刊?
朱老师带你零基础轻松入门DFT计算,提升论文档次,发顶刊快人一步!
学员已发表Nature、Nature Energy、Nature Materials、Angew..、JACS、AM、AEM等期刊。
声明:如需转载请注明出处(华算科技旗下资讯学习网站-学术资讯),并附有原文链接,谢谢!