[發(fā)明專利]一種基于共享內(nèi)存實現(xiàn)多進程共享GPU的方法有效
| 申請?zhí)枺?/td> | 201110262389.3 | 申請日: | 2011-09-06 |
| 公開(公告)號: | CN102323917A | 公開(公告)日: | 2012-01-18 |
| 發(fā)明(設(shè)計)人: | 杜云飛;楊燦群;易會戰(zhàn);王鋒;黃春;趙克佳;陳娟;李春江;左克;彭林 | 申請(專利權(quán))人: | 中國人民解放軍國防科學(xué)技術(shù)大學(xué) |
| 主分類號: | G06F15/167 | 分類號: | G06F15/167;G06F9/50 |
| 代理公司: | 國防科技大學(xué)專利服務(wù)中心 43202 | 代理人: | 郭敏 |
| 地址: | 410073 湖*** | 國省代碼: | 湖南;43 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 共享 內(nèi)存 實現(xiàn) 進程 gpu 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及圖形處理單元GPU(Graphics?Processing?Unit)的共享方法,尤其指基于共享內(nèi)存進行數(shù)據(jù)通信在多進程間共享GPU的方法。
背景技術(shù)
近年來,隨著GPU硬件技術(shù)以及編程模型的不斷發(fā)展,GPU強大的計算能力受到越來越多的重視,大量的科學(xué)計算程序都采用GPU加速其關(guān)鍵代碼段,獲得了良好的加速比。使用GPU的科學(xué)計算程序的任務(wù)為:初始化GPU,為GPU準(zhǔn)備數(shù)據(jù),GPU計算,GPU將計算結(jié)果寫回,釋放GPU。
然而,現(xiàn)有的GPU不支持多個進程同時訪問。當(dāng)一個進程初始化GPU之后,在釋放GPU之前,其它的進程是無法使用GPU的。SPMD(Single?Program?Multi?Data,單程序多數(shù)據(jù))的并行程序是現(xiàn)在的科學(xué)計算程序的主流并行編程模式,對于SPMD的并行程序,每個進程執(zhí)行的代碼是相同的,只是處理的數(shù)據(jù)不同。當(dāng)SPMD并行程序的多個進程運行在單個異構(gòu)計算結(jié)點(由一個或多個CPU、一個GPU構(gòu)成,如圖1所示)上時,在SPMD程序利用GPU加速的計算過程中,由于每個進程執(zhí)行的代碼是相同的,多個進程會同時競爭使用同一個GPU,這樣就會導(dǎo)致并行程序出現(xiàn)運行故障。如圖2所示,P0和P1是指異構(gòu)計算結(jié)點上運行的SPMD程序的進程,這兩個進程會同時競爭同一個GPU,導(dǎo)致并行程序無法運行。
目前,美國專利US20090201303A1“Multi-User?Multi-GPU?Render?Server?Apparatus?And?Methods”給出了一種網(wǎng)絡(luò)環(huán)境下多個用戶共享使用一個GPU服務(wù)端的方法。GPU服務(wù)端是一個含有一個或多個GPU設(shè)備的計算結(jié)點,一個或多個客戶端計算機可以同時連接到GPU服務(wù)端。GPU服務(wù)端接收客戶端的消息,創(chuàng)建數(shù)據(jù)集的繪制圖像,然后,將繪制的圖像發(fā)回到客戶端。但是,這種網(wǎng)絡(luò)環(huán)境中共享GPU的方法中,客戶端與服務(wù)端之間的數(shù)據(jù)傳輸通過網(wǎng)絡(luò)完成,傳輸速度慢,不能適用于單個計算結(jié)點上多個進程共享使用GPU的情況。
綜上所述,當(dāng)前的專利與文獻中未見有如何在CPU+GPU的異構(gòu)計算結(jié)點(由一個或多個CPU、一個GPU構(gòu)成)上多個SPMD程序的進程共享GPU的相關(guān)報道,在單個異構(gòu)計算結(jié)點上解決SPMD程序的進程共享使用GPU是本領(lǐng)域技術(shù)人員迫切希望解決的技術(shù)問題。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題在于:針對單個異構(gòu)計算結(jié)點上SPMD程序的多個進程之間不能共享使用GPU的情況,提出了一種基于共享內(nèi)存進行數(shù)據(jù)通信的方法,實現(xiàn)多進程共享使用GPU。以下將SPMD程序的進程簡稱為進程。
請求GPU加速的進程稱為GPU客戶端,響應(yīng)GPU加速請求的進程稱為GPU服務(wù)端。計算結(jié)點中存在多個GPU客戶端和一個GPU服務(wù)端。
本發(fā)明的技術(shù)方案為:啟動GPU服務(wù)端,GPU服務(wù)端等待GPU客戶端請求信號的到來。啟動GPU客戶端,在需要GPU加速時,GPU客戶端發(fā)送請求信號給GPU服務(wù)端,GPU服務(wù)端響應(yīng)最先接收到的請求信號,使用GPU進行加速計算,同時GPU客戶端執(zhí)行CPU的計算過程。GPU計算過程中,來自GPU客戶端的請求信號進入操作系統(tǒng)的信號隊列排隊。GPU計算完成后,GPU服務(wù)端響應(yīng)信號隊列中的其它請求信號。
具體技術(shù)方案為:
第一步、啟動GPU服務(wù)端,GPU服務(wù)端使用系統(tǒng)調(diào)用sigaction為每個用戶信號(即GPU客戶端請求GPU加速計算的信號)設(shè)置不同的信號處理函數(shù),信號處理函數(shù)是SPMD程序中的GPU計算過程,即利用GPU進行加速的計算過程;
第二步、GPU服務(wù)端定義一個信號集合sigusrset,清空sigusrset集合,將設(shè)置了信號處理函數(shù)的用戶信號添加到sigusrset信號集合中;
第三步、GPU服務(wù)端檢查操作系統(tǒng)的信號隊列中有是否存在未處理的用戶信號,如果不存在,GPU服務(wù)端執(zhí)行第四步,否則GPU服務(wù)端執(zhí)行第八步;
第四步、GPU服務(wù)端等待從GPU客戶端發(fā)來的sigusrset信號集合中的用戶信號,如果沒有用戶信號到來,GPU服務(wù)端一直等待;否則,GPU服務(wù)端執(zhí)行第八步;
第五步、啟動所有的GPU客戶端,每個GPU客戶端在計算結(jié)點的內(nèi)存中分配一塊共享內(nèi)存空間,共享內(nèi)存空間的標(biāo)識是GPU客戶端的進程號pid,并使用系統(tǒng)調(diào)用shmat將共享內(nèi)存空間關(guān)聯(lián)到GPU客戶端的地址空間,使GPU客戶端可以訪問共享內(nèi)存;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于中國人民解放軍國防科學(xué)技術(shù)大學(xué),未經(jīng)中國人民解放軍國防科學(xué)技術(shù)大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110262389.3/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字數(shù)據(jù)處理
G06F15-00 通用數(shù)字計算機
G06F15-02 .通過鍵盤輸入的手動操作,以及應(yīng)用機內(nèi)程序的計算,例如,袖珍計算器
G06F15-04 .在引入被處理的數(shù)據(jù)的同時,進行編制程序的,例如,在同一記錄載體上
G06F15-08 .應(yīng)用插接板編制程序的
G06F15-16 .兩個或多個數(shù)字計算機的組合,其中每臺至少具有一個運算器、一個程序器及一個寄存器,例如,用于數(shù)個程序的同時處理
G06F15-18 .其中,根據(jù)計算機本身在一個完整的運行期間內(nèi)所取得的經(jīng)驗來改變程序的;學(xué)習(xí)機器
- 互動業(yè)務(wù)終端、實現(xiàn)系統(tǒng)及實現(xiàn)方法
- 街景地圖的實現(xiàn)方法和實現(xiàn)系統(tǒng)
- 游戲?qū)崿F(xiàn)系統(tǒng)和游戲?qū)崿F(xiàn)方法
- 圖像實現(xiàn)裝置及其圖像實現(xiàn)方法
- 增強現(xiàn)實的實現(xiàn)方法以及實現(xiàn)裝置
- 軟件架構(gòu)的實現(xiàn)方法和實現(xiàn)平臺
- 數(shù)值預(yù)報的實現(xiàn)方法及實現(xiàn)系統(tǒng)
- 空調(diào)及其冬眠控制模式實現(xiàn)方法和實現(xiàn)裝置以及實現(xiàn)系統(tǒng)
- 空調(diào)及其睡眠控制模式實現(xiàn)方法和實現(xiàn)裝置以及實現(xiàn)系統(tǒng)
- 輸入設(shè)備實現(xiàn)方法及其實現(xiàn)裝置





