[發明專利]基于GPU的稀疏矩陣數據存儲方法有效
| 申請號: | 201110415911.7 | 申請日: | 2011-12-13 |
| 公開(公告)號: | CN102436438A | 公開(公告)日: | 2012-05-02 |
| 發明(設計)人: | 金海;鄭然;胡侃;曾敬翔;馮曉文 | 申請(專利權)人: | 華中科技大學 |
| 主分類號: | G06F17/16 | 分類號: | G06F17/16 |
| 代理公司: | 華中科技大學專利中心 42201 | 代理人: | 朱仁玲 |
| 地址: | 430074 湖北*** | 國省代碼: | 湖北;42 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 gpu 稀疏 矩陣 數據 存儲 方法 | ||
1.一種基于GPU的稀疏矩陣數據存儲方法,包括以下步驟:
CPU讀取矩陣文件,并將其轉化為稀疏行壓縮格式;
計算所述稀疏行壓縮格式中每行非零元素的個數,并將其存儲于數組length[]中;
對所述數組length[]按照升序排序;
根據所述數組length[]中每行非零元素的個數將所述數組length[]分為[0,8),[8,16),[16,32),[32,+∞)四段;
設置計數器i=0,并初始化數組c[4]={32,16,8,4};
判斷第i段包含的行數除以c[i]是否大于GPU滿負荷運行的閾值;
若第i段包含的行數除以c[i]大于GPU滿負荷運行的閾值,則將第i段作為一個數據段;
對所述數據段中每c[i]行執行補零操作,使其每行的長度與c[i]行中非零元素最多的一行的長度相同;
判斷所述數據段中行的總數目是否是c[i]的最小整數倍;
若所述數據段中行的總數目是c[i]的最小整數倍,則按照從上到下、從左到右的順序將每c[i]行中的元素合并成一行,并將其存儲于數組cval[]中;
創建數組ccol_ind[]和crow_ptr[],所述數組cval[]中非零元素在所述數組ccol_ind[]中的值為其在所述稀疏行壓縮格式中的列坐標,所述數組cval[]中零元素在所述數組ccol_ind[]中的值為-1,所述數組crow_ptr[]中的值為所述數組cval[]中行的首個元素在所述數組cval[]中的指針;
設置計數器i=i+1;
判斷i是否等于4;
若i等于4,則CPU保存數組cval[]、ccol_ind[]和crow_ptr[]。
2.根據權利要求1所述的稀疏矩陣數據存儲方法,還包括步驟:
若第i段包含的行數除以c[i]不大于GPU滿負荷運行的閾值,則判斷i+1是否等于4;
若i+4等于4,則轉入所述將第i段作為一個數據段的步驟。
3.根據權利要求2所述的稀疏矩陣數據存儲方法,還包括步驟:
若i+4不等于4,則將第i段與第i+1段中的行數進行累加;
設置計數器i=i+1,并返回所述判斷第i段包含的行數除以c[i]是否大于GPU滿負荷運行的閾值的步驟。
4.根據權利要求1所述的稀疏矩陣數據存儲方法,還包括步驟:
若所述數據段中行的總數目不是c[i]的最小整數倍,則對所述數據段執行補行操作,以使補行后的所述數據段中行的總數目為c[i]的最小整數倍,所補行的元素全為零,且其長度與c[i]行中非零元素最多的一行的長度相同。
5.根據權利要求1所述的稀疏矩陣數據存儲方法,還包括步驟:
若i不等于4,則返回所述判斷第i段包含的行數除以c[i]是否大于GPU滿負荷運行的閾值的步驟。
6.根據權利要求1所述的稀疏矩陣數據存儲方法,其特征在于:
所述GPU滿負荷運行的閾值為Nw=0.5·NSM·Nb·(Sb/Sw),其中Nw為閾值,NSM為GPU的多處理器數目,Nb為GPU的活動線程塊的數目,Sb為GPU的線程塊大小,Sw為GPU的線程束大小。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于華中科技大學,未經華中科技大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110415911.7/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:點眼容器
- 下一篇:一種電子節目單解析方法及裝置





