杜 琦,黃 卉,龔 盛,劉新娃,黃 春
(1.國防科技大學計算機學院,湖南 長沙 410073;2.中南林業科技大學環境科學與工程學院,湖南 長沙 410004)
在高性能計算(HPC)領域,處理器的性能時刻影響著作業計算的效率,過去的幾年中,高性能計算領域受到來自不同廠商的關注,導致芯片架構數量急劇上升,例如Marvell、華為和ARM等更多供應商進入了HPC相關領域,這種趨勢在未來預計仍會繼續。這些芯片具有不同的性能、功耗和特征,對新處理器架構進行基準測試是了解其特性、獲取處理器真實性能最有效的途徑,對后續開展有針對性的代碼優化至關重要[1]。
Cascade Lake是由Intel在2019年4月推出的微處理器體系架構,采用14 nm制程,該架構是在Skylake架構的基礎上優化而來的[2],為了分析此新架構,近來,我們使用SPEC CPU2017基準測試工具對基于Cascade Lake架構的Intel Xeon Gold 6252N處理器進行了系統評測。Intel至強系列處理器共分為4種,分別是用于專家級工作站的Intel至強可擴展處理器、用于空間和功耗受限環境的片上系統的D系列處理器、用于主流工作站的W系列處理器和用于入門級工作站的E系列處理器[3]。本文選擇評測的處理器6252N為Intel至強金牌可擴展處理器,它可以支持更高的內存速度、更多的內存容量和4路可擴展性,擁有較高的可靠性和安全性,并且這款處理器針對要求苛刻的主流數據中心、多云計算以及網絡和存儲工作負載進行了優化,適用于高性能計算機。當前隨著ARM和AMD 處理器的不斷完善,高性能計算處理器市場有了更多選擇,Intel難以避免其他架構處理器帶來的競爭。但是,就目前形勢而言,Intel處理器仍在高性能計算領域占有舉足輕重的地位,市場份額并不會迅速變化[4],并且,英特針對高性能計算還附帶提供了大量的軟件與技術支持,使其處理器能最大程度地提高計算性能。對6252N處理器的評測有利于了解Cascade Lake架構,也有利于獲取該款處理器的真實性能與特征。
評測之前本文對市面上部分處理器基準測試工具進行了選型工作,在GNU Linux平臺,多選擇使用SPEC(Standard Performance Evaluation Corporation) CPU[5]與HPL(High-Performance Linpack) Linpack[6]評測處理器性能。
SPEC CPU是一款開源跨平臺的處理器性能基準測試套件,包括CPU89、CPU92、CPU95、CPU2000、CPU2006和CPU2017共6個版本,由SPEC發布。SPEC是由全球數十所大學、芯片廠商、科研團體等組成的非營利性組織,致力于構建一套標準化的基準測試工具[7]。SPEC CPU基準測試套件由多個應用程序組成,這些程序分別來自不同的特定領域[8],其每一項基準測試都可以獲取對應的測試評分,測試結果在高性能計算機的處理器評測領域具有較高的認可度。常用版本為CPU2006與CPU2017,但是隨著CPU2017的發布,CPU2006即將淘汰,官方推薦使用CPU2017[9],關于SPEC CPU2017的具體細節,將在第2節介紹。
Linpack是國際上使用最廣泛的高性能計算機系統浮點性能基準測試,其實際測試結果受到包括處理器的架構、數量與效率、內存大小、算法相關的參數設置以及網絡連通性等多方面因素的影響[10],因此可以作為衡量機器整體性能的標準之一。測試包括3類,Linpack100、Linpack1000和HPL,前2種由于測試運行規模較小,已不是很適合現代計算機的發展,當前主要使用HPL測試。HPL是針對現代并行計算機提出的測試方式,允許用戶在不修改任意測試程序的基礎上,通過調節問題規模大小(矩陣大小)、使用CPU數目、使用各種優化等方法來執行該測試程序,以獲取最佳的性能。HPL的測試結果是全球超級計算機TOP500排行榜中的排名依據,在國際上廣受認可[11]。
而在微軟Windows平臺多使用CPU-Z[12]與CineBench[13]進行基準測試。CPU-Z是一款由CPUID公司開發的免費處理器評測工具,可收集機器中處理器、緩存、主板和內存等主要設備的信息,也可對處理器進行單線程和多線程的基準測試評分。CineBench是一款由Maxon公司開發的跨平臺免費測試套件,用于評測計算機處理器與GPU的性能,常用版本為R15,可以通過渲染圖形測試,獲取處理器的性能評分。
本文測試基于RedHat Enterprise Linux Server 7.6平臺,鑒于平臺支持性,未選擇使用CPU-Z與CineBench。由于HPL Linpack中使用的Intel MKL(Math Kernel Library)數學庫針對CPU特性做過專門指令級手工優化,體現的是機器的極值計算性能,不能代表典型應用在機器上的表現,而SEPC中的基準測試程序來源于不同的大型應用項目,能很好地體現典型應用在機器上的表現,且SPEC官網的測試結果頁面[14]提供了大量CPU2017評測結果以及配置文件可供參考對比,因而采用SPEC CPU2017作為本文評測的基準測試工具。本文主要研究通過SPEC CPU2017對Intel Cascade Lake架構CPU做評測,主要貢獻如下:
(1)在Intel Cascade Lake架構CPU平臺,進行不同內存頻率、副本數與打開/關閉Turbo的組合測試;
(2)選擇Intel Ivy Bridge和Intel Haswell 2種架構的CPU作為對比測試平臺,對比分析3種架構的SPEC CPU2017表現;
(3)引入計算訪存跑分比PBR(Performance Bandwidth Ratio)的概念,分析3種架構的硬件功能部件的增加對應用程序的性能影響。
本節簡要介紹SPEC CPU2017基準程序,以及STREAM微基準測試和性能評測相關的背景知識。
在SPEC CPU2017推出之前,SPEC CPU2006已使用10余年,而這10多年中,計算機領域已發生了重大變革,例如處理器架構的更新、制作工藝的提升以及不斷增長的內存容量。為了跟上技術進步和新興領域發展的步伐,SPEC推出第6代基準測試SEPC CPU2017[15]。
經過SPEC CPU的版本迭代更新,相比于CPU2006,CPU2017進行了大量的更新和修改,包括添加來自新興領域的基準測試項[16]。首先在測試套件方面,CPU2017由2006版本的2個測試套件Int和Rate升級為4個套件,這4個套件分別是用于測試整型運算速度的Int Speed、用于測試浮點運算速度的FP Speed、用于測試整型并發速率的Int Rate和用于測試浮點并發速率的FP Rate;在測試項方面,CPU2017測試項由CPU2006的29項升級為43項,測試程序集也相應修改,其中Int類別保留CPU2006原有的perlbench、gcc、mcf、omnetpp和xalancbmk 5項,新增人工智能領域的exchange2測試項,有4項測試項修改了名稱,即bzip2、gobmk、sjeng和h254ref分別修改為xz、leela、deepsjeng和x264,刪除了原有的2項測試項hmmer和astar;FP類別保留了原有的bwaves、namd、provray、lbm和wrf 5項測試項,新增8項基準測試項,分別是生物醫學領域的parest、三維渲染和動畫領域的blender、大氣建模領域的cam4、圖像處理領域的imagick、分子動力學領域的nab、計算電磁學領域的fotonik3d、區域海洋模擬領域的roms和海洋氣候模擬領域的pop2,修改cacusADM為cactuBSSN,同時刪除CPU2006原有的gamess、milc、zeusmp、gromacs、leslie3d、dealⅡ、soplex、calculix、GemsFDTD、tonto和sphinx3等10項測試項。與前幾代版本相同,CPU2017的基準測試程序依然使用C/C++和FORTRAN語言編寫,因此可移植到多種CPU架構以及包括UNIX和Windows在內的多種操作系統中,同時,CPU2017在測試中將強制收集來自sysinfo程序的數據,因此生成的報告也更加準確完整。
STREAM[17]是一套綜合性能測試程序集,通過FORTRAN和C 2種高級且高效的語言編寫完成,由弗吉尼亞大學(University of Virginia)提供,通過數組的復制、尺度變換、矢量求和及符合矢量求和等4種不同模式下的雙精度(8個字節)內存讀寫操作來測試高性能計算機的內存帶寬。
超線程是Intel于2002年發布的一種技術,它把多線程處理器內部的2個邏輯內核模擬成2個物理芯片,使單個處理器就能使用線程級的并行計算,進而兼容多線程操作系統和軟件。超線程技術充分利用空閑CPU資源,在相同時間內完成更多工作[18]。
雖然采用超線程技術能夠同時執行2個線程,但當2個線程同時需要某個資源時,其中一個線程必須讓出資源暫時掛起,直到這些資源空閑以后才能繼續。因此,超線程的性能并不等于2個CPU的性能之和。而且,超線程技術的CPU需要芯片組、操作系統和應用軟件的支持,才能比較理想地發揮該項技術的優勢[18]。
Intel睿頻加速技術(Intel Turbo Boost)是Intel對其CPU的時鐘頻率自動加速技術的商業名稱。當程序對CPU資源利用增加時,睿頻加速技術自動開啟,提高CPU頻率,以滿足算力需求[19]。該技術啟動后,處理器將嘗試提高其自身的時鐘頻率,并由處理器的功率、電流、溫度限制、需要提高頻率的處理器核心數量,以及最大睿頻頻率來決定具體頻率的提高。此外,若睿頻加速期間處理器的溫度、功率等超過限制,則處理器的時鐘頻率會下降,以保護處理器[19]。
qkmalloc是Intel自定義內存分配器庫,最早出現在Intel C++編譯器19.0的更新版本1中。它提供了一個C級接口“qkmalloc()”用于替代經典內存分配器malloc分配內存[20]。
jemalloc是由Evans在2005年為FreeBSD開發的新一代內存分配器,用來替代原來的phkmalloc[21]。到目前為止,除了原版jemalloc,還有很多變種被用在各種項目里。
相對經典內存分配器,jemalloc最大的優勢是其強大的多核/多線程分配能力。以現代計算機硬件架構來說,最大的瓶頸已經不再是內存容量或CPU計算速度,而是多核/多線程下的鎖競爭(Lock Contention)。因為無論CPU核心數量如何多,通常情況下內存只有一份,可以說,如果內存足夠大,CPU的核心數量越多,程序線程數越多,jemalloc的分配速度越快,而這一點是經典內存分配器所無法達到的。
從近幾年TOP500發布的超級計算機500強榜單可以看出,Intel處理器的比重越來越大。本文采用Intel 3款不同架構的平臺進行測試,即Intel Cascade Lake架構處理器Intel Xeon Gold 6252N、Intel Haswell架構處理器Intel Xeon E5-2620 v3和Intel Ivy Bridge架構處理器Intel Xeon E5-2692 v2。這3款不同架構處理器在TOP500中都占有一席之地。
本文用到的3款不同架構處理器的測試平臺的主要性能參數如表1所示。

