999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Silicon-Crystal應用在SW26010處理器上的移植與優化

2021-05-24 09:01:16朱文強梁建國
小型微型計算機系統 2021年6期
關鍵詞:優化

朱文強,傅 游,梁建國,郭 強,花 嶸

1(山東科技大學 計算機科學與工程學院,山東 青島 266590)2(山東省計算中心(國家超級計算濟南中心),濟南 250101)

E-mail:huarong@sdust.edu.cn

1 引 言

分子動力學(molecular dynamics,MD)[1]作為一個科學計算領域的重要應用,它是高性能計算領域中具有很強代表性和挑戰性的問題之一.針對不同的體系結構,研究者在HPC平臺上提出各種技術進行分子動力學的加速運算.

2007年,James N.Glosli等[2]利用分子動力學實現了Kelvin-Helmholtz(KH)不穩定性的首次微米級模擬,進展主要體現在容錯、內存優化和高效并行3個方向;2009年,David E等[3]針對分子動力學模擬生物分子系統,制造了一臺特殊的超級計算機Anton,特殊的硬件極大地提高了MD的計算速度;張勤勇等[4]分析討論了分子動力學模擬的算法特征和計算特點,采用基于消息傳遞的MPI設計平臺,在可擴展機群上實現了并行化,獲得了90%以上的并行效率;趙文輝等[5]提出一種針對分子動力學的Atomreorder算法,通過重新調整粒子順序來增強程序的局部性,進而減少Cache的丟失.

隨著圖形處理單元(Graphics Processing Units,GPUs)功能的增強,加之分子動力學大多為數據并行計算,非常適合在其上運行.Jens Glaser等[6]在GPU上對HOOMD-blue程序進行并行優化,最終較CPU取得了12.5倍的加速;楊決寬等[7]在GPU平臺提出了一種加速分子動力學仿真計算的方法,并計算了固體氬的導熱系數,獲得10到11倍的加速;張帥等[8]在GPU平臺將分子動力學模擬中的原子劃分和空間劃分相結合,優化了用于近程力計算的Cell Verlet算法.目前常見的分子動力學軟件NAMD,VMD,LAMMPS,AMBER,GROMACS等均已發布支持GPU計算的版本.硅材料作為半導體和太陽能電池行業的重要材料之一,非平衡分子動力學模擬是研究硅晶體熱物理性質的有力工具,克服了體狀硅和硅納米線導熱系數的有限尺寸效應[9].針對硅晶體分子動力學模擬,中科院過程所的侯超峰等[10,11]在GPUs上實現了優化.

在“神威·太湖之光”[12]上開展分子動力學研究的單位也較多.馬躍等[13]提出一種基于收斂策略的國產CPU性能測試模型;中國科學院過程工程研究所在此系統上對Cahn-Hilliard方程進行并行優化,將規模擴展到了1,060萬核,雙精度浮點運算獲得了49.39PFlops性能[14];中國科學技術大學將納米級粒度分子動力學軟件NAMD在該系統上進行移植和優化,針對從核的結構和主從核執行關系對應用進行優化,優化后單個核組的性能較Intel Xeon E5-2650 v2提高3倍,但在擴展性方面,至多可達到325萬核,仍需解決多節點性能與可擴展性問題以及整機優化、調度與負載平衡策略等問題[15];湖南大學從分子動力學算法出發,針對SW26010的體系結構特征,提出了一種基于簇粒子的新算法,然后逐步實現了3種仿真優化方法:SW26010的并行擴展、內存訪問優化和矢量化.經過優化處理后,在單個計算節點上實現了14倍加速,實驗中應用了近24萬個計算節點(60萬核),獲得了近似線性的加速[16];山東大學在該系統上進行了分子動力學軟件LAMMPS模擬,從4個方面進行性能提升,優化后單個計算節點的性能相當于一百多個Intel Xeon E5-2650 v2的性能,使用16,384計算節點獲得了2.43Pflops性能[17];中國科學技術大學在該系統上重構分子動力學應用程序GROMACS,主要也是解決內存帶寬限制的難題,最終單核組較主核版性能提升16倍,并且設法實現了300萬原子核移到798720個計算節點[18].

