欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于gpu/cpu混合架構(gòu)的流程序多粒度劃分與調(diào)度方法

文檔序號:9249161閱讀:1089來源:國知局
一種基于gpu/cpu混合架構(gòu)的流程序多粒度劃分與調(diào)度方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于基于GPU/CPU混合架構(gòu)系統(tǒng)平臺技術(shù)領(lǐng)域,更具體地,涉及一種基于GPU/CPU混合架構(gòu)的流程序多粒度劃分與調(diào)度方法。
【背景技術(shù)】
[0002]CPU多核系統(tǒng)的出現(xiàn)大大提高了相關(guān)領(lǐng)域應(yīng)用的執(zhí)行效率,特別是在數(shù)字媒體處理和科學(xué)計算等計算密集型的應(yīng)用領(lǐng)域。而圖形處理單元(Graphic Processing Unit,以下簡稱GPU)系統(tǒng)結(jié)構(gòu)的不斷升級促進(jìn)了 GPU計算的發(fā)展,使之不僅能高效地進(jìn)行計算機圖形的計算,而且在大規(guī)模數(shù)據(jù)的并行計算方面也具有很大的優(yōu)勢。與CPU多核系統(tǒng)相比,GPU具有核心處理單元多、線程粒度細(xì)、浮點運算能力強等特點,更適合應(yīng)用于并行計算領(lǐng)域?;贕PU的高效并行計算主要利用混合架構(gòu)中CPU與GPU協(xié)作計算的模式。根據(jù)CPU串行計算和內(nèi)存讀取的優(yōu)勢以及GPU強大的浮點計算能力,在混合架構(gòu)進(jìn)行計算過程中,CPU負(fù)責(zé)控制主程序的流程和串行計算,準(zhǔn)備GPU計算時所需的數(shù)據(jù)并將其傳給GPU,利用GTO進(jìn)行高效的并行計算。通過GPU與CPU的協(xié)作計算,充分利用各計算資源的優(yōu)勢,有效地提高了應(yīng)用程序的執(zhí)行性能。目前面向GPU計算的應(yīng)用程序編寫都是利用CPU與GPU協(xié)作計算的模式,例如OpenCL、CUDA等。GPU/CPU混合架構(gòu)系統(tǒng)主要用來提高具有高度并行性,異構(gòu)通信量小,并且不具有并行性的計算任務(wù)的工作量比較小等特點的應(yīng)用的執(zhí)行效率。多CPU和多GPU協(xié)作計算被應(yīng)用在多個方面,例如交互式物理仿真、鏡頭邊界檢測、財務(wù)應(yīng)用計算等。
[0003]數(shù)據(jù)流編程語言(Data Flow Programming Language,DFPL)是一種面向領(lǐng)域的編程語言(Domain Specific Language,DSL),數(shù)據(jù)流程序以數(shù)據(jù)驅(qū)動的方式執(zhí)行,并將任務(wù)計算與數(shù)據(jù)通信分開,很好地暴露出應(yīng)用程序在任務(wù)級和數(shù)據(jù)級的可并行性。編寫數(shù)據(jù)流程序時,程序員只需根據(jù)相關(guān)領(lǐng)域?qū)嶋H問題自身的特點進(jìn)行數(shù)據(jù)流程序的編寫,簡化了相關(guān)領(lǐng)域的應(yīng)用程序編程。在多CPU和多GPU這種混合架構(gòu)下,GPU與GPU間的數(shù)據(jù)通信開銷遠(yuǎn)遠(yuǎn)大于各計算單元的計算開銷,任務(wù)劃分的目標(biāo)是充分發(fā)揮CPU邏輯控制與串行計算的優(yōu)勢和GPU高性能計算的優(yōu)勢,將適合GPU計算的任務(wù)分配到可用的GPU平臺上,適合CPU計算的任務(wù)分配到CPU平臺上,保證負(fù)載均衡和GPU間的數(shù)據(jù)通信開銷盡可能的小,同時使GTO計算與通信的重疊度盡可能的高,以提高應(yīng)用程序的執(zhí)行性能。常見的靜態(tài)任務(wù)劃分方法有:貪心劃分方法、親和性劃分方法、循環(huán)分發(fā)劃分方法、基于圖劃分工具M(jìn)etis和K路圖劃分方法。貪心劃分方法是每次選擇計算量最小的任務(wù)進(jìn)行分配,但其忽略了各個設(shè)備間的通信量。親和性劃分方法是每次選擇數(shù)據(jù)依賴比較大的計算任務(wù)(actor)劃分到同一個計算單元上,以達(dá)到通信開銷減小的目的,但這樣劃分很容易導(dǎo)致actor扎堆,使某個計算單元上的負(fù)載過大,該劃分方法常用于有較少數(shù)量計算單元的任務(wù)劃分。循環(huán)分發(fā)劃分方法是將actor逐個劃分到各計算單元,該劃分方法沒有考慮actor的工作量和通信量,當(dāng)同步數(shù)據(jù)流(Synchronous Data Flow, SDF)圖中每個actor計算量都比較均衡的情況比較適用該方法。Metis劃分方法的目標(biāo)是在滿足一定負(fù)載均衡的條件下,盡可能的減少actor間的通信量,但是由于Metis劃分方法的局部最優(yōu)性,使得各個設(shè)備間的邊界節(jié)點和節(jié)點間的通信邊并沒有得到充分的減少。K路圖劃分方法保證了負(fù)載均衡,同時考慮到GPU與GPU間高額的通信開銷,使最終的每個劃分塊都是一個連通圖,降低了通信開銷,但其對分配到CPU端的計算結(jié)點沒有進(jìn)行優(yōu)化處理。
[0004]在多CPU和多GPU混合架構(gòu)平臺上,利用混合架構(gòu)的系統(tǒng)結(jié)構(gòu)特點以及數(shù)據(jù)流程序本身存在的并行性,來提高程序的執(zhí)行性能,需要解決以下三大問題。第一,在多CPU和多GPU混合架構(gòu)系統(tǒng)平臺上,GPU與GPU不能直接的進(jìn)行數(shù)據(jù)的傳輸,只能通過GPU先傳輸給CPU,再由CPU把相應(yīng)的數(shù)據(jù)傳輸給另一個接收數(shù)據(jù)的GPU,這種通信方式將會帶來巨大的通信開銷。如何把GPU端的任務(wù)劃分給多個GPU并且使各個GPU的負(fù)載相對均衡,GPU與GPU間的通信盡可能的小,計算與通信的重疊度盡可能的高,是目前所有研宄者面臨的一個大問題;第二,GPU的并行計算規(guī)模比較大,如果分配給GPU的任務(wù)數(shù)量很少或者每個任務(wù)的工作量比較小,將會導(dǎo)致GPU的系統(tǒng)資源沒有很好的利用,應(yīng)用程序的執(zhí)行性能明顯低于相同程序在CPU上的執(zhí)行性能。如何把GPU端的任務(wù)調(diào)度到相應(yīng)的計算單元去執(zhí)行,挖掘應(yīng)用程序自身存在的并行性,更好的利用GPU高效的并行計算能力以及存儲資源,也是需要解決的一個問題;第三,CPU與GPU的系統(tǒng)結(jié)構(gòu)不同,二者的計算能力也不同。CPU端任務(wù)在進(jìn)行任務(wù)劃分的過程中,既要保證CPU端各個核的負(fù)載均衡,也要保證劃分完成后CPU端每個核的計算與GPU端的計算以及異構(gòu)平臺間的數(shù)據(jù)通信的重疊度更高,以減小應(yīng)用程序整體的同步開銷。而針對不同的應(yīng)用程序,劃分到GPU端任務(wù)的工作量會根據(jù)輸入條件而發(fā)生變化,如何在GPU端工作量動態(tài)變化的條件下,自適應(yīng)的確定所需的CPU核數(shù),將CPU端的任務(wù)均衡地調(diào)度到CPU核上執(zhí)行,也是需要解決的一大難點問題。

