本發(fā)明所涉及自定義數(shù)據(jù)結(jié)構(gòu)及其高效實現(xiàn)方法,支撐了highperformanceconjugategradients(hpcg,高性能的共軛梯度)基準(zhǔn)測試程序在“神威·太湖之光”超計算機上的高性能實現(xiàn)。其中,中間處理過程使用了國產(chǎn)申威眾核平臺提供的athread庫進(jìn)行多線程并行。
背景技術(shù):
:highperformanceconjugategradients(hpcg,高性能的共軛梯度)基準(zhǔn)測試程序是一種對全世界超級計算機進(jìn)行排名的新標(biāo)準(zhǔn)。該測試基準(zhǔn)主要用于衡量超級計算機解決大規(guī)模稀疏線性系統(tǒng)的能力,相比于目前top500排名所采用的highperformancelinpack(hpl)基準(zhǔn)測試,其計算、訪存與通信模式更能代表目前基于偏微分方程求解的一類廣泛的科學(xué)與工程計算應(yīng)用,也有助于更全面地反映系統(tǒng)的訪存帶寬和延遲以及通信能力。大規(guī)模稀疏線性系統(tǒng)部署在高性能計算機上進(jìn)行計算時,其依賴的底層數(shù)據(jù)結(jié)構(gòu)對于求解線性系統(tǒng)的算法至關(guān)重要。同樣地,數(shù)據(jù)結(jié)構(gòu)本身的構(gòu)造過程,對訪存有較高的需求,若不能根據(jù)高性能計算機的體系結(jié)構(gòu)進(jìn)行有效優(yōu)化,將非常耗時。hpcg源于半結(jié)構(gòu)網(wǎng)格上的三維熱傳導(dǎo)應(yīng)用,核心是將三維規(guī)則區(qū)域上的poisson方程采用有限差分法進(jìn)行離散,最終轉(zhuǎn)換成一個稀疏線性方程組的求解問題。在大規(guī)模并行環(huán)境中,hpcg使用三維區(qū)域分解策略,也就是按照3個維度將整個計算區(qū)域劃分成子區(qū)域,然后每個子區(qū)域被分配一個mpi進(jìn)程。其中每個子區(qū)域的規(guī)模由輸入?yún)?shù)指定,即如果(nx×ny×nz)是由一個mpi進(jìn)程處理的子區(qū)域大小,且(npx×npy×npz)是總進(jìn)程數(shù),那么所解問題的全局規(guī)模就為(npx×nx)×(npy×ny)×(npz×nz)。由于hpcg使用的是27點stencil,在hpcg中,每個網(wǎng)格點的更新都依賴其周圍緊鄰的最多26個鄰居點,可選取的值為:26(內(nèi)部點)、17(邊界面上的點)、11(邊界線上的點)和7(邊界頂點)。最終生成的稀疏線性系統(tǒng)具有下述特點:內(nèi)部點對應(yīng)27個非零元,邊界點對應(yīng)7-18個非零元,對稱正定非奇異,已知精確解為1.0,匹配的右端項的初始值為0。參考版本采用的數(shù)據(jù)結(jié)構(gòu)主要是compressedsparserow(csr)格式。具體數(shù)據(jù)結(jié)構(gòu)如下:整個結(jié)構(gòu)主要包含三個部分:矩陣數(shù)據(jù)存儲,索引映射,以及進(jìn)程間通信。其中,與矩陣的數(shù)據(jù)存儲相關(guān)的主要有:nonzerosinrow存儲矩陣每行非零元的個數(shù),mtxindg存儲矩陣的全局索引,mtxindl存儲矩陣的進(jìn)程內(nèi)索引,matrixvalues存儲矩陣元素的數(shù)值,matrixdiagonal存儲矩陣對角線元素的數(shù)值。與索引映射相關(guān)的主要有:globaltolocalmap用來進(jìn)行全局索引到進(jìn)程內(nèi)索引的轉(zhuǎn)換,localtoglobalmap用來進(jìn)行進(jìn)程內(nèi)索引到全局索引的轉(zhuǎn)換。在mpi多進(jìn)程環(huán)境下,與進(jìn)程間通信相關(guān)的主要有:elementstosend存儲向鄰居矩陣發(fā)送的未知向量x的索引,neighbors存儲鄰居進(jìn)程的進(jìn)程id,receivelength存儲接收每個鄰居進(jìn)程外區(qū)數(shù)據(jù)的個數(shù),sendlength存儲向每個鄰居進(jìn)程發(fā)送數(shù)據(jù)的個數(shù),sendbuffer用于鄰居通信時存儲向鄰居進(jìn)程發(fā)送的未知向量x。國產(chǎn)申威眾核處理器26010是一款由中國自主研發(fā)的主從異構(gòu)平臺,每個節(jié)點由4個核組和系統(tǒng)接口組成,每個核組主要包括1個主核和1個從核陣列,從核陣列由64個從核構(gòu)成的8行8列的mesh結(jié)構(gòu)。主核和從核都支持256位向量浮點指令擴展;每個從核包含32個寄存器以及64kb用戶可控的ldm(localdevicememory,局部存儲器),且直接訪問本地ldm延遲極??;提供主從核間dma異步傳輸機制,且dma包含多種數(shù)據(jù)傳輸模式,其中常用的有單從核模式與行模式,不同的數(shù)據(jù)傳輸模式對應(yīng)不同的數(shù)據(jù)分布方式,能夠?qū)崿F(xiàn)數(shù)據(jù)從主存到從核ldm的快速傳輸;從核陣列內(nèi)部交互使用寄存器級通信,以一個向量長度為單位,各從核可在其行或列上進(jìn)行數(shù)據(jù)廣播或數(shù)據(jù)接收。申威眾核處理器26010軟硬件參數(shù)如表1所示:表1:申威眾核處理器26010軟硬件參數(shù)類型參數(shù)處理器cpusw26010,主頻1.45ghz內(nèi)存容量32gb操作系統(tǒng)redhatenterpriselinuxserverrelease6.6編譯器及鏈接器sw5cc5.421-sw-485以及sw5f905.421-sw-485編程語言及環(huán)境c、c++、fortran、mpi、openmp、athread申威眾核處理器26010具有強大的計算能力,被應(yīng)用于目前排名世界第一的超級計算機“神威·太湖之光”上,越來越多的重要科學(xué)計算軟件都在該平臺上進(jìn)行部署。而對于hpcg基準(zhǔn)測試程序的計算若僅僅依賴于主核資源,性能將極低,為利用從核計算資源,必然需要對數(shù)據(jù)結(jié)構(gòu)進(jìn)行重構(gòu),以充分利用申威眾核平臺強大的計算能力。參考版的csr數(shù)據(jù)結(jié)構(gòu),由于數(shù)據(jù)分配不連續(xù)和不規(guī)則,不利于眾核平臺的優(yōu)化。目前,已有kumahata等人在king超級計算機上,park等人在mic平臺,和phillips等人在gpu平臺上,進(jìn)行相關(guān)研究,都采用了基于ellpack(ell)格式的改進(jìn)數(shù)據(jù)結(jié)構(gòu)來替代參考版中的csr來實現(xiàn)了高性能的hpcg。由于國產(chǎn)申威眾核平臺體系結(jié)構(gòu)的特殊性,已有的這些數(shù)據(jù)結(jié)構(gòu)無法直接應(yīng)用。為此,本發(fā)明針對“神威·太湖之光”上申威眾核平臺體系結(jié)構(gòu)的特征以及hpcg算法優(yōu)化的需要,設(shè)計了一套自定義的數(shù)據(jù)結(jié)構(gòu),并提供了高效的并行實現(xiàn)方式。技術(shù)實現(xiàn)要素:本發(fā)明解決的問題是:克服現(xiàn)有技術(shù)的不足,提供一種適用于國產(chǎn)申威眾核平臺上hpcg優(yōu)化的自定義數(shù)據(jù)結(jié)構(gòu)及其高效實現(xiàn)方法,在國產(chǎn)申威眾核平臺上,設(shè)計和實現(xiàn)適用于hpcg基準(zhǔn)測試程序進(jìn)行優(yōu)化的數(shù)據(jù)結(jié)構(gòu),并提供對應(yīng)的高效并行方案。受限于從核ldm空間大小,首先需要依據(jù)矩陣元素之間的依賴關(guān)系,將屬于當(dāng)前進(jìn)程的矩陣進(jìn)行分塊處理,以保證在計算過程中,每個塊所需要的數(shù)據(jù)能夠剛好存放在ldm中,這樣增強了數(shù)據(jù)局部性,提高了數(shù)據(jù)的訪問效率,減少了從核之間依賴關(guān)系,更適合從核并行。然后在分塊的基礎(chǔ)上,對塊行進(jìn)行圖的著色處理,以提高后面計算的并行度。不像分塊那樣需要數(shù)據(jù)的移動,塊的著色只存在于邏輯層面,這樣使得著色策略更加靈活可變。本發(fā)明的一種適應(yīng)于“神威·太湖之光”上hpcg優(yōu)化的數(shù)據(jù)結(jié)構(gòu),包括:經(jīng)典ell格式中的矩陣值vals數(shù)組和對應(yīng)索引idx數(shù)組,利用額外的對角線元素diags數(shù)組來存放矩陣的對角線元素,還提供了分塊著色相關(guān)和進(jìn)程通信相關(guān)的數(shù)據(jù)結(jié)構(gòu),其中color_reordering存放分塊著色之后新的塊行順序,color_info記錄每種顏色的塊行數(shù)量和位置;element_send標(biāo)識當(dāng)前進(jìn)程向其他鄰居進(jìn)程所發(fā)送數(shù)據(jù)的位置信息,element_recv標(biāo)識當(dāng)前進(jìn)程接受來自于其他鄰居進(jìn)程所數(shù)據(jù)所存放的位置信息;最后,為了減少直接訪問主存的次數(shù)和支持計算過程中使用寄存器通信機制,分別增加了進(jìn)程內(nèi)索引到塊內(nèi)索引轉(zhuǎn)換關(guān)系的數(shù)據(jù)結(jié)構(gòu)loc2blk和外區(qū)索引向量的位置映射數(shù)據(jù)結(jié)構(gòu)pos。通過使用該自定義的數(shù)據(jù)結(jié)構(gòu),能夠在國產(chǎn)申威眾核平臺上實現(xiàn)hpcg的高效并行計算。一種適應(yīng)于“神威·太湖之光”上hpcg優(yōu)化的數(shù)據(jù)結(jié)構(gòu)高效實現(xiàn)方法步驟如下:第一步,前處理過程,基于矩陣中非零元素的依賴圖,在主核上串行的對矩陣進(jìn)行分塊著色相關(guān)的重排序操作,構(gòu)建color_reordering和color_info數(shù)據(jù)結(jié)構(gòu);其中color_reordering存放分塊著色之后分塊的行順序,color_info記錄每種顏色分塊的行數(shù)量和位置,得到分塊著色結(jié)果;第二步,中間處理過程,基于前處理中的分塊著色結(jié)果,對矩陣值vals數(shù)組、對應(yīng)索引idx數(shù)組和對角線元素diags數(shù)組實現(xiàn)對應(yīng)的重排序;同時,對進(jìn)程內(nèi)索引idx數(shù)組進(jìn)行塊內(nèi)索引轉(zhuǎn)換,并實時將進(jìn)程內(nèi)索引到塊內(nèi)索引的轉(zhuǎn)換關(guān)系記錄到數(shù)據(jù)結(jié)構(gòu)loc2blk數(shù)據(jù)結(jié)構(gòu)中,關(guān)于外區(qū)索引向量位置映射的pos數(shù)組,是伴隨著索引轉(zhuǎn)換過程進(jìn)行動態(tài)構(gòu)建,該過程使用從核組資源進(jìn)行平行處理;第三步,后處理過程,根據(jù)第一步和第二步的結(jié)果,基于分塊著色的矩陣數(shù)據(jù)結(jié)構(gòu)來構(gòu)建新的進(jìn)程通信相關(guān)的數(shù)據(jù)結(jié)構(gòu)element_send和element_recv。所述第二步,索引轉(zhuǎn)換過程中對于索引內(nèi)區(qū)向量的進(jìn)程內(nèi)索引,通過取模運算獲取塊內(nèi)索引;對于索引外區(qū)向量的進(jìn)程內(nèi)索引,通過map類型的數(shù)據(jù)結(jié)構(gòu)loc2blk,來記錄和確定進(jìn)程內(nèi)索引到塊內(nèi)索引的轉(zhuǎn)換關(guān)系。所述第二步中,外區(qū)索引向量位置映射的pos數(shù)組構(gòu)建過程為:該數(shù)組的每個元素包括了對應(yīng)的外區(qū)索引向量所在的從核編號以及在該從核上的具體偏移量,并通過位運算合并為一個整型。所述第二步中,中間過程的使用從核組資源進(jìn)行平行處理過程:使用申威眾核平臺的athread多線程庫,依據(jù)“塊行-行-列”三重循環(huán)順序,對自定義數(shù)據(jù)結(jié)構(gòu)的中間處理過程進(jìn)行從核并行,計算任務(wù)均衡的分配到64個從核,并混合使用直接和dma訪主存的方式。所述第三步中,基于分塊著色的矩陣數(shù)據(jù)結(jié)構(gòu)來構(gòu)建新的進(jìn)程通信相關(guān)的數(shù)據(jù)結(jié)構(gòu)element_send和element_recv的過程為:同時遍歷發(fā)送和接受數(shù)據(jù)所對應(yīng)的進(jìn)程內(nèi)索引位置,對于其中每個進(jìn)程內(nèi)索引位置,依據(jù)第一步前處理使用的分塊規(guī)則計算它們分塊后的塊號,并利用進(jìn)程內(nèi)索引與塊內(nèi)索引轉(zhuǎn)換的loc2blk數(shù)據(jù)結(jié)構(gòu),獲取對應(yīng)的塊內(nèi)索引位置,然后合并塊號和塊內(nèi)索引,從而構(gòu)成用來標(biāo)識發(fā)送數(shù)據(jù)索引位置的element_send數(shù)組和標(biāo)識接受數(shù)據(jù)索引位置的element_recv數(shù)組。本發(fā)明與現(xiàn)有技術(shù)相比的有益效果在于:本發(fā)明基于國產(chǎn)申威眾核平臺的體系結(jié)構(gòu),針對hpcg基準(zhǔn)測試,設(shè)計和高效實現(xiàn)了自定義的數(shù)據(jù)結(jié)構(gòu),并對其主要的構(gòu)建過程進(jìn)行從核并行化處理,相對于原始數(shù)據(jù)結(jié)構(gòu),該結(jié)構(gòu)構(gòu)造耗時少,能夠保證連續(xù)的內(nèi)存分配和對界,有助避免從核直接訪問主存和數(shù)據(jù)競爭沖突,從而減少數(shù)據(jù)移動,改善數(shù)據(jù)的時空局部性,提高并行度和帶寬的利用率,最終成功應(yīng)用于hpcg的優(yōu)化中,對其主要的spmv和symgs函數(shù)的性能和帶寬百分比都取得一致性的加速效果,最高加速比分別約為18.2和17.6,平均加速比分別約為12.2和11.7。附圖說明圖1是在申威眾核平臺上關(guān)于hpcg的自定義數(shù)據(jù)結(jié)構(gòu)構(gòu)建過程的基本流程圖;圖2是自定義數(shù)據(jù)結(jié)構(gòu)中矩陣數(shù)值的存儲重排示例圖;圖3是自定義數(shù)據(jù)結(jié)構(gòu)對應(yīng)的索引向量重排示例圖;圖4是采用自定義數(shù)據(jù)結(jié)構(gòu),在申威眾核平臺上spmv性能和帶寬百分比結(jié)果圖;圖5是采用自定義數(shù)據(jù)結(jié)構(gòu),在申威眾核平臺上symgs性能和帶寬百分比結(jié)果圖。具體實施方式下面結(jié)合附圖和示例圖對本發(fā)明進(jìn)行詳細(xì)說明。整個矩陣,采用ell格式進(jìn)行存儲,這樣能夠為數(shù)據(jù)分配連續(xù)的內(nèi)存和保證數(shù)據(jù)的對界。使用ell格式之后,由于每行的元素個數(shù)相同,所以可以直接通過計算偏移量來確定矩陣每行的起始,而不必像csr格式那樣通過存儲額外的數(shù)組來記錄每行的起始,從而減少了總的數(shù)據(jù)訪問量。在分塊的作用,基于ell格式的矩陣值和對應(yīng)索引需要按照其對應(yīng)的塊行進(jìn)行重排。對于矩陣的值來說,直接按照分塊后的行序移動即可。而對于矩陣的索引來說,需要根據(jù)所索引向量的處理方式,一般有兩種不同的處理方案:1)如果所索引的向量不按照矩陣分塊的方式進(jìn)行重排,那么只需要對索引進(jìn)行重排而無需進(jìn)行轉(zhuǎn)換。2)如果所索引的向量按照矩陣分塊的方式進(jìn)行重排,那么索引既要進(jìn)行重排,又要按照重排后的向量順序進(jìn)行對應(yīng)的轉(zhuǎn)換。不同于以上兩種處理方式,本發(fā)明在2)的基礎(chǔ)上,進(jìn)一步對轉(zhuǎn)換后的進(jìn)程內(nèi)索引進(jìn)行塊內(nèi)索引轉(zhuǎn)換。塊內(nèi)索引的范圍遠(yuǎn)遠(yuǎn)小于進(jìn)程內(nèi)索引的范圍,所以可以用短整型來替代長整型來進(jìn)行索引壓縮?;谵D(zhuǎn)換后的塊內(nèi)索引進(jìn)行相關(guān)的計算,能有助避免從核直接訪問主存和數(shù)據(jù)競爭沖突,實現(xiàn)每個從核獨立并行計算,提高帶寬利用率。無論矩陣還是向量都在分塊的基礎(chǔ)上進(jìn)行了重排,這導(dǎo)致原有的一些進(jìn)程間通信數(shù)據(jù)結(jié)構(gòu)也要隨之進(jìn)行重構(gòu),主要包括當(dāng)前進(jìn)程向其他進(jìn)程所發(fā)送數(shù)據(jù)的位置信息和當(dāng)前進(jìn)程收到其他進(jìn)程發(fā)來數(shù)據(jù)所存放的位置信息。為了支持計算過程中使用片上寄存器通信功能,本發(fā)明的自定義數(shù)據(jù)結(jié)構(gòu)增加了構(gòu)建索引向量與從核的位置映射關(guān)系數(shù)據(jù)結(jié)構(gòu)。通過這個映射關(guān)系,可以精確計算位置數(shù)據(jù)來定位每個塊所索引的向量所在的從核編號以及在其上的具體偏移量。利用計算得到的位置數(shù)據(jù),基于國產(chǎn)申威眾核平臺提供的寄存器通信機制,每個從核能夠同步的并行獲取來自于其他從核的數(shù)據(jù)。綜上所述,自定義的數(shù)據(jù)結(jié)構(gòu)如下:主要包括五個部分:1)idx,vals,以及diags用來分別存放基于分塊進(jìn)行重排和轉(zhuǎn)換后的ell格式的矩陣的索引,值和對角線的數(shù)據(jù);color_reorder和color_info分別存放分塊著色的結(jié)果和不同顏色塊的具體信息;loc2blk存放進(jìn)程內(nèi)索引到塊索引的轉(zhuǎn)換關(guān)系;elements_send和element_recv分別存放當(dāng)前進(jìn)程向其他進(jìn)程發(fā)送數(shù)據(jù)的位置信息和當(dāng)前進(jìn)程接受來自于其他進(jìn)程的數(shù)據(jù)所存放的位置信息;pos存放著當(dāng)前塊所外區(qū)索引向量元素的位置映射信息,包括在從核編號及其上的偏移量。本發(fā)明所構(gòu)造的自定義數(shù)據(jù)結(jié)構(gòu)的并行方案主要側(cè)重于在分塊著色之后,對矩陣值重排,索引轉(zhuǎn)換,以及外區(qū)向量位置映射等過程,具體并行方案包括:(1)以分塊為對象進(jìn)行從核并行,并將塊行均衡的分配給64個從核執(zhí)行。(2)采用混合策略進(jìn)行數(shù)據(jù)傳輸,即對訪問規(guī)則的數(shù)據(jù)采用dma方式進(jìn)行主核與從核之間的傳輸,而對于訪問不規(guī)則的數(shù)據(jù),采用直接訪主存的方式。如圖1所示,在申威眾核平臺上關(guān)于hpcg的自定義數(shù)據(jù)結(jié)構(gòu)構(gòu)建過程主要分為三個步驟,描述如下:1)前處理:根據(jù)矩陣元素依賴關(guān)系圖將矩陣分成行塊并對其著色處理,以構(gòu)建color_reordering和color_info數(shù)據(jù)結(jié)構(gòu),為后面的其他數(shù)據(jù)結(jié)構(gòu)的構(gòu)建進(jìn)行準(zhǔn)備工作,該過程在主核上串行執(zhí)行。2)中間過程:利用申威眾核平臺提供的athread多線程庫,同時對矩陣值重排,索引轉(zhuǎn)換,索引向量位置映射進(jìn)行從核并行。共有i-j-k三重循環(huán),依次遍歷每個塊行,各個塊行中的每行,以及各行中的每一列。當(dāng)運行到最內(nèi)層循環(huán)時,首先是對vals和diags進(jìn)行重排。然后,對原始的進(jìn)程內(nèi)索引loc_idx進(jìn)行塊內(nèi)索引轉(zhuǎn)換。在進(jìn)程內(nèi)索引到塊內(nèi)索引的轉(zhuǎn)換過程中,如果所索引的向量屬于當(dāng)前塊,就可以直接對進(jìn)程內(nèi)索引取模運算來獲得塊內(nèi)索引,對應(yīng)的索引位置稱為塊行的內(nèi)區(qū)。如果所索引的向量不屬于當(dāng)前塊行,則需要使用map類型的數(shù)據(jù)結(jié)構(gòu)loc2blk來記錄和確定進(jìn)程內(nèi)索引和塊內(nèi)索引的轉(zhuǎn)換關(guān)系,對應(yīng)的索引位置稱為塊行的外區(qū)。在索引轉(zhuǎn)換的同時,根據(jù)塊行與從核映射規(guī)則,可以確定塊行的外區(qū)索引向量的從核編號blk_id和偏移量blk_pos,并通過位運算合并成一個數(shù)據(jù)存放在pos數(shù)組里。3)后處理:構(gòu)建進(jìn)程通信所需要的element_send和element_recv數(shù)據(jù)結(jié)構(gòu),該過程放在主核上串行執(zhí)行。在完成所有的塊的處理之后,串行地遍歷發(fā)送和接受數(shù)據(jù)所對應(yīng)的進(jìn)程內(nèi)索引位置,對于其中每個進(jìn)程內(nèi)索引位置,依據(jù)前處理使用的分塊規(guī)則計算它們分塊后的塊號,并利用進(jìn)程內(nèi)索引與塊內(nèi)索引轉(zhuǎn)換的loc2blk數(shù)據(jù)結(jié)構(gòu),獲取對應(yīng)的塊內(nèi)索引位置,然后合并塊號和塊內(nèi)索引以構(gòu)成用來標(biāo)識發(fā)送數(shù)據(jù)索引位置的element_send數(shù)組和標(biāo)識接受數(shù)據(jù)索引位置的element_recv數(shù)組。從圖2所示的自定義數(shù)據(jù)結(jié)構(gòu)中矩陣值在重排前后變化的示例圖中,可以看出原始采用csr格式數(shù)據(jù)結(jié)構(gòu)的矩陣值在內(nèi)存中是不連續(xù)的,而基于分塊多色重排后的ell格式的矩陣值在內(nèi)存中是連續(xù)的。整個矩陣值以塊行為粒度連接在一起,并且相同顏色的塊行相鄰存放,構(gòu)成一個大的塊行組,可以并行的利用從核組處理,而塊行內(nèi)部的計算由于數(shù)據(jù)依賴,將在每個從核上串行處理。圖3的自定義數(shù)據(jù)結(jié)構(gòu)對應(yīng)的索引向量重排示例圖,展示了本發(fā)明中索引向量也將按照分塊多色重排的結(jié)果進(jìn)行重排。進(jìn)程層面上,原始向量也分為內(nèi)外區(qū),內(nèi)區(qū)是屬于本進(jìn)程的數(shù)據(jù),而外區(qū)存放著所依賴的周圍鄰居進(jìn)程的數(shù)據(jù)。對于內(nèi)區(qū),類似于矩陣值的重排,將按照分塊著色結(jié)果進(jìn)行重排,并且相同顏色的塊行存儲在相鄰位置。對于外區(qū),不需要依據(jù)分塊著色結(jié)果重排,繼續(xù)保持原有結(jié)構(gòu)。但是,為了后面計算過程利用寄存器通信,外區(qū)向量需要與從核進(jìn)行映射,以確定外區(qū)索引向量每個元素所在的從核編號和對應(yīng)的偏移量。圖3頂部表示索引向量的原始數(shù)據(jù)布局的內(nèi)區(qū)和外區(qū);中間表示的是索引向量數(shù)據(jù)重構(gòu)過程,對內(nèi)區(qū)采用分塊多色重排,對外區(qū)保持不變,同時進(jìn)行從核映射;底部表示重構(gòu)后的數(shù)據(jù)布局,內(nèi)區(qū)按照分塊多色排序,外區(qū)保持不變。本發(fā)明的測試平臺為申威眾核平臺26010,單個進(jìn)程的測試規(guī)模從最細(xì)層網(wǎng)格到最粗層網(wǎng)格分別為128×128×128,64×64×64,32×32×32,16×16×16,測試的函數(shù)為hpcg主要核心函數(shù)spmv和symgs。圖4表示從細(xì)到粗的四個網(wǎng)格規(guī)模上原始數(shù)據(jù)結(jié)構(gòu)和自定義數(shù)據(jù)結(jié)構(gòu)的spmv和symgs性能對比數(shù)據(jù),包括原始spmv性能,優(yōu)化spmv性能,原始symgs性能,優(yōu)化symgs性能。從圖4統(tǒng)計的性能數(shù)據(jù)可以看出,spmv和symgs的最高加速比分別約為18.2和17.6,平均加速比分別約為12.2和11.7。同樣地,圖5表示四個網(wǎng)格規(guī)模上使用原始數(shù)據(jù)結(jié)構(gòu)和自定義數(shù)據(jù)結(jié)構(gòu)的spmv和symgs函數(shù)帶寬占處理器實測帶寬百分比的對比數(shù)據(jù),包括原始spmv百分比,優(yōu)化spmv百分比,原始symgs百分比,優(yōu)化symgs百分比。在圖5中統(tǒng)計的spmv和symgs所占實測帶寬百分比中,自定義數(shù)據(jù)結(jié)構(gòu)取得了和性能加速比一致性結(jié)果,最高加速比也分別約為18.2和17.6,最低加速比也分別約為12.2和11.7。提供以上實施例僅僅是為了描述本發(fā)明的目的,而并非要限制本發(fā)明的范圍。本發(fā)明的范圍由所附權(quán)利要求限定。不脫離本發(fā)明的精神和原理而做出的各種等同替換和修改,均應(yīng)涵蓋在本發(fā)明的范圍之內(nèi)。當(dāng)前第1頁12