以上分子動力學程序的移植與優化都取得了較好的效果,但是本文是針對硅晶體分子動力學模擬程序的移植與優化,原子結構以及模擬算法都有較大不同,另外,硅晶體分子動力學模擬使用了更為復雜的多體Tersoff勢[19-21],使得程序在SW26010處理器上移植時內存受限問題變得更加突出,移植難度加大.徐陽等[22]利用OpenACC將Silicon-Crystal應用移植到神威太湖之光上,并進行了數據流驅動任務圖并行化,但他們主要偏重于并行編程模型的研究,而本文主要研究的是Silicon-Crystal應用基于MPI+Athread的并行移植與優化,主要是通過將多種優化方法相結合來克服SW26010內存受限問題.

2 背景介紹

2.1 SW26010處理器

“神威·太湖之光”計算機系統是由國家并行計算機工程技術研究中心自主技術研制的超級計算機,該計算機系統峰值運算速度為125.43TFlop/s,功耗為15.37KW,整機內存總容量為1024TB,訪存總帶寬為4473.16TB/s.計算結點采用的是片上計算陣列集群和分布式共享儲存結合的SW26010異構眾核處理器,處理器的頻率為1.45GHz,包括4個管理單元MPE、4個計算單元CPE及4個內存控制器(Management Controller,MC)單元組成,其中每個CPE單元由8×8陣列的64核心組成,所以SW26010處理器共260個核心(4*64+4=260);每個核組有8GB本地內存,4個核組共32GB內存,每個運算核心有64KB的局部存儲器LDM,運算核心可以離散訪問主存,也可以通過 DMA方式將主存數據批量獲取到LDM中,同時運算核心陣列同行或同列還可以采用寄存器通信方式進行通信.

SW26010處理器加速線程庫(Athread庫)是針對主從加速編程模型所設計的程序加速庫.用戶通過調用Athread接口函數管理從核的計算和訪存,每個線程的創建、回收、調度控制和中斷異常管理等操作都需要用戶調用接口實現,需要用戶更精細地編寫代碼,以避免造成線程阻塞.該方式提高了執行效率,但也增加了調試難度和出錯率.

2.2 Silicon-Crystal應用介紹

Silicon-Crystal應用來源于晶體硅的結晶生長.隨著半導體行業以及太陽能電池行業的發展,對晶體硅的數量和質量要求不斷提高,研究硅晶體生長以更加精確地指導硅晶體的生產具有重要的意義.硅晶體的每個原子周圍有4個近鄰的原子,4個近鄰原子之間構成正四面體結構,中心原子處在正四面體結構中心,其晶體結構如圖1所示,硅晶體由這樣的四面體累積起來構成金剛石結構.這4個鄰居原子的位置各自處于正四面體的4個頂角上,頂角上的原子與中心原子分別提供一個價電子為這兩個原子共同擁有,從而形成共價鍵,每個硅原子和周圍的4個原子組成4個共價鍵,所以硅晶體屬于原子晶體.

圖1 硅晶體結構示意圖Fig.1 Schematic diagram of silicon crystal structure

Silicon-Crystal應用運用MD方法分析了目前比較常用的勢函數在模擬硅晶體生長方面的差異,最終選定了Tersoff勢來描述硅晶體原子間的相互作用.Silicon-Crystal應用的主要計算核心為計算Tersoff勢的TersoffPotent函數,Tersoff勢是由Tersoff根據量子力學中鍵序的概念,基于簡單的量子力學理論而提出的原子間相互作用勢模型,為一種超級勢,能較好地描述硅的非正面體結構,Tersoff勢的主要表達式為:

(1)

(2)

VR(r)=Aexp(-λ1r)

(3)

VA(r)=-Bexp(-λ2r)

(4)

其中,fc表示截斷函數,Rij表示截斷半徑,rij表示原子i和j的距離,VR表示鄰居原子間的排斥力,VA表示鄰居原子間的吸引力,bij表示原子i與原子j間的鍵級.其它參數如表1所示.

表1 Si的Tersoff勢函數參數表Table 1 Major parameters for Tersoff potential function

3 Silicon-Crystal應用在SW26010上的移植

3.1 Roofline模型

Roofline模型是一個可以將浮點性能、計算密度和存儲性能等關聯起來可視化的性能分析模型.針對特定硬件平臺的Roofline模型的建立可以指導該處理器上不同類型應用程序的優化.