Table 1 Hardware configuration of the platforms表1 測試平臺硬件配置
這3款不同架構處理器除在基礎頻率、Cache容量等存在差別外,對計算性能有較大影響的向量部件、指令集等也有較大的差別,如表2所示。
在2個平臺上,本文均采用Intel Parallel Studio XE套件來編譯SPEC CPU2017的測試題,該

Table 2 Test platform vector parts,FMA parts and deep learning instructions表2 測試平臺的向量部件、FMA部件和深度學習指令
套件包含本次測試必需的C/C++編譯器ICC與FORTRAN編譯器IFort,并且對于x86處理器,Intel編譯器通常可以優化程序代碼,提高應用程序性能,具有較高的兼容性和易用性。測試依賴的GCC編譯器采用9.3.0版本,GCC 9.3.0是由GNU開源組織于2020年3月21日發布的,較早期9代GCC版本相比,修復了眾多已知錯誤,具有較高的穩定性。詳細軟件環境如表3所示。

Table 3 Software configuration of the platforms表3 測試平臺軟件環境
本文采用實測方法測試Intel Xeon Gold 6252N型號CPU。通過SPEC CPU2017測試集,分不同內存頻率、打開/關閉Turbo Boost和打開/關閉超線程等配置組合對該型號CPU進行全面測試,并分析不同配置組合下表現出的性能差異。本節還對比測試了Intel Ivy Bridge和Intel Haswell 2種架構的CPU,根據SPEC CPU2017的測試結果討論了3種架構的差異及其表現。本節使用的測試集為intrate(SPECrate 2017 Integer)和fprate(SPECrate 2017 Floating Point)。
在本文的測試中,3個平臺使用的編譯器都為Intel編譯器,具體軟件環境配置如表3所示。
在Intel Xeon Gold 6252N平臺,SPEC CPU2017的配置文件中使用的編譯選項主要包括“-O3”“-xCORE-AVX512”“-qopt-prefetch”“-iop”“-ljemalloc”和“-lqkmalloc”等,其中“-ljemalloc”和“-lqkmalloc”分別對應jemalloc和qkmalloc內存分配器。
在Intel Xeon E5-2620 v3平臺,SPEC CPU2017的配置文件中使用的編譯選項主要包括“-O3”“-qopt-prefetch”“-iop”“-xCORE-AVX2”等。
在Intel Xeon E5-2692 v2平臺,SPEC CPU2017的配置文件中使用的編譯選項主要包括“-O3”“-qopt-prefetch”“-iop”等。
3個平臺的測試都是采用numactl來綁定CPU核,并使用interleave的方式分配內存。
本節分別測試討論intrate和fprate的單副本、48副本和96副本在內存頻率為2 400 MHz和2 666 MHz、Turbo Boost打開或關閉情況下的性能表現。
4.2.1 單副本
圖1和圖2分別為單副本intrate和fprate的性能表現結果。從圖中可以看出,在Turbo Boost打開或關閉的情況下,內存頻率的差異對單副本的測試性能沒有明顯的影響。

