[发明专利]基于GPU的稀疏矩阵数据存储方法有效

专利信息
申请号: 201110415911.7 申请日: 2011-12-13
公开(公告)号: CN102436438A 公开(公告)日: 2012-05-02
发明(设计)人: 金海;郑然;胡侃;曾敬翔;冯晓文 申请(专利权)人: 华中科技大学
主分类号: G06F17/16 分类号: G06F17/16
代理公司: 华中科技大学专利中心 42201 代理人: 朱仁玲
地址: 430074 湖北*** 国省代码: 湖北;42
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明公开了一种基于GPU的稀疏矩阵数据存储方法,该方法包括:1)对行长度数组length[]按照升序排序;2)按每行非零元素的个数将数组length[]分为[0,8),[8,16),[16,32),[32,+∞)四段,每段分别合并32、16、8、4行;3)对各数据段中的行进行补零操作,对各数据段进行补行操作,所补行的元素全为零;4)产生SC-CSR格式的三个一维数组cval[]、ccol_ind[]、crow_ptr[],本发明的方法中,分段处理降低了每行的行长度变化幅度,从而减少了线程束、线程块间的负载不平衡,相邻行交错合并避免了行非零元素少于32时的线程束计算资源浪费,提高了CUDA显存联合访问的效率,并减少了计算内核并行归约的步骤,从而显著提高了稀疏矩阵向量乘的计算性能。
搜索关键词: 基于 gpu 稀疏 矩阵 数据 存储 方法
【主权项】:
一种基于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[]。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201110415911.7/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top