Roofline曲線取決于浮點性能峰值和內存理論帶寬,本文針對SW26010處理器的浮點性能峰值和訪存帶寬分別進行測試和計算.

SW26010主從核均支持256b向量化指令,以及乘加融合指令,每個從核支持一條浮點數雙精度流水線,主核支持雙浮點數流水線.由此可得,SW26010的雙精度理論峰值性能為:

主核:4×1.45×8×2=23.2GFlops

從核:64×1.45×4×2=742.4GFlops

SW26010處理器:4×23.2+4×742.4=3.06GFlops

從以上計算結果可知,SW26010的算力主要集中在從核,所以SW26010上進行應用的移植主要是要發揮其從核的性能,因此接下來主要刻畫SW26010從核的訪存帶寬.從CPE角度看,CPE陣列的內存層次結構包括3個級別:與MPE共享的8GB主存、64KB SPM和寄存器.CPE陣列訪存方式主要有兩種:1)通過具有全局內存地址的常用裝入/存儲指令(gld/gst)離散訪問主存;2)通過直接內存訪問DMA方式訪問主存.

通過STREAM Triad基準測試測得訪問SPM的峰值帶寬最高為154.0GB/s,DMA方式訪存峰值帶寬為90.4GB/s,MPE訪存峰值帶寬為39.7GB/s,gld/gst方式訪存效果最差,峰值帶寬僅為5.92GB/s.

根據上述數據,可以得到SW26010處理器的Roofline性能曲線如圖2所示.

3.2 移植原則

結合SW26010處理器的Roofline模型與Silicon-Crystal程序的特征,確定了移植過程中4條需要遵循的原則.

圖2 SW26010的Roofline模型Fig.2 Roofline model of SW26010

1)Silicon-Crystal應用是一個計算密集型的應用,從Roofline模型構建過程可知,SW26010處理器的主要算力在從核陣列,因此,應盡量將應用的熱點函數放在從核陣列上進行計算,同時保證從核陣列負載平衡.

2)從Roofline模型可以看出,SW26010有限的內存帶寬(90.4GB/s)導致較高的每字節浮點運算比率(33.85Flops/Byte),超過 KNL(7.05Flops/Byte)的4倍多,而其處理器峰值性能(3.06TFLops)卻與Intel KNL 7290(3.46TFlops)相當,這意味著SW26010處理器強大的運算能力會受到內存帶寬的限制.為避免使應用變成訪存受限,必須充分利用內存帶寬.為了最大程度地減小內存訪問開銷,應盡量限制隨機數據訪問.

3)Silicon-Crystal應用在計算過程中存在數據之間的依賴,為了使程序能夠更好的并行執行,應在并行前將依賴消除,同時,為提高數據的利用率和傳輸效率,盡量將所需數據提前準備好.

4)SW26010處理器從核沒有超越函數的處理單元,從核在進行超越函數計算時存在離散訪問主存的情況,需要用合理的方式避免從核離散訪存導致的計算性能下降.

3.3 主從核移植

將Silicon-Crystal應用移植到SW26010處理器,首先移植到SW26010處理器的單個主核上,然后設計合理的方案將熱點函數移植到從核進行并行加速.Silicon-Crystal應用移植工作主要分為3個步驟:主核移植、數據處理和從核移植.

3.3.1 主核移植

Silicon-Crystal應用程序是基于C++開發的,SW26010處理器的主核可以直接對C++代碼進行編譯,但從核卻不支持C++代碼的編譯,而且主核上的C++編譯器sw5CC不支持SIMD庫.因此,本文用C語言對Silicon -Crystal程序進行重構.完成主核移植后,使用神威平臺自帶的gprof工具進行測試,發現TersoffPotent函數和pow函數的總運行時間占程序總時間的91%,是程序的主要熱點,接下來將圍繞這兩個函數進行從核并行化優化.

3.3.2 數據處理

通過對初始數據中原子的位置及編號分析發現原子的編號呈現亂序,考慮到從核移植需要利用DMA方式將主存數據取到從核的LDM中,而利用DMA方式對主存進行訪問時,訪問的是一塊連續的主存地址,所以,需要將亂序的數據進行重新排序,以保證數據的連續性,提高后續從核移植時DMA效率.

