一种新型外积累加求解稠密矩阵与稀疏矩阵内积的方法技术

技术编号:28472914 阅读:21 留言:0更新日期:2021-05-15 21:40
本发明专利技术属于计算机应用设备领域,尤其涉及一种新型外积累加求解稠密矩阵与稀疏矩阵内积的方法。包括以下有效步骤:a、首先对稠密矩阵A(MxK)与稀疏矩阵B(KxN)原始数据的完成读取;b、对稀疏矩阵B(KxN)进行行向数据压缩,将二维布局的稀疏矩阵B(KxN)行向压缩为一维布局的行向压缩稀疏矩阵B(KxN);c、读取行向压缩稀疏矩阵B(KxN)第i列以及读取稠密矩阵A(MxK)第i行外积运算生成ci;d、对所得到的外积结果进行累加,即可得到稠密矩阵A(MxK)与稀疏矩阵B(KxN)的内积;其中,所述b步骤中,针对稀疏矩阵B(KxN)的压缩特点在于,对于每一行的起点第一个元素值都保留,不论该元素值是否为零,每一行的非起点元素则根据是否是零值,来判断是否保留,若是零值则丢弃,若是非零值则保留。若是非零值则保留。若是非零值则保留。

【技术实现步骤摘要】
一种新型外积累加求解稠密矩阵与稀疏矩阵内积的方法


[0001]本专利技术属于计算机应用设备领域,尤其涉及一种新型外积累加求解稠密矩阵与稀疏矩阵内积的方法。

技术介绍

[0002]矩阵内积乘法是数值计算、机器学习、工程模拟等众多领域算法的基础,而稠密矩阵A(MxK)与稀疏矩阵B(KxN)内积乘法是一类常见的矩阵内积计算场景。
[0003]稠密矩阵A(MxK)与稀疏矩阵B(KxN),其特点在于稀疏矩阵B(KxN)其中存在一定量的零元素。这部分零元素是可以不参与计算依然保证运算结果的正确性,同时如果零元素直接放弃存储还能来内存利用效率的提升。
[0004]但是在计算和存储的过程中对稀疏矩阵B(KxN)之中零元素的跳过会导致内存访问的不连续,不利于利用现代处理器架构中的各级高速缓存。因而涉及稀疏矩阵内积的计算效率低于稠密矩阵与稠密矩阵的内积。
[0005]此处以稠密矩阵A(4x4)与稀疏矩阵B(4x3)内积举例,稀疏矩阵B(4x3)是一般稀疏矩阵,其特点是零元素的分布没有规律。图1是稠密矩阵A(4x4)与稀疏矩阵B(4x3)内积计算按照外积之和累加方式求解的第一步。本步中首先取出稠密矩阵A(4x4)的第一列a1(4x1)与稀疏矩阵B(4x3)第一行b1(1x3)执行外积运算得到结果c1,以此类推稠密矩阵A的第2列a2与稀疏矩阵B的第2行b2也执行外积运算得到结果c2。稠密矩阵A(4x4)有四列,稀疏矩阵B(4x3)有四行,列与行一一对应外积得到c1(4x3)、c2(4x3)、c3(4x3)、c4(4x3)。c1、c2、c3、c4四个外积结果对应元素相加即得到内积结果。而在一般的矩阵内积乘法中,以稠密矩阵A(4x4)的第i行内积稀疏矩阵B(4x3)第j列得到目标矩阵(i,j)位置的值。完成整个内积的计算,稀疏矩阵B(4x3)需要被稠密矩阵A(4x4)各行重复读取计算四次。
[0006]图2将稠密矩阵A(4x4)第一列a1(4x1)与稀疏矩阵B(4x3)第一行b1(1x3)外积计算逻辑做个说明。行向量a1(4x1)与行向量b1(1x3)外积结果构成4行3列的矩阵c1。其计算的过程等价于取行向量a1的各个元素分别乘以行向量b1。稠密矩阵A(4x4)第i列ai(4x1)与稀疏矩阵B(4x3)第i行bi(1x3)外积结果ci的计算等同c1计算的逻辑。稀疏矩阵B(4x3)的某一行某个位置出现一个零元素,对计算结果的影响是在该位置的行向形成零向量。
[0007]图3说明了上述外积结果c1、c2、c3、c4四个矩阵相加的过程,矩阵相加遵循数学中对应元素相加的过程。以上就是外积累加方法求解稠密矩阵A(4x4)与稀疏矩阵B(4x3)内积过程说明。可以看到上述外积累加求解稠密矩阵A(4x4)与稀疏矩阵B(4x3)内积过程中,并没有专门考虑稠密矩阵A(4x4)的一列与稀疏矩阵B(4x3)某一行之中的零元素相乘,生成的行向零向量。上述行向零向量若是不计算,同时也参与后面累加过程,不影响内积结果的正确性。但是在现有的外积累加计算中,稀疏矩阵中的零元素参与了外积计算,其不仅降低了外积运算的计算效率也增加了外积计算后零值向内存写入的需求,进而减少了内存写入的有效带宽。

