鄭州大學(xué) 超級計(jì)算中心智慧城市研究院,河南 鄭州 450000
隨著現(xiàn)代社會(huì)的發(fā)展,產(chǎn)生的數(shù)據(jù)量越來越多,人們對數(shù)據(jù)的處理能力的要求也越來越高??v觀高性能計(jì)算發(fā)現(xiàn)歷史,從以前的標(biāo)量計(jì)算機(jī)、向量機(jī)、并行計(jì)算機(jī),到如今的集群、超級計(jì)算機(jī)、GPU 計(jì)算等等,每一種產(chǎn)品的出現(xiàn)都對人類發(fā)展起到了重要的推動(dòng)作用。超級計(jì)算機(jī)憑借著高速的處理能力,迅速得到各行各業(yè)的青睞,但是,超級計(jì)算機(jī)的高速處理能力是以高能耗為代價(jià)的,因此,依靠多核、眾核低功耗的方式構(gòu)建超級計(jì)算機(jī),變得越來越流行。KNL (300W) 是 Intel 的新一代處理器,以眾核,低功耗的特點(diǎn)迅速得到人們的關(guān)注。
KNL 是 Intel 第二代 MIC 架構(gòu) Xeon Phi 眾核融合處理器,是 Intel 首款針對于并行負(fù)載而設(shè)計(jì)的處理器。單芯片最大可支持 72 個(gè) CPU 物理核心,擁有16GB 的片上高速內(nèi)存和 384G 的 DDR4 系統(tǒng)內(nèi)存,雙精度浮點(diǎn)峰值可達(dá) 3TFlops。由于 KNL 其天然的X86 架構(gòu),所以常規(guī)程序不需要任何額外操作即可直接運(yùn)行,就如同使用一臺(tái)擁有眾多多核計(jì)算核心的SMP 計(jì)算節(jié)點(diǎn)一樣。從軟件的角度來說,KNL 可以獨(dú)立可以獨(dú)立的安裝和運(yùn)行操作系統(tǒng),并獨(dú)立使用。當(dāng)然,KNL 節(jié)點(diǎn)也可以與主機(jī)協(xié)同工作,主機(jī)可以把適合眾核平臺(tái)的工作發(fā)布到 KNL 節(jié)點(diǎn)上完成。雖然常規(guī)程序可以在 KNL 節(jié)點(diǎn)上運(yùn)行,但是,如何充分利用 KNL 已有資源提升程序執(zhí)行效率成為優(yōu)化并行應(yīng)用的重點(diǎn)。
LAMMPS (large-scale atomic/molecular massively parallel simulator) 是由美國 Sandia 國家實(shí)驗(yàn)室開發(fā)的大規(guī)模分子并行模擬器,支持千萬級以及上億級規(guī)模的原子分子體系,在材料科學(xué)和計(jì)算化學(xué)中占有重要的地位。人們可以利用 LAMMPS 研究晶體材料的結(jié)構(gòu),振動(dòng)光譜以及機(jī)械性質(zhì)等等,是分子動(dòng)力學(xué)重要的一款并行軟件。
LAMMPS 雖然可以運(yùn)行在單處理器的臺(tái)式機(jī)和手提電腦上,但是其設(shè)計(jì)目的是在并行計(jì)算機(jī)上運(yùn)行。本文深入研究 LAMMPS 特性,針對 KNL 特點(diǎn),重點(diǎn)優(yōu)化 LAMMPS 在 KNL 上運(yùn)行效率。通過對不同的庫的測試,最終發(fā)現(xiàn) OPT,USER-INTEL 等庫可大大提高 LAMMPS 的運(yùn)行速度。除了第三方加速包外,使用KNL 多核和高速片上內(nèi)存對其進(jìn)行優(yōu)化也是非常重要的,片上內(nèi)存處于 CPU 和普通內(nèi)存之間,其速度遠(yuǎn)高于訪問內(nèi)存的速度。片上內(nèi)存大大縮短了程序讀取數(shù)據(jù)的速度,使得程序的加速比提升至 49.2x.
本文的測試平臺(tái)為鄭州大學(xué) (鄭州) 超算中心的KNL 集群,測試使用的節(jié)點(diǎn)硬件信息如表 1 所示。從表中可以看到 CPU 計(jì)算節(jié)點(diǎn)單核的處理能力是KNL 節(jié)點(diǎn)的 2x 之多,內(nèi)存也遠(yuǎn)大于 KNL 節(jié)點(diǎn)。
系統(tǒng)和編譯的軟件環(huán)境包括,操作系統(tǒng)為 centos(X86_64),編譯環(huán)境采用 Intel 的編譯器 Intel? C++ and Fortran CoMPIlers,測試應(yīng)用軟件為 LAMMPS 31Mar17.本文主要從加速包和片上內(nèi)存兩方面進(jìn)行優(yōu)化。
表1 硬件信息Table 1 Node information
LAMMPS 是基于 MPI 消息傳遞接口的分子動(dòng)力學(xué)模擬軟件,本文選取 Intel 的編譯器 Intel? C++ and Fortran Compilers 編譯 LAMMPS 源碼。圖 1 為無任何優(yōu)化的情況下對比 LAMMPS 在 CPU 節(jié)點(diǎn)和 KNL節(jié)點(diǎn)上的執(zhí)行效率。橫軸表示 MPI 線程數(shù),縱軸表示時(shí)間。從圖中可以看出,在無任何優(yōu)化的情況下,CPU 節(jié)點(diǎn)執(zhí)行時(shí)間總是小于 KNL 節(jié)點(diǎn)時(shí)間。對于CPU 節(jié)點(diǎn),當(dāng)線程數(shù)為 32 時(shí),程序執(zhí)行時(shí)間最短,達(dá)到 0.4 min 左右。由于 KNL 節(jié)點(diǎn)核數(shù)較多,但每個(gè)核的主頻較低,因此線程數(shù)大于 10 時(shí),執(zhí)行時(shí)間逐漸趨于穩(wěn)定,穩(wěn)定后的執(zhí)行時(shí)間是 CPU 節(jié)點(diǎn)執(zhí)行時(shí)間 6~10x。此外,在線程數(shù)大于 64 時(shí),執(zhí)行時(shí)間有小幅度上升趨勢。
圖2 給出了 LAMMPS 在 KNL 節(jié)點(diǎn)和 CPU 節(jié)點(diǎn)上的加速比對比曲線。藍(lán)色曲線為 KNL 節(jié)點(diǎn)的加速比曲線,紅色曲線為 CPU 節(jié)點(diǎn)的加速比曲線。從圖中可以看出 CPU 節(jié)點(diǎn)的加速比遠(yuǎn)高于 KNL 節(jié)點(diǎn)。對于 CPU節(jié)點(diǎn)而言,線程數(shù)在 32 時(shí),加速比為 9x,達(dá)到最大,而 KNL 節(jié)點(diǎn)在線程數(shù)為 10 時(shí)加速比達(dá)到 2x,達(dá)到最大,當(dāng)線程數(shù)大于 64 時(shí),加速比略有下降。
從以上分析可以看出,當(dāng)線程數(shù)等于節(jié)點(diǎn)物理核心數(shù)時(shí),并行效果最佳。此外,當(dāng)線程數(shù)大于 7 之后,KNL 節(jié)點(diǎn)的加速比基本保持不變,這表明 KNL節(jié)點(diǎn)具有更大的優(yōu)化潛能。
圖1 無優(yōu)化 LAMMPS 執(zhí)行時(shí)間對比Fig. 1 Comparison of original LAMMPS on KNL and CPU
圖2 無優(yōu)化 LAMMPS 加速比對比Fig. 2 Comparison of demonstrated speedups for LAMMPS on KNL and CPU
KNL 節(jié)點(diǎn)作為計(jì)算機(jī)的主力處理器,可以獨(dú)立的運(yùn)行系統(tǒng)或者作為協(xié)處理器。KNL 共有 36 個(gè) PCI 3.0 通道,此外針對網(wǎng)絡(luò)還提供板載 Omni-Path 控制。這些核心采用 14nm 版本的 Silvermont,相比于22 nm 的 P54C 能夠帶來大幅的性能提升。KNL 擁有10 個(gè)內(nèi)存主控,其中兩個(gè)為 DDR4 主控,每個(gè)主控可支持三通道,其他八個(gè)為 MCDRAM.KNL 內(nèi)存有緩存、平坦和混合三種模式。緩存模式下代碼可以不需要任何改變,系統(tǒng)會(huì)組織安排數(shù)據(jù)像三級緩存一樣使用 MCDRAM,此時(shí) DDR4 則會(huì)作為另一級別的內(nèi)存。平坦模式允許 MCDRAM 擁有物理訪問空間,可讓程序員遷移數(shù)據(jù)結(jié)構(gòu)導(dǎo)出或?qū)?MCDRAM。在混合模式下,MCDRAM 一部分用于緩存模式,一部分用于平坦模式。高速 MCDRAM 內(nèi)存的帶寬是 DDR4內(nèi)存的 4x. 因此充分利用 MCDRAM 可對程序進(jìn)行大幅度的加速。
圖3 展示了使用 MCDRAM 進(jìn)行加速后的算例執(zhí)行效率,從圖中可以看出經(jīng)過 MCDRAM 加速后的程序執(zhí)行效率具有較大提升。當(dāng)線程數(shù)大于 20 時(shí),KNL 節(jié)點(diǎn)上的執(zhí)行時(shí)間首次少于 CPU 節(jié)點(diǎn)的執(zhí)行時(shí)間,當(dāng)線程數(shù)為 64 時(shí),時(shí)間最短,與 CPU 節(jié)點(diǎn)的執(zhí)行效率相比,KNL 節(jié)點(diǎn)的執(zhí)行效率最高可達(dá) 1.97x。
圖 4 給出了相應(yīng)的加速比對比曲線,藍(lán)色曲線為KNL 節(jié)點(diǎn)的加速曲線,紅色曲線是 CPU 節(jié)點(diǎn)的加速曲線。顯然,經(jīng)過 MCDRAM 加速過的程序,加速比明顯高于 CPU 節(jié)點(diǎn),最高可達(dá) 3.7x,相比于 KNL 節(jié)點(diǎn)未優(yōu)化程序,最大加速比可達(dá) 25.1x。
根據(jù)官方文檔,OPT、 USER-INTEL 是兩個(gè)重要的第三方加速包。OPT 是由 James Fischer、Vincent Natoli 等人開發(fā)的 LAMMPS 優(yōu)化包,該優(yōu)化包使用模版對 compute 函數(shù)進(jìn)行重寫,從源碼的角度對部分條件判斷進(jìn)行了優(yōu)化,大大的提升了程序的執(zhí)行速度。USER-INTEL 加速包是由 Intel 公司 Mike Brown 維護(hù)的 LAMMPS 加速包,它提供了兩種方法對 LAMMPS 進(jìn)行加速。第一種方式是通過向量化操作進(jìn)行加速。第二種是通過卸載鄰居列表和非綁定計(jì)算來加速英特爾至強(qiáng) Phi 協(xié)處理器。
圖5 給出了 LAMMPS 應(yīng)用算例經(jīng)過 OPT 和USER-INTEL 在 CPU 節(jié)點(diǎn)和 KNL 節(jié)點(diǎn)上的性能表現(xiàn)。從圖中可以看出,應(yīng)用算例的執(zhí)行時(shí)間明顯少于 CPU 平臺(tái),尤其是在線程數(shù)大于 20,應(yīng)用算例在 KNL 節(jié)點(diǎn)上的執(zhí)行效率是 CPU 節(jié)點(diǎn)的 3x。相比 KNL-MCDRAM,優(yōu)化過的程序性能提升了2.0x。
圖3 LAMMPS-MCDRAM 執(zhí)行時(shí)間對比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 優(yōu)化 LAMMPS-MCDRAM 執(zhí)行時(shí)間對比Fig. 5 Comparison of optimal LAMMPS-MCDRAM on KNL and CPU
圖6 優(yōu)化 LAMMPS-MCDRAM 加速比對比Fig. 6 Comparison of demonstrated speedups for optimal LAMMPS- MCDRAM on KNL and CPU
圖6展示了優(yōu)化過的程序加速比情況。顯然,KNL 平臺(tái)的加速比要明顯高于 CPU 平臺(tái)。從圖中可以看出,KNL 平臺(tái)的加速比最大可達(dá) 49.2157,而 CPU 平臺(tái)的最大加速比為 8.9,這表明了 KNL 平臺(tái)在大規(guī)模并行執(zhí)行方面更有潛力。相對于 KNLMCDRAM,加速比提升大約 2x。
Intel 新一代處理器 KNL 為高并行負(fù)載應(yīng)用提供強(qiáng)大的性能支持。本文針對 KNL 平臺(tái)對 LAMMPS進(jìn)行優(yōu)化,通過研究 KNL 和 LAMMPS 特性,提出了利用 KNL 高速片上內(nèi)存的優(yōu)化方案 (KNLMCDRAM),使得 LAMMPS 性能提升了 25x,與CPU 節(jié)點(diǎn)相比提升了 1.5x。此外,利用加速包 OPT和 USER_INTEL 對 LAMMPS 進(jìn)一步優(yōu)化,相比與KNL-MCDRAM 方案,性能提升了 2x,加速比高達(dá)49.2,總體性能是 CPU 節(jié)點(diǎn)的 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]孫迎新, 裴素朋, 劉衛(wèi)民,等. LAMMPS軟件在物理化學(xué)教學(xué)中的應(yīng)用[J]. 廣州化工, 2013, 41(11):238-240.
[10]李伯楊, 聶峰光, 李曉霞,等. GPU并行計(jì)算集群上的LAMMPS分子動(dòng)力學(xué)模擬性能測試[J]. 計(jì)算機(jī)與應(yīng)用化.