Silicon-Crystal應用程序的計算數據是由N個亂序硅晶體原子信息構成,其信息包含原子位置、速度、加速度、臨時加速度以及4個鄰居的編號,通過原子的位置信息可以得到所有原子均勻的分布在一個長方體空間內,其局部結構如圖3(a)所示,每個原子的鄰居分布在原子周圍,原子與4個鄰居之間都構成一個正四面體,結合這種特殊的結構,將數據按照原子位置所在的空間坐標系先x,再y,后z的順序進行編號,如圖3(b)所示,整理得到有序的原子數據,同時從圖中可以看出,z方向上位移相同的原子會均勻的分布在一個平面上,且每個平面的原子編號是連續的,因此計算數據就可以看成是由多個這樣的平面組成的空間結構.

圖3 原子與原子鄰居之間的空間結構圖Fig.3 Spatial structure between particles and their neighbors

計算數據重排序后的原子位置、速度、加速度、臨時加速度信息沒有發生改變,但是4個鄰居的編號發生了改變,為了防止原子與鄰居之間相互關系遭到破壞,用排序后的編號對應更新鄰居表中排序前的編號,使每個原子都能通過鄰居表找到鄰居排序后的編號,所有的排序工作結束后,通過對每個原子的鄰居編號分析并結合上一段中由多個平面組成的空間結構發現,每個原子的4個鄰居位于原子所在面的前一面和后一面各兩個,如圖3(b)所示,31號原子的鄰居分別為前一面的13、16號和后一面的49、52號,而且相鄰編號的原子對應的鄰居編號也是相鄰的,這是由硅晶體內部原子間的結構決定的,通過排序可以清楚地體現出數據的局部性和連續性.

3.3.3 從核移植

本節將對兩個熱點函數移植到從核進行并行加速,主要步驟分為任務劃分與映射和依賴分析與消除.

1)任務劃分與映射

Silicon-Crystal應用在計算時,每個原子的計算量大致相同,進行從核移植時,為了從核之間負載均衡,將原子平均分配到64個從核進行計算,又因為硅晶體原子在空間上有較強的局部性,所以選擇采用分塊的方式,將原子按空間劃分為64塊,每個從核計算一塊,充分利用原子的空間局部性.

以131072個原子為例,每個從核負責計算131072/64=2048個原子,經過3.3.2節對數據進行處理后,原子根據Z方向上位移不同,劃分為128個平面,每一個平面包含1024個原子,任務劃分后,每個從核負責計算2048個原子,表明每兩個連續平面上的原子為一塊,分配到對應的從核進行計算.

2)依賴分析與消除

硅晶體原子之間的作用力是相互的,Tersoff勢求的是鄰居原子對原子本身的作用力所產生的加速度以及原子本身對鄰居原子的反向作用力產生的加速度,最終加速度是將原子所受的加速度以及反向加速度累加,由于不同原子的鄰居原子之間存在交集,移植到從核后鄰居原子的計算與原子本身的計算可能不在同一個從核上,如果兩個從核同時操作一塊主存空間,會導致數據出錯.例如A原子的鄰居是B原子,同時A原子也是B原子的鄰居,當原子A與B在分配到兩個不同的從核上計算時,兩個從核都要對主存上的A、B原子信息進行更改,此時就會產生A、B原子的寫后寫依賴.為了消除這種數據依賴關系,首先,通過變量重命名法將作用力與反作用力所產生的加速度實現分離,在從核中保存反作用力產生的加速度的副本而不直接更新加速度;其次,在主存開了64份冗余空間存放從核計算的反作用力產生的加速度,在從核計算結束后將數據傳回主存,由主核將其累加求得最終加速度,實現主核異步串行數據更新,從而避免寫后寫數據依賴.

4 性能優化

4.1 LDM優化

Silicon-Crystal應用在進行Tersoff勢函數的計算時需要用到許多的計算參數,其中就包含表一中的A(eV)、B(eV)、β、n、c等,如果在從核利用gld/gst直接訪問主存中的這些參數,會導致訪問的延時較大,而且多個從核同時訪問時易出現擁堵現象,不利于程序的加速.而每個從核都有各自的LDM局存,從核訪問LDM的延時要遠小于從核離散訪問主存的延時,所以本文在開啟從核前,將從核計算所需要的計算參數以及常量整理打包,集中存放到一個結構體中,從核開啟后通過DMA方式將數據一次取到LDM中,從核計算時直接從LDM中獲取計算所需參數,減少了大量的離散訪存,加快了程序的運行速度.