Figure 1 Performance results of single intrate copy圖1 單副本intrate的性能表現結果

Figure 2 Performance results of single fprate copy圖2 單副本fprate的性能表現結果
4.2.2 48副本
圖3和圖4分別為48副本intrate和fprate的性能表現結果。從圖中可以看出,在Turbo Boost打開或關閉的情況下,內存頻率的差異對48副本intrate的測試性能沒有明顯的影響,但對48副本fprate的測試性能影響明顯。相較于2 400 MHz內存頻率,使用2 666 MHz頻率的內存,在48副本fprate的測試中有9個題目的性能有所提高,其中503.bwaves_r、519.lbm_r、521.wrf_r、549.fotonik3d_r 和554.roms_r 等5個題目的性能提升在9%左右;3個題目的性能下降,其中508.namd_r和538.imagick_r 等2個題目分別下降2%和4%;1個題目544.nab_r對內存頻率差異不敏感。

Figure 3 Performance results of 48 intrate copies圖3 48副本intrate的性能表現結果

Figure 4 Performance results of 48 fprate copies圖4 48副本fprate的性能表現結果
4.2.3 96副本
圖5和圖6分別為96副本intrate和fprate的性能表現結果。從圖中可以看出,在Turbo Boost關閉的情況下,內存頻率的差異對96副本intrate的測試性能有一定的影響,而在Turbo Boost打開時則不明顯;在Turbo Boost打開或關閉的情況下,內存頻率的差異對96副本fprate的測試性能影響明顯,與48副本的對比分析基本一致。

