[发明专利]针对稀疏矩阵的数据存储方法及基于该方法的SpMV实现方法无效
申请号: | 201010594672.1 | 申请日: | 2010-12-17 |
公开(公告)号: | CN102033854A | 公开(公告)日: | 2011-04-27 |
发明(设计)人: | 孙相征;张云泉;王婷;刘芳芳;袁良 | 申请(专利权)人: | 中国科学院软件研究所 |
主分类号: | G06F17/16 | 分类号: | G06F17/16 |
代理公司: | 北京君尚知识产权代理事务所(普通合伙) 11200 | 代理人: | 余长江 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 针对 稀疏 矩阵 数据 存储 方法 基于 spmv 实现 | ||
1.一种针对稀疏矩阵的数据存储方法,包括下列步骤:
A、以给定列单元大小mrows的行数扫描稀疏矩阵,当扫描到非零元时,将该非零元所在列的非零元值存储到非零元数组val中;
B、计算该非零元所在列单元与前一列单元的列值差,判断非零元列单元列值差类型,将列值差类型相同的列单元作为同一列组并存储列组信息到index数组中。
2.根据权利要求1所述的针对稀疏矩阵的数据存储方法,其特征在于所述将非零元值存储到数组val的方法为:当一个列单元中的非零元值的个数小于mrows时,进行零元行填充。
3.根据权利要求1所述的针对稀疏矩阵的数据存储方法,其特征在于所述将非零元值存储到数组val的方法为:
首先将非零元值按行值的逆序排列方式存储到非零元数组val中;
然后将列单元中的非零元的分布位图存储到map数组中,位图中1表示有非零元,0表示没有。
4.根据权利要求1所述的针对稀疏矩阵的数据存储方法,其特征在于所述列组信息包含列值差类型、列组中的列单元数目和列值差值。
5.根据权利要求4所述的针对稀疏矩阵的数据存储方法,其特征在于列值差类型包括列单元连续排列、列单元不连续排列、换行和结束,列单元连续排列用常量1表示;列单元不连续排列用存储列值差所需的字节数表示,分别为1byte、2bytes或4bytes;换行表示连续多次扫描没有非零元;结束表示矩阵存储完毕。
6.根据权利要求5所述的针对稀疏矩阵的数据存储方法,其特征在于列组信息的存储方法为:
当列值差类型为常量1时,不存储列值差;
当列值差类型为换行时,存储的列单元数目为连续扫描没有非零元的扫描次数,不存储列值差;
当列值差类型为列单元不连续排列时,存储列单元数目,并顺序存储列值差值。
7.根据权利要求6所述的针对稀疏矩阵的数据存储方法,其特征在于列组信息存储到index数组的方法为:
用一个字节存储列值差类型,列值差类型占用最低的三个比特位,第四个比特位存储换行标识表示开始新一行;
用一个字节存储列单元数目,所述列单元有n个时,以n-1表示列单元数目。
8.一种基于稀疏矩阵数据存储方法的SpMV实现方法,包括如下步骤:
1)从矩阵A的index数组中读取列组的列值差类型,根据列值差类型,计算该列值差类型对应的列组中每个列单元的列值col;
2)根据每个列单元的列值col读取相应的x变量,将x变量的值和val数组中该列单元的元素分别相乘后,得到变量y的数组<y0,y1,...,ymrows-1>;所述元素为经零元行填充的mrows个元素或由map数组中的分布位图确定的非零元值;
3)将列组中每个列单元计算得到的数组<y0,y1,...,ymrows-1>进行累加后保存在结果数组中;
4)继续读取下一个列组的列值差类型,并计算数组<y0,y1,...,ymrows-1>,保存在结果数组中。
9.根据权利要求8所述的SpMV实现方法,其特征在于所述列值col的计算方法为:
首先判断列值差类型中是否具有换行标识,若有初始化列值为0;
然后根据列值差类型在初始化列值的基础上计算当前列单元的列值:
若列值差类型为常量1,列值增加1.
若列值差类型为列单元不连续排列,则从index数组中读取该列单元的列值差值加上初始化列值,得到当前列单元的列值。
若列值差类型为换行,列值为0。
10.根据权利要求8所述的SpMV实现方法,其特征在于当列组中的列单元小于设定阈值时,将该列组与相邻列组合并。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所,未经中国科学院软件研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010594672.1/1.html,转载请声明来源钻瓜专利网。
- 上一篇:资源管理系统中实现资源状况上报的方法及系统
- 下一篇:电子产品设计方法
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置