一种用于二值稀疏矩阵的混合编码方法技术

技术编号:31376382 阅读:18 留言:0更新日期:2021-12-15 11:12
本发明专利技术公开了一种用于二值稀疏矩阵的混合编码方法,包括:计算稀疏矩阵缩略图中连通域的数量,初步确定可能的稠密区域具体位置;根据每个稠密区域中黑色像素数占该区域边界矩形的比值判定稠密区域形状;将稀疏矩阵缩略图映射回原稀疏矩阵中,根据每个特定形状的稠密区域子矩阵中非零元占比,得到最终的稠密子矩阵;对稠密子矩阵进行反向编码;将原稀疏矩阵中其余零散分布的非零元组成一个超稀疏剩余子矩阵,并采用正向编码;将反向编码和正向编码结果求和,得到稀疏矩阵向量乘计算结果。采用混合编码方式充分压缩了稀疏矩阵的行列索引,减少了主机端和设备端的数据传输量。减少了主机端和设备端的数据传输量。减少了主机端和设备端的数据传输量。

【技术实现步骤摘要】
一种用于二值稀疏矩阵的混合编码方法


[0001]本专利技术涉及二值稀疏矩阵的高效压缩
,更具体的说是涉及一种用于二值稀疏矩阵的混合编码方法。

技术介绍

[0002]稀疏矩阵最直观的一个特点是其非零元的数量要远远小于其元素总数,通常认为非零元数和矩阵元素总数的比值小于等于0.05的矩阵为稀疏矩阵,但这并非是一个严格的标准。稀疏矩阵几乎涉及到所有的大型科学工程计算领域中,比如计算流体动力学、统计物理、电路模拟、土木和机械工程、金融规划、气候模拟、医学图像、信息检索等。
[0003]二值稀疏矩阵是稀疏矩阵的一个特例,其非零元的取值都为1,这类稀疏矩阵常见于图计算相关的应用中,另外在稀疏矩阵和稀疏矩阵相乘的结果矩阵非零元数量预测中也会经常涉及到二值稀疏矩阵的计算。充分利用其非零元取值都为1的特点,往往能得到比通用稀疏矩阵压缩格式更高的压缩比和更优的计算性能。
[0004]随着通用图形处理器GPGPU(General

purpose computing on Graphics Processing Units)的快速发展和广泛应用,越来越多的研究人员聚焦于稀疏矩阵计算在GPU平台上的性能优化。稀疏矩阵计算在GPU上的实现基本由三个步骤组成:一是将稀疏编码的矩阵从主机端(CPU内存)传输到设备端(GPU内存),二是利用GPU众多的计算核心完成稀疏矩阵计算,三是将计算得到的结果从设备端传输到主机端。
[0005](1)数据传输的时间开销
[0006]目前,许多研究人员提出的稀疏矩阵压缩格式都会考虑稀疏矩阵计算在并行体系架构上的任务划分和负载均衡问题,即目标导向为尽可能减少稀疏矩阵计算部分的时间开销。这是因为稀疏矩阵计算往往出现在稀疏线性系统的迭代求解中,且成百上千次迭代计算中的稀疏矩阵计算往往基于同一个稀疏的系数矩阵,所以从主机端到设备端的数据传输往往只需执行一次。但事实上,在基于GPU的稀疏矩阵计算中,主机端和设备端之间的数据传输的时间开销往往占据了总时间的较大比值。研究表明大部分稀疏矩阵对应的SpMV的数据传输时间占比分布在80%~100%之间,充分证明了压缩二值稀疏矩阵的必要性。
[0007](2)二值稀疏矩阵的特点
[0008]二值稀疏矩阵所有非零元的取值均为1,但目前的稀疏矩阵编码格式中并没有充分利用这一特征。比如判断输入的稀疏矩阵为二值稀疏矩阵时,取消值数组从主机端到设备端的传输,或者利用该特征来压缩矩阵的行列索引数组。
[0009]因此,如何提供一种用于二值稀疏矩阵的混合编码方法是本领域技术人员亟需解决的问题。

技术实现思路

[0010]有鉴于此,本专利技术提供了一种用于二值稀疏矩阵的混合编码方法,大幅度减少了稀疏矩阵的数据存储开销和主机端与设备端之间的数据传输开销,这在基于GPU的稀疏矩
阵计算中具有绝对性优势。另一方面,通过此编码方案,能够大大简化稀疏矩阵计算在GPU端的实现,减少浮点计算的复杂度,从而加速稀疏矩阵计算及其广泛的科学计算应用。
[0011]为了实现上述目的,本专利技术采用如下技术方案:
[0012]一种用于二值稀疏矩阵的混合编码方法,包括:
[0013]计算稀疏矩阵缩略图中连通域的数量,初步确定可能的稠密区域具体位置;
[0014]根据每个稠密区域中黑色像素数占该区域边界矩形的比值判定稠密区域形状;
[0015]将稀疏矩阵缩略图映射回原稀疏矩阵中,根据每个特定形状的稠密区域子矩阵中非零元占比,得到最终的稠密子矩阵;
[0016]对稠密子矩阵进行反向编码;
[0017]将原稀疏矩阵中其余零散分布的非零元组成一个超稀疏剩余子矩阵,并采用正向编码;
[0018]将反向编码和正向编码结果传输到GPU上,根据输入向量X分别完成稀疏矩阵向量乘之后求和,得到稀疏矩阵向量乘计算结果。
[0019]优选的,稠密区域形状包括对角块状、矩形和三角形。
[0020]优选的,稠密子矩阵包括对角块稠密子矩阵、矩形块稠密子矩阵和三角块稠密子矩阵。
[0021]优选的,对稠密子矩阵进行反向编码具体包括:
[0022]假设稠密子矩阵中全是非零元,计算稠密子矩阵中所有元素均为非零元时稀疏矩阵向量乘结果;
[0023]将稠密子矩阵中所有零元采用CSR或其它压缩格式存储,并计算零元看作