4.2 DMA優化

在SW26010處理器中,主核MPE與從核簇CPEs共享8GB的存儲器,從核可以通過兩種方式訪問主存:1)利用gld/gst直接零散的訪問主存數據;2)利用DMA方式將主存數據批量傳輸到LDM;DMA方式通常延時較大,但是帶寬的利用率較高.針對Silicon-Crystal傳輸數據量大的特點,應盡量使用DMA方式來提升訪存帶寬.每個原子的信息封裝在一個結構體中,結構體包含位置、速度、加速度、臨時加速度、鄰居編號等信息組成共16元組(x,y,z,vx,vy,vz,ax,ay,az,tmpax,tmpay,tmpaz,nbrmark1,nbrmark2,nbrmark3,nbrmark4),計算時需要將計算原子傳輸到LDM中,一個原子信息就要占用112個字節,64KB的LDM空間最多存放580個原子數據,所以需對計算數據進行分塊,取512個原子為一塊,通過DMA方式將原子信息傳輸到LDM,既可以減少離散訪存延時,又能將一塊連續的數據取到LDM中.

考慮到LDM一次存儲的數據量有限,在Tersoff勢的核心計算過程中取到LDM中的原子信息只用到了原子的位置以及鄰居編號,為了減少多余的數據放進LDM中,在主核進行數據處理時將結構體數組(Array of Structure,AoS)轉為數組結構體(Structure of Array,SoA),把所有原子的位置、速度、加速度、臨時減速度以及鄰居編號單獨存放到對應的數組中,如圖4所示,從核可以只獲取原子的一個參數數據,減少了大量的不必要數據放進LDM中,由原來的16元組減少到了現在的7元組,從核通過DMA的方式可一次傳輸1024個原子數據,提高了LDM利用率和DMA效率.

圖4 結構體數組(AoS)轉數組結構體(SoA)Fig.4 Transform AoS to SoA

4.3 軟件cache優化

在實現上述優化策略后,中心原子可以通過DMA方式將原子信息取到LDM中,但是原子的鄰居編號需要通過查詢鄰居表才能獲得,無法直接通過DMA方式取到LDM中.但是由3.3.2節可知每個原子的4個鄰居分布在原子所在面的前一面和后一面各兩個,而且相鄰編號的原子對應的鄰居編號也是相鄰的,即相鄰原子的鄰居之間存在較強的空間局部性,為了減少離散訪問原子鄰居帶來的長延時,本文通過在從核上設計軟件cache來充分利用數據的空間局部性,同時用DMA方式代替離散訪存.

軟件cache的設計主要考慮數據的預取、替換策略、重用策略3方面,但在SW26010上設計軟件cache還需要考慮占用LDM的空間以及符合Silicon-Crystal應用特點,既要保證計算所需數據在LDM中,還要保證DMA的傳輸效率以及LDM的利用率,下面主要從cache大小的確定、數據預取、數據替換策略以及數據重用策略4方面進行詳細設計.

cache大小的確定:經過DMA優化后,從核LDM需要存儲1,024個中心原子位置、1,024個中心原子的鄰居編號等數據信息,剩余空間不足20KB,所以軟件cache大小應該小于20KB.硅晶體結構中每個原子有4個鄰居需要分別存放在不同的cacheline中,所以將cacheline數量設置為4,cacheline大小根據原子的空間局部性確定,考慮到數據處理后相鄰編號的原子對應的鄰居編號也是相鄰的,而且呈現每32個鄰居編號組成一個連續的數據塊,而32個原子占用768字節,所以取的原子數應為32的倍數,為了充分利用LDM空間,cacheline大小確定為3KB,最終cache大小為12KB軟件cache的數據預取:Tersoff勢的計算過程中將數據的前后、上下、左右平面視為對接,在3個維度上構成回環,使得一個維度上前端原子的鄰居反而在末端,所以當數據未命中對數據進行預取時,將首地址設置為未命中原子編號向前取臨近32倍數的原子編號地址,通過DMA方式一次取連續的3KB數據放到一個cacheline中.

