文敏華,陳 江,胡廣超,韋建文,王一超,林新華
(1.上海交通大學(xué)網(wǎng)絡(luò)信息中心,上海 200240;2.英特爾(中國(guó))有限公司,北京 100013)
隨著計(jì)算機(jī)計(jì)算能力的飛速提高,處理器和存儲(chǔ)性能的差距越來越大,數(shù)據(jù)訪問能力越來越成為超級(jí)計(jì)算機(jī)應(yīng)用的瓶頸。在傳統(tǒng)的計(jì)算機(jī)架構(gòu)中,DRAM負(fù)責(zé)銜接處理器和硬盤的數(shù)據(jù)流通。目前,超級(jí)計(jì)算機(jī)上單節(jié)點(diǎn)的DRAM容量已經(jīng)能達(dá)數(shù)百GB。然而,以DRAM為主的內(nèi)存配置方式存在2個(gè)問題:(1)DRAM的延時(shí)通常在幾十納秒,其下一級(jí)的固態(tài)硬盤,延時(shí)能達(dá)到上百微秒至幾十毫秒,二者之間存在巨大的性能差異,一旦數(shù)據(jù)無(wú)法從內(nèi)存讀取,將面臨極大的開銷;(2)隨著對(duì)計(jì)算模擬精度要求的不斷提高,超級(jí)計(jì)算機(jī)上的應(yīng)用在單節(jié)點(diǎn)產(chǎn)生的數(shù)據(jù)量急劇增大,DRAM由于其相對(duì)較高的價(jià)格,難以在容量上大規(guī)模擴(kuò)展。
近年來,研究人員在不斷探索新興的內(nèi)存技術(shù),力求保證字節(jié)尋址能力和出色的可擴(kuò)展性,其中持久內(nèi)存技術(shù)PMEM(Persistent MEMory) 可提供快速的持久存儲(chǔ),補(bǔ)充 DRAM 以擴(kuò)展主存儲(chǔ)器容量。最近推出的 PMEM 技術(shù)中最有影響力的是 Intel傲騰持久內(nèi)存DCPMM(Intel’s optane Data Centre Persistent Memory Module)。
相比于DRAM,持久內(nèi)存可持久化、價(jià)格低、密度更高,Intel傲騰持久內(nèi)存單條容量可達(dá)到128 GB/256 GB/512 GB,且支持按字節(jié)直接尋址(Binary Addressable)。在使用上,持久內(nèi)存可以支持2種模式:內(nèi)存模式和App Direct模式,適用不同應(yīng)用場(chǎng)景。其缺點(diǎn)是帶寬相對(duì)較低、延遲也更高,這對(duì)其在實(shí)際應(yīng)用上的使用有一定影響。
計(jì)算流體力學(xué)CFD (Computational Fluid Dynamics)[1]是超級(jí)計(jì)算機(jī)的一個(gè)重要應(yīng)用領(lǐng)域,是一個(gè)介于數(shù)學(xué)、流體力學(xué)和計(jì)算機(jī)之間的交叉學(xué)科,其主要研究?jī)?nèi)容是通過計(jì)算機(jī)和數(shù)值方法來求解流體力學(xué)的控制方程,對(duì)流體力學(xué)問題進(jìn)行模擬和分析,在航空航天、船舶等領(lǐng)域應(yīng)用廣泛。近年來,隨著計(jì)算精度需求的提高,以及對(duì)LES(Large Eddy Simulation)[2]和DNS(Direct Numerical Simulation)[3]等高精度模型的使用,前沿CFD問題的數(shù)據(jù)量越來越大,因此探索大容量?jī)?nèi)存解決方案具有實(shí)際使用價(jià)值。
本文基于Intel傲騰持久內(nèi)存的內(nèi)存模式評(píng)估常見CFD算法的性能,了解在完全不增加編程難度的情況下,傲騰持久內(nèi)存對(duì)CFD性能的影響。本文的主要貢獻(xiàn)點(diǎn)有如下2點(diǎn):
(1)對(duì)兩代Intel傲騰內(nèi)存分別進(jìn)行了基準(zhǔn)測(cè)試,與DRAM進(jìn)行了對(duì)比,測(cè)試了訪存帶寬;
(2)結(jié)合2個(gè)迷你應(yīng)用和1個(gè)真實(shí)應(yīng)用,評(píng)估了傲騰持久內(nèi)存對(duì)3種常見的CFD算法的性能影響。對(duì)于CFD實(shí)際應(yīng)用,測(cè)試和總結(jié)了持久內(nèi)存對(duì)大數(shù)據(jù)量算例的性能影響。
目前已有一些基于Intel持久內(nèi)存的研究工作。Weiland等人[4]評(píng)估了Intel持久內(nèi)存對(duì)一些內(nèi)存受限和I/O受限的HPC(High Performance Computing)應(yīng)用在性能方面的影響,發(fā)現(xiàn)NUMA(Non Uniform Memory Access)對(duì)性能有顯著影響,必須通過進(jìn)程綁定和盡可能保持?jǐn)?shù)據(jù)本地存儲(chǔ)來保持?jǐn)?shù)據(jù)局部性。Yang等人[5]使用基準(zhǔn)程序測(cè)試了Intel持久內(nèi)存的延遲和帶寬,并提出了一系列可實(shí)踐操作的指南。Akram等人[6]分析了Java負(fù)載在持久內(nèi)存上的性能可擴(kuò)展性。Mason等人[7]發(fā)現(xiàn)持久內(nèi)存在局部性上比DRAM 更敏感,使用持久內(nèi)存的大頁(yè)面的 Linux 策略提供了更好的 TLB 和頁(yè)表局部性,可以有更好的性能。Patil等人[8]評(píng)估了DRAM和持久內(nèi)存混合內(nèi)存系統(tǒng)的功能及其對(duì)高性能計(jì)算應(yīng)用程序的影響,還在持久內(nèi)存的不同配置下測(cè)試了多個(gè) HPC 迷你應(yīng)用程序的性能。以上工作基本上都是基于Intel第1代持久內(nèi)存來開展的,本文分別基于兩代Intel持久內(nèi)存和DRAM內(nèi)存進(jìn)行一系列實(shí)驗(yàn),面向CFD領(lǐng)域3種常見算法進(jìn)行性能評(píng)估。
字節(jié)可尋址持久內(nèi)存是一種非易失性存儲(chǔ)器(即斷電后數(shù)據(jù)仍然存在),并且可以同時(shí)由 CPU 通過加載和存儲(chǔ)操作直接尋址。Intel的傲騰數(shù)據(jù)中心持久內(nèi)存DCPMM產(chǎn)品是一種基于 3D XPoint技術(shù)[9]的字節(jié)可尋址持久內(nèi)存。3D XPoint于 2015 年被提出,是一種新型內(nèi)存技術(shù),其性能與傳統(tǒng)的主存相當(dāng),但是容量要遠(yuǎn)遠(yuǎn)高于DRAM;它的容量可與SSD相比,但是速度與耐用性要高出數(shù)個(gè)量級(jí)。
持久內(nèi)存與DRAM使用相同的硬件接口,與標(biāo)準(zhǔn) DRAM 模塊一起位于 CPU 旁邊的 DIMM 插槽中,與內(nèi)存總線上的 DRAM 共存,既可以用作 DRAM 的替代品,也可以用作高性能和低延遲的存儲(chǔ)設(shè)備。當(dāng)前DCPMM提供了3種不同大小的容量(128 GB、256 GB和512 GB),與 DDR4 DRAM 相比,容量(每個(gè)模塊)增加了約 5~10 倍。盡管 DCPMM 比 DRAM 慢,但與僅使用 DRAM 的解決方案相比,它提供的每個(gè)節(jié)點(diǎn)的內(nèi)存容量要高得多。 DCPMM 不能完全取代 DRAM:每個(gè)內(nèi)存通道(每個(gè)CPU有6個(gè)內(nèi)存通道,每個(gè)內(nèi)存通道有2個(gè)DIMM插槽)必須至少填充一個(gè) DRAM DIMM。
DCPMM 可以在2種主要平臺(tái)模式下運(yùn)行:內(nèi)存模式和App Direct 模式。
(1)內(nèi)存模式:連接在同一個(gè)集成內(nèi)存控制器上的DRAM會(huì)作為持久內(nèi)存的緩存工作。該模式下DRAM無(wú)法直接訪問,而是作為持久內(nèi)存在直接映射緩存策略下的可寫回緩存,持久內(nèi)存作為大容量易失內(nèi)存使用。DRAM作為緩存命中時(shí),性能可以與DRAM相當(dāng);但是不命中時(shí),開銷為DRAM的訪問開銷加上持久內(nèi)存的訪問開銷。其最大的優(yōu)勢(shì)是用戶程序不需要經(jīng)過任何修改可直接運(yùn)行,應(yīng)用沒有移植成本。
(2)App Direct模式:持久內(nèi)存作為可持久化的存儲(chǔ)設(shè)備使用,該模式下持久內(nèi)存和相鄰的DRAM都會(huì)被識(shí)別為操作系統(tǒng)可見的內(nèi)存設(shè)備,持久內(nèi)存是與DRAM分離的持久化設(shè)備,DRAM則用作主存儲(chǔ)器。持久內(nèi)存上部署文件系統(tǒng)后,其訪問時(shí)間比常規(guī)存儲(chǔ)設(shè)備(如SSD)的訪問時(shí)間短得多。其缺點(diǎn)是,用戶需要使用相應(yīng)的編程模型規(guī)范對(duì)持久內(nèi)存進(jìn)行應(yīng)用程序的編程,會(huì)有代碼修改的人力成本。
本文基于Intel第1代(Intel 100系列傲騰持久內(nèi)存,代號(hào)Apache Pass,簡(jiǎn)稱AEP)和第2代DCPMM(Intel 200系列傲騰持久內(nèi)存,代號(hào)Barlow Pass,簡(jiǎn)稱BPS)進(jìn)行實(shí)驗(yàn)。AEP與第2代Intel至強(qiáng)可擴(kuò)展處理器家族Cascade Lake同時(shí)發(fā)布于2019年4月,可與Cascade Lake及之后發(fā)布的處理器搭配使用,單路CPU最多可支持6通道、3 TB持久內(nèi)存,加上DRAM,則單路CPU最高配置主存為4.5 TB。BPS發(fā)布于2021年,需與第3代Intel至強(qiáng)可擴(kuò)展處理器搭配使用,與前一代相比,雖然單條容量不變,但是單路CPU可配置的容量和性能均大幅提升,最多可支持8通道、4 TB持久內(nèi)存,主存最高容量為6 TB。
CFD應(yīng)用核心內(nèi)容是對(duì)偏微分方程組進(jìn)行求解,求解的方法有顯式求解、隱式求解和通過粒子模擬的直接求解等,本文面向這3種基本求解方法分別進(jìn)行性能測(cè)試。
為了比較持久內(nèi)存對(duì)不同CFD算法性能的影響,本文選用了STREAM基準(zhǔn)測(cè)試[10],CloverLeaf[11]和TeaLeaf[12]2個(gè)迷你應(yīng)用以及基于DSMC (Direct Simulation Monte Carlo)[13]的真實(shí)應(yīng)用進(jìn)行測(cè)試。其中,STREAM對(duì)內(nèi)存帶寬進(jìn)行基準(zhǔn)測(cè)試,CloverLeaf是顯式求解方法,TeaLeaf是隱式求解方法,DSMC是直接模擬的粒子方法。
STREAM是一個(gè)簡(jiǎn)單的用于測(cè)試可持續(xù)訪存帶寬的綜合基準(zhǔn)測(cè)試程序,由4種不同算術(shù)操作表征,分別是Copy、Scale、Add和Triad。STREAM最多使用3個(gè)數(shù)組和1個(gè)標(biāo)量進(jìn)行上述基本算術(shù),通過控制數(shù)組維度決定數(shù)據(jù)大小,可以實(shí)現(xiàn)不同數(shù)據(jù)量的內(nèi)存帶寬測(cè)試。本文使用Triad操作測(cè)出的帶寬,即a[j] =b[j]+scalar×c[j],作為測(cè)試基準(zhǔn)。
CloverLeaf 是一個(gè)基于笛卡爾網(wǎng)格顯式求解可壓歐拉方程的迷你應(yīng)用程序,基于交錯(cuò)網(wǎng)格進(jìn)行物理量存儲(chǔ),即每個(gè)單元格存儲(chǔ)3個(gè)值:能量、密度和壓力,速度向量存儲(chǔ)在每個(gè)單元格角。求解時(shí)遍歷每個(gè)單元格,使用Stencil操作更新物理量,在大部分架構(gòu)下其性能受限于訪存帶寬。本文使用bm4(網(wǎng)格規(guī)模1920×1920,數(shù)據(jù)量約0.7 GB)、bm16(網(wǎng)格規(guī)模3840×3840,數(shù)據(jù)量約2.8 GB)和bm64(網(wǎng)格規(guī)模7680×7680,數(shù)據(jù)量約11 GB)3個(gè)算例。
TeaLeaf是在分解的二維和三維規(guī)則空間網(wǎng)格上,借助五點(diǎn)與七點(diǎn)有限差分 Stencil計(jì)算方法,使用隱式求解器來解決線性熱傳導(dǎo)方程的應(yīng)用程序,TeaLeaf使用 Chebyshev求解器作為預(yù)處理器,將CG(PPCG)作為求解器的具體方法。本文使用bm2(網(wǎng)格規(guī)模250×250,數(shù)據(jù)量約56 MB)、bm4(網(wǎng)格規(guī)模1000×1000,數(shù)據(jù)量約230 MB)和bm5(網(wǎng)格規(guī)模4000×4000,數(shù)據(jù)量約2.8 GB)3個(gè)算例。
DSMC算法是一種基于統(tǒng)計(jì)學(xué)的流場(chǎng)數(shù)值仿真程序,基于Boltzmann方程模擬仿真粒子。它用大量的模擬分子代替真實(shí)氣體分子,并用計(jì)算機(jī)模擬分子的運(yùn)動(dòng)和碰撞過程,最后通過統(tǒng)計(jì)模擬分子的運(yùn)動(dòng)狀態(tài)得到流體的宏觀量。這種直接模擬方法極大簡(jiǎn)化了計(jì)算模型,從而使計(jì)算過程得到簡(jiǎn)化。同時(shí),由于對(duì)分子的移動(dòng)和碰撞進(jìn)行了解耦,因此在碰撞計(jì)算中可以引入各種碰撞模型,極大地?cái)U(kuò)大了DSMC方法的適用范圍。DSMC對(duì)訪存帶寬和延遲均有一定要求。由于DSMC是對(duì)粒子進(jìn)行模擬,對(duì)計(jì)算量和數(shù)據(jù)量均有極大的需求,本文基于DSMC對(duì)大數(shù)據(jù)量(100 GB以上)的算例進(jìn)行測(cè)試。
本文分別基于AEP和BPS進(jìn)行測(cè)試,AEP服務(wù)器配置雙路Intel(R) Xeon(R) Gold 6248R CPU,12條32 GB 2 666 MT/s DRAM內(nèi)存和12條AEP 128 GB持久內(nèi)存,BPS服務(wù)器配置雙路Intel(R) Xeon(R) Gold 6338 CPU,16條32 GB 2 933 MT/s DRAM內(nèi)存和16條BPS 128 GB持久內(nèi)存,具體硬件參數(shù)如表1所示,所有測(cè)試算例均運(yùn)行于單節(jié)點(diǎn)。2臺(tái)服務(wù)器使用相同的軟件環(huán)境配置:操作系統(tǒng)版本為CentOS Linux 7.7,編譯器使用Intel Parallel Studio 2020。
Table 1 Testing platform environment configuration
對(duì)于AEP服務(wù)器和BPS服務(wù)器,本文分別基于配置了持久內(nèi)存的內(nèi)存模式和不配置持久內(nèi)存的純DRAM模式進(jìn)行一系列實(shí)驗(yàn),以對(duì)比持久內(nèi)存對(duì)應(yīng)用性能的影響。在測(cè)試使用純DRAM的性能時(shí),采用拔掉相應(yīng)服務(wù)器持久內(nèi)存的方案,文中仍稱為AEP/BPS服務(wù)器,圖中以AEP_DRAM/BPS_DRAM指代。
本文用STREAM基準(zhǔn)測(cè)試測(cè)試了DRAM和兩代傲騰持久內(nèi)存的訪問帶寬,STREAM基準(zhǔn)測(cè)試中,會(huì)對(duì)所有內(nèi)存操作重復(fù)20次后取平均值。
6.1.1 NUMA訪存影響
從已有研究結(jié)果[4]可知,NUMA對(duì)持久內(nèi)存性能影響較大。本文通過numactl命令進(jìn)行內(nèi)存和CPU的綁定,分別測(cè)試單CPU訪問同socket內(nèi)存和跨socket內(nèi)存時(shí)的帶寬,結(jié)果如圖1所示。可以看到,無(wú)論是AEP還是BPS,單CPU跨socket訪問對(duì)帶寬的影響都非常大,訪存帶寬降低50%左右。
Figure 1 Performance impact of NUMA圖1 NUMA訪存影響
6.1.2 持久內(nèi)存和DRAM的帶寬比較
圖2展示了節(jié)點(diǎn)整體訪存帶寬,這里設(shè)定的數(shù)據(jù)量大小約為2 GB,對(duì)于持久內(nèi)存節(jié)點(diǎn),該數(shù)據(jù)量遠(yuǎn)遠(yuǎn)小于作為緩存的DRAM容量,然而,持久內(nèi)存節(jié)點(diǎn)的訪存帶寬均顯著低于DRAM的,約為后者的70%,因此可以推斷,對(duì)于有訪存限制的應(yīng)用,在內(nèi)存模式下,數(shù)據(jù)量即使小于配置的DRAM內(nèi)存,性能也會(huì)受到一定影響。由于通道數(shù)和內(nèi)存頻率的提升,BPS的帶寬比前一代AEP的訪存帶寬有顯著提高,純DRAM方案和持久內(nèi)存方案帶寬均提升約50%。
Figure 2 DRAM bandwidth vs PMEM bandwidth圖2 DRAM帶寬與PMEM帶寬
6.1.3 不同數(shù)據(jù)規(guī)模的訪存帶寬
圖3和圖4分別展示了DRAM和持久內(nèi)存在不同數(shù)據(jù)規(guī)模下STREAM帶寬的測(cè)試結(jié)果。對(duì)于DRAM,在其容量范圍內(nèi),改變數(shù)據(jù)規(guī)?;旧蠈?duì)帶寬沒影響,而對(duì)于持久內(nèi)存,測(cè)試出來的帶寬會(huì)隨著測(cè)試的數(shù)據(jù)規(guī)模的增大而減小,這意味著隨著數(shù)組增大,配置持久內(nèi)存的服務(wù)器實(shí)際訪存性能會(huì)降低。因此可以推斷,對(duì)于帶寬敏感的應(yīng)用,不管是AEP還是BPS,數(shù)據(jù)量增大以后,持久內(nèi)存的測(cè)試性能都會(huì)受到影響。
Figure 3 Bandwidth of DRAM under different data size圖3 不同數(shù)據(jù)規(guī)模DRAM的帶寬
Figure 4 Bandwidth of PMEM under different data size圖4 不同數(shù)據(jù)規(guī)模持久內(nèi)存的帶寬
CloverLeaf采用顯式求解算法,其核心部分是Stencil算法,該算法對(duì)帶寬的依賴比較大。本文基于OpenMP并行版本測(cè)試了不同算例的結(jié)果,其擴(kuò)展性如圖5和圖6所示,縱坐標(biāo)為同線程數(shù)下CloverLeaf在持久內(nèi)存和DRAM上的相對(duì)性能。線程數(shù)較小時(shí),DRAM和持久內(nèi)存的性能差異不大,隨著線程數(shù)的增加,二者性能差異有稍微增加的趨勢(shì),對(duì)于AEP,性能差異最大時(shí),持久內(nèi)存性能約為DRAM的85%,對(duì)于BPS,其與DRAM的性能差異則更小,大部分在90%以上,最大差異為87%。
Figure 5 Performance comparison of AEP PMEM and DRAM based on CloverLeaf圖5 基于CloverLeaf的AEP持久內(nèi)存與DRAM性能比較
Figure 6 Performance comparison of BPS PMEM and DRAM based on CloverLeaf圖6 基于CloverLeaf的BPS持久內(nèi)存與DRAM性能比較
對(duì)于同樣的算例,在都采用服務(wù)器所有核心運(yùn)行的情況下,本文對(duì)比了不同配置下的相對(duì)性能,如圖7所示,這里以AEP服務(wù)器的純DRAM性能為基準(zhǔn)進(jìn)行比較。相比AEP,BPS的性能有了顯著的提升,對(duì)于純DRAM方案,性能提升了30%~40%,對(duì)于持久內(nèi)存方案,性能提升了40%以上。
Figure 7 Performance comparison of BPS and AEP圖7 BPS與AEP性能比較
TeaLeaf采用隱式求解算法,對(duì)延遲和帶寬有一定要求。本文選用3個(gè)小數(shù)據(jù)量(最大2.8 GB)的算例進(jìn)行測(cè)試,不同算例的擴(kuò)展性結(jié)果如圖8和圖9所示,持久內(nèi)存和DRAM的性能差異較小,對(duì)AEP來說,差異最大的算例,性能為DRAM的92%,對(duì)BPS來說,幾乎所有算例的性能均與DRAM的差不多。
Figure 8 Performance comparison of AEP PMEM and DRAM based on TeaLeaf圖8 基于TeaLeaf的AEP持久內(nèi)存與DRAM性能比較
Figure 9 Performance comparison of BPS PMEM and DRAM based on TeaLeaf圖9 基于TeaLeaf的BPS持久內(nèi)存與DRAM性能比較
對(duì)于TeaLeaf,在都采用服務(wù)器所有核心運(yùn)行的情況下,不同配置下的性能對(duì)比如圖10所示,對(duì)于規(guī)模較小的bm2算例,相比AEP,BPS的性能有所下降,本文認(rèn)為這是因?yàn)橐?guī)模較小時(shí),可擴(kuò)展性較差,BPS服務(wù)器具有64核心,而AEP服務(wù)器是48核心,對(duì)于規(guī)模相對(duì)較大的bm4算例和bm5算例,BPS服務(wù)器性能提升約20%~30%。
Figure 10 Performance comparison of BPS and AEP based on TeaLeaf圖10 基于TeaLeaf的BPS與AEP性能比較
DSMC是基于粒子網(wǎng)格方法的CFD算法,可以獲得高精度的模擬結(jié)果,對(duì)計(jì)算量和存儲(chǔ)的需求均十分龐大,本文基于真實(shí)的DSMC應(yīng)用進(jìn)行測(cè)試,單節(jié)點(diǎn)數(shù)據(jù)量在100 GB以上,線程數(shù)較少時(shí)難以進(jìn)行測(cè)試,因而使用節(jié)點(diǎn)內(nèi)的所有CPU核心計(jì)算,并通過調(diào)節(jié)每個(gè)網(wǎng)格的粒子數(shù),來調(diào)整每個(gè)節(jié)點(diǎn)的數(shù)據(jù)量,最大規(guī)模數(shù)據(jù)量達(dá)到了1 TB。
不同配置下的性能對(duì)比如圖11所示,該算例占用內(nèi)存的數(shù)據(jù)量約為130 GB,對(duì)于該算例AEP和BPS性能差距不大,在5%以內(nèi)。本文認(rèn)為,這是因?yàn)橄鄬?duì)于CloverLeaf和TeaLeaf這種對(duì)訪存性能敏感的程序,DSMC在算法上具有更高的計(jì)算/訪存比,對(duì)訪存的性能相對(duì)沒有那么敏感。
Figure 11 Performance comparison of BPS and AEP based on DSMC圖11 基于DSMC的BPS與AEP性能比較
為測(cè)試大規(guī)模數(shù)據(jù)對(duì)性能的影響,本文在BPS節(jié)點(diǎn)上進(jìn)行了不同數(shù)據(jù)量的測(cè)試,并以純DRAM運(yùn)行的時(shí)間為基準(zhǔn)進(jìn)行對(duì)比,結(jié)果如圖12所示。對(duì)于DSMC,數(shù)據(jù)規(guī)模較小時(shí),持久內(nèi)存和DRAM性能相差不大,但隨著數(shù)據(jù)規(guī)模的增大,運(yùn)行時(shí)間顯著增加,且增加比例大于數(shù)據(jù)量增加的比例,與DRAM的性能差異也顯著增加,訪存性能對(duì)程序整體性能的影響加大,與前面的STREAM測(cè)試結(jié)果類似。數(shù)據(jù)量為260 GB時(shí),持久內(nèi)存性能為DRAM的67%。另外,持久內(nèi)存可以支撐1 TB以上數(shù)據(jù)量的算例運(yùn)行,而該算例的DRAM方案則因內(nèi)存不足而無(wú)法測(cè)試。
Figure 12 Comparison of running time of BPS PMEM and DRAM under different data sizes圖12 不同數(shù)據(jù)量下 BPS PMEM與DRAM的運(yùn)行時(shí)間對(duì)比
本文面向常見CFD算法對(duì)Intel傲騰持久內(nèi)存進(jìn)行了性能測(cè)試,評(píng)估持久內(nèi)存2種使用模式中最易于使用的內(nèi)存模式對(duì)CFD應(yīng)用的性能影響,并對(duì)比了兩代傲騰持久內(nèi)存的性能差異。通過STREAM基準(zhǔn)程序,測(cè)試了持久內(nèi)存在不同數(shù)據(jù)規(guī)模下的帶寬,并發(fā)現(xiàn)配置持久內(nèi)存后訪存帶寬隨數(shù)據(jù)規(guī)模的增大而降低,而純DRAM的測(cè)試帶寬則幾乎不受影響。
在此基礎(chǔ)上,本文還測(cè)試了3種常見的CFD算法。對(duì)于CloverLeaf和TeaLeaf 2個(gè)迷你應(yīng)用,本文基于小規(guī)模數(shù)據(jù)量的算例進(jìn)行了不同計(jì)算配置的性能對(duì)比,結(jié)果顯示,在該數(shù)據(jù)量下,對(duì)于這2種迷你應(yīng)用所代表的CFD計(jì)算模式,持久內(nèi)存的引入會(huì)帶來性能少量下降,性能損失在20%以內(nèi),而數(shù)據(jù)量越小,帶來的性能損失也越小。對(duì)于計(jì)算/訪存比相對(duì)較大的DSMC算法,在數(shù)據(jù)量達(dá)到100 GB時(shí)持久內(nèi)存的引入也不會(huì)帶來顯著性能損失,但是當(dāng)數(shù)據(jù)量進(jìn)一步增大,對(duì)訪存性能要求增加時(shí),持久內(nèi)存的性能會(huì)顯著低于純DRAM的性能,在260 GB的數(shù)據(jù)量時(shí)二者性能差距在30%以上。另一方面,當(dāng)數(shù)據(jù)量再增加時(shí),DRAM由于容量不足而無(wú)法支撐計(jì)算,持久內(nèi)存則可以支撐TB級(jí)數(shù)據(jù)量的數(shù)值模擬。
因此,對(duì)于CFD應(yīng)用,基于內(nèi)存模式的持久內(nèi)存方案,最大的優(yōu)勢(shì)是在不增加移植成本的情況下,提供大容量的訪存方案。但是,該模式難以適用于所有算法和數(shù)據(jù)規(guī)模。在算法選擇上,持久內(nèi)存適合于計(jì)算/訪存比較高的計(jì)算模式,而對(duì)于訪存帶寬受限的求解模式,隨著數(shù)據(jù)量的增加,持久內(nèi)存方案性能會(huì)有較大損失,其大內(nèi)存容量的意義則大打折扣。
對(duì)比第1代Intel傲騰持久內(nèi)存,基于第2代持久內(nèi)存的配置方案由于訪存性能有了顯著增加,不管對(duì)于STREAM基準(zhǔn)測(cè)試還是實(shí)際的CFD應(yīng)用,性能大部分都有約20%~50%的顯著提高。
本文對(duì)內(nèi)存模式下的CFD常見算法進(jìn)行了性能測(cè)評(píng),在后續(xù)的工作中,將主要進(jìn)行以下3方面的工作:(1)對(duì)App Direct模式下的性能進(jìn)行評(píng)測(cè);(2)在本文的實(shí)驗(yàn)結(jié)果中,內(nèi)存模式下即使數(shù)據(jù)量遠(yuǎn)遠(yuǎn)小于作為緩存的DRAM容量,訪存帶寬也會(huì)顯著低于純DRAM配置,將通過一些性能分析工具,深入分析其中機(jī)理;(3)結(jié)合DSMC算法和持久內(nèi)存模式性能特征,對(duì)DSMC真實(shí)算例進(jìn)行性能優(yōu)化。