專利名稱:一種基于動(dòng)態(tài)搜索的運(yùn)行時(shí)gpu顯存級(jí)數(shù)據(jù)復(fù)用優(yōu)化方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)圖形處理技術(shù)領(lǐng)域,涉及ー種數(shù)據(jù)復(fù)用方法,尤其是一種基于動(dòng)態(tài)搜索的運(yùn)行時(shí)GPU顯存級(jí)數(shù)據(jù)復(fù)用優(yōu)化方法。
背景技術(shù):
高性能計(jì)算發(fā)展水平是衡量ー個(gè)國(guó)家綜合國(guó)力與國(guó)際競(jìng)爭(zhēng)力的重要指標(biāo),是ー個(gè)國(guó)家科技實(shí)カ的綜合體現(xiàn)。在航空航天、核武研制、石油勘探、氣象預(yù)報(bào)、生命科學(xué)、海嘯與地震自然災(zāi)害預(yù)測(cè)等關(guān)鍵領(lǐng)域有著巨大應(yīng)用需求。因此,世界各國(guó)都競(jìng)相將高性能計(jì)算作為技術(shù)與經(jīng)濟(jì)爭(zhēng)奪的戰(zhàn)略制高點(diǎn)。目前,異構(gòu)并行系統(tǒng)架構(gòu)為解決高性能計(jì)算提供了契機(jī),它采用“主處理器+協(xié)處理器”的分エ機(jī)制,主處理器負(fù)責(zé)邏輯性較強(qiáng)的事務(wù)處理,而協(xié)處理器則負(fù)責(zé)數(shù)據(jù)密集型計(jì)算任務(wù)。但隨著主、協(xié)處理器架構(gòu)的使用,兩者之間的跨架構(gòu)通信不可避免,使得高性能計(jì)算問(wèn)題再次遇到了瓶頸。在CPU-GPU異構(gòu)并行系統(tǒng)中,CPU是主處理器,GPU是協(xié)處理器。在使用CPU-GPU系統(tǒng)處理一個(gè)涉及高性能計(jì)算的應(yīng)用問(wèn)題吋,CPU負(fù)責(zé)把該問(wèn)題的數(shù)據(jù)密集型計(jì)算任務(wù)加載到GPU上,利用GPU對(duì)數(shù)據(jù)的大規(guī)模并行處理加速計(jì)算任務(wù)的執(zhí)行,進(jìn)而縮短整個(gè)應(yīng)用問(wèn)題處理所需要的時(shí)間。但是,這個(gè)過(guò)程需要CPU將初始化數(shù)據(jù)傳輸?shù)紾PU,而GPU處理的結(jié)果也要傳輸給CPU,這就是前面所提到的架構(gòu)之間的通信。由于CPU和GPU通過(guò)PC1-E總線互連,其通信延遲高開(kāi)銷(xiāo)大,嚴(yán)重影響了 CPU-GPU解決高性能計(jì)算應(yīng)用問(wèn)題的性能提升。一種有效的解決方法是不同GPU計(jì)算任務(wù)之間復(fù)用GPU顯存數(shù)據(jù),即顯存級(jí)數(shù)據(jù)復(fù)用,這樣后執(zhí)行的GPU計(jì)算任務(wù)訪問(wèn)復(fù)用數(shù)據(jù)時(shí)不需要再次取數(shù)據(jù)到GPU顯存。在當(dāng)前技術(shù)中,可以使用源到源編譯器Cetus提供的CPU-GPU通信優(yōu)化技術(shù)或CGCM (CPU-GPU Communication Management)的 Map Promotion 對(duì) CPU-GPU 數(shù)據(jù)傳輸進(jìn)行優(yōu)化。Cetus在包含GPU計(jì)算任務(wù)的循環(huán)中將復(fù)用數(shù)據(jù)的CPU-GPU數(shù)據(jù)傳輸移動(dòng)到循環(huán)夕卜,這樣在循環(huán)執(zhí)行時(shí)最多執(zhí)行一次,不需要隨循環(huán)迭代頻繁執(zhí)行。而CGCM使用源到源編譯器,對(duì)于優(yōu)化區(qū)域內(nèi)GPU計(jì)算任務(wù)復(fù)用的數(shù)據(jù),在GPU計(jì)算任務(wù)執(zhí)行前后分別添加map和releaseタト,并在優(yōu)化區(qū)域開(kāi)始之前添加map,在其后添加unmap和release,map等的介紹如下所示,其效果相當(dāng)于將優(yōu)化區(qū)域內(nèi)對(duì)復(fù)用數(shù)據(jù)的CPU-GPU數(shù)據(jù)傳輸移動(dòng)到優(yōu)化區(qū)域外。
權(quán)利要求
1.一種基于動(dòng)態(tài)搜索的運(yùn)行時(shí)GPU顯存級(jí)數(shù)據(jù)復(fù)用優(yōu)化方法,其特征在于,包括以下步驟1)使用搜索樹(shù)表示程序執(zhí)行將已經(jīng)執(zhí)行的GPU計(jì)算任務(wù)的數(shù)據(jù)訪問(wèn)抽象為搜索樹(shù)的 access節(jié)點(diǎn);而將程序中循環(huán)、循環(huán)迭代和GPU計(jì)算任務(wù)對(duì)應(yīng)為搜索樹(shù)的loop、iteration 和funExec內(nèi)部節(jié)點(diǎn);并使用回溯搜索的方法,從與當(dāng)前數(shù)據(jù)訪問(wèn)最近的funExec節(jié)點(diǎn)出發(fā),逆向回溯檢索搜索樹(shù);假設(shè)訪問(wèn)數(shù)據(jù)為d,對(duì)于所有已經(jīng)執(zhí)行的訪問(wèn)數(shù)據(jù)d的GPU數(shù)據(jù)訪問(wèn),在搜索樹(shù)最多保留一個(gè)access節(jié)點(diǎn);2)對(duì)于GPU計(jì)算任務(wù)訪問(wèn)數(shù)據(jù)d,當(dāng)在搜索樹(shù)中檢索到訪問(wèn)數(shù)據(jù)d的access節(jié)點(diǎn)時(shí), 則說(shuō)明數(shù)據(jù)d在GPU顯存有效,GPU復(fù)用顯存數(shù)據(jù),此時(shí)若access節(jié)點(diǎn)記錄的訪問(wèn)方式為讀數(shù)據(jù)d且當(dāng)前訪問(wèn)方式為寫(xiě)數(shù)據(jù)d,則將access節(jié)點(diǎn)的訪問(wèn)方式更新為寫(xiě);當(dāng)未檢索到訪存數(shù)據(jù)d的access節(jié)點(diǎn)時(shí),說(shuō)明數(shù)據(jù)d在GPU顯存無(wú)效,使用新的access節(jié)點(diǎn)表示當(dāng)前 GPU計(jì)算任務(wù)的數(shù)據(jù)訪問(wèn),并從內(nèi)存中傳輸數(shù)據(jù)d到GPU顯存;3)對(duì)于CPU計(jì)算任務(wù)訪問(wèn)數(shù)據(jù)d,如果為CPU讀數(shù)據(jù)d,此時(shí)若在搜索樹(shù)檢索到訪問(wèn)數(shù)據(jù)d的access節(jié)點(diǎn)且該節(jié)點(diǎn)表示GPU已經(jīng)修改數(shù)據(jù)d,則說(shuō)明數(shù)據(jù)d在GPU顯存有效,在內(nèi)存無(wú)效,執(zhí)行顯存到內(nèi)存的數(shù)據(jù)更新;否則數(shù)據(jù)d在內(nèi)存有效,CPU可復(fù)用內(nèi)存數(shù)據(jù);如果為 CPU寫(xiě)數(shù)據(jù)d,則將搜索樹(shù)中表示GPU訪問(wèn)數(shù)據(jù)d的access節(jié)點(diǎn)刪除;4)在數(shù)據(jù)d的生存期結(jié)束時(shí),將表示數(shù)據(jù)d的access節(jié)點(diǎn)從搜索樹(shù)刪除。
2.根據(jù)權(quán)利要求1所述的基于動(dòng)態(tài)搜索的運(yùn)行時(shí)GPU顯存級(jí)數(shù)據(jù)復(fù)用優(yōu)化方法,其特征在于,步驟I)中,回溯搜索的方法為如果上次執(zhí)行的funExec節(jié)點(diǎn)為t。,則首先搜索tc 表示的子樹(shù),如果找到則返回;否則,令nt。=!:。,tc=tc. parent,在t。下搜索除nt。外的所有其他子樹(shù),如此反復(fù),直到找到或檢索完整棵樹(shù);對(duì)于所有已經(jīng)執(zhí)行的GPU數(shù)據(jù)訪問(wèn)數(shù)據(jù)d, 在搜索樹(shù)最多保留一個(gè)access節(jié)點(diǎn),具體實(shí)現(xiàn)方法為將存在數(shù)據(jù)復(fù)用的access節(jié)點(diǎn)移動(dòng)到當(dāng)前funExec節(jié)點(diǎn)下,表示當(dāng)前GPU數(shù)據(jù)訪問(wèn)。
全文摘要
本發(fā)明公開(kāi)了一種基于動(dòng)態(tài)搜索的GPU顯存級(jí)數(shù)據(jù)復(fù)用優(yōu)化方法,首先,將已經(jīng)執(zhí)行的GPU計(jì)算任務(wù)的數(shù)據(jù)訪問(wèn)抽象為動(dòng)態(tài)搜索樹(shù)的葉子節(jié)點(diǎn),將循環(huán)等抽象為搜索樹(shù)的內(nèi)部節(jié)點(diǎn);其次,對(duì)GPU和CPU計(jì)算任務(wù)對(duì)數(shù)據(jù)的訪問(wèn),在運(yùn)行時(shí)逆向回溯檢索搜索樹(shù)發(fā)現(xiàn)數(shù)據(jù)復(fù)用,基于數(shù)據(jù)復(fù)用實(shí)現(xiàn)對(duì)數(shù)據(jù)的就近訪問(wèn),有效減少了CPU-GPU數(shù)據(jù)傳輸次數(shù)。本發(fā)明放寬了已有技術(shù)對(duì)CPU訪問(wèn)GPU顯存復(fù)用數(shù)據(jù)的限制,在不需要編譯優(yōu)化的情況下,更有效的利用GPU顯存級(jí)數(shù)據(jù)復(fù)用消除冗余的CPU-GPU數(shù)據(jù)傳輸,進(jìn)而更大程度地縮短整個(gè)應(yīng)用問(wèn)題的處理時(shí)間。
文檔編號(hào)G06F17/30GK103020320SQ201310011319
公開(kāi)日2013年4月3日 申請(qǐng)日期2013年1月11日 優(yōu)先權(quán)日2013年1月11日
發(fā)明者董小社, 李亮, 張興軍, 顏康, 張保, 白秀秀, 朱正東 申請(qǐng)人:西安交通大學(xué)