CN110489428B - 多维稀疏矩阵压缩方法、解压缩方法、装置、设备及介质 - Google Patents
多维稀疏矩阵压缩方法、解压缩方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN110489428B CN110489428B CN201910792796.1A CN201910792796A CN110489428B CN 110489428 B CN110489428 B CN 110489428B CN 201910792796 A CN201910792796 A CN 201910792796A CN 110489428 B CN110489428 B CN 110489428B
- Authority
- CN
- China
- Prior art keywords
- information
- dimensional
- matrix
- vector
- low
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Software Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Complex Calculations (AREA)
Abstract
本发明实施例公开了一种多维稀疏矩阵压缩方法、解压缩方法、装置、设备及介质。该压缩方法包括:获取待压缩的多维稀疏矩阵,多维稀疏矩阵中包括至少一个低二维矩阵;根据多维稀疏矩阵中各个非零元素所属的低二维矩阵,将各非零元素在低二维矩阵中的行列信息加入索引向量中,将各非零元素的数值信息加入与索引向量匹配的数值向量中,得到多维稀疏矩阵的压缩结果;其中,在索引向量中通过第一分隔信息来分隔不同低二维矩阵的非零元素的行列信息,在数值向量中通过第二分隔信息来分隔不同低二维矩阵的非零元素的数值信息。由此,实现了对多维稀疏矩阵的压缩,且根据多维稀疏矩阵的维度信息及索引向量中分隔信息即可实现对多维稀疏矩阵的解压缩。
Description
技术领域
本发明实施例涉及矩阵压缩技术领域,尤其涉及一种多维稀疏矩阵压缩方法、解压缩方法、装置、设备及介质。
背景技术
在科学与工程领域中求解线性模型时,经常会得出许多大型的矩阵,这些矩阵中大部分的元素都为0(即为稀疏矩阵)。存储稀疏矩阵时,可以采用只存储非零元素的压缩存储方式,以达到节约内存的目的,同时还可以提高矩阵的运算速度。
目前,稀疏矩阵的压缩存储格式有多种,如Coordinate Format(COO,坐标格式),Diagonal Storage Format(DIA,对角线存储格式),Compressed Sparse Column Format(CSC,压缩稀疏列格式),Compressed Sparse Row Format(CSR,元素稀疏行格式)等等。
以COO压缩存储格式为例,压缩结果如下:
压缩结果为:row=[0 0 1 1 2 2 2 3 3];indices=[0 1 1 2 0 2 3 1 3];data=[1 7 2 8 5 3 9 6 4]。也即,将矩阵中每个非零元素的所在行的信息、所在列的信息以及元素数值分别对应存储至行向量row、列索引向量indices以及数值向量data中。
上述这些压缩存储格式都有各自适合的应用场景,但是这些压缩存储格式主要应用于压缩存储二维矩阵,若直接应用于压缩存储多维矩阵,则会存在诸多问题。
以采用COO压缩存储方式压缩存储多维矩阵为例,存在如下问题:
1)row和indices压缩结果中只有该非零元素在当前低二维矩阵中的行列信息,没有高维度的信息,进而无法区分高维度中的非零元素;
其中,低二维矩阵指的是多维矩阵中一个二维矩阵单元,以一个4×3×4的三维矩阵为例,这个三维矩阵包括4个二维矩阵单元,每个二维矩阵单元的维度为3×4。输入矩阵为:
注:上述矩阵中每个“x(Exxx)”均表示元素的数值及其索引坐标,例如“1(E323)”中的“1”表示元素的数值,“E323”表示元素的索引坐标。
2)如果某低二维矩阵为全零元素(比如前述举例三维矩阵中的第三个二维矩阵单元),则该低二维矩阵的信息在压缩结果中无法体现,进而导致无法区分后面的非零数据是哪个维度的数据。而且,无法根据压缩结果进行解压缩。
3)如果压缩结果增加额外的高维度向量,则会使压缩结果数据量增大,失去了压缩的目的。
发明内容
本发明实施例提供一种多维稀疏矩阵压缩方法、解压缩方法、装置、设备及介质,以实现对多维稀疏矩阵的压缩及解压缩。
第一方面,本发明实施例提供了一种多维稀疏矩阵的压缩方法,包括:
获取待压缩的多维稀疏矩阵,所述多维稀疏矩阵中包括至少一个低二维矩阵;
根据所述多维稀疏矩阵中各个非零元素所属的低二维矩阵,将各所述非零元素在低二维矩阵中的行列信息加入至索引向量中,并将各所述非零元素的数值信息加入至与所述索引向量匹配的数值向量中,得到所述多维稀疏矩阵的压缩结果;
其中,在所述索引向量中通过第一分隔信息来分隔不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔不同低二维矩阵的非零元素的数值信息。
第二方面,本发明实施例还提供了一种多维稀疏矩阵的解压缩方法,包括:
获取与待解压缩的多维稀疏矩阵对应的索引向量和数值向量,其中,在所述索引向量中通过第一分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的数值信息;
根据待解压缩的多维稀疏矩阵的维度信息、所述索引向量和数值向量中包括的第一分隔信息以及第二分隔信息,提取所述索引向量以及所述数值向量中与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息;
根据与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息,生成各所述低二维矩阵,作为所述多维稀疏矩阵的解压缩结果。
第三方面,本发明实施例还提供了一种多维稀疏矩阵的压缩装置,包括:
多维稀疏矩阵获取模块,用于获取待压缩的多维稀疏矩阵,所述多维稀疏矩阵中包括至少一个低二维矩阵;
压缩模块,用于根据所述多维稀疏矩阵中各个非零元素所属的低二维矩阵,将各所述非零元素在低二维矩阵中的行列信息加入至索引向量中,并将各所述非零元素的数值信息加入至与所述索引向量匹配的数值向量中,得到所述多维稀疏矩阵的压缩结果;
其中,在所述索引向量中通过第一分隔信息来分隔不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔不同低二维矩阵的非零元素的数值信息。
第四方面,本发明实施例还提供了一种多维稀疏矩阵的解压缩装置,包括:
压缩结果获取模块,用于获取与待解压缩的多维稀疏矩阵对应的索引向量和数值向量,其中,在所述索引向量中通过第一分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的数值信息;
非零元素提取模块,用于根据待解压缩的多维稀疏矩阵的维度信息、所述索引向量和数值向量中包括的第一分隔信息以及第二分隔信息,提取所述索引向量以及所述数值向量中与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息;
解压缩结果生成模块,用于根据与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息,生成各所述低二维矩阵,作为所述多维稀疏矩阵的解压缩结果。
第五方面,本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本发明任意实施例所述的多维稀疏矩阵的压缩方法。
第六方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例所述的多维稀疏矩阵的解压缩方法。
第七方面,本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本发明任意实施例所述的多维稀疏矩阵的压缩方法。
第八方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例所述的多维稀疏矩阵的解压缩方法。
本发明实施例提供了一种多维稀疏矩阵压缩方法、解压缩方法、装置、设备及介质,通过将多维稀疏矩阵中的非零元素所在低二维矩阵中的行列信息和数值信息分别对应添加至索引向量和数值向量中,并在索引向量和数值向量中使用分隔信息分别来分隔不同低二维矩阵的非零元素的行列信息和数值信息的技术方案,实现了对多维稀疏矩阵的压缩,而且在根据压缩结果对多维稀疏矩阵进行解压缩时,根据多维稀疏矩阵的维度信息以及索引向量中的分隔信息即可确定出非零元素在多维稀疏矩阵中的维度信息,以此实现对多维稀疏矩阵的解压缩。
附图说明
图1是本发明实施例一中的一种多维稀疏矩阵的压缩方法的流程图;
图2是本发明实施例二中的一种多维稀疏矩阵的压缩方法的流程图;
图3是本发明实施例三中的一种多维稀疏矩阵的压缩方法的实现电路的结构示意图;
图4是本发明实施例四中的一种多维稀疏矩阵的解压缩方法的流程图;
图5是本发明实施例五中的一种多维稀疏矩阵的解压缩方法的流程图;
图6是本发明实施例六中的一种多维稀疏矩阵的解压缩方法的实现电路的结构示意图;
图7是本发明实施例七中的一种多维稀疏矩阵的压缩装置的结构示意图;
图8是本发明实施例八中的一种多维稀疏矩阵的解压缩装置的结构示意图;
图9是本发明实施例九中的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
实施例一
图1为本发明实施例一提供的一种多维稀疏矩阵的压缩方法的流程图,本实施例可适用于对多维稀疏矩阵进行压缩的情况,该方法可以由本发明实施例提供的多维稀疏矩阵的压缩装置来执行,该装置可采用软件和/或硬件的方式实现,并一般可集成在处理器中。
如图1所示,本实施例的方法具体包括:
S110、获取待压缩的多维稀疏矩阵,所述多维稀疏矩阵中包括至少一个低二维矩阵。
上述4×3×4的三维稀疏矩阵为:
其中,当多维稀疏矩阵只包括一个低二维矩阵时,该多维稀疏矩阵即为二维稀疏矩阵。
S120、根据多维稀疏矩阵中各个非零元素所属的低二维矩阵,将各非零元素在低二维矩阵中的行列信息加入至索引向量中,并将各非零元素的数值信息加入至与索引向量匹配的数值向量中,得到多维稀疏矩阵的压缩结果。
其中,在索引向量中通过第一分隔信息来分隔不同低二维矩阵的非零元素的行列信息,在数值向量中通过第二分隔信息来分隔不同低二维矩阵的非零元素的数值信息。
具体的,可以在索引向量中每个低二维矩阵的所有非零元素的行列信息之后添加第一分隔信息,在数值向量中的每个低二维矩阵的所有非零元素的数值信息之后添加第二分隔信息。如果某个低二维矩阵的所有元素都为非零元素,则在索引向量的对应位置处直接添加第一分隔信息,在数值向量的对应位置处直接添加第二分隔信息即可。
值得指出的是,如果多维稀疏矩阵中只包括一个低二维矩阵(也即为二维稀疏矩阵),对其进行压缩时,则直接在索引向量的最后位置处添加第一分隔信息,在数值向量的最后位置处添加第二分隔信息即可。
以三维稀疏矩阵中的第一个低二维矩阵中的非零元素为例,非零元素1的行列信息为“0 0”(空格前为行信息,空格后为列信息),非零元素2的行列信息为“11”,非零元素2的行列信息为“2 2”,非零元素4的行列信息为“2 3”。
将这些非零元素的行列信息加入索引向量index中,将这些非零元素的数值信息加入与索引向量匹配的数值向量data中,其中,在索引向量index中不同低二维矩阵的非零元素的行列信息之间通过第一分隔信息来分隔,第一分隔信息可以是所述低二维矩阵的非法位置信息,例如是“3 4”,在数值向量data中不同低二维矩阵的非零元素的数值信息之间通过第二分隔信息来分隔,第二分隔信息可以是0。
由此,对上述三位稀疏矩阵进行压缩后生成的索引向量和数值向量分别是:
index=[0 0 1 1 2 2 2 3 3 4 0 0 1 0 2 0 3 4 3 4 0 3 1 3 2 3 3 4]
data=[1 2 3 4 0 5 6 7 0 0 8 9 1 0]
由于,第三个低二维矩阵中不包含非零元素,所以在索引向量index中出现连续两个非法行列信息[3 4]的现象,在数值向量data中对应出现连续两个分隔数值[0]的现象。
在对上述三维稀疏矩阵进行压缩时,通过在index向量中***[3 4],data向量中***[0],达到了分隔每个低二维矩阵的目的,并且没有引入更多高维度的信息占用额外的存储空间。
对于更高维度的多维稀疏矩阵也是同样的,以下述一个2×2×3×3的四维稀疏矩阵为例:
压缩结果为index=[0 0 1 1 2 2 3 3 0 0 1 0 2 0 3 3 3 3 0 2 1 2 2 2 33]
data=[1 2 3 0 5 6 7 0 0 8 9 1 0]
本实施例提供的技术方案,通过将多维稀疏矩阵中的非零元素所在低二维矩阵中的行列信息和数值信息分别对应添加至索引向量和数值向量中,并在索引向量和数值向量中使用分隔信息分别来分隔不同低二维矩阵的非零元素的行列信息和数值信息的技术方案,实现了对多维稀疏矩阵的压缩,而且使用分隔信息达到了分隔每个低二维矩阵的目的,也没有引入更多高维度的信息占用额外的存储空间。
在压缩多维稀疏矩阵的过程中,如果没有通过分隔信息来分隔不同的低二维矩阵的非零元素的行列信息和数值信息,则前述4×3×4的三维稀疏矩阵的压缩结果为:
index=[0 0 1 1 2 2 2 3 0 0 1 0 2 0 0 3 1 3 2 3]
data=[1 2 3 4 5 6 7 8 9 1]
根据数值向量和索引向量仅能够确定出三个低二维矩阵中具有非零元素,一个低二维矩阵中只有零元素,但是无法确定出这个全零的低二维矩阵是4×3×4的三维稀疏矩阵中的哪一个低二维矩阵。
即使在根据元素数值以及索引对应确定出[1 2 3 4]属于第一个低二维矩阵,[56 7]属于第二个低二维矩阵的前提下,对于元素数值[8 9 1],以及对应索引[0 3 1 3 23],也无法判断出[8 9 1]属于第三个低二维矩阵还是属于第四个低二维矩阵。
本发明实施例提供的技术方案中,压缩多维稀疏矩阵时在数值向量以及压缩索引向量中添加分隔信息,进而能够在对其进行解压缩时,根据多维稀疏矩阵的维度信息以及索引向量中的分隔信息确定出各个非零元素在多维稀疏矩阵中的维度信息,是属于哪个维度的低二维矩阵,尤其适用于多维稀疏矩阵中某一个或多个维度的低二维矩阵的元素均为零的情况。
实施例二
图2为本发明实施例二提供的一种多维稀疏矩阵的压缩方法的流程图,本实施例以上述实施例为基础进行具体化,其中,将根据多维稀疏矩阵中各个非零元素所属的低二维矩阵,将各非零元素所在的行列信息加入至索引向量中,并将各非零元素的数值信息加入至数值向量中,具体为:
依次获取待压缩多维稀疏矩阵中的一个元素作为当前处理元素;
如果确定当前处理元素为非零元素,则将当前处理元素在所属的低二维矩阵中的位置信息添加至索引向量中的对应位置,并将当前处理元素的数值添加至数值向量中的对应位置;
如果确定当前处理元素为所属的低二维矩阵中的最后一个元素,则将第一分隔信息顺序添加至索引向量中,并将第二分隔信息顺序添加至数值向量中;
返回执行依次获取待压缩多维稀疏矩阵中的一个元素作为当前处理元素的操作,直至处理完成待压缩多维稀疏矩阵中的所有元素。
如图2所示,本实施例的方法具体包括:
S210、获取待压缩的多维稀疏矩阵,所述多维稀疏矩阵中包括至少一个低二维矩阵。
S220、依次获取待压缩多维稀疏矩阵中的一个元素作为当前处理元素。
仍以压缩前述4×3×4的三维稀疏矩阵为例,假设此次循环中当前处理元素为“4”,相应的,与低二维矩阵对应的已处理元素数量为12。
S230、判断当前处理元素是否为非零元素,若是,则执行S240,若否,则执行S250。
S240、将当前处理元素在所属的低二维矩阵中的位置信息添加至索引向量中的对应位置,并将当前处理元素的数值添加至数值向量中的对应位置,执行S250。
当前处理元素“4”为非零元素,则将该非零元素的行列信息[2 3]添加至索引向量中,此时索引向量为index=[0 0 1 1 2 2 2 3],将该非零元素的数值信息[4]添加至数值向量中,此时数值向量为data=[1 2 3 4]。
S250、判断当前处理元素是否为所属的低二维矩阵中的最后一个元素,若是,则执行S260,若否,则执行S270。
作为本实施例一种具体的实施方式,在获取待压缩多维稀疏矩阵中的一个元素作为当前处理元素之后,还更新与低二维矩阵对应的已处理元素数量,也即更新当前处理元素所属的低二维矩阵中已处理了多少个元素了,每处理完一个元素(不论是零元素还是非零元素)后,已处理元素数量加一。进而,在判断当前处理元素是否为所属的低二维矩阵中的最后一个元素时,可以具体判断更新的已处理元素数量是否与低二维矩阵的标准数量相匹配,如果已处理元素数量与低二维矩阵的标准元素数量相匹配,则确定当前处理元素为所属的低二维矩阵中的最后一个元素,并对已处理元素数量进行重新计数,也即对已处理元素数量进行置零操作,其中,低二维矩阵的标准元素数量由多维稀疏矩阵的维度信息确定,例如4×3×4的三维稀疏矩阵的低二维矩阵的标准元素数量为3×4=12。
S260、将第一分隔信息顺序添加至索引向量中,并将第二分隔信息顺序添加至数值向量中,执行S270。
其中,第一分隔信息可以为低二维矩阵的非法位置信息,例如是行列信息最大有效值分别加1;第二分隔信息可以是0。当第二分隔信息是0时,有利于直接根据多维稀疏矩阵的压缩结果对所述多维稀疏矩阵进行计算。
经判断,已处理元素数量与低二维矩阵的标准元素数量相匹配,均为12,则确定当前处理元素为所属的低二维矩阵中的最后一个元素,将已处理元素数量置0,将第一分隔信息顺序[3 4]添加至索引向量中,此时索引向量为index=[0 0 1 1 2 2 2 3 3 4],将第二分隔信息[0]顺序添加至数值向量中,此时数值向量为data=[1 2 3 4 0]。
S270、判断是否已处理完成待压缩多维稀疏矩阵中的所有元素,若否,则执行S220,若是,则执行280。
处理完元素“4”之后,并未处理完成待压缩多维稀疏矩阵中的所有元素,返回继续执行S220,直至处理完成待压缩多维稀疏矩阵中的所有元素,得到与多维稀疏矩阵对应的压缩结果。
S280、输出并保存与多维稀疏矩阵对应的索引向量和数值向量。
压缩结束后,得到的索引向量和数值向量分别为:
index=[0 0 1 1 2 2 2 3 3 4 0 0 1 0 2 0 3 4 3 4 0 3 1 3 2 3 3 4]
data=[1 2 3 4 0 5 6 7 0 0 8 9 1 0]
本实施例未尽详细解释之处,请参见前述实施例,在此不再赘述。
实施例三
在上述实施例为基础上,本实施例提供一种具体的实施方式,其中,将根据多维稀疏矩阵中各个非零元素所属的低二维矩阵,将各非零元素所在的行列信息加入至索引向量中,并将各非零元素的数值信息加入至数值向量中,具体为:
分别获取待压缩多维稀疏矩阵中的各个元素进行是否为非零元素的判断,并按照顺序将待压缩多维稀疏矩阵中的非零元素在所属的低二维矩阵中的位置信息以及数值信息对应添加至索引向量以及数值向量中;
每当检测到一个低二维矩阵中的元素被处理完成时,在索引向量以及数值向量的对应位置***第一分隔信息以及第二分隔信息。
典型的,上述对多维稀疏矩阵进行压缩的具体实施方式可以通过硬件电路来实现,如图3(仅为结构示意图,并非实际电路结构)所示,可以通过至少两个(图中以四个为例示出)第一硬件处理单元310,并行地执行分别获取待压缩多维稀疏矩阵中的各个元素进行非零元素的判断,并按照顺序将待压缩多维稀疏矩阵中的非零元素在所属的低二维矩阵中的位置信息以及数值信息对应添加至索引向量以及数值向量中的操作;
通过第二硬件处理单元320,执行每当检测到一个低二维矩阵中的元素被处理完成时,在索引向量以及数值向量的对应位置***第一分隔信息以及第二分隔信息的操作。
为了提高对多维稀疏矩阵的压缩效率,可以采用多个第一硬件处理单元310并行地从内存中读取多维稀疏矩阵中的元素后进行处理,并行的第一硬件处理单元310的数量越大,同时处理的元素越多,理论性能就越好,但也会造成组合逻辑太大,导致芯片后端实现时出现area/timing/congestion的问题而无法收敛,所以并行的第一硬件处理单元310的数量需要权衡性能和可实现性,根据具体的芯片来具体确定。
第一硬件处理单元310,在内存中读取一个元素后,首先判断其是否为非零元素,如果是非零元素,则将该非零元素在所属的低二维矩阵中的位置信息以及数值信息对应添加至索引向量以及数值向量中相应的位置上。其中,每个第一硬件处理单元310中可以包括相同的两组处理电路子单元,一组处理元素的位置信息,一组处理元素的数值信息。
第二硬件处理单元320,根据各第一硬件处理单元310处理的元素信息,实时检测是否有一个低二维矩阵已被处理完成,如果是,则在索引向量以及数值向量的对应位置***第一分隔信息以及第二分隔信息,用于在压缩结果中分隔不同的低二维矩阵。
以一种具体的实现方式进行举例说明,仍以压缩前述4×3×4的三维稀疏矩阵为例,假设并行的第一硬件处理单元310的数量为八个。第一个时钟周期,八个并行的第一硬件处理单元310读到的元素依次为1、0、0、0、0、2、0、0,第一个第一硬件处理单元310判断出读取的元素非零,且根据其他几个第一硬件处理单元310的判断结果计算出元素“1”在当前时钟周期生成元素组合中的相对位置为1,则将元素“1”在所属低二维矩阵中的行列信息添加至当前时钟周期索引组合中的第一个位置上,将元素“1”的数值添加至当前时钟周期数值组合中的第一个位置上,第六个第一硬件处理单元310判断出读取的元素非零,且根据其他几个第一硬件处理单元310的判断结果计算出元素“2”在当前时钟周期生成元素组合中的相对位置为2,则将元素“2”在所属低二维矩阵中的行列信息添加至当前时钟周期索引组合中的第二个位置上,将元素“2”的数值添加至当前时钟周期数值组合中的第二个位置上,进而,当前时钟周期索引组合为[0 0 1 1](由于只有两个非零元素,所以当前时钟周期索引组合中只有两组位置信息),当前时钟周期数值组合为[1 2](由于只有两个非零元素,所以当前时钟周期数值组合中只有两个数值信息),然后将当前时钟周期索引组合和当前时钟周期数值组合分别拼接至之前处理得到的索引组合和数值组合中(当然,此处举例第一时钟周期,之前处理得到的索引组合和数值组合为空)。
值得指出的是,在实际操作中,可以限定并行的第一硬件处理单元310只能同时并行处理同一行的元素,具体可以是如果读取了下一行的元素则选择不处理,留到下一时钟周期进行处理。
根据上述每一时钟周期只处理一行数据的原则,第二硬件处理单元320,如果根据并行的多个第一硬件处理单元310读取并处理的元素,确定出一个低二维矩阵的最后一个元素已被读取并处理,则在将当前时钟周期索引组合和当前时钟周期数值组合分别拼接至之前处理得到的索引组合和数值组合中时,在当前时钟周期索引组合之后***第一分隔信息,在当前时钟周期数值组合之后***第二分隔信息。
在多维稀疏矩阵的所有元素都被处理完成之后,得到与该多维稀疏矩阵对应的索引向量和数值向量,写入内存。至此,完成对多维稀疏矩阵的压缩处理。
本实施例未尽详细解释之处,请参见前述实施例,在此不再赘述。
实施例四
图4为本发明实施例四提供的一种多维稀疏矩阵的解压缩方法的流程图,本实施例可适用于对多维稀疏矩阵进行解压缩的情况,该方法可以由本发明实施例提供的多维稀疏矩阵的解压缩装置来执行,该装置可采用软件和/或硬件的方式实现,并一般可集成在处理器中。
如图4所示,本实施例的方法具体包括:
S410、获取与待解压缩的多维稀疏矩阵对应的索引向量和数值向量,其中,在索引向量中通过第一分隔信息来分隔多维稀疏矩阵的不同低二维矩阵的非零元素的行列信息,在数值向量中通过第二分隔信息来分隔多维稀疏矩阵的不同低二维矩阵的非零元素的数值信息。
仍以压缩前述4×3×4的三维稀疏矩阵为例,与该三维稀疏矩阵对应的索引向量和数值向量分别是:
index=[0 0 1 1 2 2 2 3 3 4 0 0 1 0 2 0 3 4 3 4 0 3 1 3 2 3 3 4]
data=[1 2 3 4 0 5 6 7 0 0 8 9 1 0]
其中,第一分隔信息为低二维矩阵的非法行列信息[3 4],第二分隔信息为0。
S420、根据待解压缩的多维稀疏矩阵的维度信息、索引向量和数值向量中包括的第一分隔信息以及第二分隔信息,提取索引向量以及数值向量中与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息。
根据待解压缩的多维稀疏矩阵的维度信息4×3×4,可知该多维稀疏矩阵包括四个低二维矩阵,根据索引向量和数值向量中包括的第一分隔信息以及第二分隔信息,即可确定出与各个低二维矩阵分别对应的非零元素的行列信息和数值信息。
其中,与第一个低二维矩阵对应的非零元素的行列信息和对应的数值信息分别为index=[0 0 1 1 2 2 2 3],data=[1 2 3 4];与第二个低二维矩阵对应的非零元素的行列信息和对应的数值信息分别为index=[0 0 1 0 2 0],data=[5 6 7];与第三个低二维矩阵对应的全部为零元素;与第四个低二维矩阵对应的非零元素的行列信息和对应的数值信息分别为index=[0 3 1 3 2 3],data=[8 9 1]。
S430、根据与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息,生成各低二维矩阵,作为多维稀疏矩阵的解压缩结果。
具体的,将一个低二维矩阵中的各个非零元素的数值,根据其在低二维矩阵中的行列信息对应添加至该低二维矩阵中,并在该低二维矩阵的其余空闲位置上补充零元素,以完成对该低二维矩阵的解压缩。
本实施例提供的技术方案,在与待解压缩的多维稀疏矩阵对应的索引向量和数值向量中使用分隔信息分别来分隔不同低二维矩阵的非零元素的行列信息和数值信息,进而在根据压缩结果对多维稀疏矩阵进行解压缩时,可以根据多维稀疏矩阵的维度信息以及索引向量中的分隔信息确定出非零元素在多维稀疏矩阵中的维度信息,进而实现了对多维稀疏矩阵的解压缩。
实施例五
图5为本发明实施例五提供的一种多维稀疏矩阵的压缩方法的流程图,本实施例以上述实施例为基础进行具体化,其中,将根据待解压缩多维稀疏矩阵的维度信息、索引向量和数值向量中包括的第一分隔信息以及第二分隔信息,提取索引向量以及数值向量中与各个低二维矩阵中各非零元素分别对应的行列信息以及数值信息,具体为:
根据待解压缩多维稀疏矩阵的维度信息,将多维稀疏矩阵中的第一个低二维矩阵作为目标低二维矩阵;
依次获取索引向量和数值向量中与同一位置对应的索引处理信息和数值处理信息;
如果确定索引处理信息不为第一分隔信息,或者数值处理信息不为第二分隔信息,则确定出目标低二维矩阵中的以索引处理信息为行列信息、以数值处理信息为数值信息的一个非零元素;
如果确定索引处理信息为第一分隔信息,或者数值处理信息为第二分隔信息,则确定目标低二维矩阵处理完成,并根据待解压缩多维稀疏矩阵的维度信息,将多维稀疏矩阵中位于目标低二维矩阵下一位置的低二维矩阵作为新的目标低二维矩阵;
返回执行依次获取索引向量和数值向量中与同一位置对应的索引处理信息或者数值处理信息的操作,直至完成对索引向量和数值向量中全部信息的处理。
如图5所示,本实施例的方法具体包括:
S510、获取与待解压缩的多维稀疏矩阵对应的索引向量和数值向量,其中,在索引向量中通过第一分隔信息来分隔多维稀疏矩阵的不同低二维矩阵的非零元素的行列信息,在数值向量中通过第二分隔信息来分隔多维稀疏矩阵的不同低二维矩阵的非零元素的数值信息。
S520、根据待解压缩多维稀疏矩阵的维度信息,将多维稀疏矩阵中的第一个低二维矩阵作为目标低二维矩阵。
S530、依次获取索引向量和数值向量中与同一位置对应的索引处理信息和数值处理信息。
仍以压缩前述4×3×4的三维稀疏矩阵为例,假设当前目标低二维矩阵为三维稀疏矩阵中的第一个低二维矩阵。
S540、判断索引处理信息是否为第一分隔信息,或判断数值处理信息是否为第二分隔信息,若否,则执行S550,若是,则执行S560。
S550、确定出目标低二维矩阵中的以索引处理信息为行列信息、以数值处理信息为数值信息的一个非零元素,执行S570。
如果索引处理信息为[2 3],数值处理信息为[4],则可确定出第一个低二维矩阵中行列信息为[2 3]的位置上的元素为[4]。
S560、确定目标低二维矩阵处理完成,并根据待解压缩多维稀疏矩阵的维度信息,将多维稀疏矩阵中位于目标低二维矩阵下一位置的低二维矩阵作为新的目标低二维矩阵,执行S570。
如果索引处理信息为[3 4],是第一分隔信息,或数值处理信息为[0],是第二分隔信息,则确定第一个低二维矩阵已处理完,并在该低二维矩阵中其余的空闲位置上自动补充零元素,至此完成对第一个低二维矩阵的解压缩。
由于待解压缩的多维稀疏矩阵的维度是4×3×4,则可知下一个低二维矩阵为该多维稀疏矩阵的第二个低二维矩阵,并将该低二维矩阵作为新的目标低二维矩阵进行处理。
S570、判断是否完成对索引向量和数值向量中全部信息的处理,若否,则执行S530,若是,则执行S580。
S580、输出并保存解压缩后的多维稀疏矩阵。
本实施例未尽详细解释之处,请参见前述实施例,在此不再赘述。
实施例六
在上述实施例为基础上,本实施例提供一种具体的实施方式,其中,将根据待解压缩的多维稀疏矩阵的维度信息、索引向量和数值向量中包括的第一分隔信息以及第二分隔信息,提取索引向量以及所述数值向量中与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息,具体为:
分别获取索引向量和数值向量中与同一位置对应的索引处理信息和数值处理信息进行是否为分隔信息的判断,提取索引向量以及所述数值向量中与非零元素分别对应的行列信息以及数值信息,并根据待解压缩的多维稀疏矩阵的维度信息以及已判断出的第一分隔信息或第二分隔信息的数量确定非零元素在待解压缩的多维稀疏矩阵中所属的低二维矩阵。
典型的,上述对多维稀疏矩阵进行解压缩的具体实施方式可以通过硬件电路来实现,如图6(仅为结构示意图,并非实际电路结构)所示,可以通过至少两个(图中以四个为例示出)第三硬件处理单元610,并行地执行分别获取索引向量和数值向量中与同一位置对应的索引处理信息和数值处理信息进行是否为分隔信息的判断,提取索引向量以及数值向量中与非零元素分别对应的行列信息以及数值信息,并根据待解压缩的多维稀疏矩阵的维度信息以及已判断出的第一分隔信息或第二分隔信息的数量确定非零元素在待解压缩的多维稀疏矩阵中所属的低二维矩阵的操作。
为了提高对多维稀疏矩阵的解压缩效率,可以采用多个第三硬件处理单元610并行地从内存中读取索引向量和数值向量中与同一位置对应的索引处理信息和数值处理信息进行处理,并行的第三硬件处理单元310的数量需要权衡性能和可实现性,根据具体的芯片来具体确定。
具体的,可以从内存中读回压缩的索引向量和数值向量,并缓存下来,其中,需要将每次读回的向量和缓存中剩下的向量无缝拼接,以保证后续多个第三硬件处理单元一直有数据可以处理。
每个时钟周期内,每个第三硬件处理单元610从缓存中读取索引向量和数值向量中与同一位置对应的索引处理信息和数值处理信息,并对处理信息的有效性进行判断,也即判断索引处理信息是否为第一分隔信息,或判断数值处理信息是否为第二分隔信息,如果索引处理信息和数值处理信息有效(非分隔信息),则根据所有第三硬件处理单元610已检测到的无效信息的数量确定出当前处理的索引处理信息和数值处理信息属于哪一个低二维矩阵,进而将数值处理信息移位至对应的低二维矩阵中的索引处理信息对应的位置处。
值得指出的是,如果第三硬件处理单元610的并行数量为N,虽然每次从缓存中读出N个元素,但是由于这N个元素在多维稀疏矩阵中位置的无关性,导致实际硬件不能同一周期全部处理,一次性产生所有的数据,因为如果这N个元素相隔位置非常远,那么解压缩出来的数据量将会非常大。所以,硬件具体实现时,每周期处理不超过原始多维稀疏矩阵的一行,即第一维度的数据量。
仍以压缩前述4×3×4的三维稀疏矩阵为例,假设四个第三硬件处理单元610并行处理,第一时钟周期内,将[1 2 3 4]这四个元素解压处理,且确定这四个元素均属于第一个低二维矩阵,那么根据每次解压不超过一行的原则,只会先将[1 0 0 0]输出,然后是[02 0 0]输出,再然后是[0 0 3 4]。
每次解压到索引处理信息[3 4],即可确定有一个低二维矩阵的所有非零元素均已被解压完成。值得指出的是,由于解压出来的数据将全部写回内存,所以需要将每次解压出的数据进行拼接,组成内存数据宽度,然后一次性写回内存。
本实施例未尽详细解释之处,请参见前述实施例,在此不再赘述。
实施例七
图7所示为本发明实施例七提供的一种多维稀疏矩阵的压缩装置的结构示意图,本实施例可适用于对多维稀疏矩阵进行压缩的情况,该装置可采用软件和/或硬件的方式实现,并一般可集成在处理器中。如图7所示,该多维稀疏矩阵的压缩装置具体包括:多维稀疏矩阵获取模块710和压缩模块720,其中:
多维稀疏矩阵获取模块710,用于获取待压缩的多维稀疏矩阵,所述多维稀疏矩阵中包括至少一个低二维矩阵;
压缩模块720,用于根据所述多维稀疏矩阵中各个非零元素所属的低二维矩阵,将各所述非零元素在低二维矩阵中的行列信息加入至索引向量中,并将各所述非零元素的数值信息加入至与所述索引向量匹配的数值向量中,得到所述多维稀疏矩阵的压缩结果;
其中,在所述索引向量中通过第一分隔信息来分隔不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔不同低二维矩阵的非零元素的数值信息。
本实施例提供的技术方案,通过将多维稀疏矩阵中的非零元素所在低二维矩阵中的行列信息和数值信息分别对应添加至索引向量和数值向量中,并在索引向量和数值向量中使用分隔信息分别来分隔不同低二维矩阵的非零元素的行列信息和数值信息的技术方案,实现了对多维稀疏矩阵的压缩,而且使用分隔信息达到了分隔每个低二维矩阵的目的,也没有引入更多高维度的信息占用额外的存储空间。
进一步的,压缩模块720具体包括:当前处理元素获取单元、有效数据添加单元、分隔数据添加单元和循环单元,其中,
当前处理元素获取单元,用于依次获取待压缩多维稀疏矩阵中的一个元素作为当前处理元素;
有效数据添加单元,用于如果确定所述当前处理元素为非零元素,则将所述当前处理元素在所属的低二维矩阵中的位置信息添加至索引向量中的对应位置,并将所述当前处理元素的数值添加至数值向量中的对应位置;
分隔数据添加单元,用于如果确定所述当前处理元素为所属的低二维矩阵中的最后一个元素,则将第一分隔信息顺序添加至所述索引向量中,并将第二分隔信息顺序添加至所述数值向量中;
循环单元,用于返回执行依次获取待压缩多维稀疏矩阵中的一个元素作为当前处理元素的操作,直至处理完成所述待压缩多维稀疏矩阵中的所有元素。
作为一种具体的实施方式,压缩模块720还具体包括:已处理元素数量更新单元,用于在获取待压缩多维稀疏矩阵中的一个元素作为当前处理元素之后,更新与所述低二维矩阵对应的已处理元素数量;
对应的,分隔数据添加单元,具体用于如果确定所述已处理元素数量与所述低二维矩阵的标准元素数量相匹配,则确定当前处理元素为所属的低二维矩阵中的最后一个元素,并对所述已处理元素数量进行重新计数,将第一分隔信息顺序添加至所述索引向量中,并将第二分隔信息顺序添加至所述数值向量中;其中,所述低二维矩阵的标准元素数量由多维稀疏矩阵的维度信息确定。
进一步的,所述第一分隔信息包括所述低二维矩阵的非法位置信息;所述第二分隔信息包括0。
作为另一种具体的实施方式,压缩模块720具体包括:元素信息添加单元和分隔信息添加单元,其中,
元素信息添加单元,用于分别获取待压缩多维稀疏矩阵中的各个元素进行是否为非零元素的判断,并按照顺序将所述待压缩多维稀疏矩阵中的非零元素在所属的低二维矩阵中的位置信息以及数值信息对应添加至索引向量以及数值向量中;
分隔信息添加单元,用于每当检测到一个低二维矩阵中的元素被处理完成时,在所述索引向量以及数值向量的对应位置***所述第一分隔信息以及所述第二分隔信息。
上述多维稀疏矩阵的压缩装置可执行本发明任意实施例所提供的多维稀疏矩阵的压缩方法,具备执行的多维稀疏矩阵的压缩方法相应的功能模块和有益效果。
实施例八
图8为本发明实施例八提供的一种多维稀疏矩阵的解压缩装置的结构示意图,本实施例可适用于对多维稀疏矩阵进行解压缩的情况,该装置可采用软件和/或硬件的方式实现,并一般可集成在处理器中。如图8所示,该多维稀疏矩阵的解压缩装置具体包括:压缩结果获取模块810、非零元素提取模块820和解压缩结果生成模块830,其中:
压缩结果获取模块810,用于获取与待解压缩的多维稀疏矩阵对应的索引向量和数值向量,其中,在所述索引向量中通过第一分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的数值信息;
非零元素提取模块820,用于根据待解压缩的多维稀疏矩阵的维度信息、所述索引向量和数值向量中包括的第一分隔信息以及第二分隔信息,提取所述索引向量以及所述数值向量中与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息;
解压缩结果生成模块830,用于根据与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息,生成各所述低二维矩阵,作为所述多维稀疏矩阵的解压缩结果。
本实施例提供的技术方案,在与待解压缩的多维稀疏矩阵对应的索引向量和数值向量中使用分隔信息分别来分隔不同低二维矩阵的非零元素的行列信息和数值信息,进而在根据压缩结果对多维稀疏矩阵进行解压缩时,可以根据多维稀疏矩阵的维度信息以及索引向量中的分隔信息确定出非零元素在多维稀疏矩阵中的维度信息,进而实现了对多维稀疏矩阵的解压缩。
作为一种具体的实施方式,非零元素提取模块820具体包括:目标低二维矩阵初始确定单元、处理信息获取单元、非零元素确定单元、目标低二维矩阵更新单元和循环处理单元,其中,
目标低二维矩阵初始确定单元,用于根据所述待解压缩多维稀疏矩阵的维度信息,将所述多维稀疏矩阵中的第一个低二维矩阵作为目标低二维矩阵;
处理信息获取单元,用于依次获取所述索引向量和数值向量中与同一位置对应的索引处理信息和数值处理信息;
非零元素确定单元,用于如果确定所述索引处理信息不为所述第一分隔信息,或者所述数值处理信息不为所述第二分隔信息,则确定出所述目标低二维矩阵中的以所述索引处理信息为行列信息、以所述数值处理信息为数值信息的一个非零元素;
目标低二维矩阵更新单元,用于如果确定所述索引处理信息为所述第一分隔信息,或者所述数值处理信息为所述第二分隔信息,则确定所述目标低二维矩阵处理完成,并根据所述待解压缩多维稀疏矩阵的维度信息,将多维稀疏矩阵中位于所述目标低二维矩阵下一位置的低二维矩阵作为新的所述目标低二维矩阵;
循环处理单元,用于返回执行依次获取所述索引向量和数值向量中与同一位置对应的索引处理信息或者数值处理信息的操作,直至完成对所述索引向量和数值向量中全部信息的处理。
作为另一种具体的实施方式,非零元素提取模块820具体用于:分别获取所述索引向量和数值向量中与同一位置对应的索引处理信息和数值处理信息进行是否为分隔信息的判断,提取所述索引向量以及所述数值向量中与非零元素分别对应的行列信息以及数值信息,并根据待解压缩的多维稀疏矩阵的维度信息以及已判断出的所述第一分隔信息或所述第二分隔信息的数量,确定所述非零元素在待解压缩的多维稀疏矩阵中所属的低二维矩阵。
上述多维稀疏矩阵的解压缩装置可执行本发明任意实施例所提供的多维稀疏矩阵的解压缩方法,具备执行的多维稀疏矩阵的解压缩方法相应的功能模块和有益效果。
实施例九
图9为本发明实施例九提供的一种计算机设备的结构示意图。图9示出了适于用来实现本发明实施方式的示例性计算机设备12的框图。图9显示的计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图9所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,***存储器28,连接不同***组件(包括***存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,***总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及***组件互连(PCI)总线。
计算机设备12典型地包括多种计算机***可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
***存储器28可以包括易失性存储器形式的计算机***可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机***存储介质。仅作为举例,存储***34可以用于读写不可移动的、非易失性磁介质(图9未显示,通常称为“硬盘驱动器”)。尽管图9中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。***存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如***存储器28中,这样的程序模块42包括但不限于操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图9中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
处理单元16通过运行存储在***存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的多维稀疏矩阵的压缩方法。也即,所述处理单元执行所述程序时实现:获取待压缩的多维稀疏矩阵,所述多维稀疏矩阵中包括至少一个低二维矩阵;根据所述多维稀疏矩阵中各个非零元素所属的低二维矩阵,将各所述非零元素在低二维矩阵中的行列信息加入至索引向量中,并将各所述非零元素的数值信息加入至与所述索引向量匹配的数值向量中,得到所述多维稀疏矩阵的压缩结果;其中,在所述索引向量中通过第一分隔信息来分隔不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔不同低二维矩阵的非零元素的数值信息。
又例如:实现本发明实施例所提供的多维稀疏矩阵的解压缩方法。也即,所述处理单元执行所述程序时实现:获取与待解压缩的多维稀疏矩阵对应的索引向量和数值向量,其中,在所述索引向量中通过第一分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的数值信息;根据待解压缩的多维稀疏矩阵的维度信息、所述索引向量和数值向量中包括的第一分隔信息以及第二分隔信息,提取所述索引向量以及所述数值向量中与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息;根据与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息,生成各所述低二维矩阵,作为所述多维稀疏矩阵的解压缩结果。
实施例十
本发明实施例十提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请所有发明实施例提供的多维稀疏矩阵的压缩方法:也即,该程序被处理器执行时实现:获取待压缩的多维稀疏矩阵,所述多维稀疏矩阵中包括至少一个低二维矩阵;根据所述多维稀疏矩阵中各个非零元素所属的低二维矩阵,将各所述非零元素在低二维矩阵中的行列信息加入至索引向量中,并将各所述非零元素的数值信息加入至与所述索引向量匹配的数值向量中,得到所述多维稀疏矩阵的压缩结果;其中,在所述索引向量中通过第一分隔信息来分隔不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔不同低二维矩阵的非零元素的数值信息。
或者,实现如本申请所有发明实施例提供的多维稀疏矩阵的解压缩方法:也即,该程序被处理器执行时实现:获取与待解压缩的多维稀疏矩阵对应的索引向量和数值向量,其中,在所述索引向量中通过第一分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的数值信息;根据待解压缩的多维稀疏矩阵的维度信息、所述索引向量和数值向量中包括的第一分隔信息以及第二分隔信息,提取所述索引向量以及所述数值向量中与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息;根据与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息,生成各所述低二维矩阵,作为所述多维稀疏矩阵的解压缩结果。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (14)
1.一种多维稀疏矩阵的压缩方法,其特征在于,包括:
获取待压缩的多维稀疏矩阵,所述多维稀疏矩阵中包括至少一个低二维矩阵;其中,所述低二维矩阵为所述多维稀疏矩阵中的一个二维矩阵单元,且所述二维矩阵单元由所述多维稀疏矩阵最低的两个维度构成;
根据所述多维稀疏矩阵中各个非零元素所属的低二维矩阵,将各所述非零元素在低二维矩阵中的行列信息加入至索引向量中,并将各所述非零元素的数值信息加入至与所述索引向量匹配的数值向量中,得到所述多维稀疏矩阵的压缩结果;
其中,在所述索引向量中通过第一分隔信息来分隔不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔不同低二维矩阵的非零元素的数值信息。
2.根据权利要求1所述的方法,其特征在于,根据所述多维稀疏矩阵中各个非零元素所属的低二维矩阵,将各所述非零元素所在的行列信息加入至索引向量中,并将各所述非零元素的数值信息加入至数值向量中,包括:
依次获取待压缩多维稀疏矩阵中的一个元素作为当前处理元素;
如果确定所述当前处理元素为非零元素,则将所述当前处理元素在所属的低二维矩阵中的位置信息添加至索引向量中的对应位置,并将所述当前处理元素的数值添加至数值向量中的对应位置;
如果确定所述当前处理元素为所属的低二维矩阵中的最后一个元素,则将第一分隔信息顺序添加至所述索引向量中,并将第二分隔信息顺序添加至所述数值向量中;
返回执行依次获取待压缩多维稀疏矩阵中的一个元素作为当前处理元素的操作,直至处理完成所述待压缩多维稀疏矩阵中的所有元素。
3.根据权利要求2所述的方法,其特征在于,在获取待压缩多维稀疏矩阵中的一个元素作为当前处理元素之后,还包括:更新与所述低二维矩阵对应的已处理元素数量;
确定所述当前处理元素为所属的低二维矩阵中的最后一个元素,包括:
如果所述已处理元素数量与所述低二维矩阵的标准元素数量相匹配,则确定当前处理元素为所属的低二维矩阵中的最后一个元素,并对所述已处理元素数量进行重新计数;
其中,所述低二维矩阵的标准元素数量由多维稀疏矩阵的维度信息确定。
4.根据权利要求2或3所述的方法,其特征在于,所述第一分隔信息包括所述低二维矩阵的非法位置信息;和/或,所述第二分隔信息包括0。
5.根据权利要求1所述的方法,其特征在于,根据所述多维稀疏矩阵中各个非零元素所属的低二维矩阵,将各所述非零元素所在的行列信息加入至索引向量中,并将各所述非零元素的数值信息加入至数值向量中,包括:
分别获取待压缩多维稀疏矩阵中的各个元素进行是否为非零元素的判断,并按照顺序将所述待压缩多维稀疏矩阵中的非零元素在所属的低二维矩阵中的位置信息以及数值信息对应添加至索引向量以及数值向量中;
每当检测到一个低二维矩阵中的元素被处理完成时,在所述索引向量以及数值向量的对应位置***所述第一分隔信息以及所述第二分隔信息。
6.根据权利要求5所述的方法,其特征在于,
通过至少两个第一硬件处理单元,并行地执行分别获取待压缩多维稀疏矩阵中的各个元素进行非零元素的判断,并按照顺序将所述待压缩多维稀疏矩阵中的非零元素在所属的低二维矩阵中的位置信息以及数值信息对应添加至索引向量以及数值向量中的操作;
通过第二硬件处理单元,执行每当检测到一个低二维矩阵中的元素被处理完成时,在所述索引向量以及数值向量的对应位置***所述第一分隔信息以及所述第二分隔信息的操作。
7.一种多维稀疏矩阵的解压缩方法,其特征在于,包括:
获取与待解压缩的多维稀疏矩阵对应的索引向量和数值向量,其中,在所述索引向量中通过第一分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的数值信息;其中,所述低二维矩阵为所述多维稀疏矩阵中的一个二维矩阵单元,且所述二维矩阵单元由所述多维稀疏矩阵最低的两个维度构成;
根据待解压缩的多维稀疏矩阵的维度信息、所述索引向量和数值向量中包括的第一分隔信息以及第二分隔信息,提取所述索引向量以及所述数值向量中与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息;
根据与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息,生成各所述低二维矩阵,作为所述多维稀疏矩阵的解压缩结果。
8.根据权利要求7所述的方法,其特征在于,根据所述待解压缩多维稀疏矩阵的维度信息、所述索引向量和数值向量中包括的第一分隔信息以及第二分隔信息,提取所述索引向量以及所述数值向量中与各个低二维矩阵中各非零元素分别对应的行列信息以及数值信息,包括:
根据所述待解压缩多维稀疏矩阵的维度信息,将所述多维稀疏矩阵中的第一个低二维矩阵作为目标低二维矩阵;
依次获取所述索引向量和数值向量中与同一位置对应的索引处理信息和数值处理信息;
如果确定所述索引处理信息不为所述第一分隔信息,或者所述数值处理信息不为所述第二分隔信息,则确定出所述目标低二维矩阵中的以所述索引处理信息为行列信息、以所述数值处理信息为数值信息的一个非零元素;
如果确定所述索引处理信息为所述第一分隔信息,或者所述数值处理信息为所述第二分隔信息,则确定所述目标低二维矩阵处理完成,并根据所述待解压缩多维稀疏矩阵的维度信息,将多维稀疏矩阵中位于所述目标低二维矩阵下一位置的低二维矩阵作为新的所述目标低二维矩阵;
返回执行依次获取所述索引向量和数值向量中与同一位置对应的索引处理信息或者数值处理信息的操作,直至完成对所述索引向量和数值向量中全部信息的处理。
9.根据权利要求7所述的方法,其特征在于,根据待解压缩的多维稀疏矩阵的维度信息、所述索引向量和数值向量中包括的第一分隔信息以及第二分隔信息,提取所述索引向量以及所述数值向量中与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息,包括:
分别获取所述索引向量和数值向量中与同一位置对应的索引处理信息和数值处理信息进行是否为分隔信息的判断,提取所述索引向量以及所述数值向量中与非零元素分别对应的行列信息以及数值信息,并根据待解压缩的多维稀疏矩阵的维度信息以及已判断出的所述第一分隔信息或所述第二分隔信息的数量,确定所述非零元素在待解压缩的多维稀疏矩阵中所属的低二维矩阵。
10.根据权利要求9所述的方法,其特征在于,
通过至少两个第三硬件处理单元,并行地执行分别获取所述索引向量和数值向量中与同一位置对应的索引处理信息和数值处理信息进行是否为分隔信息的判断,提取所述索引向量以及所述数值向量中与非零元素分别对应的行列信息以及数值信息,并根据待解压缩的多维稀疏矩阵的维度信息以及已判断出的所述第一分隔信息或所述第二分隔信息的数量,确定所述非零元素在待解压缩的多维稀疏矩阵中所属的低二维矩阵的操作。
11.一种多维稀疏矩阵的压缩装置,其特征在于,包括:
多维稀疏矩阵获取模块,用于获取待压缩的多维稀疏矩阵,所述多维稀疏矩阵中包括至少一个低二维矩阵;其中,所述低二维矩阵为所述多维稀疏矩阵中的一个二维矩阵单元,且所述二维矩阵单元由所述多维稀疏矩阵最低的两个维度构成;
压缩模块,用于根据所述多维稀疏矩阵中各个非零元素所属的低二维矩阵,将各所述非零元素在低二维矩阵中的行列信息加入至索引向量中,并将各所述非零元素的数值信息加入至与所述索引向量匹配的数值向量中,得到所述多维稀疏矩阵的压缩结果;
其中,在所述索引向量中通过第一分隔信息来分隔不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔不同低二维矩阵的非零元素的数值信息。
12.一种多维稀疏矩阵的解压缩装置,其特征在于,包括:
压缩结果获取模块,用于获取与待解压缩的多维稀疏矩阵对应的索引向量和数值向量,其中,在所述索引向量中通过第一分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的数值信息;其中,所述低二维矩阵为所述多维稀疏矩阵中的一个二维矩阵单元,且所述二维矩阵单元由所述多维稀疏矩阵最低的两个维度构成;
非零元素提取模块,用于根据待解压缩的多维稀疏矩阵的维度信息、所述索引向量和数值向量中包括的第一分隔信息以及第二分隔信息,提取所述索引向量以及所述数值向量中与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息;
解压缩结果生成模块,用于根据与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息,生成各所述低二维矩阵,作为所述多维稀疏矩阵的解压缩结果。
13.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-5中任一所述的方法,或者实现如权利要求7-9中任一所述的方法。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5中任一所述的方法,或者实现如权利要求7-9中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910792796.1A CN110489428B (zh) | 2019-08-26 | 2019-08-26 | 多维稀疏矩阵压缩方法、解压缩方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910792796.1A CN110489428B (zh) | 2019-08-26 | 2019-08-26 | 多维稀疏矩阵压缩方法、解压缩方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110489428A CN110489428A (zh) | 2019-11-22 |
CN110489428B true CN110489428B (zh) | 2020-05-22 |
Family
ID=68553506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910792796.1A Active CN110489428B (zh) | 2019-08-26 | 2019-08-26 | 多维稀疏矩阵压缩方法、解压缩方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110489428B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111049836A (zh) * | 2019-12-16 | 2020-04-21 | 北京澎思科技有限公司 | 数据处理方法、电子设备及计算机可读存储介质 |
CN111797589A (zh) * | 2020-05-29 | 2020-10-20 | 华为技术有限公司 | 一种文本处理网络、神经网络训练的方法以及相关设备 |
CN113836134A (zh) * | 2020-06-23 | 2021-12-24 | 北京希姆计算科技有限公司 | 稀疏矩阵的压缩方法及解压缩方法和装置 |
CN114696946B (zh) * | 2020-12-28 | 2023-07-14 | 郑州大学 | 数据编码及解码方法、装置、电子设备及存储介质 |
CN115359592B (zh) * | 2022-10-21 | 2023-02-14 | 深圳市城市交通规划设计研究中心股份有限公司 | 一种交通***实名匹配方法、电子设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033854A (zh) * | 2010-12-17 | 2011-04-27 | 中国科学院软件研究所 | 针对稀疏矩阵的数据存储方法及基于该方法的SpMV实现方法 |
CN103336758A (zh) * | 2013-06-29 | 2013-10-02 | 中国科学院软件研究所 | 一种稀疏矩阵的存储方法CSRL及基于该方法的SpMV实现方法 |
US8819381B2 (en) * | 2008-05-06 | 2014-08-26 | L-3 Communications Integrated Systems, L.P. | System and method for storing a sparse matrix |
CN105593843A (zh) * | 2013-08-30 | 2016-05-18 | 微软技术许可有限责任公司 | 稀疏矩阵数据结构 |
CN107045492A (zh) * | 2016-02-05 | 2017-08-15 | 谷歌公司 | 矩阵处理装置 |
CN108268422A (zh) * | 2016-12-31 | 2018-07-10 | 英特尔公司 | 用于处理非常稀疏和超稀疏矩阵数据的硬件加速器架构 |
US10311127B2 (en) * | 2014-04-16 | 2019-06-04 | Knowles Electronics, Llc | Sparse matrix vector multiplication |
CN109857744A (zh) * | 2019-02-13 | 2019-06-07 | 上海燧原智能科技有限公司 | 稀疏张量计算方法、装置、设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102436438B (zh) * | 2011-12-13 | 2015-03-04 | 华中科技大学 | 基于gpu的稀疏矩阵数据存储方法 |
US9372877B2 (en) * | 2014-05-05 | 2016-06-21 | Microsoft Technology Licensing, Llc | Sparse datatable data structure |
US20160259826A1 (en) * | 2015-03-02 | 2016-09-08 | International Business Machines Corporation | Parallelized Hybrid Sparse Matrix Representations for Performing Personalized Content Ranking |
-
2019
- 2019-08-26 CN CN201910792796.1A patent/CN110489428B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8819381B2 (en) * | 2008-05-06 | 2014-08-26 | L-3 Communications Integrated Systems, L.P. | System and method for storing a sparse matrix |
CN102033854A (zh) * | 2010-12-17 | 2011-04-27 | 中国科学院软件研究所 | 针对稀疏矩阵的数据存储方法及基于该方法的SpMV实现方法 |
CN103336758A (zh) * | 2013-06-29 | 2013-10-02 | 中国科学院软件研究所 | 一种稀疏矩阵的存储方法CSRL及基于该方法的SpMV实现方法 |
CN105593843A (zh) * | 2013-08-30 | 2016-05-18 | 微软技术许可有限责任公司 | 稀疏矩阵数据结构 |
US10311127B2 (en) * | 2014-04-16 | 2019-06-04 | Knowles Electronics, Llc | Sparse matrix vector multiplication |
CN107045492A (zh) * | 2016-02-05 | 2017-08-15 | 谷歌公司 | 矩阵处理装置 |
CN108268422A (zh) * | 2016-12-31 | 2018-07-10 | 英特尔公司 | 用于处理非常稀疏和超稀疏矩阵数据的硬件加速器架构 |
CN109857744A (zh) * | 2019-02-13 | 2019-06-07 | 上海燧原智能科技有限公司 | 稀疏张量计算方法、装置、设备及存储介质 |
Non-Patent Citations (4)
Title |
---|
An optimal storage format for sparse matrices;Eurı́pides Montagne et al;《Information Processing Letters》;20040430;第90卷(第2期);第87-92页 * |
Optimizing Sparse Matrix-Vector Multiplication Using Index and Value Compression;Kornilios Kourtis et al;《Proceedings of the 5th conference on Computing frontiers》;20080507;第1-10页 * |
基于UB树的大型稀疏矩阵存储研究;吴超凡;《中国优秀硕士学位论文全文数据库 信息科技辑》;20140215;第2014年卷(第02期);第I137-14页 * |
基于压缩存储的稀疏矩阵转置算法研究;王敏;《科学技术与工程》;20100228;第10卷(第4期);第1041-1044页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110489428A (zh) | 2019-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110489428B (zh) | 多维稀疏矩阵压缩方法、解压缩方法、装置、设备及介质 | |
US11741014B2 (en) | Methods and systems for handling data received by a state machine engine | |
US20180329868A1 (en) | Vector and Matrix Computing Device | |
WO2022037257A1 (zh) | 卷积计算引擎、人工智能芯片以及数据处理方法 | |
CN109885628B (zh) | 一种张量转置方法、装置、计算机及存储介质 | |
CN110046116B (zh) | 一种张量填充方法、装置、设备及存储介质 | |
CN109726822B (zh) | 运算方法、装置及相关产品 | |
US11397791B2 (en) | Method, circuit, and SOC for performing matrix multiplication operation | |
CN115690443B (zh) | 特征提取模型训练方法、图像分类方法及相关装置 | |
CN107957975B (zh) | 一种计算方法及相关产品 | |
CN117435855B (zh) | 用于进行卷积运算的方法、电子设备和存储介质 | |
US11636569B1 (en) | Matrix transpose hardware acceleration | |
CN113971224A (zh) | 图像检索***、方法和相关设备 | |
CN112230994A (zh) | 一种计算方法及相关产品 | |
CN109711538B (zh) | 运算方法、装置及相关产品 | |
WO2023071566A1 (zh) | 数据处理方法、装置、计算机设备、计算机可读存储介质及计算机程序产品 | |
CN112612427B (zh) | 一种车辆停靠点数据处理方法、装置、存储介质及终端 | |
CN109388371B (zh) | 一种数据的排序方法、***、协处理装置和主处理装置 | |
CN111353125B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN113836481B (zh) | 矩阵计算电路、方法、电子设备及计算机可读存储介质 | |
CN115100458B (zh) | 一种图像分类方法以及相关装置 | |
CN118171022A (zh) | 一种基于fpga的拉普拉斯方程电磁解算算法 | |
CN118229509A (zh) | 一种适用dsp的图像处理优化方法、***、设备及介质 | |
KR20230095775A (ko) | Ndp 기능을 포함하는 메모리 확장 장치 및 이를 포함하는 가속기 시스템 | |
CN118051264A (zh) | 一种矩阵处理方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |