新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 詳細解析眾核多計算模式系統的構建

        詳細解析眾核多計算模式系統的構建

        作者: 時間:2018-08-02 來源:網絡 收藏

        0 引言

        本文引用地址:http://www.104case.com/article/201808/385126.htm

        在航空航天、醫療服務、地質勘探等復雜應用領域,需要處理的數據量急劇增大,需要高性能的實時計算能力提供支撐。與多核處理器相比,計算資源密度更高、片上通信開銷顯著降低、性能/功耗比明顯提高,可為實時系統提供強大的計算能力。

        在復雜應用領域當中,不同應用場景對計算的需求可能不同。例如,移動機器人在作業時,可能需要同時執行路徑規劃、目標識別等多個任務,這些任務需要同時執行;在對遙感圖像處理時,需要對圖像數據進行配準、融合、重構、特征提取等多個步驟,這些步驟間既需要同時執行,又存在前驅后繼的關系。因此,基于進行計算模式的動態構造,以適應不同的應用場景和應用任務成為一種新的研究方向。文獻[1]研究了具有邏輯核構造能力的體系結構,其基本思想是基于多個細粒度處理器核構建成粗粒度邏輯核,將不斷增加的處理器核轉化為單線程串行應用的性能提升。文獻提出并驗證了一種基于類數據流驅動模型的可重構眾核處理器結構,實現了邏輯核處理器的運行時可重構機制。文獻 提出了一種支持核資源動態分組的自適應調度算法,通過對任務簇的拆分與合并,動態構建可彈性分區的核邏輯組,實現核資源的隔離優化訪問。

        GPGPU(General - Purpose Computing on GraphicsProcessing Units)作為一種典型的眾核處理器,有關研究多面向單任務并發執行方面的優化以及應用算法的加速。本文以GPGPU為平臺,通過研究和設計,構建了單任務并行、多任務并行和多任務流式處理的多計算模式處理系統。

        1 眾核處理機

        1.1 眾核處理機結構

        眾核處理機是基于眾核控制單元(MPU)與眾核處理器(GPGPU)相結合的主、協處理方式構建而成,其邏輯結構如圖1所示。眾核處理機由眾核控制單元和眾核計算單元兩部分組成,其中眾核控制單元采用X86結構的MPU,與眾核計算單元之間通過PCI-E總線進行互連。


        1.2 流與Hyper-Q

        在統一計算設備架構(Compute Unified Device Ar-chitecture,)編程模型中,流(CUDA Stream)表示GPU的一個操作隊列,通過CUDA流來管理任務和并行。CUDA 流的使用分為兩種:一種是CUDA 在創建上下文時會隱式地創建一個CUDA流,從而命令可以在設備中排隊等待執行;另一種是在編程時,在執行配置中顯式地指定CUDA 流。不管以何種方式使用CUDA流,所有的操作在CUDA流中都是按照先后順序排隊執行,然后每個操作按其進入隊列的順序離開隊列。換言之,隊列充當了一個FIFO(先入先出)緩沖區,操作按照它們在設備中的出現順序離開隊列。

        在GPU 中,有一個CUDA 工作調度器(CUDA WorkDistributor,CWD)的硬件單元,專門負責將計算工作分發到不同的流處理器中。在Fermi架構中,雖然支持16 個內核的同時啟動,但由于只有一個硬件工作隊列用來連接主機端CPU 和設備端GPU,造成并發的多個CUDA 流中的任務在執行時必須復用同一硬件工作隊列,產生了虛假的流內依賴關系,必須等待同一CUDA流中相互依賴的kernel執行結束,另一CUDA流中的ker-nel才能開始執行。而在Kepler GK110架構中,新具有的Hyper-Q特性消除了只有單一硬件工作隊列的限制,增加了硬件工作隊列的數量,因此,在CUDA 流的數目不超過硬件工作隊列數目的前提下,允許每個CUDA流獨占一個硬件工作隊列,CUDA流內的操作不再阻塞其他CUDA流的操作,多個CUDA流能夠并行執行。

        如圖2 所示,當利用Hyper-Q 和CUDA 流一起工作時,虛線上方顯示為Fermi模式,流1、流2、流3 復用一個硬件工作隊列,而虛線下方為Kepler Hyper-Q 模式,允許每個流使用單獨的硬件工作隊列同時執行。


        2 眾核多計算模式處理框架

        為了充分發揮眾核處理器的計算能力,眾核處理系統面對不同的計算任務的特點,可構建三種計算模式,即單任務并行計算、多任務并行計算、多任務流式計算。

        2.1 眾核多計算模式處理系統結構

        眾核多計算模式處理系統結構如圖3 所示。眾核處理系統包括數據通信、任務管理、形態管理、資源管理和控制監聽模塊。


        數據通信模塊:提供接口給主控機,負責接收從主控機發送來的任務命令和任務計算所需的任務數據,并且最終將眾核處理機運算完成的計算結果通過該模塊返回給主控機。

        控制監聽模塊:在眾核處理系統運行時,實時獲取主控機發送給眾核處理機的任務命令,將其傳送給任務管理模塊,并接收任務管理模塊返回的任務命令執行結果。

        任務管理模塊:負責計算任務的加載過程,將控制監聽模塊發送來的任務命令存于任務隊列,當眾核計算單元需要加載任務進行計算時,從任務隊列中獲取任務命令,根據任務命令從任務配置文件中獲取任務計算所需的任務信息,該任務信息包含了計算任務運行時所需的存儲空間大小、適合于該任務的計算模式、執行函數(即CUDA中的kernel函數)等內容,在計算任務在被加載前,需要通知形態管理模塊把眾核計算單元切換到指定的計算模式下,并通知資源管理模塊分配存儲空間,通過數據通信模塊獲取任務數據,然后讀取任務計算庫,加載執行函數進行計算。

        形態管理模塊:接收任務管理模塊發送來的目標計算模式,切換到該種計算模式。

        資源管理模塊:根據任務管理模塊發送的參數分配存儲空間,包括眾核控制單元的存儲空間和眾核計算單元的存儲空間,眾核控制單元的存儲空間用于對任務數據進行緩存,然后通過數據傳輸的API接口把緩存在眾核控制單元的數據傳送到眾核計算單元的存儲空間,在計算時由從眾核計算單元存儲空間加載數據進行計算。


        上一頁 1 2 下一頁

        關鍵詞: 眾核處理器 CUDA

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 清原| 和静县| 大同县| 香河县| 黄骅市| 禄劝| 漳州市| 府谷县| 桐柏县| 志丹县| 巴林右旗| 台前县| 博兴县| 博罗县| 青神县| 郸城县| 石台县| 温州市| 伊金霍洛旗| 古田县| 读书| 华坪县| 金沙县| 新密市| 海伦市| 子长县| 丹凤县| 霍邱县| 无极县| 凭祥市| 财经| 花垣县| 和政县| 龙岩市| 赫章县| 视频| 浑源县| 南川市| 三都| 遵化市| 洞头县|