Figure 5 Performance results of 96 intrate copies圖5 96副本intrate的性能表現結果

Figure 6 Performance results of 96 fprate copies圖6 96副本fprate的性能表現結果
本節討論測試了Intel Xeon E5-2692 v2和Intel Xeon E5-2620 v3 2種架構CPU的SPEC CPU2017的單副本和多副本,通過不同副本的跑分值來對比分析3種架構的差別。

Figure 7 Comparison of intrate run scores of three CPU architectures圖7 3種架構CPU的intrate跑分值對比

Figure 8 Comparison of fprate run scores of three CPU architectures圖8 3種架構CPU的fprate跑分值對比
圖7和圖8分別為3種CPU架構的intrate和fprate的跑分值對比結果。從圖中可以看出,Intel Xeon Gold 6252N平臺的跑分值明顯優于其他2個平臺的,說明在硬件資源增加的情況下,SPEC CPU2017的跑分值會相應有所提高,但提高的比率是否與硬件資源增加的比率呈相應倍數關系則無法從圖7和圖8中看出來。為了定量分析,本文引入計算訪存跑分比PBR的概念,即:
其中,BenchmarkRatio表示SPEC CPU2017中測試題的跑分值,CPUComputingPerformance表示對應副本數的CPU理論峰值,MemoryBandwidth表示內存帶寬。PBR值越低,說明在單位時間內硬件資源的利用率越高。
4.3.1 理論峰值性能與理論訪存帶寬計算
根據表1和表2給定的參數可以得到3個平臺的理論峰值性能(按基礎頻率計算)和理論訪存帶寬。本文使用的Intel Xeon Gold 6252N平臺擁有2個socket,每個socket有24個計算核心,每個核心的基礎頻率是2.3 GHz,向量寬度是512 bit,有2個FMA部件,故單核心的雙精度浮點理論峰值性能為:
全平臺48核心的雙精度浮點理論峰值性能為3 532.8 GFlops。單核心的32位定點理論峰值性能為:
全平臺48核心的32位定點理論峰值性能為7065.6×109ops。該平臺使用DDR4類型的內存,內存頻率為2 400 MHz,有12個訪存通道,故而最大訪存帶寬為:
本文使用的Intel Xeon E5-2620 v3平臺擁有2個socket,每個socket有6個計算核心,每個核心的基礎頻率是2.4 GHz,向量寬度是256 bit,有2個FMA部件,故單核心的雙精度浮點理論峰值性能為:
全平臺12核心的雙精度浮點理論峰值性能為460.8 GFlops。單核心的32位定點理論峰值性能為:
全平臺12核心的32位定點理論峰值性能為921.6×109ops。該平臺使用DDR4類型的內存,內存頻率為2 133 MHz,有8個訪存通道,故而最大訪存帶寬為:
本文使用的Intel Xeon E5-2692 v2平臺擁有2個socket,每個socket有12個計算核心,每個核心的基礎頻率是2.2 GHz,向量寬度是256 bit,有1個FMA部件,故單核心的雙精度浮點理論峰值性能為:
全平臺24核心的雙精度浮點理論峰值性能為422.4 GFlops。單核心的32位定點理論峰值性能為:
全平臺24核心的32位定點理論峰值性能為844.8×109ops。該平臺使用DDR4類型的內存,內存頻率為2 133 MHz,有8個訪存通道,故而最大訪存帶寬為:
4.3.2 Intel Xeon E5-2692 v2和Intel Xeon E5-2620 v3
本節給出了在打開Turbo、關閉超線程的情況下,2種架構CPU的SPEC CPU2017的單副本和多副本的跑分值。圖9為單副本和多副本intrate的性能表現結果。圖10為單副本和多副本fprate的性能表現結果。

