新四季網

國產申威26010眾核CPU上GEMM稠密矩陣乘高性能實現方法與流程

2023-06-04 02:38:04 2


本發明涉及基礎線性代數庫blas(basiclinearalgebrasubprograms)level3函數稠密矩陣乘運算gemm(generalmatrix-matrixmultiplication)的高性能實現方法,尤指基於國產申威眾核平臺體系結構的高性能gemm實現及優化方法。
背景技術:
:稠密矩陣乘運算作為底層和基礎矩陣運算操作,廣泛應用於科學和工程計算領域,因此對其性能要求極高。blas是一種基礎線性代數子程序庫,主要包含向量和矩陣的基本操作,是最基礎和最重要的數學庫之一,目前大多矩陣運算相關的軟體都會調用blas庫,且世界超級計算機top500排名基準軟體linpack底層便以blas為支撐。blas目前已成為線性代數領域的一個標準api庫,gemm是blas數學庫標準中關於矩陣運算的重要基礎函數,其執行的操作為如下所示通用矩陣乘法:c=alpha*op(a)*op(b)+beta*c(1)其中alpha、beta為標量因子,a,b,c為操作矩陣,其中c作為輸入矩陣,公式右側更新後的值覆蓋原矩陣作為輸出矩陣,op(.)算子實現矩陣轉置或非轉置形式,且包含單精度、雙精度、複數單精度和複數雙精度四種類型。gemm具有計算密集以及訪存模式規則的特徵,能較好地適用於目前具有多級存儲結構體系以及超高並行計算能力的高性能計算機,但同時gemm性能嚴重依賴於能否有效地利用機器硬體特性,即如何合理將數據排布在存儲結構中,利用高效的訪存模式,提高數據重用率,通過計算隱藏訪存來提升性能,同時能夠挖掘矩陣運算的並行性,充分利用高性能計算機的並行計算資源,是gemm高性能實現的極大挑戰。針對gemm的優化工作,國內外已經有相當多的研究成果,goto等人(gotok,geijnra.anatomyofhigh-performancematrixmultiplication[j].acmtransactionsonmathematicalsoftware(toms),2008,34(3):12.)基於三層嵌套循環塊矩陣乘算法,充分分析矩陣乘運算性能與多層次cache以及tlb的關係,構建性能分析模型,並提出如何基於該模型選擇最優算法。伴隨著gpu加速器的快速發展,gemm在gpu上的優化工作近年來也成為研究熱點,重點體現在如何更高效地利用gpu存儲體系結構及其訪存特徵,合理地選擇塊gemm算法分塊大小和高效的訪存模式以增加數據的重複利用和高效利用機器帶寬等,來提升gemm性能。另外,近年來,gemm的自動代碼生成工作也逐漸成熟,liy等人(liy,dongarraj,tomovs.anoteonauto-tuninggemmforgpus[c]//internationalconferenceoncomputationalscience.2009:884--892)實現了gemm在gpu平臺的高效代碼生成。國產申威26010眾核平臺是一款由中國自主研發的主從異構cpu平臺,由4個核組和系統接口組成,每個核組主要包括1個主核和1個從核陣列,其中一個從核陣列包含64個從核。主核採用64位risc結構通用處理單元,主核和從核都支持256位向量浮點指令擴展;每個從核包含32個寄存器以及64kb用戶可控的ldm(localdevicememory,局部存儲器),且直接訪問本地ldm延遲極小,且從核硬體流水線支持訪存指令和浮點運算指令的同時發射;從核陣列的64個從核排列成8行、8列的mesh結構,從核陣列內部交互可使用寄存器級通信,以一個向量長度為單位,各從核可在其行或列上進行數據廣播或數據接收;提供主從核間dma異步數據傳輸機制,實現數據從主內存讀取至從核ldm或從從核ldm寫回至主內存中,且dma包含多種數據傳輸模式,其中常用的有單從核模式與行模式,不同的數據傳輸模式對應不同的數據分布方式。申威眾核處理器26010軟硬體參數如表1所示。表1:申威眾核處理器26010軟硬體參數類型參數處理器cpusw26010,主頻1.45ghz內存容量32gb作業系統redhatenterpriselinuxserverrelease6.6編譯器及連結器sw5cc5.421-sw-485以及sw5f905.421-sw-485程式語言及環境c、c++、fortran、mpi、openmp申威眾核處理器26010具有強大的計算能力,被應用於目前排名世界第一的超級計算機「神威·太湖之光」上,有越來越多的重要科學計算軟體部署在該平臺上,gemm函數作為blaslevel3函數中的最重要函數之一,其在申威眾核平臺上的實際計算性能對於嚴重依賴其的上層應用至關重要。由於sw26010是一款由中國新自主研製的異構平臺,支持主從核間高效的dma數據傳輸通道,從核間支持寄存器通信機制,且每個從核支持特殊的流水線機制,使用了定製simd擴展指令,支持256位向量浮點計算,尤其增加了乘加聚合指令,使得現有的開源blas庫(如gotoblas)不能很好的發揮平臺計算特性,計算性能極低,因此急需設計實現一種基於該眾核平臺的高性能gemm算法,以發揮申威眾核處理器強大的計算能力,且滿足上層應用對申威眾核平臺上高性能gemm的迫切需求。技術實現要素:本發明解決的問題是:基於目前已有的開源blas數學庫沒有針對申威眾核處理器26010特定優化過,不能充分發揮眾核計算能力,性能較低的情況,本發明提出了國產申威26010眾核cpu上gemm稠密矩陣乘高性能實現方法,該方法基於申威眾核處理器26010單核組上存儲結構、訪存方式、硬體流水線以及寄存器級通信機制等平臺特性,使用包括數據存儲格式、向量化、計算訪存重疊、循環展開與軟體流水線等多種技術,應用並改進塊矩陣乘算法,高效優化函數性能。本發明高性能實現方案包括如下方面:申威26010眾核平臺存儲結構體系自底向上包含主內存,從核ldm,寄存器三級存儲結構,受限於各級存儲結構存儲空間的大小,設計三級分塊並行矩陣乘算法,以將數據傳輸到從核上利用從核陣列強大的計算資源進行計算,其中從核陣列包含組織成8行8列mesh結構的64個從核。設c為待更新矩陣,a,b為運算矩陣,其維度分別為m*n,m*k,k*n,在主內存級分別將矩陣c,a,b劃分成大小為bm*bn的子矩陣bcij,1≤i≤m/bm,1≤j≤n/bn,bm*bk的子矩陣bail,1≤i≤m/bm,1≤l≤n/bn和bk*bn的子矩陣bblj,1≤l≤k/bk,1≤j≤n/bn,在從核ldm分別將子矩陣bcij,bail,bblj平均劃分成64份大小為pm*pn的子矩陣pcuv,1≤u≤8,1≤v≤8,pm*pk的子矩陣pauw,1≤u≤8,1≤w≤8和pk*pn的子矩陣pbwv,1≤w≤8,1≤v≤8,在寄存器級,將子矩陣pcuv劃分成大小為rm*rn的子矩陣進行更新。三級分塊並行矩陣乘算法步驟如下:第一步,採用n-k-m三層嵌套循環算法,控制矩陣c以子矩陣bcij為單位,串行更新;第二步,更新子矩陣bcij時,利用主從核間異步dma數據傳輸機制,通過計算與訪存重疊的雙緩衝策略,將計算所需的子矩陣bcij,bail和bblj從主內存傳輸到從核陣列的ldm中,且進行數據傳輸時,將子矩陣bcij,bail和bblj進一步劃分的子矩陣pcuv,pauw和pbwv,分別映射到64個從核上,每個從核得到相應的子矩陣pcuv,pauw和pbwv;第三步,更新子矩陣bcij時,利用已傳輸到從核陣列上的子矩陣bail和bblj,在64個從核上,並行計算核心操作bail*bblj,每個從核負責映射到本地ldm的子矩陣pcuv的更新,且在並行計算時,通過寄存器通信機制實現從核陣列間的數據共享;第四步,每個從核更新子矩陣pcuv時,主要執行運算pauw*pbwv,對此核心操作,設計循環展開策略與軟體流水線排布方法,在最內層循環使用高效的寄存器分塊模式,以rm*rn的c子矩陣為單位進行更新,並256位simd向量化以及乘加指令,實現函數優化;第五步,將已經更新的子矩陣bcij,通過dma方式從從核ldm中寫回主內存中。所述第一步,n-k-m三層嵌套循環算法,將矩陣b作為緩存矩陣,即上傳到從核陣列中的b矩陣元素將緩存在從核ldm中直到不再使用。所述第二步,dma傳輸方式包含行模式和單從核模式兩種,可根據矩陣地址對齊方式自動選擇傳輸效率較高的行模式傳輸矩陣元素,否則選擇單從核模式;所述第二步,雙緩衝策略具體為,從主存預取用於下次計算a矩陣元素、c矩陣元素到從核ldm,以及從ldm寫回上次循環計算過的c矩陣元素,且此數據傳輸過程與本次塊矩陣乘計算過程並行執行,計算過程執行時間略大於數據傳輸過程所需時間。所述第二步,子矩陣bcij,bail和bblj再劃分以及子矩陣與從核陣列映射方法具體為,將子矩陣bcij,bail和bblj分別沿列方向平均切分成8列子矩陣,大小分別為bm*pn,bm*pk和bk*pn,並分別映射到8行從核上,即第i(1≤i≤8)列子矩陣映射到第i(1≤i≤8)行從核上,且每列子矩陣映射到對應行從核時,將每列子矩陣沿行方向平均切分為8份,並映射到該行的8個從核上,每個從核得到對應的pcuv,pauw和pbwv。所述第三步,核心操作bail*bblj的並行計算以及寄存器通信共享數據過程,具體如下:(1)bail*bblj子矩陣乘共迭代計算8次,每次迭代核心操作為bail的第i(1≤i≤8)列子矩陣(大小為bm*pk)與bblj的第i行子矩陣(大小為bk*pn)相乘,迭代計算過程中每個從核負責存儲在本地ldm中pcuv的更新;(2)每個bail列子矩陣包含8個子矩陣pauw,每個bblj行子矩陣包含8個子矩陣pbwv,因此,每次迭代,列子矩陣與行子矩陣相乘可以轉換成64個子矩陣乘運算pauw*pbwv,並分配給64個從核並行計算,每個從核執行對應的子矩陣乘運算pauw*pbwv;(3)每個從核執行運算pauw*pbwv所需的pauw子矩陣元素和pbwv子矩陣元素來自其本地ldm或者通過寄存器通信方式從其它從核獲取,第i(1≤i≤8)次循環,位於8*8陣列中第p(1≤p≤8)行第q(1≤q≤8)列的從核,需要從第i行第q列的從核獲取a矩陣元素,從第p行第i列的從核獲取b矩陣元素。更具體地,第i行從核,通過列廣播的方式廣播其本地ldm的a矩陣元素,並接收b矩陣元素,第i列從核,通過行廣播的方式廣播其本地ldm的b矩陣元素,並接收a矩陣元素,其中第i行,第i列的從核只廣播數據,並不接收數據,不在第i行或者第i列的從核接收矩陣a元素和矩陣b元素,不廣播數據;(4)每次將迭代計算的結果疊加到本地ldm中存儲的pcuv中。圖2所示為第0次迭代和第1次迭參與運算的a列子矩陣和對應的b行子矩陣,迭代結果進行疊加。所述第四步,優化方法中寄存器分塊和指令流水線排布具體需滿足如下條件:(1)寄存器分塊,rm個寄存器用於存儲a矩陣元素,rn個寄存器用於存儲b矩陣元素,rm*rn個寄存器用於存儲累加和c矩陣元素,受限於每個從核擁有32個寄存器,因此則需滿足rm+rn+rm*rn≤32;(2)指令流水線,根據硬體流水線特徵重排最內層循環指令,儘可能避免計算指令與訪存指令的依賴關係,將沒有依賴關係的計算指令與訪存指令同時發射。所述三級分塊並行矩陣乘算法分塊大小bm,bk,bn,pm,pk,pn選取依賴於從核ldm空間的大小,即對應申請的存儲空間不能超過申威眾核處理器從核ldm大小,且分塊大小之間滿足關係bm=8pm,bk=8pk和bn=8pn。本發明與現有技術相比的有益效果在於:本發明基於sw26010眾核處理器的存儲結構、訪存、硬體流水線以及寄存器級通信機制等平臺特性,使用包括數據存儲格式、向量化、計算訪存重疊、循環展開與軟體流水線等多種技術,並設計了並行塊矩陣乘算法以及寄存器通信數據共享方法,解決了目前開源數學庫gemm不能充分利用從核計算能力的問題,大幅提升了gemm函數性能。該高性能gemm函數性能可以達到平臺峰值的90%以上,與單核開源gotoblas數學庫相比,平均加速比為227.94,最高加速比為296.93。附圖說明圖1是gemm發明高性能方案基本流程圖;圖2是塊矩陣乘過程第0次迭代和第1次迭代計算示意圖;圖3是以4行4列從核陣列為例描述矩陣元素與從核陣列的映射圖;圖4是申威眾核平臺26010與gotoblas庫gemm四種精度實現的性能對比圖。具體實施方式下面結合附圖和實施例對本發明進行詳細說明。如圖1所示,具體實現採用「interface接口層-scheduling任務調度層-kernel彙編計算層」的三級代碼框架,描述如下:(1)interface接口層函數:該層為函數接口,對輸入參數進行檢查,判斷如果出現不合法參數時返回錯誤碼;另外,根據輸入矩陣a,b的精度和轉置情況,調用對應的scheduling任務調度層函數;(2)scheduling任務調度層函數:由interface接口層函數調用,並調用kernel彙編計算層函數。通過n-k-m三層循環控制矩陣c更新順序,串行地對c子矩陣更新,共m*n個c子矩陣,其中m=m/bm,n=n/bn。對於矩陣a,b,c依據並行方案所述在數據對齊以及保證計算順序正確的情況下通過dma行模式讀取,否則通過dma單從核模式讀取,並將根據高性能方案所述將子矩陣映射到64個從核上;對於每個c子矩陣的更新任務,平均地分配給64個從核並行執行;並且a和c子矩陣的dma數據傳輸過程與kernel彙編計算任務基於雙緩衝策略異步執行;(3)kernel彙編計算層函數:由scheduling任務調度層函數調用。kernel彙編計算層函數,主要用於更新存儲在本地ldm的pm*pn大小的c矩陣元素,需循環更新8次;此kernel彙編計算層函數主要實現並行方案中所述寄存器通信過程,以及pm*pk大小的a子矩陣與pk*pn的矩陣b子矩陣相乘過程,並基於高性能方案所述採用寄存器分塊、設計指令流水線、向量化以及乘加指令進行優化;(4)採用寄存器分塊進行優化,需保證rm+rn+rm*rn≤32,以本發明中dgemm(gemm雙精度實現)中為例,選取rm=4,rn=4;(5)根據硬體流水線設計指令流水線,主要遵從如下規則:通過指令重排,儘可能避免計算指令與訪存指令的依賴關係,將沒有依賴關係的計算指令與訪存指令同時發射;(6)對於pm、pn、pk值的選取,以dgemm為例,本實現選取pm=16,pk=64和pn=32。測試平臺為申威眾核平臺26010,表2統計了數據規模分別為1024、2048、4096和8192時,申威眾核26010gemm性能和gotoblasgemm性能,對比圖如圖3所示,實驗包含了1024、2048、4096、8192四種矩陣規模,實數單精、實數雙精、複數單精、複數雙精共16組測試用例,平均加速比為227.94,最高加速比為296.93。表2提供以上實施例僅僅是為了描述本發明的目的,而並非要限制本發明的範圍。本發明的範圍由所附權利要求限定。不脫離本發明的精神和原理而做出的各種等同替換和修改,均應涵蓋在本發明的範圍之內。當前第1頁12

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