技术实现思路

[0008]本专利技术针对上述的稠密矩阵A(4x4)与稀疏矩阵B(4x3)内积乘法所存在的技术问题,提出一种方法简单且能够有效避免无效运算、节省内存访问的一种新型外积累加求解稠密矩阵与稀疏矩阵内积的方法。
[0009]为了达到上述目的,本专利技术采用的技术方案为,本专利技术提供一种新型外积累加求解稠密矩阵与稀疏矩阵内积的方法,包括以下有效步骤:
[0010]a、首先对稠密矩阵A(MxK)与稀疏矩阵B(KxN)原始数据的完成读取;
[0011]b、对稀疏矩阵B(KxN)进行行向数据压缩,将二维布局的稀疏矩阵B(KxN)行向压缩为一维布局的行向压缩稀疏矩阵B(KxN);
[0012]c、读取行向压缩稀疏矩阵B(KxN)第i列以及读取稠密矩阵A(MxK)第i行外积运算生成ci;
[0013]d、对所得到的外积结果进行累加,即可得到稠密矩阵A(MxK)与稀疏矩阵B(KxN)的内积;其中,所述b步骤中,针对稀疏矩阵B(KxN)的压缩特点在于,对于每一行的起点第一个元素值都保留,不论该元素值是否为零,每一行的非起点元素则根据是否是零值,来判断是否保留,若是零值则丢弃,若是非零值则保留。
[0014]作为优选,,还包括e步骤,e、判断是否完成到稀疏矩阵B(KxN)的最后一列,如果是,则完成计算;如果否,则i自增1,重复c~e步骤。
[0015]作为优选,,所述b步骤中,行向压缩稀疏矩阵B(KxN)包括矩阵压缩后总长、列索引数组以及压缩元素值数组,其中,所述矩阵压缩后总长稀疏矩阵B(4x3)经过压缩后所保留下来的元素个数总和;所述列索索引数组用于表示每一行之中保留下来的元素其在原始二维布局下的列索引值;所述压缩元素值数组用于按照列顺序依次填入压缩元素数值。
[0016]与现有技术相比,本专利技术的优点和积极效果在于,
[0017]1、本专利技术提供一种新型外积累加求解稠密矩阵与稀疏矩阵内积的方法,通过对稀疏矩阵B(KxN)进行行向压缩,对每一行的第一个元素以及其他非零元素进行保留,方便定位压缩后元素的位置,同时,除去了大量的零元素,进而避免了无效数值的计算,达到节省内存访问和无效运算的目的,从而提高了运算效率,为数值计算、机器学习、工程模拟相关技术的快速运算提供保障。
附图说明
[0018]为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0019]图1,稠密矩阵A(4x4)与稀疏矩阵B(4x3)的外积累加求解内积乘法示例
[0020]图2,稠密矩阵A(4x4)第一列与稀疏矩阵B(4x3)第一行执行外积计算示例
[0021]图3,稠密矩阵A(4x4)与稀疏矩阵B(4x3)的外积结果累加示例
[0022]图4,稀疏矩阵B(4x3)精简行向压缩存储方式的转换过程
[0023]图5,稀疏矩阵B(4x3)精简行向压缩列索引数组逻辑示例
[0024]图6,稠密矩阵A(4x4)与稀疏矩阵B(4x3)精简行向压缩形成一维数组的外积运算
列与行对应关系示例
[0025]图7,稠密矩阵A(4x4)的列与稀疏矩阵B(4x3)精简行向压缩形成一维数组行执行外积累加过程示例
[0026]图8,稠密矩阵A(MxK)与精简行向压缩稀疏矩阵B(KxN)外积累加流程图。
具体实施方式
[0027]为了能够更清楚地理解本专利技术的上述目的、特征和优点,下面结合附图和实施例对本专利技术做进一步说明。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。...

【技术保护点】

【技术特征摘要】
1.一种新型外积累加求解稠密矩阵与稀疏矩阵内积的方法,其特征在于,包括以下有效步骤:a、首先对稠密矩阵A(MxK)与稀疏矩阵B(KxN)原始数据的完成读取;b、对稀疏矩阵B(KxN)进行行向数据压缩,将二维布局的稀疏矩阵B(KxN)行向压缩为一维布局的行向压缩稀疏矩阵B(KxN);c、读取行向压缩稀疏矩阵B(KxN)第i列以及读取稠密矩阵A(MxK)第i行外积运算生成ci;d、对所得到的外积结果进行累加,即可得到稠密矩阵A(MxK)与稀疏矩阵B(KxN)的内积;其中,所述b步骤中,针对稀疏矩阵B(KxN)的压缩特点在于,对于每一行的起点第一个元素值都保留,不论该元素值是否为零,每一行的非起点元素则根据是否是零值,来判断是否保留,...

【专利技术属性】
技术研发人员:周晓辉袁博华诚
申请(专利权)人:算筹信息科技有限公司
类型:发明
国别省市:

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

1