Figure 9 Performance results of single intrate copy and multiple intrate copies圖9 單副本和多副本intrate的性能表現結果

Figure 10 Performance results of single fprate copy and multiple fprate copies圖10 單副本和多副本fprate的性能表現結果
4.3.3 對比分析
本節在打開Turbo、關閉超線程的情況下,根據計算訪存跑分比PBR來分析3種CPU架構的差別。
圖11所示為3種架構的fprate單副本PBR的表現結果。Intel Xeon E5-2692 v2和Intel Xeon E5-2620 v3 2款CPU在向量長度上都是256 bit,后者有2個FMA部件,而前者只有1個。從圖11中可以看出,Intel Xeon E5-2620 v3型號CPU測試平臺在多1個FMA部件、內存頻率提高60%的情況下,單副本的PBR值并沒有相應地按比例降低,且部分題目的PBR值還高于Intel Xeon E5-2692 v2的,這說明增加的FMA部件并沒有得到充分的利用。比較Intel Xeon Gold 6252N和Intel Xeon E5-2620 v3 2款CPU,前者的向量長度為512 bit,后者為256 bit,兩者都有2個FMA部件。從圖11中可以看出,在單副本時增加向量長度并沒有降低題目的PBR值,說明向量部件沒有得到充分的利用。特別地,增加FMA部件或者向量長度使得538.imagick_r題目的PBR值降低。