軟件cache的替換策略:因為原子有較強的局部性,取到cacheline中的原子會按序訪問,最先取到cacheline中的原子最先訪問結束,所以選擇采用 FIFO替換策略來保證替換進來的數據得到充分的利用,同時也降低了軟件cache設計的復雜度.替換時將cacheline中第一個原子編號存放到對應cacheline的tag中,計算時可以將鄰居編號與 cacheline的tag進行比較,快速確定是數據否命中.

軟件cache的重用策略:數據整理后已知4個鄰居分布在上下兩層,而且根據每個維度的大小原子鄰居呈現周期性變化,前一個周期所有原子的2號和4號鄰居原子會被作為后一個周期所有原子的1號和3號鄰居原子再次參與計算,即鄰居面上同一個原子會被作為中心面上兩個原子的鄰居參與計算,為了提高cache中數據的重用率,采用了全相聯映射機制,降低cache設計的復雜度.

4.4 從核超越函數優化

完成以上優化后,利用penv_slave2_gld_count接口測得從核存在大量離散訪存,主要原因是神威平臺的編譯環境中默認鏈接的數學庫需要離散訪存操作,而程序中存在大量的pow、exp、sin以及cos等數學庫函數的使用,導致大量離散訪存,減低了性能.如果改用在CPE上實現的已經優化的GNU數學庫,雖不會產生gld/gst指令,但要通過查LDM中的相應函數表實現,sin和cos函數表共享4KB空間,而pow和exp的函數表大約占用9KB空間,4個庫函數共需要占用大約13KB的LDM空間,使得軟件cache和各種數據緩沖能夠使用的空間減小.為此,本研究使用多項式近似計算超越函數的值.

ex函數求解方法如下:利用式ex=2xlog2e進行轉換;令xlog2e=p+q,則ex=2p·2q,其中p為浮點數的整數部分,q為小數部分且0≤q<1;通過指數函數求解2p;利用式2q=eqln2進行轉換;最后利用泰勒公式展開的多項式P(x)進行求解,在P(x)的階數為11時,|P(x)-ex|<10-14可以滿足計算精度的需求.

pow函數的求解方法為:x<0時,y為整數,可以直接求解;x>0時,通過式xy=eyln(x)求解,其中,利用公式:

(5)

求得ln(x),再利用exp和ln函數求解pow函數.

對于sin函數,則利用sin函數的周期性得到sin(x)=sin(x%2π),令y=x%2π,為了快速收斂,利用sin函數的對稱性,即:

(6)

將y化簡為區間[0,π/2)內的值,然后利用泰勒展開式:

(7)

進行計算,最終求得sin(x)的值.cos函數計算與此類似.

從核直接調用以上實現的超越函數進行求解,不僅消除了從核調用超越函數產生的離散訪存,而且節省LDM空間.

4.5 任務分步流水優化

經過使用軟件cache后,極大地提高了數據的重用率,減少了DMA的訪存次數,但是由于LDM僅有64KB,依然無法將整面原子計算所需要的數據以及計算后產生的數據完全存放在cache中,而且仍然會有許多原子作為不同原子的鄰居多次傳輸到LDM中,導致傳輸效率低,所以本文設計了一種分步流水的方式將Tersoff勢的計算分為兩部分進行,對計算所需以及計算產生的數據分到不同LDM中進行存儲.

深入分析Tersoff勢的計算過程可以看出在每個原子的計算主要分為兩部分,第1部分為截斷函數的求解,通過原子與鄰居的位置求得相互之間的距離,然后代入2.2節中公式(2)進行求解;第2部分為硅晶體勢能求解,將求得的原子與鄰居之間的距離代入公式(3)和公式(4)求出原子之間的吸引力和排斥力,結合第1部分截斷函數的求解,通過公式(1)得到硅晶體的勢能.計算過程中,主要的存儲數據為第1部分求解所需原子的位置以及第2部分利用原子之間相互作用力求得的原子的加速度,如果將一整面計算所需要的位置數據存放到LDM中,計算產生的原子加速度將無法存放,因此為了使計算數據能夠完整地存儲到LDM中,將前后兩部分計算分配到兩個從核進行計算,中間交互使用寄存器通信,使用從核寄存器的點對點通信全片聚合帶寬高達2043.4GB/S,合理使用寄存通信可以進一步減少從核冗余的訪存操作,極大提升計算性能.

