当前位置: 首页 > 专利查询>温州大学专利>正文

一种基于GPU的压缩稀疏矩阵的对称矩阵构造方法技术

技术编号:15540648 阅读:120 留言:0更新日期:2017-06-05 10:25
本发明专利技术实施例公开了一种基于GPU的压缩稀疏矩阵的对称矩阵构造方法,包括给定基于CSR存储格式的压缩稀疏矩阵M作为输入矩阵;根据压缩稀疏矩阵M,并行地将CSR存储格式转换为三元组数组T1;并行地将三元组数组T1中每一个三元组及其对称的三元组保存到三元组数组T2并进行并行排序得到三元组数组T3;查找T3中重复数据,构造数组F标记重复存储的元素,并行地删除T3中F标记为1的重复存储的元素,得到无重复项的三元组数组T4;根据三元组数组T4,并行地将其转换成CSR存储格式作为输出矩阵。实施本发明专利技术,能有效地改善求解稀疏矩阵的对称矩阵的处理性能,使每一个步骤都具有可并行性,发挥GPU中高效并行处理能力。

A symmetric matrix construction method for compressed sparse matrices based on GPU

The embodiment of the invention discloses a method for constructing symmetric matrix sparse matrix compression based on GPU, including the given CSR storage format based on M compressed sparse matrix as the input matrix; according to the compressed sparse matrix M, parallel CSR storage format to three tuple array T1; parallel three tuple every three tuples and the symmetry of three tuple array in T1 to save three tuple array T2 and parallel sorting three tuple array T3; repeated data search in T3, the array structure F labeled repetitive storage elements, parallel to remove T3 F markers for the heavy storage element compound 1, three tuple array T4 no duplicates according to the three tuple array; T4, parallel to convert it into a CSR storage format as the output matrix. The method can effectively improve the processing performance of solving symmetric matrices of sparse matrices, make each step have parallelism, and exert high efficiency parallel processing capability in GPU.

【技术实现步骤摘要】
一种基于GPU的压缩稀疏矩阵的对称矩阵构造方法
本专利技术涉及矩阵图形处理
,尤其涉及一种基于GPU的压缩稀疏矩阵的对称矩阵构造方法。
技术介绍
矩阵是科学计算中常用的一种工具,被广泛的应用与求解线性方程组,而稀疏矩阵是指矩阵中仅含有少量的非0元素的矩阵,是矩阵的一种特例。由于稀疏矩阵中存在大量的值为0的元素,采用常规的矩阵存储方式会在矩阵求解运算时带来大量不必要的运算。因此,为了提高稀疏矩阵的运算效率,往往会采取更有效的存储方式,比如CSR(CompressedRowStorage,压缩行存储)存储格式(参见DongarraJ.Sparsematrixstorageformats[J].TemplatesfortheSolutionofAlgebraicEigenvalueProblems:Apracticalguide.SIAM,2000,11:445-448等)。基于CSR存储格式的压缩稀疏矩阵包含三个数组,即采用行偏移数组、元素列号数组和元素值数组存储稀疏矩阵中的非0元素。行偏移数组的元素个数为n+1,其中n表示矩阵的阶,前n个元素存储稀疏矩阵中每一行的第一个非0元素在元素值数组中的起始偏移地址,最后一个元素存储元素值数组的元素个数;元素列号数组和元素值数组分别存储每一个非0元素的列号和元素数值。显然,基于CSR存储格式的压缩稀疏矩阵与稠密表示的矩阵一一对应。采取CSR存储格式可以有效地改善稀疏矩阵的运算并且降低所需的存储空间,但是传统的基于CPU处理的运算方式在面对几十万甚至上千万阶的稀疏线性方程组时,即使采用CSR存储格式进行压缩存储也需要大量的运算时间。虽然Batista等人基于多核并行处理的想法提出了一种加速乘法运算的方法以及Mironowicz等人利用GPU(GraphicsProcessingUnit,图像处理单元)的高并行性来加速矩阵的乘法运算都有效地降低了矩阵运算所需的存储空间并提高了运算性能,但是都需要以对称稀疏矩阵作为输入矩阵,使得在处理实际问题时,一方面所需求解的矩阵规模都是很大的,另一方面往往要求输入矩阵为对称矩阵,从而对于大型非对称稀疏矩阵而言,求解其对称矩阵也是十分耗时的(参见MironowiczP,DziekonskiA,MrozowskiM,etal.Efficientsymmetricsparsematrix-vectorproductonaGPU[C]//InProceedingsofGraphicsTechnologyConference.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。实施本专利技术实施例,具有如下有益效果:本专利技术利用对称关系的闭包思想来完成压缩疏矩阵的构造过程,无需对矩阵中值为0的元素进行存储和计算,有效地减少了存储空间,其中排序和删除重复元素等过程都可以直接使用基于GPU的并行函数,使得每一个步骤都具有可并行性,可以在GPU中并行处理,有效地提高了运行效率。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,根据这些附图获得其他的附图仍属于本专利技术的范畴。图1为本专利技术实施例提供的基于GPU的压缩稀疏矩阵的对称矩阵构造方法的流程图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。如图1所示,为本专利技术实施例中,提出的一种基于GPU的压缩稀疏矩阵的对称矩阵构造方法,所述方法包括:步骤S101、给定一个基于CSR存储格式的压缩稀疏矩阵M=(RowPtr,ColInd,Val)作为输入矩阵,其中,RowPtr表示行偏移数组,ColInd表示元素列号数组,Val表示元素值数组。记n表示矩阵M的阶,则RowPtr中的元素个数为n+1,其中RowPtr中前n个元素存储的是稀疏矩阵M中每一行的第一个非0元素在元素值数组Val中的起始偏移地址,RowPtr中最后一个元素存储的是元素值数组Val的元素个数,记为m。显然,数组ColInd和Val的元素个数为m,稀疏矩阵中非0元素个数也为m。步骤S102、根据输入的压缩稀疏矩阵M,为了方便元素的排序和运算,将CSR存储格式(RowPtr,ColInd,Val)转换为一个三元组数组,记为T1(p,q,v)。在该三元组中,p表示元素行号,q表示元素列号,v表示矩阵中(p,q)位置对应的元素值。根据CSR存储格式的RowPtr中所存储的前n个元素,对于第i个元素,RowPtr[i]表示的是矩阵中第i行的第一个非0元素在元素值数组Val中的起始偏移地址,并行地将i赋值给T1中第RowPtr[i]到第RowPtr[i+1]–1之间的元素的行号p。T1中每个元素的列号q和元素值v则可以从ColInd和Val数组中直接并行读取得到。步骤S103、根据步骤S102构造的三元组数组T1,对于T1中的每一个三元组(p,q,v),并行地将(p,q,v)及其对称的三元组(q,p,v)保存到新的三元组数组T2中。对数组T2进行排序。为了保证排序后的三元组在行号相同时列号也有序,以长整型((p<<32))|q)作为排序关键字。运用CUDAThrust模板库所提供的sort_b本文档来自技高网
...
一种基于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。

【技术特征摘要】
1.一种基于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)及其对称的三...

【专利技术属性】
技术研发人员:赵汉理季智坚
申请(专利权)人:温州大学
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1