Figure 11 Single fprate copy PBR results of three architectures圖11 3種架構的fprate單副本PBR的表現結果
圖12為3種架構的fprate多副本PBR的表現結果。從圖12中可知,Intel Xeon E5-2692 v2的PBR值明顯高于Intel Xeon E5-2620 v3的,在硬件配置上后者較前者多了1個FMA部件,但L3 Cache大小只有前者的一半,CPU核數是前者的一半。從前文單副本的PBR分析知道,增加FMA部件對PBR值影響較小,且從圖8可知兩者的多副本得分接近,從而可知L3 Cache的大小對PBR值影響較大。Intel Xeon Gold 6252N與Intel Xeon E5-2692 v2的L3 Cache大小一致,L2 Cache大小是其4倍,前者PBR值明顯低于后者,從而可知L2 Cache的大小對PBR值影響較大。

Figure 12 Multi fprate copies PBR results of three architectures圖12 3種架構的fprate多副本PBR的表現結果
圖13為3種架構的intrate單副本PBR的表現結果。從圖13中可以看出,在單副本時,523.xalancbmk_r和525.x264_r 2個題目的表現在Intel Xeon Gold 6252N平臺較其他2個平臺好,剩余的8個題目的PBR值并沒有因為Intel Xeon Gold 6252N平臺硬件部件的增強而表現更好。從另一個角度說明,在單副本時,Intel Xeon Gold 6252N平臺的硬件資源是相對過剩的,特別地,對于AI領域的531.deepsjeng_r和541.leela_r 2個題目尤為明顯。

Figure 13 Single intrate copy PBR results of three architectures圖13 3種架構的intrate單副本PBR的表現結果
圖14為3種架構的intrate多副本PBR的表現結果。從圖14中可以得知,在多副本的情況下,Intel Xeon Gold 6252N平臺的PBR值明顯優于其他2個平臺的,Intel Xeon E5-2620 v3平臺的PBR值優于Intel Xeon E5-2692 v2平臺的,說明增加FMA部件或者向量長度可以有效地提高定點應用的性能。特別地,在多副本時,AI領域的531.deepsjeng_r、541.leela_r和548.exchange2_r在Intel Xeon Gold 6252N平臺的PBR值優于其他2個平臺的。

Figure 14 Multi intrate copies PBR results of three architectures圖14 3種架構的intrate多副本PBR的表現結果
本文采用SPEC CPU2017對Intel Cascade Lake架構的Intel Xeon Gold 6252N型號CPU進行了不同內存頻率、不同副本數、打開/關閉Turbo的組合測試,總結了不同應用程序在該型號上不同軟硬件配置的性能表現。同時,本文還對比測試了Intel Ivy Bridge架構的Intel Xeon E5-2692 v2型號CPU和Intel Haswell架構的Intel Xeon E5-2620 v3型號CPU,通過引入計算訪存跑分比PBR的概念,分析了3種架構的硬件功能部件的增加對應用程序的性能影響。通過對比測試分析發現,對于浮點應用題目,增加CPU的FMA部件不能顯著提高應用程序的性能;向量長度從256 bit增加到512 bit,對高度向量化的應用具有較好的效果,如圖像處理領域的imagick應用程序;增加L2 Cache和L3 Cache的大小,在多副本的情況下,表現出較好的效果。對于定點應用題目,增加FMA部件或者向量長度可以有效地提高其性能,特別在多副本的情況下效果明顯。