圖5 從核間雙流水模式Fig.5 Step-to-step pipeline and double buffering between CPEs

將從核陣列分為偶數核和奇數核,偶數核從主存獲取計算所需的原子位置信息存儲到LDM中,然后進行截斷函數的計算,計算結束后通過寄存器通信傳輸到奇數核,奇數核拿到計算數據后進行吸引力、排斥力和加速度的計算,將計算后數據存儲到奇數核LDM中,在奇數核計算的同時,偶數核可以進行下一個原子截斷函數的計算,這樣便形成了從核間任務的分步流水計算,如圖5(a)所示,此時將計算原子以及鄰居原子一次存到偶數核LDM中,將計算后的加速度數據存放到奇數核LDM中,減少DMA次數,而且提高DMA效率.

實現任務分步流水優化后,從核LDM仍然有剩余空間,考慮到每個從核要對多個連續的原子面進行計算,所以使用雙緩沖優化將計算與通信進行隱藏,如圖5(b)所示,偶數核在計算前發起下次所需數據的DMA請求,到下次計算之前檢測數據是否傳輸完成,奇數核在發起寫回主存的DMA請求的同時直接進行下一次的計算,直到下一次計算結束后判斷傳輸有沒有結束,奇數核和偶數核都實現了雙緩沖流水,結合任務分步流水,形成了從核間分步流水從核內部雙緩沖流水的雙流水模式

5 性能實驗結果與分析

為了測試驗證上述研究內容的效果,將Silicon-Crystal應用分別在SW26010異構眾核處理器和Intel Xeon E5-2620 v4處理器上的性能進行測試對比,表2列舉了試驗平臺信息.

表2 實驗用軟、硬件環境配置信息Table 2 Experimental software and hardware environment configuration information

實驗將運行在1個主核上的Silicon-Crystal應用作為測試基準,對第4節中的5步優化逐步進行測試.測試數據規模為:131072個原子構成的回環,迭代計算次數為1000次.

5.1 單核組性能優化評估

本文所有優化方法的性能測試結果如圖6所示,從圖6中可以看出:

圖6 多種方法優化后程序的運行時間Fig.6 Running time of the program after implementing each optimization

1)進行簡單從核并行后,性能不但沒有提升反而有所下降,主要原因是從核的離散訪存占時較大,導致計算優勢難以發揮.

2)對從核訪存方面進行的優化效果進行評估.首先通過數據結構的轉換使其更適合DMA傳輸,提高從核的訪存帶寬;針對應用中存在的不規則數據訪問,結合硅晶體的結構特征進行數據預處理,使數據更具空間局部性,從而利用軟件cache進一步提升從核的訪存帶寬;針對應用中存在的大量超越函數的離散訪存,通過在從核上定制的數學庫函數解決了其離散訪存問題;為了進一步減少從核訪存,還通過鄰居預取以及任務分步流水方法進一步減少從核訪存.最終單個核組的運行時間由778.55s減少到60.37s,其性能比測試基提升了12.89倍.同時還可以看出,SW26010處理器的單核組優化性能相較于Intel Xeon E5-2620 v4處理器串行程序提升了8.7倍.

5.2 多節點性能評估

單核組性能優化及評估結束后,本文又在神威平臺上利用MPI+Athread實現了Silicon-Crystal應用的多節點并行版本,并對其進行了強、弱可擴展性測試及分析.

強可擴展性:對Silicon-Crystal應用的數據進行擴展,將數據量擴展到67108864數據,進程的規模最大擴展到了512個核組,測試結果如圖7所示.

圖7 Silicon-Crystal應用在從核上的強可擴展性分析Fig.7 Strong scalability of Silicon-Crystal application

從圖7可以發現隨著核數的增長,運行時間在逐漸減少,到最后趨向平穩,因為隨著核組數的增長,數據的切分越來越多,進程之間的通信也隨之增多,進程間的通信占比越來越大,程序運行時間逐漸受到通信的限制趨向于平穩.

表4 弱可擴展性測試規模Table 4 Scale of weak scalability test

