程耀東,程垚松,畢玉江,3,高宇,2,李海波,汪璐,姚秋玲
1. 中國科學院高能物理研究所,北京 100049;2. 中國科學院大學,北京 100049;3. 四川天府新區(qū)宇宙線研究中心,四川 成都 610213
隨著裝置復雜度的不斷增加和規(guī)模的不斷擴大,高能物理實驗產(chǎn)生的實驗數(shù)據(jù)越來越多,海量數(shù)據(jù)處理在計算規(guī)模、計算精度、即時性等方面的需求也越來越高,給傳統(tǒng)計算體系架構帶來前所未有的挑戰(zhàn),全球高能物理領域都在積極探索和研究最新的解決方案。ARM(advanced RISC machine)多核架構由于其自身的靈活性和自由性,逐漸成為業(yè)界研究的熱點。近年來,以ARM為代表的國產(chǎn)架構服務器異軍突起。ARM早期專注低功耗領域,在移動端處于領先位置,生態(tài)體系已經(jīng)十分完善。隨著多核異構計算時代和場景多樣化計算時代的到來,國內(nèi)服務器行業(yè)端生態(tài)逐步完善,以ARM為代表的國產(chǎn)架構服務器快速發(fā)展。為此,研究和開發(fā)基于國產(chǎn)多核架構的高能物理計算環(huán)境及軟件有助于實現(xiàn)高能物理數(shù)據(jù)處理系統(tǒng)的自主可控及技術創(chuàng)新,從而促進高能物理計算架構演進,并加速科學發(fā)現(xiàn)。
當前,國內(nèi)外高能物理實驗的數(shù)據(jù)處理平臺以x86 CPU架構為主。同時,圖形處理器(graphics processing unit,GPU)、現(xiàn)場可編程邏輯門陣列(field programmable gate array,F(xiàn)PGA)、張量處理單元(tensor processing unit,TPU)等異構計算設備也開始受到重視,并被應用到高能物理數(shù)據(jù)處理系統(tǒng)中[1]。結合高能物理的數(shù)據(jù)處理需求以及IT的發(fā)展,本文基于國產(chǎn)處理器及服務器等硬件,建設了高能物理數(shù)據(jù)處理系統(tǒng),包括系統(tǒng)及平臺軟件、基礎應用軟件框架以及應用軟件等。此外,本文提出了面向高能物理數(shù)據(jù)處理的可計算存儲技術架構,基于ARM和FPGA構建存儲節(jié)點,修改數(shù)據(jù)分析框架軟件ROOT[2]及數(shù)據(jù)存儲軟件EOS[3]等,把計算任務從計算節(jié)點卸載到存儲節(jié)點,避免數(shù)據(jù)搬運,實現(xiàn)了綠色節(jié)能、運算高效的數(shù)據(jù)處理模式。
高能物理研究組成物質的基本粒子及其相互作用規(guī)律,高能物理實驗是研究高能物理的重要手段。當前,高能物理實驗的規(guī)模通常很大,需要成百上千位科學家參加,同時會產(chǎn)生海量的實驗數(shù)據(jù),一個大型實驗往往產(chǎn)生PB級甚至EB級的數(shù)據(jù)。例如,目前大亞灣核反應堆中微子實驗已經(jīng)累積了2 PB的實驗數(shù)據(jù);北京正負電子對撞機重大改造工程(BEPCII)已經(jīng)累積了10 PB的實驗數(shù)據(jù),并且數(shù)據(jù)量還在不斷增加;江門中微子實驗(JUNO)預計在2022年開始取數(shù),每年將產(chǎn)生3 PB的原始實驗數(shù)據(jù);高海拔宇宙線觀測站(LHAASO)邊建設邊運行,目前已經(jīng)累積了近10 PB數(shù)據(jù),預計2021年完全運行以后,每年將產(chǎn)生8 PB以上的原始數(shù)據(jù);高能同步輻射光源(HEPS)一期建設的15條光束線實驗站預計平均每天產(chǎn)生200 TB的原始實驗數(shù)據(jù),峰值可達每天500 TB;在歐洲的大型強子對撞機(LHC)升級改造后的HL-LHC階段,僅ATLAS探測器的數(shù)據(jù)量就將是目前的10倍以上,在2030年左右將超過3 EB/年,計算量增長60倍以上。這實際上已經(jīng)超出了目前信息技術的處理能力,迫切需要突破新的技術[4]。
因此,高能物理實驗產(chǎn)生的海量實驗數(shù)據(jù)需要借助先進的計算機技術進行處理和分析,同時實驗的需求也助推了信息技術的不斷發(fā)展,比如萬維網(wǎng)、網(wǎng)格計算與云計算以及大數(shù)據(jù)處理等。
粒子在高能物理實驗的探測器中的運動過程被捕獲,產(chǎn)生了大量的電子學信號。然后,通過觸發(fā)判選和在線選擇的事例,由在線數(shù)據(jù)獲取系統(tǒng)(data acquisition,DAQ)以二進制文件的形式記錄下來。這種數(shù)據(jù)被稱作原始數(shù)據(jù),主要包含探測器電子學信號的時間和幅度信息。通過高速以太網(wǎng),原始數(shù)據(jù)文件被傳輸?shù)酱艓煊谰帽4?。對原始?shù)據(jù)進行刻度和重建后,生成重建數(shù)據(jù),供物理分析使用。
離線數(shù)據(jù)處理和物理分析的簡化過程如圖1所示。原始數(shù)據(jù)經(jīng)過離線刻度,能夠消除實驗的各種外部條件(如溫度、氣壓)和探測器本身條件(如探測器高壓)對電子學信號與物理測量之間轉換關系的影響。重建是離線數(shù)據(jù)處理的核心,數(shù)據(jù)重建算法使用刻度算法產(chǎn)生的刻度常數(shù),將探測器記錄的原始數(shù)據(jù)轉化為粒子的動量、能量和運動方向等物理量,生成重建數(shù)據(jù)。物理研究還需要產(chǎn)生與真實數(shù)據(jù)數(shù)量相當?shù)哪M數(shù)據(jù),這部分數(shù)據(jù)也要進行重建。和原始數(shù)據(jù)一樣,所有重建數(shù)據(jù)會被保存在磁帶庫中。物理分析人員利用物理分析工具(如運動學擬合、粒子衰變頂點尋找和粒子鑒別等軟件)分析重建數(shù)據(jù),得到物理研究結果。數(shù)據(jù)處理過程主要包括模擬計算、事例重建以及物理分析3種計算類型。
圖1 高能物理數(shù)據(jù)處理的基本流程
高能物理探測器產(chǎn)生的原始數(shù)據(jù)經(jīng)過復雜的處理后,被轉化為可用于物理分析的數(shù)據(jù)。實驗數(shù)據(jù)的處理和分析都是在離線計算環(huán)境中進行的,包括數(shù)據(jù)存儲、數(shù)據(jù)傳輸、數(shù)據(jù)分析等。典型的高能物理計算環(huán)境如圖2所示,其核心是一個高速、高可靠的網(wǎng)絡,其余子系統(tǒng)連接到這個核心網(wǎng)絡上,包括前端登錄集群、海量存儲系統(tǒng)、計算節(jié)點集群、備份與分級存儲系統(tǒng)、管理系統(tǒng)等。不同的子系統(tǒng)具有不同的功能和配置,功能上相互獨立,整體上協(xié)同工作[5]。
圖2 典型的高能物理計算環(huán)境及其組件
海量存儲系統(tǒng)包括磁盤存儲和磁帶存儲等,分別采用EOS、Lustre、CASTOR等存儲軟件進行管理。其中,EOS是高能物理領域常用的分布式存儲系統(tǒng)之一,通過XRootD協(xié)議透明支持ROOT等數(shù)據(jù)分析框架。計算節(jié)點集群由大量的工作節(jié)點組成,通過作業(yè)管理系統(tǒng)(如HTCondor等)形成統(tǒng)一的資源池。工作節(jié)點是最終運行應用的機器,由CPU、內(nèi)存、硬盤、網(wǎng)卡等硬件和操作系統(tǒng)、應用程序等軟件組成。網(wǎng)格計算將分布在全球的計算資源統(tǒng)一管理起來,是“集群之集群”,形成更大的資源池。管理計算環(huán)境的這些系統(tǒng)軟件通常被稱為“系統(tǒng)軟件”,目前大部分運行在x86架構上。在這種計算與存儲分離的架構中,計算節(jié)點需要從存儲節(jié)點讀取數(shù)據(jù)進行計算,計算結束后再將輸出結果寫回存儲節(jié)點,從而導致數(shù)據(jù)的大量搬運,這成為目前數(shù)據(jù)處理的主要瓶頸之一。
由于ARM等架構的快速發(fā)展,高能物理應用軟件開始從x86架構遷移到其他架構。從1978年啟動首臺巨型機“銀河-I”研制到2010年“天河一號”首次摘下全球超級計算機500強榜單第一名再到今天,我國的超級計算機經(jīng)歷了40多年的“超常速”發(fā)展。隨著我國超級計算機的發(fā)展,相應的軟件、算法及優(yōu)化方法也在不斷跟進。2016年,運行于“神威·太湖之光”之上的應用“千萬核可擴展大氣動力學全隱式模擬”獲得戈登貝爾獎,實現(xiàn)了我國在此大獎上零的突破。何曉斌等人[6]對面向大數(shù)據(jù)異構系統(tǒng)的神威并行存儲系統(tǒng)展開研究,經(jīng)過優(yōu)化的系統(tǒng)使得某些應用獲得10倍以上的性能提升。胡正丁等人[7]研究面向異構眾核超級計算機的大規(guī)模稀疏計算性能優(yōu)化問題,為高能物理格點量子色動力學(lattice quantum chromo dynamics,LQCD)等應用提供借鑒。高能物理研究所與合作單位針對“神威·太湖之光”超級計算機的主從核架構,自主開發(fā)了LQCD中的D-slash熱點程序的申威版本,并針對申威架構進行了優(yōu)化,然后將其集成到國際通用的LQCD開源程序Chroma中,形成了能夠在神威機器上大規(guī)模運行的完整軟件系統(tǒng)[8]。該軟件在神威機器上實現(xiàn)了32 768個申威處理器、約852萬核的大規(guī)模消息傳遞接口(message passing interface,MPI)并行計算,取得了良好的應用效果。
在國外,大型強子對撞機的數(shù)據(jù)處理正在經(jīng)歷重大變化,歐洲核子研究中心(CERN)啟動了相關項目來移植優(yōu)化軟件,以應對LHC Run 3的數(shù)據(jù)處理。CERN計劃將LHCb堆棧從x86_64體系結構移植到AArch64(ARM架構)和ppc64le(PowerPC架構)兩種體系結構[9],旨在評估高級觸發(fā)器(high level trigger,HLT)的計算基礎架構的性能和成本。在所有軟件包中,最大的挑戰(zhàn)是向量化的日益廣泛使用。目前,許多向量化庫專用于x86架構,并且不支持其他架構。盡管存在這些挑戰(zhàn),CERN仍已成功將LHCb高級觸發(fā)器代碼移植到AArch64和ppc64le。根據(jù)在LHCb上進行的測量,與x86架構相比,使用ARM架構的物理結果在可接受的精度上數(shù)值正確,較小的差異可能是由舍入誤差和體系結構中位數(shù)不同(ARMv7和x86 64分別為32位和64位)引起的。雖然現(xiàn)代ARM處理器的功能仍然不如傳統(tǒng)x86處理器強大,但是就能效比而言,ARM的表現(xiàn)更好。CERN近期的一個報告顯示,整個LHC計算網(wǎng)格(LHC computing grid,LCG)堆棧都可以基于AArch64構建,并計劃將ARM版本的LCG堆棧安裝到共享文件系統(tǒng)CVMFS(cern virtual machine file system)[10]上,提供給全球的用戶使用。
基于國產(chǎn)處理器及服務器等硬件,通過移植和開發(fā)相應的系統(tǒng)軟件和應用軟件,筆者團隊構建了高能物理計算環(huán)境及數(shù)據(jù)處理系統(tǒng),其組成如圖3所示。
在圖3中,底層是國產(chǎn)處理器及服務器硬件,如鯤鵬處理器、飛騰處理器、申威處理器以及泰山服務器、“神威·太湖之光”等超級計算機等。在此之上安裝系統(tǒng)軟件與計算平臺軟件,包括CentOS等操作系統(tǒng),HTCondor、Slurm等作業(yè)調(diào)度軟件,Lustre、EOS、CVMFS等數(shù)據(jù)存儲軟件等?;趪a(chǎn)硬件和系統(tǒng)軟件等運行環(huán)境,開發(fā)和移植基礎應用軟件與框架,包括ROOT、GEANT等粒子物理模擬與分析軟件,Chroma等理論物理計算軟件,Gromacs、NAMD等分子動力學模擬軟件。在最上層,支持高能物理實驗及應用軟件,包括LHAASO、BES、JUNO等粒子物理和天體物理實驗,LQCD等理論物理應用,HEPS、CSNS、納米生物等多學科應用。
圖3 基于國產(chǎn)處理器的高能物理數(shù)據(jù)處理系統(tǒng)組成
國產(chǎn)處理器及服務器通常有相匹配的操作系統(tǒng)及編譯器,到目前為止,大部分常用的高能物理基礎軟件和應用軟件已經(jīng)被移植到ARM V8架構(AArch64)上運行,包括EOS、ROOT、GEANT、Chroma、Gromacs、NAMD、LHAASO數(shù)據(jù)重建等。其中,ROOT是由CERN開發(fā)的一個模塊化科學軟件工具包,提供了大數(shù)據(jù)處理、統(tǒng)計分析、可視化和存儲所需的多項功能,是高能物理數(shù)據(jù)處理的基礎。GEANT4是由CERN開發(fā)的一個蒙特卡洛應用軟件包[11],用于模擬粒子在物質中輸運的物理過程,其主要應用領域為高能物理、核物理、加速器物理、核醫(yī)學和太空科學等。這些軟件大多基于C/C++編寫,屬于編譯型語言。x86 CPU屬于復雜指令集計算機(complex instruction set computer,CISC),ARM屬于精簡指令集計算機(reduced instruction set computer,RISC),另外,x86和ARM使用的向量寄存器也不同,向量指令集存在差異,因此原來在x86上開發(fā)的程序必須重新編譯才能在ARM架構上運行。C/C++源碼需要由編譯器、匯編器翻譯成機器指令,再通過鏈接器鏈接庫函數(shù)生成機器語言程序。在軟件移植的過程中,主要步驟包括:獲取源碼;準備GCC等編譯環(huán)境;修改配置文件(configure或者CMakeList.txt),生成編譯規(guī)則文件(Makefile);重新編譯或者替換x86平臺的動態(tài)鏈接庫;執(zhí)行編譯過程,生成可執(zhí)行程序。在代碼的移植過程中,重點需要修改如下內(nèi)容。
● 修改C/C++代碼工程的編譯腳本和編譯選項:以x86下的-m64代碼為例,其主要功能是將應用程序編譯為64位,對應到華為ARM上則采用-mabi=lp64的編譯選項。此外,x86平臺上默認的char類型是一種有符號的類型,對應到華為ARM上則是無符號類型。在移植過程中需要顯示定義,并將char類型定義為有符號類型。
● 移植編譯宏:編譯宏的作用是讓編譯器知道編譯哪些分支代碼能夠在不同架構下達到最優(yōu)性能。x86代碼上有些編譯器自帶自定義宏,比如與smd屬性相關的宏在x86上是SSE開頭的宏,對應到華為ARM平臺上需要自定義它的編譯宏和相對應的分支。
● 移植builtin函數(shù):builtin函數(shù)是編譯器自帶的函數(shù),其在實際遷移項目中相當常見,主要是CRC32校驗值的計算,大部分需移植的builtin函數(shù)集中在SSE intrinsic函數(shù)內(nèi)。
● 移植內(nèi)聯(lián)匯編函數(shù):第一種是指令替換,x86上對應的是BSWAP指令,ARM上對應的是rev指令,其他操作和寄存器是基于內(nèi)聯(lián)匯編的語法規(guī)則進行替換的。第二種是builtin函數(shù)的替換,以x86的指令popcount為例,其是對二進制數(shù)里面的1進行計數(shù),對應到ARM平臺上替換的是popcountll。
● 移植向量指令函數(shù):SIMD是一種單指令處理多數(shù)據(jù)流的并行處理技術,能夠在批量數(shù)據(jù)操作時進行向量化運算加速,具有較高的執(zhí)行效率。Intel的SIMD技術實現(xiàn)包括MMX、SSE、AVX等。ARM的SIMD技術主要通過開源的NEON庫等來實現(xiàn)。
根據(jù)以上規(guī)則和方法,筆者團隊成功地將ROOT 6.20、GEANT4 10.6、EOS 4.7.7移植到華為鯤鵬920處理器及CentOS 7.6上,并部署到高能物理計算平臺上,提供給用戶使用。舉例來說,EOS是CERN采用C++開發(fā)的一套分布式存儲系統(tǒng),依賴于XRootD、sparsehash、ncurses、Protobuf3、ISA-L、Folly C++ library、isa-l_crypto、RocksDB、c-ares等數(shù)十個開源軟件包,需要提前找到這些軟件所需的版本,并進行編譯,最終生成應用軟件包。而且,在EOS中還使用了匯編語言來處理數(shù)據(jù)CRC校驗等操作。為了保持代碼的一致性,筆者團隊重新定義了相關匯編指令,具體如下。
#ifdef __aarch64__
#define __builtin_ia32_crc32si __builtin_aarch64_crc32cw
#define __builtin_ia32_crc32hi __builtin_aarch64_crc32ch
#define __builtin_ia32_crc32qi __builtin_aarch64_crc32cb
#endif // GCC_AARCH64_H
目前,基于ARM的高能物理計算環(huán)境中已經(jīng)裝配了100臺華為泰山200K服務器,每臺服務器配置兩個48核鯤鵬920 5251K處理器或者64核鯤鵬920-6426處理器,安裝CentOS 7.6操作系統(tǒng)以及HTCondor、Slurm作業(yè)調(diào)度軟件和CVMFS、EOS等數(shù)據(jù)存儲軟件。ROOT、GEANT4等基礎軟件庫以及Chroma、LHAASO等應用軟件全部移植成功,并部署在CVMFS上,所有計算節(jié)點均可共享?;贏RM的計算環(huán)境與x86、GPU等其他硬件統(tǒng)一管理,形成異構的計算資源池,共同支持各類高能物理實驗和應用。在該計算環(huán)境中,開展了相關的應用測試,主要包括以下幾方面。
(1)HS06(HEP-SPEC06)基準測試
這是高能物理領域用來評測CPU性能的標準工具。測試時,ARM CPU采用華為鯤鵬920-6426@2.6 GHz處理器,x86 CPU采用6核Intel E5-2620@2.0 GHz(命名為x86-1)和20核Intel Gold 6230@2.1 GHz(命名為x86-2)。測試結果如圖4所示,可以看出,ARM單核CPU性能比x86略低,但是整機性能是Intel E5-2620@ 2.0 GHz的7.27倍以及Intel Gold 6230@ 2.1 GHz的2.02倍。
圖4 HS06 CPU基準測試結果
(2)LHAASO事例重建測試
肩袖撕裂是由肩關節(jié)外傷或慢性病變導致的以肩關節(jié)持續(xù)疼痛和活動功能受限為主要臨床表現(xiàn)的一類疾?。?],其中肩袖撕裂大小、脂肪浸潤程度以及肩袖撕裂后脂肪變性、肌腱分層改變是影響手術療效的重要因素[2-4]。隨著對肩關節(jié)解剖和生物力學研究的不斷深入,以及肩關節(jié)技術的不斷發(fā)展,關于肩袖分層撕裂的報道逐漸增多。盡管目前對于肩袖分層撕裂的原因尚不清楚,但是已有部分文獻報道分層肩袖的存在對肩袖愈合和功能恢復造成消極影響[4,5]。但是對于如何準確的理解肩袖分層撕裂的生物力學和修復方式的選擇至今尚未達成共識。因此,本文擬就肩袖分層撕裂的生物力學、治療現(xiàn)狀及研究進展作一綜述。
采用實際的LHAASO WCDA探測器事例數(shù)據(jù)進行重建。高海拔宇宙線觀測站安裝了3種類型的探測器,包括水切倫科夫探測器陣列(WCDA)、地面簇射粒子陣列(KM2A)以及廣角切倫科夫望遠鏡陣列(WFCTA)。WCDA事例重建程序基于ROOT數(shù)據(jù)分析框架編寫,從探測器獲取的原始數(shù)據(jù)經(jīng)過大量計算后構建出具有物理意義的事例。重建過程是一個典型的數(shù)據(jù)密集型計算,需要輸入和輸出大量數(shù)據(jù)。本測試對一個WCDA原始數(shù)據(jù)進行重建,包含418 816個事例,文件大小為1.1 GB。測試結果如圖5所示,在minnhit=800和minnhit=1 500兩種重建條件下,ARM單核(64核ARM 2.6 GHz)運行時間比20核Intel Gold 6230@2.1 GHz的長40%左右??紤]到LHAASO重建過程具有很好的數(shù)據(jù)并行性,每個文件對應一個重建作業(yè),如果根據(jù)核數(shù)來計算整機性能,那么ARM整機(128核)是x86機器(40核)的2.72倍,與HS06評測結果吻合。
圖5 LHAASO WCDA事例重建時間評測
(3)LQCD應用測試
LQCD是從第一原理出發(fā)求解QCD的非微擾方法,除標準模型基本參數(shù)之外,沒有任何額外模型參數(shù),因而其計算結果被認為是對強相互作用現(xiàn)象的可靠描述,格點計算對QCD理論研究意義重大。LQCD計算是典型的計算密集型應用,畢玉江等人[12]在“天河三號”原型上進行了ARM架構的移植與詳細測試分析,在開啟向量化后,Grid呈現(xiàn)了非常好的可擴展性。此外,本文還對比了x86與ARM的性能,使用兩臺服務器,一臺采用2個Intel(R) Xeon(R) Gold 6248R CPU@3.00 GHz,另外一臺采用2個華為鯤鵬920 7260@2.60 GHz CPU,兩臺機器都配置了256 GB DDR4 2933 MT/s內(nèi)存。測試結果如圖6所示。在整機滿核情況下(Intel x86 48核,華為ARM 128核),x86實測性能為39 GFlops,ARM測試性能為43 GFlops,ARM約高出10%。但是,考慮到x86單核CPU理論性能更強,則ARM的CPU利用率更高,為x86 CPU的2倍。
圖6 LQCD應用測試對比
從內(nèi)存帶寬基準測試工具STREAM的測試結果來看,華為鯤鵬ARM CPU的內(nèi)存帶寬比Intel(R) Xeon(R) Gold 6248R CPU高出20%以上(見表1),內(nèi)存帶寬的提升更有利于LQCD各個計算任務之間的通信,從而提升CPU利用率。
表1 STREAM內(nèi)存帶寬測試對比
從以上基準測試、數(shù)據(jù)密集型應用的測試以及計算密集型應用的測試可以看出,ARM CPU能夠滿足高能物理數(shù)據(jù)處理的需求。雖然在單核性能上ARM CPU弱于x86 CPU,但是ARM CPU擁有更多的核心數(shù)與較高的內(nèi)存訪問帶寬,從而提高了整機的計算性能。
如第2節(jié)所述,高能物理數(shù)據(jù)處理系統(tǒng)采用計算與存儲分離的模式以及經(jīng)典的馮·諾伊曼計算機體系架構,在進行數(shù)據(jù)處理時需要通過網(wǎng)絡從存儲節(jié)點讀取計算節(jié)點,運算后再把結果寫回存儲節(jié)點,難以適應大數(shù)據(jù)驅動的科學計算需求。頻繁的數(shù)據(jù)搬運導致的算力瓶頸以及功耗瓶頸已經(jīng)成為高能物理數(shù)據(jù)處理系統(tǒng)對更先進算法進行探索的限制因素?;谶@個問題,本文提出了面向高能物理數(shù)據(jù)處理的可計算存儲技術解決方案。可計算存儲也被稱為存算一體化,它將數(shù)據(jù)存儲單元和計算單元融為一體,能顯著減少數(shù)據(jù)搬運,極大地提高計算并行度和能效??捎嬎愦鎯Φ臐摿σ鹆吮姸喙竞蜆藴蕶C構的關注。全球網(wǎng)絡存儲工業(yè)協(xié)會(SNIA)成立了一個工作組[13],目標是建立可計算存儲設備之間的互操作性標準??捎嬎愦鎯稍谲浻布f(xié)同的基礎上解決大規(guī)模數(shù)據(jù)處理問題,如數(shù)據(jù)庫查詢優(yōu)化[14]、key-value數(shù)據(jù)壓縮[15]等。本文的可計算存儲服務主要基于國產(chǎn)ARM CPU片上系統(tǒng)(system on chip,SOC)的硬件加速引擎能力實現(xiàn)。
可計算存儲的本質還是存儲,因此通過傳統(tǒng)的存儲系統(tǒng)接口仍然可以訪問底層的存儲設備。其計算能力通過擴展存儲系統(tǒng)接口或者增加參數(shù)實現(xiàn)。比如,通過Open系統(tǒng)調(diào)用可以打開一個數(shù)據(jù)文件,然后進行正常的讀寫操作。同時,可以擴展特殊的參數(shù),如在文件名后加上”&cssapp=decode”,即可完成相應的應用調(diào)用。該方式只需要通過存儲系統(tǒng)調(diào)用即可實現(xiàn)完全本地化的數(shù)據(jù)處理,實現(xiàn)調(diào)度與存儲的完全統(tǒng)一,從而解決高能物理數(shù)據(jù)分析處理的I/O瓶頸問題,其架構如圖7所示。其中,最底層是可計算存儲設備,由內(nèi)存、固態(tài)硬盤、機械硬盤等存儲介質和CPU SOC等計算資源構成。然后,在可計算存儲設備上啟動可計算存儲服務,由存儲服務管理存儲介質,同時根據(jù)存儲客戶端的請求調(diào)用安裝在可計算存儲設備上的應用庫和算法庫,最終執(zhí)行任務。計算節(jié)點通過高速網(wǎng)絡連接到可計算存儲系統(tǒng),基于存儲客戶端實現(xiàn)應用調(diào)用、算法調(diào)用及簡單的任務調(diào)度功能。
圖7 面向高能物理數(shù)據(jù)處理的可計算存儲技術架構
由于ARM架構的開放性,ARM CPU廠商在設計CPU時,一般還集成一些SOC,以提供相關的功能。以華為鯤鵬920為例,除了CPU外,它還集成了RoCE網(wǎng)卡、SAS控制器和南橋,以及加速引擎,包含了KAE加解密、KAEzip等,分別用于加速SSL/TLS應用和數(shù)據(jù)壓縮,可以顯著降低處理器消耗,提高處理器效率。
可計算存儲設備的實現(xiàn)有多種,包括在磁盤控制器、磁盤陣列控制器、存儲服務器、存儲服務等進程中疊加計算功能,分別稱為可計算存儲驅動器(computational storage drive,CSD)、可計算存儲陣列(computational storage array,CSA)、可計算存儲處理器(computational storage processor,CSP)、可計算存儲服務(computational storage service,CSS)等。根據(jù)高能物理計算的特點,本文基于EOS分布式存儲系統(tǒng)設計和研發(fā)了可計算存儲系統(tǒng)。EOS分布式存儲系統(tǒng)由CERN開發(fā),在高能物理領域應用廣泛,主要由元數(shù)據(jù)服務器(MGM)和I/O存儲服務器(FST)構成,可以支持EB級的數(shù)據(jù)存儲,客戶端通過標準的XRootD協(xié)議[16]訪問數(shù)據(jù)。對于用戶或者應用來說,只要支持XRootD協(xié)議,就可以在本地甚至跨地域訪問EOS存儲。因此,該系統(tǒng)不需要修改客戶端訪問模式,原有的應用程序也不需要任何改變,如果用戶希望利用存儲設備上的計算能力,只需要在文件名后加上特定的參數(shù)就可以,其基本架構如圖8所示。
在圖8中,EOS的FST組件與其上安裝的硬盤,再加上ARM CPU,共同構成可計算存儲設備。具體的實現(xiàn)方式是編寫兩個動態(tài)加載的插件(eoscssmgm.so和eoscssfst.so)加在EOS配置文件中,不需要修改EOS的任何代碼,從而保證系統(tǒng)的可擴展性和可移植性。eoscssmgm.so用來解析元數(shù)據(jù)的參數(shù),它根據(jù)需要訪問的文件路徑,將文件訪問請求分配到文件實體所在的FST上。eoscssfst.so用來解析數(shù)據(jù)I/O參數(shù),從中分離出需要調(diào)用的應用或者算法,進而調(diào)用FST上CPU或者FPGA的計算能力,任務執(zhí)行完后將計算結果返回給客戶端。這樣,所有數(shù)據(jù)I/O只在本地硬盤進行,完全避免了從存儲節(jié)點(FST)到計算節(jié)點之間的網(wǎng)絡流量。
高能物理數(shù)據(jù)處理程序通?;赗OOT軟件框架實現(xiàn),因此通過修改ROOT軟件,可將其中某些計算能力卸載到存儲節(jié)點,使可計算存儲技術更加通用,如壓縮/解壓縮、排序、數(shù)據(jù)查找、數(shù)據(jù)索引、數(shù)據(jù)擬合等。目前,筆者團隊已經(jīng)把ROOT移植到ARM CPU上運行,并通過修改ROOT代碼,實現(xiàn)了調(diào)用華為鯤鵬硬件壓縮的能力,從而大幅提升ROOT數(shù)據(jù)壓縮寫入和讀取性能。其他的數(shù)據(jù)處理功能(如數(shù)據(jù)索引、數(shù)據(jù)查找)也可以通過修改ROOT,將其從計算節(jié)點卸載到存儲節(jié)點(FST)上實現(xiàn),從而大大節(jié)省數(shù)據(jù)傳輸時間,提高數(shù)據(jù)分析效率。
本文主要介紹兩類可計算存儲的應用評測,一類是LHAASO KM2A探測器事例解碼,另一類是基于ARM SOC的壓縮。LHAASO KM2A事例解碼是將探測器的原始數(shù)據(jù)轉換成具有物理意義的格式的過程。在傳統(tǒng)的分析模式中,解碼程序在計算節(jié)點上運行,通過網(wǎng)絡讀入二進制格式的探測器數(shù)據(jù),任務結束后輸出ROOT格式的原始數(shù)據(jù)。一個解碼過程所需讀帶寬約為10 MB/s,寫帶寬約為4 MB/s。本文實現(xiàn)了可計算存儲的模式,在計算節(jié)點打開文件時加上“&css=decode”選項,存儲節(jié)點就會在FST存儲服務器上調(diào)用解碼程序,直接從本地硬盤讀取文件,然后將輸出的ROOT寫到本地硬盤,并注冊到分布式存儲文件系統(tǒng)元數(shù)據(jù)中,從而實現(xiàn)“零傳輸”的數(shù)據(jù)分析模式。測試結果如圖9所示,原計算模式下的執(zhí)行速度隨著并發(fā)進程數(shù)的增加逐步變慢,特別是達到10個進程后,數(shù)據(jù)訪問速度達到1 Gbit/s網(wǎng)絡帶寬的限制,執(zhí)行過程從10個進程165.177 s上升到40個進程489.321 s??捎嬎愦鎯δJ较碌膱?zhí)行速度隨并發(fā)進程數(shù)的增加變化不大,當并發(fā)進程數(shù)達到40個左右時,可計算存儲模式的執(zhí)行速度開始變慢,從30個進程的79.623 s增加40個進程的99.632 s,這是因為數(shù)據(jù)訪問速度達到了本地硬盤性能的限制。測試結果顯示,可計算存儲模式可以支持更多的并發(fā)解碼進程。
圖9 LHAASO KM2A Decode應用評測
在ARM CPU中,一般會集成SOC系統(tǒng)級芯片,比如華為鯤鵬920 CPU內(nèi)置了壓縮引擎,本文通過修改ROOT軟件實現(xiàn)對華為KAE zlib壓縮加速庫的調(diào)用。華為鯤鵬920 CPU KAE zlib壓縮引擎單處理器理論上最大壓縮帶寬為7 GB/s,最大解壓帶寬為8 GB/s。在該應用評測中選用LHAASO KM2A事例解碼程序。解碼前,原始文件尺寸為1 GB。解碼在輸出時,可以設置數(shù)據(jù)壓縮算法,由ROOT自動調(diào)用壓縮算法生成ROOT格式的文件。因為華為鯤鵬ARM CPU僅支持zlib壓縮算法,所以這里僅列出ROOT調(diào)用zlib壓縮算法的運行時間對比,如圖10所示。圖例中壓縮算法后的3位數(shù)字,第一位代表算法序號,第二位無意義,第三位代表壓縮等級,同一種壓縮算法中,壓縮等級越高,速度越慢,壓縮率越高。從圖10可以看出,當進程數(shù)在20個以內(nèi)時,采用華為KAE zlib加速庫,可以將解碼程序的執(zhí)行時間減少30%以上。當進程數(shù)增加到40個以后,性能與CPU執(zhí)行zlib相當。
圖10 華為泰山服務器上各種壓縮算法評測
本文基于ARM國產(chǎn)處理器及服務器等硬件,構建了完整的高能物理數(shù)據(jù)處理系統(tǒng),包括EOS等數(shù)據(jù)存儲軟件、HTCondor等作業(yè)調(diào)度軟件、ROOT/GEANT等基礎軟件庫、LHAASO/LQCD等應用軟件,并實現(xiàn)了大規(guī)模的運行。同時,本文還從超大數(shù)據(jù)處理挑戰(zhàn)出發(fā),提出了可計算存儲技術方案,有效地解決了計算過程中因數(shù)據(jù)搬運帶來的I/O瓶頸問題。LHAASO事例重建與解碼等典型應用評測結果說明,基于國產(chǎn)處理架構的高能物理數(shù)據(jù)處理系統(tǒng)運行正確,多核架構的整機性能突出。可計算存儲方式能夠有效地利用存儲節(jié)點的硬件能力,實現(xiàn)典型計算任務的卸載,避免數(shù)據(jù)多次搬運,提高計算效率。
目前,本系統(tǒng)已經(jīng)支持典型的高能物理應用,證明了在國產(chǎn)處理器架構上開展高能物理數(shù)據(jù)處理的可行性和可推廣性。下一步,將移植和優(yōu)化更多的應用,基于可計算存儲技術架構實現(xiàn)更多的計算任務卸載,并進一步將經(jīng)驗推廣到其他相關領域。
致謝
本論文的工作得到國家高能物理科學數(shù)據(jù)中心在數(shù)據(jù)處理環(huán)境及科學數(shù)據(jù)等方面的支持,在此表示感謝!