【發(fā)明內(nèi)容】

[0005]針對現(xiàn)有技術(shù)的以上缺陷或改進(jìn)需求,本發(fā)明提供一種基于GPU/CPU混合架構(gòu)的流程序多粒度劃分與調(diào)度方法,針對GPU/CPU混合架構(gòu)下存在的大量數(shù)據(jù)并行、任務(wù)并行和流水線并行等問題,利用同步數(shù)據(jù)流圖作為中間表示,設(shè)計并實現(xiàn)了一個基于GPU/CPU混合架構(gòu)的數(shù)據(jù)流程序多粒度劃分與調(diào)度方法,通過該方法有效提高了數(shù)據(jù)流程序在GPU/CPU混合架構(gòu)下的執(zhí)行性能。
[0006]本發(fā)明提供一種基于GPU/CPU混合架構(gòu)的流程序多粒度劃分與調(diào)度方法,包括以下步驟:
[0007]步驟I引入擴大因子,將actor穩(wěn)態(tài)執(zhí)行次數(shù)整體擴大;
[0008]步驟2根據(jù)actor是否具有可并行性以及相應(yīng)通信開銷的大小將其分配到GPU端或CPU端上去運行;
[0009]步驟3根據(jù)actor連續(xù)迭代執(zhí)行是否存在數(shù)據(jù)依賴性,將其水平分裂到各GPU端;
[0010]步驟4選擇合適的CPU核數(shù)量,將CPU端任務(wù)均衡分配給各CPU核;
[0011]步驟5對SDF圖進(jìn)行拓?fù)渑判蛞詽M足數(shù)據(jù)的讀寫規(guī)則,依次遍歷拓?fù)渑判蛑械母鱝ctor,確定各actor被流水調(diào)度執(zhí)行時的階段號;
[0012]步驟6根據(jù)各actor的通信特點,采用不同存儲結(jié)構(gòu)和不同訪問類型進(jìn)行數(shù)據(jù)流程序的存儲訪問優(yōu)化;
[0013]步驟7根據(jù)各actor的計算特點,壓縮計算相同的actor的目標(biāo)代碼。
[0014]總體而言,通過本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,具有以下有益效果:
[0015](I)根據(jù)任務(wù)的計算特點和通信量大小,對任務(wù)進(jìn)行分類處理,充分利用CPU與GPU各自的優(yōu)勢,同時降低整體程序的通信量;
[0016](2)提出了一種GPU端任務(wù)的水平分裂算法,利用GPU端任務(wù)的并行性將其均衡分裂到各GPU,以防止GPU與GPU間高額的通信開銷影響數(shù)據(jù)流程序的整體性能;
[0017](3)提出了一種CPU端離散任務(wù)均衡化算法,針對這些CPU端的離散結(jié)點,結(jié)合復(fù)制分裂算法,選擇合適CPU核,采用貪心的思想,均衡地將各計算結(jié)點分成若干個劃分并將各劃分映射到相應(yīng)的CPU核上,保證各CPU核的負(fù)載均衡并提高各CPU核的利用率;
[0018](4)根據(jù)數(shù)據(jù)流程序的計算和通信特點,提出多種存儲結(jié)構(gòu)多種訪問類型的存儲訪問優(yōu)化方法,提高了存儲的訪問效率;
[0019](5)針對存在的大量actor計算任務(wù)相同的問題,提出目標(biāo)代碼優(yōu)化方法,生成目標(biāo)模板類,大大減小目標(biāo)代碼的冗余量。
【附圖說明】
[0020]圖1為本發(fā)明基于GPU/CPU混合架構(gòu)的流程序多粒度劃分與調(diào)度方法的流程圖;
[0021]圖2為本發(fā)明基于GPU/CPU混合架構(gòu)的數(shù)據(jù)流程序任務(wù)分類處理結(jié)果示意圖;
[0022]圖3為本發(fā)明基于GPU/CPU混合架構(gòu)的數(shù)據(jù)流程序GPU端任務(wù)的水平分裂結(jié)果示意圖;
[0023]圖4為本發(fā)明基于GPU/CPU混合架構(gòu)的數(shù)據(jù)流程序CPU端計算所需核數(shù)的確定流程圖;
[0024]圖5為本發(fā)明基于GPU/CPU混合架構(gòu)的數(shù)據(jù)流程序階段賦值結(jié)果示意圖;
[0025]圖6為本發(fā)明一種基于GPU/CPU混合架構(gòu)的數(shù)據(jù)流程序多種存儲結(jié)構(gòu)及多種訪問類型示意圖。
【具體實施方式】
[0026]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)
當(dāng)前第1頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
邻水| 志丹县| 湖北省| 奉化市| 南乐县| 水城县| 县级市| 黔江区| 西青区| 武冈市| 甘谷县| 裕民县| 海淀区| 湟中县| 绥宁县| 囊谦县| 历史| 商洛市| 松潘县| 临澧县| 体育| 石阡县| 鄂托克前旗| 林芝县| 林西县| 张家港市| 建水县| 花莲县| 安康市| 兰溪市| 乐东| 奉节县| 云霄县| 延安市| 宁晋县| 北宁市| 巴南区| 泰和县| 于都县| 襄汾县| 东乌|