基于KNL平台的LAMMPS优化
2017-05-04
郑州大学 超级计算中心智慧城市研究院,河南 郑州 450000
随着现代社会的发展,产生的数据量越来越多,人们对数据的处理能力的要求也越来越高。纵观高性能计算发现历史,从以前的标量计算机、向量机、并行计算机,到如今的集群、超级计算机、GPU 计算等等,每一种产品的出现都对人类发展起到了重要的推动作用。超级计算机凭借着高速的处理能力,迅速得到各行各业的青睐,但是,超级计算机的高速处理能力是以高能耗为代价的,因此,依靠多核、众核低功耗的方式构建超级计算机,变得越来越流行。KNL (300W) 是 Intel 的新一代处理器,以众核,低功耗的特点迅速得到人们的关注。
KNL 是 Intel 第二代 MIC 架构 Xeon Phi 众核融合处理器,是 Intel 首款针对于并行负载而设计的处理器。单芯片最大可支持 72 个 CPU 物理核心,拥有16GB 的片上高速内存和 384G 的 DDR4 系统内存,双精度浮点峰值可达 3TFlops。由于 KNL 其天然的X86 架构,所以常规程序不需要任何额外操作即可直接运行,就如同使用一台拥有众多多核计算核心的SMP 计算节点一样。从软件的角度来说,KNL 可以独立可以独立的安装和运行操作系统,并独立使用。当然,KNL 节点也可以与主机协同工作,主机可以把适合众核平台的工作发布到 KNL 节点上完成。虽然常规程序可以在 KNL 节点上运行,但是,如何充分利用 KNL 已有资源提升程序执行效率成为优化并行应用的重点。
LAMMPS (large-scale atomic/molecular massively parallel simulator) 是由美国 Sandia 国家实验室开发的大规模分子并行模拟器,支持千万级以及上亿级规模的原子分子体系,在材料科学和计算化学中占有重要的地位。人们可以利用 LAMMPS 研究晶体材料的结构,振动光谱以及机械性质等等,是分子动力学重要的一款并行软件。
LAMMPS 虽然可以运行在单处理器的台式机和手提电脑上,但是其设计目的是在并行计算机上运行。本文深入研究 LAMMPS 特性,针对 KNL 特点,重点优化 LAMMPS 在 KNL 上运行效率。通过对不同的库的测试,最终发现 OPT,USER-INTEL 等库可大大提高 LAMMPS 的运行速度。除了第三方加速包外,使用KNL 多核和高速片上内存对其进行优化也是非常重要的,片上内存处于 CPU 和普通内存之间,其速度远高于访问内存的速度。片上内存大大缩短了程序读取数据的速度,使得程序的加速比提升至 49.2x.
1 优化分析
本文的测试平台为郑州大学 (郑州) 超算中心的KNL 集群,测试使用的节点硬件信息如表 1 所示。从表中可以看到 CPU 计算节点单核的处理能力是KNL 节点的 2x 之多,内存也远大于 KNL 节点。
系统和编译的软件环境包括,操作系统为 centos(X86_64),编译环境采用 Intel 的编译器 Intel® C++ and Fortran CoMPIlers,测试应用软件为 LAMMPS 31Mar17.本文主要从加速包和片上内存两方面进行优化。
表1 硬件信息Table 1 Node information
LAMMPS 是基于 MPI 消息传递接口的分子动力学模拟软件,本文选取 Intel 的编译器 Intel® C++ and Fortran Compilers 编译 LAMMPS 源码。图 1 为无任何优化的情况下对比 LAMMPS 在 CPU 节点和 KNL节点上的执行效率。横轴表示 MPI 线程数,纵轴表示时间。从图中可以看出,在无任何优化的情况下,CPU 节点执行时间总是小于 KNL 节点时间。对于CPU 节点,当线程数为 32 时,程序执行时间最短,达到 0.4 min 左右。由于 KNL 节点核数较多,但每个核的主频较低,因此线程数大于 10 时,执行时间逐渐趋于稳定,稳定后的执行时间是 CPU 节点执行时间 6~10x。此外,在线程数大于 64 时,执行时间有小幅度上升趋势。
图2 给出了 LAMMPS 在 KNL 节点和 CPU 节点上的加速比对比曲线。蓝色曲线为 KNL 节点的加速比曲线,红色曲线为 CPU 节点的加速比曲线。从图中可以看出 CPU 节点的加速比远高于 KNL 节点。对于 CPU节点而言,线程数在 32 时,加速比为 9x,达到最大,而 KNL 节点在线程数为 10 时加速比达到 2x,达到最大,当线程数大于 64 时,加速比略有下降。
从以上分析可以看出,当线程数等于节点物理核心数时,并行效果最佳。此外,当线程数大于 7 之后,KNL 节点的加速比基本保持不变,这表明 KNL节点具有更大的优化潜能。
图1 无优化 LAMMPS 执行时间对比Fig. 1 Comparison of original LAMMPS on KNL and CPU
图2 无优化 LAMMPS 加速比对比Fig. 2 Comparison of demonstrated speedups for LAMMPS on KNL and CPU
2 片上内存优化
KNL 节点作为计算机的主力处理器,可以独立的运行系统或者作为协处理器。KNL 共有 36 个 PCI 3.0 通道,此外针对网络还提供板载 Omni-Path 控制。这些核心采用 14nm 版本的 Silvermont,相比于22 nm 的 P54C 能够带来大幅的性能提升。KNL 拥有10 个内存主控,其中两个为 DDR4 主控,每个主控可支持三通道,其他八个为 MCDRAM.KNL 内存有缓存、平坦和混合三种模式。缓存模式下代码可以不需要任何改变,系统会组织安排数据像三级缓存一样使用 MCDRAM,此时 DDR4 则会作为另一级别的内存。平坦模式允许 MCDRAM 拥有物理访问空间,可让程序员迁移数据结构导出或导入 MCDRAM。在混合模式下,MCDRAM 一部分用于缓存模式,一部分用于平坦模式。高速 MCDRAM 内存的带宽是 DDR4内存的 4x. 因此充分利用 MCDRAM 可对程序进行大幅度的加速。
图3 展示了使用 MCDRAM 进行加速后的算例执行效率,从图中可以看出经过 MCDRAM 加速后的程序执行效率具有较大提升。当线程数大于 20 时,KNL 节点上的执行时间首次少于 CPU 节点的执行时间,当线程数为 64 时,时间最短,与 CPU 节点的执行效率相比,KNL 节点的执行效率最高可达 1.97x。
图 4 给出了相应的加速比对比曲线,蓝色曲线为KNL 节点的加速曲线,红色曲线是 CPU 节点的加速曲线。显然,经过 MCDRAM 加速过的程序,加速比明显高于 CPU 节点,最高可达 3.7x,相比于 KNL 节点未优化程序,最大加速比可达 25.1x。
3 加速包优化
根据官方文档,OPT、 USER-INTEL 是两个重要的第三方加速包。OPT 是由 James Fischer、Vincent Natoli 等人开发的 LAMMPS 优化包,该优化包使用模版对 compute 函数进行重写,从源码的角度对部分条件判断进行了优化,大大的提升了程序的执行速度。USER-INTEL 加速包是由 Intel 公司 Mike Brown 维护的 LAMMPS 加速包,它提供了两种方法对 LAMMPS 进行加速。第一种方式是通过向量化操作进行加速。第二种是通过卸载邻居列表和非绑定计算来加速英特尔至强 Phi 协处理器。
图5 给出了 LAMMPS 应用算例经过 OPT 和USER-INTEL 在 CPU 节点和 KNL 节点上的性能表现。从图中可以看出,应用算例的执行时间明显少于 CPU 平台,尤其是在线程数大于 20,应用算例在 KNL 节点上的执行效率是 CPU 节点的 3x。相比 KNL-MCDRAM,优化过的程序性能提升了2.0x。
图3 LAMMPS-MCDRAM 执行时间对比Fig. 3 Comparison of LAMMPS-MCDRAM on KNL and CPU
图4 LAMMPS- MCDRAM 加速比Fig. 4 Comparison of demonstrated speedups for LAMMPSMCDRAM on KNL and CPU
图5 优化 LAMMPS-MCDRAM 执行时间对比Fig. 5 Comparison of optimal LAMMPS-MCDRAM on KNL and CPU
图6 优化 LAMMPS-MCDRAM 加速比对比Fig. 6 Comparison of demonstrated speedups for optimal LAMMPS- MCDRAM on KNL and CPU
图6展示了优化过的程序加速比情况。显然,KNL 平台的加速比要明显高于 CPU 平台。从图中可以看出,KNL 平台的加速比最大可达 49.2157,而 CPU 平台的最大加速比为 8.9,这表明了 KNL 平台在大规模并行执行方面更有潜力。相对于 KNLMCDRAM,加速比提升大约 2x。
4 结束语
Intel 新一代处理器 KNL 为高并行负载应用提供强大的性能支持。本文针对 KNL 平台对 LAMMPS进行优化,通过研究 KNL 和 LAMMPS 特性,提出了利用 KNL 高速片上内存的优化方案 (KNLMCDRAM),使得 LAMMPS 性能提升了 25x,与CPU 节点相比提升了 1.5x。此外,利用加速包 OPT和 USER_INTEL 对 LAMMPS 进一步优化,相比与KNL-MCDRAM 方案,性能提升了 2x,加速比高达49.2,总体性能是 CPU 节点的 5.53x。
[1]Fischer J, Natoli V, Richie D. Optimization of LAMMPS[C]//HPCMP Users Group Conference, 2006.IEEE, 2006: 374-377.
[2]Jundt A, Tiwari A, Ward Jr W A, et al. Optimizing codes on the Xeon Phi: a case-study with LAMMPS[C]//Proceedings of the 2015 XSEDE Conference: Scientific Advancements Enabled by Enhanced Cyberinfrastructure.ACM, 2015: 28.
[3]Plimpton S, Crozier P, Thompson A. LAMMPS-largescale atomic/molecular massively parallel simulator[J].Sandia National Laboratories, 2007, 18.
[4]FrantzDale B, Plimpton S J, Shephard M S. Software components for parallel multiscale simulation: an example with LAMMPS[J]. Engineering with Computers, 2010,26(2): 205-211.
[5]McDoniel W, Höhnerbach M, Canales R, et al.LAMMPS’PPPM Long-Range Solver for the Second Generation Xeon Phi[C]//International Supercomputing Conference. Springer, Cham, 2017: 61-78.
[6]Crozier P S. HPC molecular simulations using LAMMPS[R]. Sandia National Laboratories (SNL-NM),Albuquerque, NM (United States), 2011.
[7]Crozier P S. Using GPUs for faster LAMMPS particle simulations[R]. Sandia National Laboratories (SNL-NM),Albuquerque, NM (United States), 2011.
[8]Coffman P, Jiang W, Romero N A. LAMMPS strong scaling performance optimization on Blue Gene/Q[R].Argonne National Laboratory (ANL), 2014.
[9]孙迎新, 裴素朋, 刘卫民,等. LAMMPS软件在物理化学教学中的应用[J]. 广州化工, 2013, 41(11):238-240.
[10]李伯杨, 聂峰光, 李晓霞,等. GPU并行计算集群上的LAMMPS分子动力学模拟性能测试[J]. 计算机与应用化.