弱可擴展性:隨著核組數的增長,數據也跟著同比增長,由最開始的4個核組運行524288數據擴展到512個核組運行67108864數據,數據規模以及不同規模下程序的執行時間如表4所示,可以看出隨著核組數和數據量的同比增長,執行時間并沒有隨著通信量的增加而加長,呈現相對平穩狀態,表明Silicon-Crystal應用程序具有較好的弱可擴展性.

6 總 結

本文基于國產異構眾核處理器SW26010的體系結構特點,使用神威平臺的MPI+Athread并行編程模型對Silicon-Crystal應用進行了并行化.在對應用進行主核移植后,針對Silicon-Crystal應用程序熱點函數特點,從5個方面進行單核組優化,使其性能相比主核串行基準測試程序提升12.89倍.與Intel CPU平臺串行程序相比,提升8.7倍.

下一步將針對多節點運行進行更深入的優化,并對大規模可擴展性進行深入研究.

猜你喜歡
優化
超限高層建筑結構設計與優化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
PEMFC流道的多目標優化
能源工程(2022年1期)2022-03-29 01:06:28
民用建筑防煙排煙設計優化探討
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
由“形”啟“數”優化運算——以2021年解析幾何高考題為例
圍繞“地、業、人”優化產業扶貧
今日農業(2020年16期)2020-12-14 15:04:59
事業單位中固定資產會計處理的優化
消費導刊(2018年8期)2018-05-25 13:20:08
4K HDR性能大幅度優化 JVC DLA-X8 18 BC
幾種常見的負載均衡算法的優化
電子制作(2017年20期)2017-04-26 06:57:45
主站蜘蛛池模板: 五月激情综合网| 国产精品女人呻吟在线观看| 国产精品自在线天天看片| 日韩精品一区二区三区免费| 97无码免费人妻超级碰碰碰| 国产伦精品一区二区三区视频优播| 午夜精品区| 国产亚洲精久久久久久久91| 又粗又大又爽又紧免费视频| 日韩资源站| 国产欧美在线观看一区| 亚洲欧美日韩成人在线| 成人在线第一页| 91精品国产一区| 欧美国产日产一区二区| 热99精品视频| 久久先锋资源| www.youjizz.com久久| 国产美女一级毛片| 国产成人喷潮在线观看| 免费午夜无码18禁无码影院| 无码啪啪精品天堂浪潮av| 91亚洲精选| 亚洲综合香蕉| 欧美国产日韩在线播放| 456亚洲人成高清在线| 尤物国产在线| 九九精品在线观看| 国产精品综合色区在线观看| 欧洲高清无码在线| 国产成熟女人性满足视频| 亚洲最大在线观看| 国产精品片在线观看手机版| 国产99在线| 九九视频免费在线观看| 在线播放真实国产乱子伦| 国产麻豆aⅴ精品无码| 欧美区国产区| 久久亚洲综合伊人| 久久夜色撩人精品国产| 亚洲AV无码一区二区三区牲色| 亚洲精品国产首次亮相| 青青青伊人色综合久久| julia中文字幕久久亚洲| 色综合久久无码网| 国产欧美精品午夜在线播放| 日韩在线成年视频人网站观看| 亚洲无码视频喷水| 国产精品视屏| 波多野结衣中文字幕一区| 久久精品国产电影| 国产va在线观看免费| 国产免费久久精品99re丫丫一| 亚洲精品在线观看91| 国产黑人在线| 国产亚洲视频中文字幕视频| jizz在线观看| 韩国福利一区| 国产精品专区第一页在线观看| 国产欧美精品一区aⅴ影院| 国产欧美自拍视频| 狠狠色综合网| 中文字幕在线观看日本| 国产在线观看一区二区三区| 第一页亚洲| 一区二区在线视频免费观看| 免费看的一级毛片| 91精品网站| 日韩毛片在线视频| 丝袜高跟美脚国产1区| 91美女视频在线观看| 欧美综合激情| 国产精品深爱在线| 日韩精品无码不卡无码| 呦女亚洲一区精品| 国产成人a毛片在线| 中国一级特黄大片在线观看| 全裸无码专区| 日韩欧美国产另类| 日本影院一区| 亚洲视频免| 亚洲国产日韩欧美在线|