基于并行設(shè)備模型的高效使用緩存的量化方法
【專利摘要】本發(fā)明一種在NUMA架構(gòu)上基于并行設(shè)備模型的高效使用緩存的量化方法,該方法包括:檢查當(dāng)前堆棧是否存在CPU需要的數(shù);如果當(dāng)前堆棧不存在CPU需要的數(shù),從機(jī)器的物理內(nèi)存中取要處理的數(shù);如果當(dāng)前堆棧中存在CPU需要的數(shù),取出該非零數(shù),緩存命中統(tǒng)計(jì)變量加1;把找到CPU要處理的數(shù)更新到堆棧頂部;訪問內(nèi)存統(tǒng)計(jì)次數(shù)加1;計(jì)算本次程序運(yùn)行的緩存命中率六大步驟,借助于并行設(shè)備模型實(shí)現(xiàn)的緩存量化方法可以根據(jù)不同形狀的稀疏矩陣和不同的劃分方式對緩存命中率實(shí)現(xiàn)量化研究,它在稀疏矩陣相關(guān)操作中可以提高緩存命中率、減少通訊帶寬的使用,在高性能計(jì)算領(lǐng)域具有廣泛地實(shí)用價(jià)值和應(yīng)用前景。
【專利說明】基于并行設(shè)備模型的高效使用緩存的量化方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種在NUMA架構(gòu)上基于并行設(shè)備模型的高性能計(jì)算平臺(tái)上高效使用緩存的量化方法,具體涉及一種面向NUMA架構(gòu)的高性能計(jì)算機(jī)平臺(tái)實(shí)現(xiàn)稀疏矩陣相關(guān)操作高效使用緩存的量化方法,為在NUMA架構(gòu)實(shí)現(xiàn)的稀疏矩陣相關(guān)操作高效實(shí)用緩存提供實(shí)現(xiàn)方法和理論依據(jù),屬于高性能計(jì)算的并行數(shù)值算法領(lǐng)域。
【背景技術(shù)】
[0002]當(dāng)前一種高性能計(jì)算機(jī)的體系結(jié)構(gòu)的一種架構(gòu)為NUMA架構(gòu),它的主要特點(diǎn)是結(jié)點(diǎn)機(jī)上不同處理器都有自己的緩存,不同的處理器共享主機(jī)內(nèi)存;由于處理器訪問緩存的延遲與訪問機(jī)器共享內(nèi)存的延遲相比低數(shù)十倍,如果緩存中的數(shù)據(jù)利用率不高,內(nèi)存中的數(shù)據(jù)就會(huì)被重復(fù)訪問從而增加通訊通道的通訊壓力,又由于訪問稀疏矩陣的非零元素需要額外訪問非零元素的行下標(biāo)和列下標(biāo),從而進(jìn)一步增加訪問內(nèi)存的延遲,使整機(jī)的性能下降。解決這個(gè)問題的途徑是從算法設(shè)計(jì)角度能更好的使用緩存,增加緩存中數(shù)據(jù)的重用性;從而減少處理器訪問內(nèi)存的次數(shù),減少處理器與內(nèi)存之間數(shù)據(jù)通訊量,提高通訊帶寬的使用效率,達(dá)到提高高性能計(jì)算機(jī)性能的目的。
[0003]稀疏矩陣相關(guān)操作是許多高性能算法的核心算法,如稀疏矩陣與稀疏矩陣相乘操作主要應(yīng)用包括圖收縮算法,基于多源端點(diǎn)的寬度優(yōu)先搜索算法,遞歸最短路徑算法,多重網(wǎng)格插值/限制算法和解析上下文無關(guān)語言算法等。
[0004]隨著稀疏矩陣相關(guān)操作應(yīng)用領(lǐng)域的擴(kuò)大和計(jì)算規(guī)模的增加,大部分稀疏矩陣相關(guān)操作由多個(gè)高性能計(jì)算機(jī)并行計(jì)算完成;而由于稀疏矩陣數(shù)據(jù)分布稀疏的特點(diǎn)決定稀疏矩陣相關(guān)操作在運(yùn)行過程中能否更好使用緩存對高性能計(jì)算機(jī)性能影響更加突出,而不同的算法對緩存的利用效率差別很大,能否提供一種方法,通過盡可能少次數(shù)運(yùn)行高性能計(jì)算機(jī)就可以對該算法利用緩存的效率進(jìn)行量化評估是當(dāng)前高性能計(jì)算機(jī)應(yīng)用高效節(jié)能必不可少的技術(shù),使用該技術(shù)在高性能計(jì)算領(lǐng)域更好的利用整個(gè)計(jì)算機(jī)系統(tǒng)提供的性能和節(jié)約電能具重要的意義。
【發(fā)明內(nèi)容】
[0005]1、目的:本發(fā)明的目的是提供一種在NUMA架構(gòu)上基于并行設(shè)備模型高效實(shí)用緩存的量化方法,應(yīng)用該模型可以為不同算法的緩存命中率提供量化方法,減少為算法獲得較高性能而反復(fù)運(yùn)行程序,從達(dá)到節(jié)約能源的目的。
[0006]2、為實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案是:
本發(fā)明是在NUMA架構(gòu)上研究基于并行設(shè)備模型的高效使用緩存量化方法,其中緩存模型采用堆棧方式實(shí)現(xiàn),具體方法包括以下步驟:
步驟一.檢查當(dāng)前堆棧是否存在CPU需要的計(jì)算數(shù);
步驟二.如果當(dāng)前堆棧不存在CPU需要的數(shù),從機(jī)器的物理內(nèi)存中取出要處理的數(shù); 步驟三.如果當(dāng)前堆棧中存在CPU需要的數(shù),取出操作數(shù),且將緩存命中統(tǒng)計(jì)次數(shù)加I;
步驟四.把找到的CPU要處理的數(shù)更新到堆棧頂部;
步驟五.將訪問內(nèi)存統(tǒng)計(jì)次數(shù)加I;
步驟六.利用步驟三和步驟五得到值計(jì)算本次程序運(yùn)行的緩存命中率。
[0007]優(yōu)點(diǎn)及功效:本發(fā)明是一種在NUMA架構(gòu)上基于并行設(shè)備模型高效使用緩存的量化方法,它與現(xiàn)有技術(shù)比,其主要優(yōu)點(diǎn)是:(I)減少為高效使用緩存而獲得較高性能反復(fù)在實(shí)際機(jī)器運(yùn)行獲得適合參數(shù)的運(yùn)行次數(shù),達(dá)到節(jié)省電能的目的;(2)采用軟件管理緩存,對不同形狀的稀疏矩陣及不同的緩存尺寸的訪問內(nèi)存次數(shù)及緩存命中次數(shù)進(jìn)行準(zhǔn)確統(tǒng)計(jì);
(3)解決稀疏矩陣相關(guān)操作中根據(jù)不同形狀的稀疏矩陣及不同的劃塊大小借助于并行設(shè)備模型對緩存的命中率實(shí)現(xiàn)量化統(tǒng)計(jì)。
【專利附圖】
【附圖說明】
[0008]圖1 NUMA架構(gòu)上本發(fā)明并行設(shè)備模型框架圖
圖2 NUMA架構(gòu)上本發(fā)明并行設(shè)備模型實(shí)現(xiàn)稀疏矩陣相乘操作流程示意圖
【具體實(shí)施方式】
[0009]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)表達(dá)得更加清楚明白,下面結(jié)合附圖及具體實(shí)例對本發(fā)明再作進(jìn)一步詳細(xì)的說明。
[0010]如圖1所示,本發(fā)明是在NUMA架構(gòu)上研究基于并行設(shè)備模型的高效使用緩存量化方法,其中緩存模型采用堆棧方式實(shí)現(xiàn),具體方法包括以下步驟:
步驟一.檢查當(dāng)前堆棧是否存在CPU需要的計(jì)算數(shù);
其中,步驟一所述的主要功能是檢查當(dāng)前堆棧是否存在當(dāng)前CPU需要的計(jì)算數(shù)。本發(fā)明堆棧元素以“行值,列值,非零元素值”三元組的形式保存稀疏矩陣的非零值,其中三元組中行值、列值為區(qū)分當(dāng)前數(shù)是否為CPU需要的計(jì)算數(shù);該堆棧的容量以高性能計(jì)算機(jī)硬件緩存容量為依據(jù)(值為高性能計(jì)算機(jī)最末級緩存大小),為提高程序的可移植性,本發(fā)明將緩存容量保存在高性能計(jì)算機(jī)指定目錄的指定文本文件中,當(dāng)程序運(yùn)行時(shí)首先到指定的文件中讀取該值;緩存采用先進(jìn)先出的替換方式,實(shí)現(xiàn)具有硬件緩存實(shí)現(xiàn)的相同功能,與硬件緩存功能不同的是:該軟件管理的緩存可以統(tǒng)計(jì)訪問內(nèi)存的次數(shù)和緩存命中的次數(shù)。
[0011]步驟二.如果當(dāng)前堆棧不存在CPU需要的數(shù),從機(jī)器的物理內(nèi)存中取要處理的數(shù);
其中,步驟二所述的主要功能是如果當(dāng)前堆棧緩存中不存在要處理的數(shù),從高性能計(jì)算機(jī)的物理內(nèi)存中取要處理的數(shù);
步驟三.如果當(dāng)前堆棧中存在CPU需要的數(shù),取出操作數(shù),且緩存命中統(tǒng)計(jì)次數(shù)加I ;其中,步驟三所述的主要功能是如果當(dāng)前緩存堆棧存在當(dāng)前CPU要用于計(jì)算的數(shù),取出操作數(shù),且緩存命中統(tǒng)計(jì)次數(shù)加I;當(dāng)程序執(zhí)行完成時(shí),該變量的值為本次程序運(yùn)行緩存命中次數(shù)累加值;
步驟四.把找到CPU要處理的數(shù)更新到堆棧頂部;
其中,步驟四所述的主要功能為把剛讀取的非零元素更新堆棧中;本發(fā)明的堆棧的元素包含保存堆棧元素的數(shù)組、棧頂指針、堆棧容量和當(dāng)前堆棧的非零元素個(gè)數(shù),更新堆棧是把非零所在的行、列及非零元素的值更新到當(dāng)前堆棧棧頂?shù)奈恢茫?br>
步驟五.訪問內(nèi)存統(tǒng)計(jì)次數(shù)加I;
其中,步驟五所述的主要功能為訪問內(nèi)存次數(shù)統(tǒng)計(jì)變量值加I ;當(dāng)程序執(zhí)行完成時(shí),該變量的值為本次程序運(yùn)行訪問內(nèi)存的總次數(shù);
步驟六.計(jì)算本次程序運(yùn)行的緩存命中率。
[0012]其中,步驟六所述的主要功能為計(jì)算本次程序運(yùn)行的緩存命中率;當(dāng)程序執(zhí)行完成時(shí),用緩存命中統(tǒng)計(jì)變量值除以訪問內(nèi)存次數(shù)統(tǒng)計(jì)變量值,得到的結(jié)果為該算法運(yùn)行該例子的緩存命中率;本發(fā)明的并行設(shè)備模型可以在不同形狀稀疏矩陣及不同分塊大小的情況下,準(zhǔn)確統(tǒng)計(jì)訪問內(nèi)存的次數(shù)和緩存命中的次數(shù),為準(zhǔn)確統(tǒng)計(jì)緩存命中率提供量化數(shù)據(jù);
本發(fā)明的主要思想是在NUMA架構(gòu)的高性能計(jì)算機(jī)的硬件平臺(tái)上,應(yīng)用并行設(shè)備模型為高效使用緩存實(shí)現(xiàn)量化研究提供依據(jù)。
[0013]首先當(dāng)程序執(zhí)行CPU要取一個(gè)用于計(jì)算的數(shù)時(shí)到堆棧中讀取,當(dāng)堆棧中存在CPU要讀取的數(shù),緩存命中次數(shù)和內(nèi)存讀取次數(shù)均加1,同時(shí)把剛?cè)〉綌?shù)更新到堆棧頂部,CPU取到非零數(shù)用于計(jì)算;之后如果當(dāng)前堆棧中不存在CPU需要的數(shù),到高性能計(jì)算機(jī)的物理內(nèi)存中讀取,同時(shí)訪問內(nèi)存次數(shù)加1,并把剛讀取的非零數(shù)更新到堆棧頂部,CPU取非零數(shù)用于計(jì)算;最后當(dāng)程序執(zhí)行完成,計(jì)算算法的緩存命中率。
[0014]下面以一實(shí)例進(jìn)行說明,如圖2所示,包括以下步驟:
步驟一:檢查當(dāng)前CPU用于計(jì)算的非零數(shù)在當(dāng)前堆棧中是否存在;檢查的方法首先訪問當(dāng)前堆棧非零數(shù)是否為零,如果不為零,代表當(dāng)前堆棧不為空,依次讀取當(dāng)前堆棧指針?biāo)傅臄?shù),判斷是否為當(dāng)前CPU需要的數(shù),如果是零進(jìn)行步驟三,否則查看當(dāng)前堆棧是否有沒訪問到的數(shù),如果有繼續(xù)檢查是否是CPU需要的數(shù),如果沒有則執(zhí)行步驟二 ;如果當(dāng)前堆棧非零數(shù)為零,代表當(dāng)前堆棧不存在CPU需要的數(shù),則執(zhí)行步驟二。
[0015]步驟二:當(dāng)前堆棧中沒有CPU需要的計(jì)算數(shù),從當(dāng)前高性能計(jì)算機(jī)的物理內(nèi)存中取該數(shù)。
[0016]步驟三:當(dāng)前堆棧中有CPU需要的計(jì)算數(shù),從當(dāng)前堆棧中取出該非零數(shù),同時(shí)緩存命中統(tǒng)計(jì)變量加I。
[0017]步驟四:把CPU需要的計(jì)算數(shù)更新到堆棧中;如果CPU需要的計(jì)算數(shù)在當(dāng)前堆棧中,則把該計(jì)算數(shù)移動(dòng)到當(dāng)前堆棧棧頂?shù)奈恢?;否則該數(shù)在高性能計(jì)算機(jī)物理內(nèi)存中取到,也要把該數(shù)更新到當(dāng)前堆棧棧頂?shù)奈恢?,如果此時(shí)堆棧滿,則刪除堆棧底部的元素,否則直接把該數(shù)壓入堆棧,同時(shí)堆棧非零元素個(gè)數(shù)加I。
[0018]步驟五:訪問內(nèi)存次數(shù)統(tǒng)計(jì)變量加I ;無論當(dāng)前訪問的數(shù)是在堆棧中取到還是在高性能計(jì)算機(jī)的物理內(nèi)存中取到,均需將訪問內(nèi)存次數(shù)加I。
[0019]步驟六:程序運(yùn)行完成,統(tǒng)計(jì)算法的緩存命中率;計(jì)算的方法:緩存命中統(tǒng)計(jì)變量值除以訪問內(nèi)存次數(shù)統(tǒng)計(jì)變量值,得到的商為算法的緩存命中率。
[0020]本實(shí)例中主要研究采用并行設(shè)備模型高效使用緩存的量化方法,該方法只與算法自身所具有的能否使用緩存的特性有關(guān),而與本發(fā)明并行設(shè)備模型無關(guān)。
[0021]最后所應(yīng)說明的是:以上實(shí)例僅用以說明而非限制本發(fā)明的技術(shù)方案,盡管參照上述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:依然可以對本發(fā)0J ?MIIIèS =i 4* o
【權(quán)利要求】
1.一種基于并行設(shè)備模型的高效使用緩存的量化方法,該方法是在NUMA架構(gòu)上研究基于并行設(shè)備模型的高效使用緩存量化方法,緩存模型采用堆棧方式實(shí)現(xiàn),其特征在于:該方法包括以下步驟: 步驟一.檢查當(dāng)前堆棧是否存在CPU需要的計(jì)算數(shù); 步驟二.如果當(dāng)前堆棧不存在CPU需要的數(shù),從機(jī)器的物理內(nèi)存中取出要處理的數(shù); 步驟三.如果當(dāng)前堆棧中存在CPU需要的數(shù),取出操作數(shù),且將緩存命中統(tǒng)計(jì)次數(shù)加I; 步驟四.把找到的CPU要處理的數(shù)更新到堆棧頂部; 步驟五.將訪問內(nèi)存統(tǒng)計(jì)次數(shù)加I; 步驟六.利用步驟三和步驟五得到的值計(jì)算本次程序運(yùn)行的緩存命中率。
2.根據(jù)權(quán)利要求1所述的一種基于并行設(shè)備模型的高效使用緩存的量化方法,其特征在于:步驟一所述堆棧的元素以“行值,列值,非零元素值”三元組的形式保存稀疏矩陣的非零值,其中三元組中行值、列值為區(qū)分當(dāng)前數(shù)是否為CPU需要的計(jì)算數(shù);該堆棧的容量以高性能計(jì)算機(jī)硬件緩存容量為依據(jù),值為高性能計(jì)算機(jī)最末級緩存大小,為提高程序的可移植性,將緩存容量保存在高性能計(jì)算機(jī)指定目錄的指定文本文件中,當(dāng)程序運(yùn)行時(shí)首先到指定的文件中讀取該值;緩存采用先進(jìn)先出的替換方式,實(shí)現(xiàn)具有硬件緩存的相同功能。
3.根據(jù)權(quán)利要求1所述的一種基于并行設(shè)備模型的高效使用緩存的量化方法,其特征在于:步驟三所述是如果當(dāng)前緩存堆棧存在當(dāng)前CPU要用于計(jì)算的數(shù),取出操作數(shù),且緩存命中統(tǒng)計(jì)次數(shù)加I ;當(dāng)程序執(zhí)行完成時(shí),該變量的值為本次程序運(yùn)行緩存命中次數(shù)累加值。
4.根據(jù)權(quán)利要求1所述的一種基于并行設(shè)備模型的高效使用緩存的量化方法,其特征在于:步驟四所述把剛讀取的非零元素更新堆棧中;堆棧的元素包含保存堆棧元素的數(shù)組、棧頂指針、堆棧容量和當(dāng)前堆棧的非零元素個(gè)數(shù),更新堆棧是把非零元素所在的行、列及非零元素的值更新到當(dāng)前堆棧棧頂?shù)奈恢谩?br>
5.根據(jù)權(quán)利要求1所述的一種基于并行設(shè)備模型的高效使用緩存的量化方法,其特征在于:步驟五所述為訪問內(nèi)存次數(shù)統(tǒng)計(jì)變量值加I ;當(dāng)程序執(zhí)行完成時(shí),該變量的值為本次程序運(yùn)行訪問內(nèi)存的總次數(shù)。
【文檔編號(hào)】G06F12/08GK103593304SQ201210287737
【公開日】2014年2月19日 申請日期:2012年8月14日 優(yōu)先權(quán)日:2012年8月14日
【發(fā)明者】陶袁, 任可欣, 付軍, 張運(yùn)林, 陳永勝, 丁雪瑩 申請人:吉林師范大學(xué)