[发明专利]一种基于GPU的压缩稀疏矩阵的对称矩阵构造方法有效
申请号: | 201611140177.7 | 申请日: | 2016-12-12 |
公开(公告)号: | CN106775598B | 公开(公告)日: | 2018-02-23 |
发明(设计)人: | 赵汉理;季智坚 | 申请(专利权)人: | 温州大学 |
主分类号: | G06F9/38 | 分类号: | G06F9/38;G06T9/00 |
代理公司: | 温州名创知识产权代理有限公司33258 | 代理人: | 陈加利 |
地址: | 325000 浙江省温州市瓯海*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 gpu 压缩 稀疏 矩阵 对称 构造 方法 | ||
技术领域
本发明涉及矩阵图形处理技术领域,尤其涉及一种基于GPU的压缩稀疏矩阵的对称矩阵构造方法。
背景技术
矩阵是科学计算中常用的一种工具,被广泛的应用与求解线性方程组,而稀疏矩阵是指矩阵中仅含有少量的非0元素的矩阵,是矩阵的一种特例。由于稀疏矩阵中存在大量的值为0的元素,采用常规的矩阵存储方式会在矩阵求解运算时带来大量不必要的运算。因此,为了提高稀疏矩阵的运算效率,往往会采取更有效的存储方式,比如CSR(Compressed Row Storage,压缩行存储)存储格式(参见Dongarra J.Sparse matrix storage formats[J].Templates for the Solution of Algebraic Eigenvalue Problems:A practical guide.SIAM,2000,11:445-448等)。基于CSR存储格式的压缩稀疏矩阵包含三个数组,即采用行偏移数组、元素列号数组和元素值数组存储稀疏矩阵中的非0元素。行偏移数组的元素个数为n+1,其中n表示矩阵的阶,前n个元素存储稀疏矩阵中每一行的第一个非0元素在元素值数组中的起始偏移地址,最后一个元素存储元素值数组的元素个数;元素列号数组和元素值数组分别存储每一个非0元素的列号和元素数值。显然,基于CSR存储格式的压缩稀疏矩阵与稠密表示的矩阵一一对应。采取CSR存储格式可以有效地改善稀疏矩阵的运算并且降低所需的存储空间,但是传统的基于CPU处理的运算方式在面对几十万甚至上千万阶的稀疏线性方程组时,即使采用CSR存储格式进行压缩存储也需要大量的运算时间。
虽然Batista等人基于多核并行处理的想法提出了一种加速乘法运算的方法以及Mironowicz等人利用GPU(Graphics Processing Unit,图像处理单元)的高并行性来加速矩阵的乘法运算都有效地降低了矩阵运算所需的存储空间并提高了运算性能,但是都需要以对称稀疏矩阵作为输入矩阵,使得在处理实际问题时,一方面所需求解的矩阵规模都是很大的,另一方面往往要求输入矩阵为对称矩阵,从而对于大型非对称稀疏矩阵而言,求解其对称矩阵也是十分耗时的(参见Mironowicz P,Dziekonski A,Mrozowski M,et al.Efficient symmetric sparse matrix-vector product on a GPU[C]//In Proceedings of Graphics Technology Conference.2014等)。
现有的基于稠密存储的稀疏矩阵的对称矩阵构造方法往往是先对矩阵作转置运算,再将转置得到的矩阵与原矩阵做布尔并运算,上述构造方法尽管简单方便,但是需要耗费大量的存储空间。由于GPU的显存存储空间有限,因此该方法不适用于在GPU上对大规模稀疏矩阵的对称矩阵构造。
为了进一步的优化求解稀疏矩阵的对称矩阵的处理性能,亟需一种基于GPU的压缩稀疏矩阵的对称矩阵构造方法,每一个步骤都可以在GPU中并行处理。
发明内容
本发明实施例的目的在于提供一种基于GPU的压缩稀疏矩阵的对称矩阵构造方法,能有效地改善求解稀疏矩阵的对称矩阵的处理性能,使每一个步骤都具有可并行性,发挥GPU的高效并行处理能力。
为了解决上述技术问题,本发明实施例提供了一种基于GPU的压缩稀疏矩阵的对称矩阵构造方法,所述方法包括:
步骤S101、给定一个基于CSR存储格式的压缩稀疏矩阵M作为输入矩阵;
步骤S102、根据输入的压缩稀疏矩阵M,并行地将CSR存储格式转换为一个三元组数组T1(p,q,v);其中,p表示元素行号,q表示元素列号,v表示矩阵中(p,q)位置对应的元素值;
步骤S103、根据构造的三元组数组T1,对于T1中的每一个三元组(p,q,v),并行地将(p,q,v)及其对称的三元组(q,p,v)保存到新的三元组数组T2,并对得到的新的三元组数组T2以((p<<32)|q)为排序关键字进行并行排序得到新的三元组数组T3;
步骤S104、根据排序后得到的三元组T3,查找T3中重复数据,并构造一个数组F用于标记T3中的重复存储的三元组元素,并行地删除T3中F标记为1的重复存储的元素,得到无重复项的三元组数组T4;
步骤S105、根据得到的无重复项的三元组数组T4,并行地将其转换成CSR存储格式作为输出矩阵M1。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于温州大学,未经温州大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611140177.7/2.html,转载请声明来源钻瓜专利网。