詳細(xì)解析眾核多計(jì)算模式系統(tǒng)的構(gòu)建
0 引言
本文引用地址:http://www.ex-cimer.com/article/201808/385126.htm在航空航天、醫(yī)療服務(wù)、地質(zhì)勘探等復(fù)雜應(yīng)用領(lǐng)域,需要處理的數(shù)據(jù)量急劇增大,需要高性能的實(shí)時(shí)計(jì)算能力提供支撐。與多核處理器相比,眾核處理器計(jì)算資源密度更高、片上通信開銷顯著降低、性能/功耗比明顯提高,可為實(shí)時(shí)系統(tǒng)提供強(qiáng)大的計(jì)算能力。
在復(fù)雜應(yīng)用領(lǐng)域當(dāng)中,不同應(yīng)用場景對計(jì)算的需求可能不同。例如,移動機(jī)器人在作業(yè)時(shí),可能需要同時(shí)執(zhí)行路徑規(guī)劃、目標(biāo)識別等多個(gè)任務(wù),這些任務(wù)需要同時(shí)執(zhí)行;在對遙感圖像處理時(shí),需要對圖像數(shù)據(jù)進(jìn)行配準(zhǔn)、融合、重構(gòu)、特征提取等多個(gè)步驟,這些步驟間既需要同時(shí)執(zhí)行,又存在前驅(qū)后繼的關(guān)系。因此,基于眾核處理器進(jìn)行計(jì)算模式的動態(tài)構(gòu)造,以適應(yīng)不同的應(yīng)用場景和應(yīng)用任務(wù)成為一種新的研究方向。文獻(xiàn)[1]研究了具有邏輯核構(gòu)造能力的眾核處理器體系結(jié)構(gòu),其基本思想是基于多個(gè)細(xì)粒度處理器核構(gòu)建成粗粒度邏輯核,將不斷增加的處理器核轉(zhuǎn)化為單線程串行應(yīng)用的性能提升。文獻(xiàn)提出并驗(yàn)證了一種基于類數(shù)據(jù)流驅(qū)動模型的可重構(gòu)眾核處理器結(jié)構(gòu),實(shí)現(xiàn)了邏輯核處理器的運(yùn)行時(shí)可重構(gòu)機(jī)制。文獻(xiàn) 提出了一種支持核資源動態(tài)分組的自適應(yīng)調(diào)度算法,通過對任務(wù)簇的拆分與合并,動態(tài)構(gòu)建可彈性分區(qū)的核邏輯組,實(shí)現(xiàn)核資源的隔離優(yōu)化訪問。
GPGPU(General - Purpose Computing on GraphicsProcessing Units)作為一種典型的眾核處理器,有關(guān)研究多面向單任務(wù)并發(fā)執(zhí)行方面的優(yōu)化以及應(yīng)用算法的加速。本文以GPGPU為平臺,通過研究和設(shè)計(jì),構(gòu)建了單任務(wù)并行、多任務(wù)并行和多任務(wù)流式處理的多計(jì)算模式處理系統(tǒng)。
1 眾核處理機(jī)
1.1 眾核處理機(jī)結(jié)構(gòu)
眾核處理機(jī)是基于眾核控制單元(MPU)與眾核處理器(GPGPU)相結(jié)合的主、協(xié)處理方式構(gòu)建而成,其邏輯結(jié)構(gòu)如圖1所示。眾核處理機(jī)由眾核控制單元和眾核計(jì)算單元兩部分組成,其中眾核控制單元采用X86結(jié)構(gòu)的MPU,與眾核計(jì)算單元之間通過PCI-E總線進(jìn)行互連。
1.2 CUDA流與Hyper-Q
在統(tǒng)一計(jì)算設(shè)備架構(gòu)(Compute Unified Device Ar-chitecture,CUDA)編程模型中,CUDA流(CUDA Stream)表示GPU的一個(gè)操作隊(duì)列,通過CUDA流來管理任務(wù)和并行。CUDA 流的使用分為兩種:一種是CUDA 在創(chuàng)建上下文時(shí)會隱式地創(chuàng)建一個(gè)CUDA流,從而命令可以在設(shè)備中排隊(duì)等待執(zhí)行;另一種是在編程時(shí),在執(zhí)行配置中顯式地指定CUDA 流。不管以何種方式使用CUDA流,所有的操作在CUDA流中都是按照先后順序排隊(duì)執(zhí)行,然后每個(gè)操作按其進(jìn)入隊(duì)列的順序離開隊(duì)列。換言之,隊(duì)列充當(dāng)了一個(gè)FIFO(先入先出)緩沖區(qū),操作按照它們在設(shè)備中的出現(xiàn)順序離開隊(duì)列。
在GPU 中,有一個(gè)CUDA 工作調(diào)度器(CUDA WorkDistributor,CWD)的硬件單元,專門負(fù)責(zé)將計(jì)算工作分發(fā)到不同的流處理器中。在Fermi架構(gòu)中,雖然支持16 個(gè)內(nèi)核的同時(shí)啟動,但由于只有一個(gè)硬件工作隊(duì)列用來連接主機(jī)端CPU 和設(shè)備端GPU,造成并發(fā)的多個(gè)CUDA 流中的任務(wù)在執(zhí)行時(shí)必須復(fù)用同一硬件工作隊(duì)列,產(chǎn)生了虛假的流內(nèi)依賴關(guān)系,必須等待同一CUDA流中相互依賴的kernel執(zhí)行結(jié)束,另一CUDA流中的ker-nel才能開始執(zhí)行。而在Kepler GK110架構(gòu)中,新具有的Hyper-Q特性消除了只有單一硬件工作隊(duì)列的限制,增加了硬件工作隊(duì)列的數(shù)量,因此,在CUDA 流的數(shù)目不超過硬件工作隊(duì)列數(shù)目的前提下,允許每個(gè)CUDA流獨(dú)占一個(gè)硬件工作隊(duì)列,CUDA流內(nèi)的操作不再阻塞其他CUDA流的操作,多個(gè)CUDA流能夠并行執(zhí)行。
如圖2 所示,當(dāng)利用Hyper-Q 和CUDA 流一起工作時(shí),虛線上方顯示為Fermi模式,流1、流2、流3 復(fù)用一個(gè)硬件工作隊(duì)列,而虛線下方為Kepler Hyper-Q 模式,允許每個(gè)流使用單獨(dú)的硬件工作隊(duì)列同時(shí)執(zhí)行。
2 眾核多計(jì)算模式處理框架
為了充分發(fā)揮眾核處理器的計(jì)算能力,眾核處理系統(tǒng)面對不同的計(jì)算任務(wù)的特點(diǎn),可構(gòu)建三種計(jì)算模式,即單任務(wù)并行計(jì)算、多任務(wù)并行計(jì)算、多任務(wù)流式計(jì)算。
2.1 眾核多計(jì)算模式處理系統(tǒng)結(jié)構(gòu)
眾核多計(jì)算模式處理系統(tǒng)結(jié)構(gòu)如圖3 所示。眾核處理系統(tǒng)包括數(shù)據(jù)通信、任務(wù)管理、形態(tài)管理、資源管理和控制監(jiān)聽模塊。
數(shù)據(jù)通信模塊:提供接口給主控機(jī),負(fù)責(zé)接收從主控機(jī)發(fā)送來的任務(wù)命令和任務(wù)計(jì)算所需的任務(wù)數(shù)據(jù),并且最終將眾核處理機(jī)運(yùn)算完成的計(jì)算結(jié)果通過該模塊返回給主控機(jī)。
控制監(jiān)聽模塊:在眾核處理系統(tǒng)運(yùn)行時(shí),實(shí)時(shí)獲取主控機(jī)發(fā)送給眾核處理機(jī)的任務(wù)命令,將其傳送給任務(wù)管理模塊,并接收任務(wù)管理模塊返回的任務(wù)命令執(zhí)行結(jié)果。
任務(wù)管理模塊:負(fù)責(zé)計(jì)算任務(wù)的加載過程,將控制監(jiān)聽模塊發(fā)送來的任務(wù)命令存于任務(wù)隊(duì)列,當(dāng)眾核計(jì)算單元需要加載任務(wù)進(jìn)行計(jì)算時(shí),從任務(wù)隊(duì)列中獲取任務(wù)命令,根據(jù)任務(wù)命令從任務(wù)配置文件中獲取任務(wù)計(jì)算所需的任務(wù)信息,該任務(wù)信息包含了計(jì)算任務(wù)運(yùn)行時(shí)所需的存儲空間大小、適合于該任務(wù)的計(jì)算模式、執(zhí)行函數(shù)(即CUDA中的kernel函數(shù))等內(nèi)容,在計(jì)算任務(wù)在被加載前,需要通知形態(tài)管理模塊把眾核計(jì)算單元切換到指定的計(jì)算模式下,并通知資源管理模塊分配存儲空間,通過數(shù)據(jù)通信模塊獲取任務(wù)數(shù)據(jù),然后讀取任務(wù)計(jì)算庫,加載執(zhí)行函數(shù)進(jìn)行計(jì)算。
形態(tài)管理模塊:接收任務(wù)管理模塊發(fā)送來的目標(biāo)計(jì)算模式,切換到該種計(jì)算模式。
資源管理模塊:根據(jù)任務(wù)管理模塊發(fā)送的參數(shù)分配存儲空間,包括眾核控制單元的存儲空間和眾核計(jì)算單元的存儲空間,眾核控制單元的存儲空間用于對任務(wù)數(shù)據(jù)進(jìn)行緩存,然后通過數(shù)據(jù)傳輸?shù)腁PI接口把緩存在眾核控制單元的數(shù)據(jù)傳送到眾核計(jì)算單元的存儲空間,在計(jì)算時(shí)由從眾核計(jì)算單元存儲空間加載數(shù)據(jù)進(jìn)行計(jì)算。
評論