1后对应的向量乘结果;
[0024]将非零元向量乘结果与零元向量乘结果相加即为稠密子矩阵的编码结果。
[0025]优选的,矩形块稠密子矩阵具体反向编码方法包括:
[0026]记录矩形块稠密子矩阵左上角位置(x
r
,y
r
),矩形块大小a
r
×
b
r
,以及矩形块中每一零元的行列索引信息;
[0027]假设矩形块稠密子矩阵中所有元素均为非零元,根据矩形块的位置、大小信息,以及输入向量x,计算矩形块稠密子矩阵所有元素均为非零元时对应的向量乘结果y
rect
,具体计算公式为:
[0028][0029]其中,y_rect[i]表示向量y_rect的第i个元素,x[j]是向量x的第j个元素,i和j是向量的索引值,是编程语言中的标记符号;
[0030]三角块稠密子矩阵具体反向编码方法包括:
[0031]记录三角块稠密子矩阵左上角位置(x
t
,y
t
),三角形块大小a
t
×
b
t
,以及三角形块中每一零元的行列索引信息;
[0032]假设三角块稠密子矩阵中所有元素均为非零元,根据三角形块的位置、大小信息,以及输入向量x,计算三角块稠密子矩阵所有元素均为非零元时对应的向量乘结果y
tri
,具
体计算公式为:
[0033][0034]其中,y
tri
[i]表示向量y
tri
的第i个元素,x[j]是向量x的第j个元素,i和j是向量的索引值;
[0035]对角块稠密子矩阵具体反向编码方法包括:
[0036]记录对角块稠密子矩阵左上角的位置(x
d
,y
d
),对角块边界矩形的大小a
d
,b
d
,对角块的宽度w
d
,对角块中每一零元的行列索引信息;
[0037]假设对角块稠密子矩阵中所有元素均为非零元,根据对角块的位置和对角块的宽度计算出对角块中每一条对角线的偏移量,其偏移量的取值范围为[x
d

(y
d
+w
d
),(x
d
+w
d
)

y
d
],计算每一条对角线与输入向量x的相乘结果,计算公式为:
[0038][0039]其中,表示该对本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于二值稀疏矩阵的混合编码方法,其特征在于,包括:计算稀疏矩阵缩略图中连通域的数量,初步确定可能的稠密区域具体位置;根据每个稠密区域中黑色像素数占该区域边界矩形的比值判定稠密区域形状;将稀疏矩阵缩略图映射回原稀疏矩阵中,根据每个特定形状的稠密区域子矩阵中非零元占比,得到最终的稠密子矩阵;对稠密子矩阵进行反向编码;将原稀疏矩阵中其余零散分布的非零元组成一个超稀疏剩余子矩阵,并采用正向编码;将反向编码和正向编码结果传输到GPU上,根据输入向量X分别完成稀疏矩阵向量乘之后求和,得到稀疏矩阵向量乘计算结果。2.根据权利要求1所述的一种用于二值稀疏矩阵的混合编码方法,其特征在于,稠密区域形状包括对角块状、矩形和三角形。3.根据权利要求1所述的一种用于二值稀疏矩阵的混合编码方法,其特征在于,稠密子矩阵包括对角块稠密子矩阵、矩形块稠密子矩阵和三角块稠密子矩阵。4.根据权利要求3所述的一种用于二值稀疏矩阵的混合编码方法,其特征在于,对稠密子矩阵进行反向编码具体包括:假设稠密子矩阵中全是非零元,计算稠密子矩阵中所有元素均为非零元时稀疏矩阵向量乘结果;将稠密子矩阵中所有零元采用CSR格式存储,并计算将零元看作

1后对应的向量乘结果;将非零元向量乘结果与零元向量乘结果相加即为稠密子矩阵的编码结果。5.根据权利要求4所述的一种用于二值稀疏矩阵的混合编码方法,其特征在于,矩形块稠密子矩阵具体反向编码方法包括:记录矩形块稠密子矩阵左上角位置(x
r
,y
r
),矩形块大小a
r
×
b
r
,以及矩形块中每一零元的行列索引信息;假设矩形块稠密子矩阵中所有元素均为非零元,根据矩形块的位置、大小信息,以及输入向量x,计算矩形块稠密子矩阵所有元素均为非零元时对应的向量乘结果y
rect
,具体计算公式为:其中,y
rect
[i]表示向量y
rect
的第i个元素,x[j]是向量x的第j个元素,i和j是向量的索引值;三角块稠密子矩阵具体反向编码方法包括:记录三角块稠密子矩阵左上角位置(x
t
,y
t
),三角形块大小a
t
×
b
t<...

【专利技术属性】
技术研发人员:计卫星高建花王一拙石峰
申请(专利权)人:北京理工大学
类型:发明
国别省市:

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

1