[發明專利]一種基于共享內存實現多進程共享GPU的方法有效
| 申請號: | 201110262389.3 | 申請日: | 2011-09-06 |
| 公開(公告)號: | CN102323917A | 公開(公告)日: | 2012-01-18 |
| 發明(設計)人: | 杜云飛;楊燦群;易會戰;王鋒;黃春;趙克佳;陳娟;李春江;左克;彭林 | 申請(專利權)人: | 中國人民解放軍國防科學技術大學 |
| 主分類號: | G06F15/167 | 分類號: | G06F15/167;G06F9/50 |
| 代理公司: | 國防科技大學專利服務中心 43202 | 代理人: | 郭敏 |
| 地址: | 410073 湖*** | 國省代碼: | 湖南;43 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 共享 內存 實現 進程 gpu 方法 | ||
1.一種基于共享內存實現多進程共享GPU的方法,其特征在于包括以下步驟:
第一步、啟動GPU服務端,GPU服務端使用系統調用sigaction為每個用戶信號設置不同的信號處理函數,用戶信號指GPU客戶端請求GPU加速計算的信號,信號處理函數是SPMD即單程序多數據程序中的GPU計算過程,即利用GPU進行加速的計算過程;
第二步、GPU服務端定義一個信號集合sigusrset,清空sigusrset集合,將設置了信號處理函數的用戶信號添加到sigusrset信號集合中;
第三步、GPU服務端檢查操作系統的信號隊列中有是否存在未處理的用戶信號,如果不存在,GPU服務端執行第四步,否則GPU服務端執行第八步;
第四步、GPU服務端等待從GPU客戶端發來的sigusrset信號集合中的用戶信號,如果沒有用戶信號到來,GPU服務端一直等待;否則,GPU服務端執行第八步;
第五步、啟動所有的GPU客戶端,每個GPU客戶端在計算結點的內存中分配一塊共享內存空間,共享內存空間的標識是GPU客戶端的進程號pid,并使用系統調用shmat將共享內存空間關聯到GPU客戶端的地址空間,使GPU客戶端可以訪問共享內存;
第六步、GPU客戶端執行其計算任務,當所有的GPU客戶端進入利用GPU加速的計算過程時,將計算過程的數據寫入共享內存空間,設置共享內存空間中的計算完成標識finished為0;
第七步、所有的GPU客戶端發送用戶信號,請求GPU服務端的GPU加速過程,發送的用戶信號中包含GPU客戶端進程號pid信息,GPU客戶端跳轉到第十一步;
第八步、GPU服務端被首先到達的用戶信號喚醒,GPU服務端將標識為pid的共享內存空間關聯到GPU服務端的地址空間,使GPU服務端可以訪問這塊內存空間的數據;
第九步、GPU服務端調用到達用戶信號的信號處理函數,執行GPU加速計算過程,未被響應的其它GPU客戶端的用戶信號在操作系統的信號隊列中排隊;
第十步,GPU服務端將計算結果寫回標識為pid的共享內存空間,設置這個共享內存空間中的計算完成標識finished為1,并釋放對此共享內存空間的關聯,GPU服務端跳轉到第三步;
第十一步,每個GPU客戶端判斷自己的共享內存空間中的計算完成標識finished是否為1,如果不為1,表明GPU加速過程未結束,GPU客戶端等待GPU服務端將finished設置為1,同時,GPU客戶端執行其CPU的計算任務;若為1,表明GPU加速過程已結束,GPU客戶端執行第十二步;
第十二步,每個GPU客戶端繼續運行其計算任務,如其計算任務已完成,則GPU客戶端刪除自己的共享內存空間,結束運行;否則,GPU客戶端跳轉到第六步。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國人民解放軍國防科學技術大學,未經中國人民解放軍國防科學技術大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110262389.3/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:用于有效分配訪問授權信息的方案
- 下一篇:使用社交信息對用戶會話進行認證





