CN113190791A - 矩阵的处理方法、装置及逻辑电路 - Google Patents
矩阵的处理方法、装置及逻辑电路 Download PDFInfo
- Publication number
- CN113190791A CN113190791A CN202110395943.9A CN202110395943A CN113190791A CN 113190791 A CN113190791 A CN 113190791A CN 202110395943 A CN202110395943 A CN 202110395943A CN 113190791 A CN113190791 A CN 113190791A
- Authority
- CN
- China
- Prior art keywords
- matrix
- processed
- elements
- distribution
- logic
- 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.)
- Pending
Links
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/40—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using contact-making devices, e.g. electromagnetic relay
- G06F7/42—Adding; Subtracting
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/20—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Electromagnetism (AREA)
- Complex Calculations (AREA)
Abstract
本申请提供一种矩阵的处理方法、装置及逻辑电路,其中方法包括:确定待处理矩阵中的多个非零元素;确定所述待处理矩阵的分布矩阵,所述分布矩阵包括用于表示所述待处理矩阵中多个非零元素的位置的标识;通过所述分布矩阵,在另一矩阵中获取包括多个目标元素的矩阵,其中,每个目标元素在所述另一矩阵中的位置对应于所述待处理矩阵中一个非零元素的位置;以及,根据所述多个非零元素和所述包括多个目标元素的矩阵进行矩阵处理以得到运算结果。本申请提供的矩阵的处理方法、装置及逻辑电路,能够提高矩阵的运算效率。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种矩阵的处理方法、装置及逻辑电路。
背景技术
矩阵是科学计算中常用的一种运算工具,被广泛应用于工程应用之中。而稀疏矩阵是矩阵的一种特例,指矩阵中仅含有少量非0元素的矩阵。由于稀疏矩阵中存在大量的值为0的元素,采用常规的矩阵存储方式会在矩阵运算时带来大量的不必要运算。
现有技术中,为了提高稀疏矩阵的运算效率,往往会采用更有效的稀疏矩阵处理方式对稀疏矩阵进行压缩处理。目前主流的稀疏矩阵的处理方式为压缩行存储(Compressed Row Storage,CSR),稀疏矩阵经过CSR处理后得到的压缩矩阵通过行偏移、元素列号和元素数值存储稀疏矩阵中的非0元素。其中,元素的数值和列号表示一个元素以及其在矩阵中所处的列号,行偏移表示某一行的第一个元素在数值里的起始偏移位置。从而在稀疏矩阵进行运算时,可直接通过压缩后的压缩矩阵代替压缩前的稀疏矩阵进行相关运算,减少了稀疏矩阵在进行卷积运算时,矩阵中的0元素与对应稀疏矩阵相同位置的元素进行乘法计算得到0值的无效计算。同时,在对两个CSR压缩矩阵进行卷积运算时,由于两个CSR压缩矩阵所对应的原矩阵中的非0元素个数通常不相同,并不能明确CSR压缩矩阵中的非0元素需要与另一CSR压缩矩阵中的哪些非0元素进行卷积运算。因此在对两个CSR压缩矩阵进行卷积运算之前,还需要还原出CSR压缩矩阵所对应的原矩阵中的部分0值。以确保两个CSR压缩矩阵中的非0元素进行补充0值后辅助对齐后,得到两个维数相同的CSR压缩矩阵,从而能够对两个维数相同的矩阵中每两个相同位置的元素的乘积进行累加,以得到两个矩阵的卷积运算结果。
采用现有的矩阵处理方法,由于压缩后的稀疏矩阵在进行卷积运算时还需要增加一些0元素以进行元素对齐。因此在压缩后的稀疏矩阵进行卷积运算时,并没有完全避免0元素的无效运算,从而造成了现有矩阵处理方法的效率较低。
发明内容
本申请提供一种矩阵的处理方法、装置及逻辑电路,通过确定待处理矩阵的非零元素以及用于表示非零元素位置的分布矩阵,将非零元素的数量、依次排列的非零元素和分布矩阵组合为压缩矩阵,使得稀疏矩阵在进行例如矩阵的卷积运算、乘加运算、乘减运算、除加运算或除减运算时,能够通过压缩矩阵代替稀疏矩阵进行运算并得到稀疏矩阵的运算结果,从而避免了零元素的无效计算并提高了矩阵的处理方法的效率。
本申请第一方面提供一种矩阵的处理方法,包括:
确定待处理矩阵中的非零元素的数量,所述待处理矩阵为一维矩阵;
确定所述待处理矩阵的分布矩阵,所述分布矩阵用于表示所述待处理矩阵中非零元素的位置;
组合所述非零元素的数量、依次排列的所述待处理矩阵中每个非零元素的值和所述分布矩阵,以获得所述待处理矩阵的压缩矩阵。
本实施例提供的矩阵的处理方法,能够通过确定待处理矩阵的非零元素以及用于表示非零元素位置的分布矩阵,并将非零元素的数量、依次排列的非零元素和分布矩阵组合为压缩矩阵。本实施例的矩阵处理方法所得到的压缩矩阵,能够在待处理矩阵进行例如矩阵的卷积运算、乘加运算、乘减运算、除加运算或除减运算时,通过压缩矩阵代替待处理矩阵进行运算,以提高处理器对于待处理矩阵的存储效率和运算效率。
在本申请第一方面一实施例中,所述分布矩阵为一维矩阵,所述待处理矩阵中每个位置上的元素和所述分布矩阵中相同位置上的元素一一对应,所述确定所述待处理矩阵的分布矩阵,包括:
依次扫描所述待处理矩阵中的元素;
当所述扫描到的元素为非零元素时,确定所述分布矩阵中与所述扫描到的元素相对应的元素的值为1;
当所述扫描到的元素为零值时,确定所述分布矩阵中与所述扫描到的元素相对应的元素的值为0。
在本实施例提供的矩阵的处理方法中,通过与待处理矩阵维数相同并且相同位置上元素一一对应的分布矩阵来表示待处理矩阵中的元素是否为零元素。更为具体地,通过扫描待处理矩阵中的元素,用分布矩阵中的常数1来表示待处理矩阵中的非零元素、常数0来表示待处理矩阵中的零元素,使得在处理矩阵时,能够通过更为简单的分布矩阵确定待处理矩阵中零元素和非零元素的分布。尤其是在待处理矩阵中的元素的数据量较大时,本实施例中通过数据量仅为1bit的常数0和1即可对待处理矩阵中零元素和非零元素的分布进行标识,从而不需要在待处理矩阵进行运算时扫描数据量较大的待处理矩阵,节省了矩阵处理中用于读取数据的带宽。
在本申请第一方面一实施例中,所述待处理矩阵中的元素的数量为N,所述待处理矩阵中的非零元素的数量为M,对应的,所述分布矩阵中的元素的数量为N,所述分布矩阵中值为1的元素的数量为M,所述压缩矩阵中的元素的数量为M+N+1,其中,N为正整数,M为非负整数,M小于等于N。
本实施例提供的矩阵的处理方法,通过更为具体地对压缩矩阵中元素数量进行限定,使得一维矩阵的压缩矩阵中仅包括M+N+1个元素,其中,1个非零元素的数量、M个非零元素以及N个分布矩阵的元素,使得本实施例中的压缩矩阵在代替待处理矩阵进行运算时,能够完全等效于采用压缩前的待处理矩阵进行运算,从而保证了计算压缩矩阵所得结果和计算待处理矩阵所得的结果相等。
在本申请第一方面一实施例中,所述待处理矩阵包括第一待处理矩阵和第二待处理矩阵,所述第一待处理矩阵中的元素的数量和所述第二待处理矩阵中的元素的数量相同,对应的,所述分布矩阵包括第一分布矩阵和第二分布矩阵,所述方法还包括:
基于所述第一分布矩阵、所述第二分布矩阵、所述第一待处理矩阵中的非零元素和所述第二待处理矩阵中的非零元素,获得目标值,所述目标值与累加所述第一待处理矩阵中每个位置上的元素和所述第二待处理矩阵中相同位置上的元素的乘积的结果相同。
本实施例提供的矩阵的处理方法中,分别计算需要进行运算的第一待处理矩阵和第二待处理矩阵的第一压缩矩阵和第二压缩矩阵,并通过第一压缩矩阵和第二压缩矩阵中的分布矩阵和非零元素代替第一待处理矩阵和第二待处理矩阵进行运算,以得到与第一待处理矩阵和第二待处理矩阵运算结果,从而提高处理器对于第一待处理矩阵和第二待处理的存储效率和运算效率。
在本申请第一方面一实施例中,所述基于所述第一分布矩阵、所述第二分布矩阵、所述第一待处理矩阵中的非零元素和所述第二待处理矩阵中的非零元素,获得目标值,包括:
在所述第二分布矩阵中依次获取每个第一目标元素,以组成第一掩码矩阵,其中,所述每个第一目标元素在所述第二分布矩阵中的位置和所述第一分布矩阵中每个值为1的元素的位置相同;
当所述获取的第一目标元素的值为1时,将所述第一待处理矩阵的非零元素中的第一有效元素作为第一简化矩阵的元素,其中,所述第一有效元素在所述第一待处理矩阵的非零元素中的排列顺序与所述获取的第一目标元素在所述第一掩码矩阵中的排列顺序相同;
在所述第一分布矩阵中依次获取每个第二目标元素,以组成第二掩码矩阵,其中,所述每个第二目标元素在所述第一分布矩阵中的位置和所述第二分布矩阵中每个值为1的元素的位置相同;
当所述获取的第二目标元素的值为1时,将所述第二待处理矩阵的非零元素中的第二有效元素作为第二简化矩阵的元素,其中,所述第二有效元素在所述第二待处理矩阵的非零元素中的排列顺序与所述获取的第二目标元素在所述第二掩码矩阵中的排列顺序相同;
累加所述第一简化矩阵中每个位置上的元素和所述第二简化矩阵中相同位置上的元素的乘积,以获得所述目标值。
本实施例提供的矩阵的处理方法中,能够通过第一压缩矩阵和第二压缩矩阵分别代替第一待处理矩阵和第二待处理矩阵进行卷积运算,以获取目标值作为第一待处理矩阵和第二待处理矩阵的卷积运算结果。并且在第一压缩矩阵和第二压缩矩阵的计算过程中,能够通过第一分布矩阵和第二分布矩阵确定第一掩码矩阵和第二掩码矩阵,并最终根据第一掩码矩阵和第二掩码矩阵确定第一简化矩阵和第二简化矩阵,将第一简化矩阵和第二简化矩阵中对齐的元素进行累加乘积运算即可得到目标值。因此不需要在进行卷积运算时再增加一些零元素以进行元素对齐,而只通过第一简化矩阵和第二简化矩阵中的元素进行绝对有效的运算,从而在通过第一压缩矩阵和第二压缩矩阵分别代替第一待处理矩阵和第二待处理矩阵进行卷积运算时,能够对第一压缩矩阵和第二压缩矩阵中有效的元素进行对齐,而对齐过程中能够避免零元素造成的无效运算,进一步提高了现有矩阵处理方法的效率。
综上,在本申请第一方面提供的矩阵的处理方法中,通过确定待处理矩阵的非零元素以及用于表示非零元素位置的分布矩阵,将非零元素的数量、依次排列的非零元素和分布矩阵组合为压缩矩阵,从而在稀疏矩阵在进行例如矩阵的卷积运算、乘加运算、乘减运算、除加运算或除减运算时,通过压缩矩阵代替稀疏矩阵进行运算并得到稀疏矩阵的运算结果,以提高稀疏矩阵的运算效率,进而提高了矩阵的处理方法的效率。
本申请第二方面提供一种逻辑电路,所述逻辑电路用于通过第一分布矩阵和第二分布矩阵得到第一掩码矩阵和第二掩码矩阵;其中,所述第一分布矩阵用于表示第一待处理矩阵中非零元素的位置;所述第二分布矩阵用于表示第二待处理矩阵中非零元素的位置;所述第一掩码矩阵用于表示所述第二分布矩阵中的第一目标元素,每个所述第一目标元素在所述第二分布矩阵中的位置和所述第一分布矩阵中每个值为1的元素的位置相同;所述第二掩码矩阵用于表示所述第二分布矩阵中的第二目标元素,每个所述第二目标元素在所述第一分布矩阵中的位置和所述第一分布矩阵中每个值为1的元素的位置相同;
所述逻辑电路包括:第一开关逻辑和第二开关逻辑;其中,
所述第一开关逻辑的第一输入端用于依次接收所述第二分布矩阵中每个位置上的元素,所述第一开关逻辑的第二输入端用于依次接收所述第一分布矩阵中与所述被接收的第二分布矩阵上的元素位置相同的元素,所述第一开关逻辑的输出端用于输出所述第一目标元素,以组成所述第一掩码矩阵;
当所述第一开关逻辑的第二输入端接收的元素的值为1时,所述第一开关逻辑将第一输入端接收的元素从输出端输出;
所述第二开关逻辑的第一输入端用于依次接收所述第一分布矩阵中每个位置上的元素,所述第二开关逻辑的第二输入端用于依次接收所述第二分布矩阵中与所述被接收的第一分布矩阵上的元素位置相同的元素,所述第二开关逻辑的输出端用于输出所述第二目标元素,以组成所述第二掩码矩阵;
当所述第二开关逻辑的第二输入端接收的元素的值为1时,所述第二开关逻辑将第一输入端接收的元素从输出端输出。
本实施例提供的逻辑电路,通过较为简单的开关逻辑即可实现了上述实施例中通过第一分布矩阵和第二分布矩阵得到第一掩码矩阵和第二掩码矩阵的方法,并且开关逻辑可以在一个处理器时钟内完成接收分布矩阵的元素以及输出掩码矩阵的元素,从而保证后续阵列处理器的流畅运行。
在本申请第二方面一实施例中,逻辑电路还包括:与门逻辑;
所述与门逻辑的第一输入端用于依次接收所述第一分布矩阵中每个位置上的元素,所述与门逻辑的第二输入端用于依次接收所述第二分布矩阵中与所述被接收的第一分布矩阵上的元素位置相同的元素,所述与门逻辑的输出端用于将所述与门逻辑的第一输入端和所述与门逻辑的第二输入端的与运算结果输出至所述第一开关逻辑的第二输入端和所述第二开关逻辑的第二输入端。
本实施例提供的逻辑电路,通过加入起到缓存作用的与门逻辑,为第一开关逻辑和第二开关逻辑提供开关闭合的时间,在第一开关逻辑和第二开关逻辑的开关闭合后,与门逻辑再通过输出端向第一开关逻辑和第二开关逻辑输出与运算结果,从而保证了第一开关逻辑和第二开关逻辑的第二输入端准确无误地接收到正确的元素。
在本申请第二方面一实施例中,逻辑电路还包括:第一锁存器和第二锁存器;
所述第一锁存器的输入端用于依次接收所述第二分布矩阵中每个位置上的元素,所述第一锁存器的输出端用于在第一预设时延后将所述输入端接收的元素输出至所述第一开关逻辑;
所述第二锁存器的输入端用于依次接收所述第一分布矩阵中每个位置上的元素,所述第二锁存器的输出端用于在第二预设时延后将所述输入端接收的元素输出至所述第二开关逻辑。
在本申请第二方面一实施例中,所述第一预设时延为所述第一开关逻辑的开关打开时延;所述第二预设时延为所述第二开关逻辑的开关打开时延。
本实施例提供的逻辑电路,通过加入起到缓存作用的第一锁存器和第二锁存器,其中,第一锁存器在接收到第二分布矩阵的元素后,为第一开关逻辑提供开关闭合的时间,在第一开关逻辑的开关闭合后再通过输出端向第一开关逻辑输出接收到的元素;第二锁存器在接收到第一分部矩阵的元素后,为第二开关逻辑提供开关闭合的时间,在第二开关逻辑的开关闭合后再通过输出端向第二开关逻辑输出接收到的元素。并且第一预设时延可以设置为第一开关逻辑的开关打开时延,第二预设时延可以设置为第二开关逻辑的开关打开时延,从而保证了第一开关逻辑和第二开关逻辑的第二输入端准确无误地接收到正确的元素。
综上,在本申请第二方面提供的逻辑电路中,包括:第一开关逻辑和第二开关逻辑,实现了通过第一分布矩阵和第二分布矩阵得到第一掩码矩阵和第二掩码矩阵。其中,第一开关逻辑的第一输入端用于依次接收第二分布矩阵中每个位置上的元素,第一开关逻辑的第二输入端用于依次接收第一分布矩阵中与被接收的第二分布矩阵上的元素位置相同的元素,第一开关逻辑的输出端用于输出第一目标元素,以组成第一掩码矩阵;当第一开关逻辑的第二输入端接收的元素的值为1时,第一开关逻辑将第一输入端接收的元素从输出端输出;第二开关逻辑的第一输入端用于依次接收第一分布矩阵中每个位置上的元素,第二开关逻辑的第二输入端用于依次接收第二分布矩阵中与被接收的第一分布矩阵上的元素位置相同的元素,第二开关逻辑的输出端用于输出第二目标元素,以组成第二掩码矩阵;当第二开关逻辑的第二输入端接收的元素的值为1时,第二开关逻辑将第一输入端接收的元素从输出端输出。本申请提供的逻辑电路,逻辑简单,硬件代价低,应用于处理器实现时能够在一个时钟的时间内实现通过第一分布矩阵和第二分布矩阵得到第一掩码矩阵和第二掩码矩阵,从而提高了逻辑电路的处理效率。
本申请第三方面提供一种矩阵的处理装置,包括:
第一确定模块,用于确定待处理矩阵中的非零元素的数量,所述待处理矩阵为一维矩阵;
第二确定模块,用于确定所述待处理矩阵的分布矩阵,所述分布矩阵用于表示所述待处理矩阵中非零元素的位置;
处理模块,用于组合所述非零元素的数量、依次排列的所述待处理矩阵中每个非零元素的值和所述分布矩阵,以获得所述待处理矩阵的压缩矩阵。
在本申请第三方面一实施例中,所述分布矩阵为一维矩阵,所述待处理矩阵中每个位置上的元素和所述分布矩阵中相同位置上的元素一一对应;
所述第二确定模块具体用于,
依次扫描所述待处理矩阵中的元素;
当所述扫描到的元素为非零元素时,确定所述分布矩阵中与所述扫描到的元素相对应的元素的值为1;
当所述扫描到的元素为零值时,确定所述分布矩阵中与所述扫描到的元素相对应的元素的值为0。
在本申请第三方面一实施例中,所述待处理矩阵中的元素的数量为N,所述待处理矩阵中的非零元素的数量为M,对应的,所述分布矩阵中的元素的数量为N,所述分布矩阵中值为1的元素的数量为M,所述压缩矩阵中的元素的数量为M+N+1,其中,N为正整数,M为非负整数,M小于等于N。
在本申请第三方面一实施例中,所述待处理矩阵包括第一待处理矩阵和第二待处理矩阵,所述第一待处理矩阵中的元素的数量和所述第二待处理矩阵中的元素的数量相同,对应的,所述分布矩阵包括第一分布矩阵和第二分布矩阵;
所述装置还包括:计算模块,用于基于所述第一分布矩阵、所述第二分布矩阵、所述第一待处理矩阵中的非零元素和所述第二待处理矩阵中的非零元素,获得目标值,所述目标值与累加所述第一待处理矩阵中每个位置上的元素和所述第二待处理矩阵中相同位置上的元素的乘积的结果相同。
在本申请第三方面一实施例中,所述计算模块具体用于,
在所述第二分布矩阵中依次获取每个第一目标元素,以组成第一掩码矩阵,其中,所述每个第一目标元素在所述第二分布矩阵中的位置和所述第一分布矩阵中每个值为1的元素的位置相同;
当所述获取的第一目标元素的值为1时,将所述第一待处理矩阵的非零元素中的第一有效元素作为第一简化矩阵的元素,其中,所述第一有效元素在所述第一待处理矩阵的非零元素中的排列顺序与所述获取的第一目标元素在所述第一掩码矩阵中的排列顺序相同;
在所述第一分布矩阵中依次获取每个第二目标元素,以组成第二掩码矩阵,其中,所述每个第二目标元素在所述第一分布矩阵中的位置和所述第二分布矩阵中每个值为1的元素的位置相同;
当所述获取的第二目标元素的值为1时,将所述第二待处理矩阵的非零元素中的第二有效元素作为第二简化矩阵的元素,其中,所述第二有效元素在所述第二待处理矩阵的非零元素中的排列顺序与所述获取的第二目标元素在所述第二掩码矩阵中的排列顺序相同;
累加所述第一简化矩阵中每个位置上的元素和所述第二简化矩阵中相同位置上的元素的乘积,以获得所述目标值。
综上,在本申请第三方面提供的矩阵的处理装置中,通过第一确定模块确定待处理矩阵的非零元素以及第二确定模块确定用于表示非零元素位置的分布矩阵,并通过处理模块将非零元素的数量、依次排列的非零元素和分布矩阵组合为压缩矩阵,从而在稀疏矩阵在进行例如矩阵的卷积运算、乘加运算、乘减运算、除加运算或除减运算时,通过压缩矩阵代替稀疏矩阵进行运算并得到稀疏矩阵的运算结果,以提高稀疏矩阵的运算效率,进而提高了矩阵的处理方法的效率。
本申请实施例的第四方面提供了一种矩阵的处理方法,包括:获取第一待处理矩阵和第二待处理矩阵,所述第一待处理矩阵和所述第二待处理矩阵为一维或多维矩阵;确定所述第一待处理矩阵对应的第一分布矩阵和所述第二待处理矩阵对应的第二分布矩阵,所述第一分布矩阵用于表示所述第一待处理矩阵中非零元素的位置,所述第二分布矩阵用于表示所述第二待处理矩阵中非零元素的位置;根据所述第一分布矩阵和所述第二分布矩阵,确定所述第一待处理矩阵和所述第二待处理矩阵的有效元素;对所述第一待处理矩阵和所述第二待处理矩阵的有效元素进行数据处理,以获得和对所述第一待处理矩阵和所述第二待处理矩阵进行所述数据处理的相同结果。
在第四方面的一实施例中,当所述第一待处理矩阵和/或所述第二待处理矩阵为多维矩阵时,所述方法还包括:将所述第一待处理矩阵和/或所述第二待处理矩阵,按照预设的第一排列顺序,转换成一维矩阵。
在第四方面的一实施例中,所述确定所述第一待处理矩阵对应的第一分布矩阵和所述第二待处理矩阵对应的第二分布矩阵,包括:按照预设的第二排列顺序,依次获取所述第一待处理矩阵中的每个元素;当所述获取的第一待处理矩阵中的元素为非零元素时,记录一个第一数值;当所述获取的第一待处理矩阵中的元素为零元素时,记录一个第二数值;依次获取所述记录的数值,以确定所述第一分布矩阵;按照所述第二排列顺序,依次获取所述第二待处理矩阵中的每个元素;当所述获取的第二待处理矩阵中的元素为非零元素时,记录一个所述第一数值;当所述获取的第二待处理矩阵中的元素为零元素时,记录一个所述第二数值;依次获取所述记录的数值,以确定所述第二分布矩阵。
在第四方面的一实施例中,第一排列顺序和第二排列顺序相同,在另一实施例中,第一排列顺序和第二排列顺序不同。
在第四方面的一实施例中,所述第一数值为1,所述第二数值为0。
在第四方面的一实施例中,所述根据所述第一分布矩阵和所述第二分布矩阵,确定所述第一待处理矩阵和所述第二待处理矩阵的有效元素,包括:对所述第一分布矩阵和所述第二分布矩阵按位进行与操作,以获得掩码矩阵;根据所述掩码矩阵的元素分布,确定所述第一待处理矩阵和所述第二待处理矩阵的有效元素。
在第四方面的一实施例中,所述根据所述掩码矩阵的元素分布,确定所述第一待处理矩阵和所述第二待处理矩阵的有效元素,包括:获取所述掩码矩阵中值为1的元素位置所对应的所述第一待处理矩阵和所述第二待处理矩阵中的元素作为所述有效元素。
在第四方面的一实施例中,第一简化矩阵由所述第一待处理矩阵的有效元素组成,第二简化矩阵由所述第二待处理矩阵的有效元素组成,所述第一待处理矩阵与所述第二待处理矩阵的卷积结果,和所述第一简化矩阵与所述第二简化矩阵的卷积结果相同。
本申请实施例的第五方面提供了一种逻辑电路,包括:与门逻辑,第一开关逻辑和第二开关逻辑;其中,所述与门逻辑的第一输入端用于依次接收第一待处理矩阵对应的第一分布矩阵中每个位置上的元素,所述与门逻辑的第二输入端用于依次接收第二待处理矩阵对应的第二分布矩阵中与所述被接收的第一分布矩阵上的元素位置相同的元素,所述与门逻辑的输出端用于将所述与门逻辑的第一输入端和所述与门逻辑的第二输入端的与运算结果输出至所述第一开关逻辑的第二输入端和所述第二开关逻辑的第二输入端;所述第一开关逻辑的第一输入端用于依次接收所述第一待处理矩阵或所述第一分布矩阵中每个位置上的元素,所述第一开关逻辑的输出端用于将所述第一开关逻辑的第一输入端和所述第一开关逻辑的第二输入端的开关逻辑运算结果输出;所述第二开关逻辑的第一输入端用于依次接收所述第二待处理矩阵或所述第二分布矩阵中每个位置上的元素,所述第一开关逻辑的输出端用于将所述第二开关逻辑的第一输入端和所述第二开关逻辑的第二输入端的开关逻辑运算结果输出。
在第五方面的一实施例中,所述开关逻辑包括:当所述第一开关逻辑的第二输入端接收到1时,将所述第一开关逻辑的第一输入端同步接收到的元素输出;当所述第二开关逻辑的第二输入端接收到1时,将所述第二开关逻辑的第一输入端同步接收到的元素输出。
在第五方面的一实施例中,所述第一开关逻辑的结果输出和所述第二开关逻辑的结果输出,通过卷积运算,以获得所述第一待处理矩阵和所述第二待处理矩阵的卷积结果。
第六方面,本申请实施例提供一种矩阵的处理装置,包括:处理器和存储器;所述存储器,用于存储程序;所述处理器,用于调用所述存储器所存储的程序,以执行本申请第一方面或第四方面中任一所述的矩阵的处理方法。
第七方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储程序代码,当所述程序代码被执行时,以执行如本申请第一方面或第四方面任一所述的矩阵的处理方法。
附图说明
图1为本申请矩阵的处理方法一实施例的流程示意图;
图2为本申请矩阵的处理方法中确定压缩矩阵的流程示意图;
图3为本申请矩阵的处理方法中确定分布矩阵的流程示意图;
图4为本申请矩阵的处理方法中压缩矩阵的结构示意图;
图5为本申请矩阵的处理方法中确定压缩矩阵的流程示意图;
图6为本申请矩阵的处理方法一实施例的流程示意图;
图7为本申请矩阵的处理方法通过分布矩阵确定掩码矩阵的流程示意图;
图8为本申请逻辑电路一实施例的结构示意图;
图9为本申请逻辑电路一实施例的结构示意图;
图10为本申请逻辑电路一实施例的结构示意图;
图11为本申请矩阵的处理方法应用于脉动阵列处理器的处理结构示意图;
图12A-图12E为本申请矩阵的处理方法应用于脉动阵列处理器的处理流程示意图;
图13为本申请矩阵的处理方法应用于图像卷积运算的处理结构示意图;
图14为本申请矩阵的处理装置一实施例的结构示意图;
图15为本申请矩阵的处理装置一实施例的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例进行描述。
图1为本申请矩阵的处理方法实施例一的流程示意图。如图1所示,本实施例提供的矩阵的处理方法包括:
S101:确定待处理矩阵中的非零元素的数量,其中,待处理矩阵为一维矩阵;
S102:确定待处理矩阵的分布矩阵,其中,分布矩阵用于表示待处理矩阵中非零元素的位置;
S103:组合非零元素的数量、依次排列的待处理矩阵中每个非零元素的值和分布矩阵,以获得待处理矩阵的压缩矩阵。
具体地,本实施例的执行主体可以是电子设备中具备数据处理功能的处理器,如中央处理器(Central Processing Unit,CPU)或图形处理器(Graphics Processing Unit,GPU)等,电子设备可以是手机、平板电脑、台式电脑或笔记本电脑等。
在本实施例中,处理器需要对待处理矩阵进行压缩,以得到待处理矩阵的压缩矩阵时,处理器通过上述矩阵的处理方法对待处理矩阵进行处理。其中,处理器确定待处理矩阵的非零元素以及用于表示非零元素位置的分布矩阵后,将非零元素的数量、依次排列的非零元素和分布矩阵组合为压缩矩阵。
可选地,本实施例中的待处理矩阵为稀疏矩阵,处理器对需要处理的稀疏矩阵进行压缩得到压缩矩阵,从而提高处理器对于稀疏矩阵的存储效率。并在稀疏矩阵在进行如矩阵的卷积运算、乘加运算、乘减运算、除加运算或除减运算时,通过压缩矩阵代替稀疏矩阵进行运算并得到稀疏矩阵的运算结果,从而提高处理器对于稀疏矩阵的运算效率。
可选地,本实施例中的待处理矩阵为一维矩阵,或者,待处理矩阵也可以为多维矩阵。需要说明书的是,本申请各实施例中多以待处理矩阵为一维矩阵为例进行说明,而本申请一维矩阵的处理方式与原理也可应用于多维矩阵的处理方法。
可选地,本实施例中的待处理矩阵为多维矩阵时,可以首先对待处理矩阵进行降维操作。示例性地,可以将二维矩阵中的元素逐行读取以获得一维矩阵,再对得到的一维矩阵应用本申请实施例中的矩阵处理方式。
可选地,本实施例中待处理矩阵中每个位置上的元素和分布矩阵中相同位置上的元素一一对应,并且通过分布矩阵的元素能够确定待处理矩阵内对应的元素是否为非零元素。例如:分布矩阵内包括第一类元素和第二类元素,第一类元素在分布矩阵内的位置与待处理矩阵内非零元素的位置相同,第二类元素在分布矩阵内的位置与待处理矩阵内零元素的位置相同。其中,第一类元素和第二类元素指的是表示方式不同并且存在明显的不同特征的两类元素,例如第一类元素是常数1,第二类元素是常数0;或者第一类元素是奇数,第二类元素是偶数。
下面以图2中所示的流程为例,对图1所示的矩阵的处理方法进行说明。图2为本申请矩阵的处理方法中确定压缩矩阵的流程示意图,图2中的待处理矩阵为[0,1,0,0,2,0,0,0,3,0,0]。则处理器对待处理矩阵进行处理得到压缩矩阵时,确定待处理矩阵中的非零元素依次排列为[1,2,3],并确定待处理矩阵的分布矩阵为[0,1,0,0,1,0,0,0,1,0,0]后。处理器将所确定的非零元素的数目[3]、依次排列的非零元素[1,2,3]以及分布矩阵[0,1,0,0,1,0,0,0,1,0,0]进行组合,最终得到压缩矩阵[3,1,2,3,0,1,0,0,1,0,0,0,1,0,0]。
可选地,在上述示例中,S102确定待处理矩阵的分布矩阵的步骤为:处理器依次扫描待处理矩阵中的元素;当扫描到的元素为非零元素时,确定分布矩阵中与扫描到的元素相对应的元素的值为1;当扫描到的元素为零值时,确定分布矩阵中与扫描到的元素相对应的元素的值为0。例如:图3为本申请矩阵的处理方法中确定分布矩阵的流程示意图,图3中的待处理矩阵与分布矩阵的维数相同,并且每个元素一一对应,待处理矩阵中非零元素对应的分布矩阵中相同位置的元素值为1,待处理矩阵中零元素对应的分布矩阵中相同位置的元素值为0。
可选地,在上述实施例中,当待处理矩阵中待处理矩阵中的元素的数量为N,待处理矩阵中的非零元素的数量为M时,对应的,分布矩阵中的元素的数量为N,分布矩阵中值为1的元素的数量为M,压缩矩阵中的元素的数量为M+N+1,其中,N为正整数,M为非负整数,M小于等于N。此外,S103所组合的压缩矩阵的可以采用的排列方式为:非零元素的数量、依次排列的非零元素和分布矩阵,例如在上述图2的示例中,得到的压缩矩阵为[3,1,2,3,0,1,0,0,1,0,0,0,1,0,0]。需要说明的是,上述排列方式仅为示例,本实施例对非零元素的数量、依次排列的非零元素和分布矩阵三者的排列顺序并不做具体限定。例如图4为本申请矩阵的处理方法中压缩矩阵的结构示意图,包括图4所示的压缩矩阵的不同排列方式均在本实施例的保护范围,而本申请各实施例中的压缩矩阵均采用非零元素的数量、依次排列的非零元素和分布矩阵的排列方式进行示例性的说明。
可选地,在上述实施例中,分布矩阵中的元素通过常数0和常数1表示时,分布矩阵中每个元素的比特位数为1bit。则当待处理矩阵中每个元素的比特位数大于1bit时,例如待处理矩阵的元素的比特位数可以是8bit,16bit或者32bit,虽然分布矩阵的维数与待处理矩阵的维数相同,但是分布矩阵所需的存储空间小于待处理矩阵的存储空间,因此将待处理矩阵压缩为压缩矩阵后,还节省了待处理矩阵的存储空间,提高了处理器的存储效率。
进一步地,如图1所示的矩阵的处理方法除了应用能够处理一维矩阵,还能够处理多维矩阵。图5为本申请矩阵的处理方法中确定压缩矩阵的流程示意图,图5以待处理矩阵为多维矩阵为例,对图1所示的矩阵的处理方法在多维矩阵中的应用进行说明。如图5所示的待处理矩阵为[0,4,0;0,0,0;0,0,5],维数为三行三列。则处理器对待处理矩阵进行处理得到压缩矩阵前,可以将多维的待处理矩阵扫描成一维矩阵后对一维矩阵进行处理。例如将待处理矩阵由[0,4,0;0,0,0;0,0,5]扫描为一维矩阵[0,4,0,0,0,0,0,0,5],而为了表示待处理矩阵的维数,还可以在扫描后的一维矩阵中加入待处理矩阵的维数信息例如[0,4,0,0,0,0,0,0,5,3,3],以通过一维矩阵最后两个元素[3,3]表示待处理矩阵为3行三列的多维矩阵。随后,处理器根据扫描后得到的一维矩阵确定待处理矩阵中的非零元素依次排列为[4,5],并确定分布矩阵为[0,1,0,0,0,0,0,0,1,3,3],分布矩阵中最后两个元素同样用于表示待处理矩阵的维数,或者当处理器在计算时已知待处理矩阵的维数或者能够通过其他参数确定待处理矩阵的维数时,可不在分布矩阵中表示待处理矩阵的维数。将所确定的非零元素的数据[2]、依次排列的非零元素[4,5]以及分布矩阵[0,1,0,0,0,0,0,0,1]进行组合,最终得到待处理矩阵的压缩矩阵[2,4,5,0,1,0,0,0,0,0,0,1]。其中,在本实施例中对多维矩阵进行处理并得到多维矩阵的压缩矩阵的方式仅为示例,压缩矩阵还可以采用在待处理矩阵的分布矩阵中加入新的行或列,并通过新加入的行或列内的元素,表示待处理矩阵中非零元素以及非零元素的分布和数目,即多维的待处理矩阵处理后能够得到多维的压缩矩阵。例如压缩矩阵可表示为[2,4,5,0,1,0,0,0,0,0,0,1]。而在新加入的行或列的元素数目较少时可加入多行或多列,或者在新加入的行或列元素数目较多时可补充零元素以对得到的多维压缩矩阵进行对齐。
在另一种可行的实施方式中,可以将待处理矩阵[0,4,0;0,0,0;0,0,5]降维为一维矩阵[0,4,0,0,0,0,0,0,5],再对降维后的一维矩阵进行图1所示的矩阵处理。
综上,在本申请提供的矩阵的处理方法中,通过确定待处理矩阵中的非零元素的数量,确定用于表示待处理矩阵中非零元素的位置的分布矩阵;并组合非零元素的数量、依次排列的待处理矩阵中每个非零元素的值和分布矩阵,以获得待处理矩阵的压缩矩阵。从而在稀疏矩阵在进行例如矩阵的卷积运算、乘加运算、乘减运算、除加运算或除减运算时,通过压缩矩阵代替稀疏矩阵进行运算并得到稀疏矩阵的运算结果,以提高处理器对于稀疏矩阵的存储效率和运算效率,进而提高了矩阵的处理方法的处理效率。
进一步地,在上述实施例中,待处理矩阵包括第一待处理矩阵,第一待处理矩阵中的元素的数量和第二待处理矩阵中的元素的数量相同,对应的,分布矩阵包括第一分布矩阵和第二分布矩阵。则在如图1所示的矩阵处理方法还包括:基于第一分布矩阵、第二分布矩阵、第一待处理矩阵中的非零元素和第二待处理矩阵中的非零元素,获得目标值,目标值与累加第一待处理矩阵中每个位置上的元素和第二待处理矩阵中相同位置上的元素的乘积的结果相同。
其中,目标值可以是第一待处理矩阵和第二待处理矩阵在进行例如卷积运算时的运算结果,如果直接使用第一待处理矩阵和第二待处理矩阵进行卷积运算,则需要累加第一待处理矩阵中每个位置上的元素和第二待处理矩阵中相同位置上的元素的乘积,而在本实施例中,能够通过第一压缩矩阵中的第一分布矩阵、非零元素以及第二压缩矩阵中的第二分布矩阵、非零元素,代替第一待处理矩阵和第二待处理矩阵进行卷积运算,并且所得到的目标值与第一待处理矩阵和第二待处理矩阵进行卷积运算的结果相同。
具体地,以图6中所示确定压缩矩阵的流程为例,对上述方法进行说明。图6为本申请矩阵的处理方法一实施例的流程示意图,如图6所示的第一待处理矩阵为[1,0,2,0,3,4,0,5],第二待处理矩阵为[0,2,0,0,1,0,0,-1];第一待处理矩阵经过如图1所示的处理方式后得到的第一压缩矩阵为[5,1,2,3,4,5,1,0,1,0,1,1,0,1],其中,第一分布矩阵为[1,0,1,0,1,1,0,1],非零元素为[1,2,3,4,5];第二待处理矩阵经过如图1所示的处理方式后得到的第二压缩矩阵为[3,2,1,-1,0,1,0,0,1,0,0,1],其中,第二分布矩阵为[0,1,0,0,1,0,0,1],非零元素为[2,1,-1]。则基于第一分布矩阵、第二分布矩阵、第一待处理矩阵中的非零元素和第二待处理矩阵中的非零元素,获得目标值具体包括:
在第二分布矩阵[0,1,0,0,1,0,0,1]中依次获取共五个第一目标元素0,0,1,0,1,以组成第一掩码矩阵[0,0,1,0,1],其中,每个第一目标元素在第二分布矩阵中的位置和第一分布矩阵中每个值为1的元素的位置相同。并将所得到的第一掩码矩阵与第一压缩矩阵中的第一待处理矩阵的非零元素进行比较,当获取的第一掩码矩阵中的第一目标元素的值为1时,将第一待处理矩阵的非零元素中的第一有效元素作为第一简化矩阵的元素。即,将[0,0,1,0,1]与[1,2,3,4,5]进行比较,得到两个第一有效元素3,5。其中,第一有效元素在第一待处理矩阵的非零元素中的排列顺序与获取的第一目标元素在第一掩码矩阵中的排列顺序相同,从而得到第一简化矩阵[3,5]。
在第一分布矩阵[1,0,1,0,1,1,0,1]中依次获取三个第二目标元素0,1,1,以组成第二掩码矩阵[0,1,1],其中,每个第二目标元素在第一分布矩阵中的位置和第二分布矩阵中每个值为1的元素的位置相同。并将所得到的第二掩码矩阵与第二压缩矩阵中的第二待处理矩阵的非零元素进行比较,当获取的第二掩码矩阵中的第二目标元素的值为1时,将第二待处理矩阵的非零元素中的第二有效元素作为第二简化矩阵的元素。即,将[0,1,1]与[2,1,-1]进行比较,得到两个第二有效元素1,-1。其中,第二有效元素在第二待处理矩阵的非零元素中的排列顺序与获取的第二目标元素在第二掩码矩阵中的排列顺序相同,从而得到第二简化矩阵[1,-1]。
随后,通过第一简化矩阵和第二简化矩阵分别代替第一待处理矩阵和第二待处理矩阵进行卷积运算。具体地通过累加第一简化矩阵中每个位置上的元素和第二简化矩阵中相同位置上的元素的乘积3*1+5*(-1),以获得目标值-2作为第一待处理矩阵和第二待处理矩阵的卷积运算结果。其中,目标值与累加第一待处理矩阵中每个位置上的元素和第二待处理矩阵中相同位置上的元素的乘积的结果相同,即第一待处理矩阵和第二待处理矩阵进行卷积运算得到的运算结果与目标值相同。
综上,本实施例提供的矩阵的处理方法中,能够通过第一压缩矩阵和第二压缩矩阵分别代替第一待处理矩阵和第二待处理矩阵进行卷积运算,以获取目标值作为第一待处理矩阵和第二待处理矩阵的卷积运算结果。并且在第一压缩矩阵和第二压缩矩阵的计算过程中,能够通过第一分布矩阵和第二分布矩阵确定第一掩码矩阵和第二掩码矩阵,并最终根据第一掩码矩阵和第二掩码矩阵确定第一简化矩阵和第二简化矩阵,将第一简化矩阵和第二简化矩阵中对齐的元素进行累加乘积运算即可得到目标值。因此不需要在进行卷积运算时再增加一些零元素以进行元素对齐,而只通过第一简化矩阵和第二简化矩阵中的元素进行绝对有效的运算。从而在通过第一压缩矩阵和第二压缩矩阵分别代替第一待处理矩阵和第二待处理矩阵进行卷积运算时,能够对第一压缩矩阵和第二压缩矩阵中有效的元素进行对齐,而对齐过程中能够避免零元素造成的无效运算,进一步提高了现有矩阵处理方法的效率。
在另一种可行的实施方式中,在根据上述实施例中的方法获得第一待处理矩阵和第二待处理矩阵分别对应的第一分布矩阵和第二分布矩阵之后:可以根据所述第一分布矩阵和所述第二分布矩阵,确定所述第一待处理矩阵和所述第二待处理矩阵的有效元素;对所述第一待处理矩阵和所述第二待处理矩阵的有效元素进行数据处理,以获得和对所述第一待处理矩阵和所述第二待处理矩阵进行所述数据处理的相同结果。
可以理解,通过确定第一待处理矩阵和第二待处理矩阵的有效元素,仅对有效元素进行数据处理,相比于对整个待处理矩阵进行数据处理,更加简便高效。
更具体的,对于图6中的第一分布矩阵[1,0,1,0,1,1,0,1]和第二分布矩阵[0,1,0,0,1,0,0,1]。
首先,按位对第一分布矩阵中的每一个元素和与其位置对应的第二分布矩阵中的每一个元素,进行与操作,得到掩码矩阵[0,0,0,0,1,0,0,1]。
然后,将掩码矩阵中,值为1的元素所在的位置对应于第一待处理矩阵、第二待处理矩阵中的元素,作为第一待处理矩阵和第二待处理矩阵的有效元素。即,当掩码矩阵第五和第八个位置的元素为1时,确定第一待处理矩阵[1,0,2,0,3,4,0,5],第五和第八个位置的元素3,5,为第一待处理矩阵的有效元素,类似的,确定第二待处理矩阵的有效元素为1,-1。
之后,与上述实施例相似,根据有效元素[3,5]和[1,-1]获得第一待处理矩阵和第二待处理矩阵的数据处理结果。
在本实施例中,可以通过[3,5]和[1,-1]的卷积运算,获得[1,0,2,0,3,4,0,5]和[0,2,0,0,1,0,0,-1]的卷积运算结果。
图7为本申请矩阵的处理方法通过分布矩阵确定掩码矩阵的流程示意图。如图7所示,本申请还提供一种逻辑电路,用于实现上述实施例中通过第一分布矩阵和第二分布矩阵得到第一掩码矩阵和第二掩码矩阵。其中,逻辑电路依次以第一分布矩阵中每个位置上的元素和第二分布矩阵中与第一分布矩阵上的元素位置相同的元素为输入,逻辑电路依次输出第一目标元素和第二目标元素,以分别组成第一掩码矩阵和第二掩码矩阵。
具体地,图8为本申请逻辑电路一实施例的结构示意图;在如图8所示的逻辑电路中包括:第一开关逻辑和第二开关逻辑。其中,
第一开关逻辑的第一输入端用于依次接收第二分布矩阵中每个位置上的元素,第一开关逻辑的第二输入端用于依次接收第一分布矩阵中与被接收的第二分布矩阵上的元素位置相同的元素,第一开关逻辑的输出端用于输出第一目标元素,以组成第一掩码矩阵。其中,当第一开关逻辑的第二输入端接收的元素的值为1时,第一开关逻辑的开关闭合,以将第一输入端接收的元素从输出端输出;当第一开关逻辑的第二输入端接收的元素的值为0时,第一开关逻辑的开关断开,第一输入端接收的元素不会从输出端输出。
例如:如图8所示的第一开关逻辑的第一输入端接收第二分布矩阵的第一个元素[0],第二输入端接收第一分布矩阵的第一个元素[1]。由于第二输入端接收的元素为[1],则第一开关逻辑的第一输入端和输出端导通,将第一输入端接收的元素[0]作为第一目标元素从输出端输出至第一掩码矩阵。随后,第一开关逻辑的第一输入端接收第二分布矩阵的第二个元素[1],第二输入端接收第一分布矩阵的第二个元素[0]。由于第二输入端接收的元素为[0],则第一开关逻辑的第一输入端和输出端断开。随后,第一开关逻辑的第一输入端接收第二分布矩阵的第三个元素[0],第二输入端接收第一分布矩阵的第三个元素[1]。由于第二输入端接收的元素为[1],则第一开关逻辑的第一输入端和输出端导通,将第一输入端接收的元素[0]作为第一目标元素从输出端输出至第一掩码矩阵。依次类推,直到第一开关逻辑的第一输入端接收第二分布矩阵的最后一个元素[1],第二输入端接收第一分布矩阵的最后一个元素[1],并通过输出端输出[1]至第一掩码矩阵后,通过第一开关逻辑的输出端所输出的所有第一目标元素依次排列组成第一掩码矩阵[0,0,1,0,1]。
同时,第二开关逻辑的第一输入端用于依次接收第一分布矩阵中每个位置上的元素,第二开关逻辑的第二输入端用于依次接收第二分布矩阵中与被接收的第一分布矩阵上的元素位置相同的元素,第二开关逻辑的输出端用于输出第二目标元素,以组成第二掩码矩阵。其中,当第二开关逻辑的第二输入端接收的元素的值为1时,第二开关逻辑的开关闭合,以将第一输入端接收的元素从输出端输出;当第二开关逻辑的第二输入端接收的元素值为0时,第二开关逻辑的开关断开,第一输入端接收的元素不会从输出端输出。
例如:如图8所示的第二开关逻辑的第一输入端接收第一分布矩阵的第一个元素[1]。第二开关逻辑的第二输入端接收第二分布矩阵的第一个元素[0]。由于第二输入端接收的元素为[0],则第二关逻辑的第一输入端和输出端断开。随后,第二开关逻辑的第一输入端接收第一分布矩阵的第一个元素[0]。第二开关逻辑的第二输入端接收第二分布矩阵的第一个元素[1]。由于第二输入端接收的元素为[1],则第二开关逻辑的第一输入端和输出端导通,将第一输入端接收的元素[0]作为第二目标元素从输出端输出至第二掩码矩阵。依次类推,直到第二开关逻辑的第一输入端接收第一分布矩阵的最后一个元素[1],第二输入端接收第二分布矩阵的最后一个元素[1],并通过输出端输出[1]至第二掩码矩阵后,通过第二开关逻辑的输出端所输出的所有第二目标元素依次排列组成第二掩码矩阵[0,1,1]。
可选地,处理器中还可以并列设置本实施例提供的多个逻辑电路,每个逻辑电路处理可分别接收第一分布矩阵和第二分布矩阵的元素。每个逻辑电路同时接收的第一分布矩阵和第二分布矩阵的元素,并分别根据所接收的元素输出第一目标元素和第二目标元素。最终,所有逻辑电路所输出的第一目标元素依次排列可组成第一掩码矩阵,所有逻辑电路所输出的第二目标元素依次排列可组成第二掩码矩阵。本实施例中第一开关逻辑依次接收第一分布矩阵和第二分布矩阵中的元素、第二开关逻辑依次接收第一分布矩阵和第二分布矩阵中的元素可以同时在处理器的同一个时钟内进行。
综上,本实施例提供的逻辑电路中,通过较为简单的开关逻辑即可实现了上述实施例中通过第一分布矩阵和第二分布矩阵得到第一掩码矩阵和第二掩码矩阵的方法,并且开关逻辑可以在一个处理器时钟内完成接收分布矩阵的元素以及输出掩码矩阵的元素,从而简化了逻辑电路并进一步提高了矩阵的处理效率。
图9为本申请逻辑电路一实施例的结构示意图,本实施例提供的逻辑电路可用于替换如图8所示的逻辑电路。具体地,如图9所示的逻辑电路在图8所示逻辑电路的基础上,还包括:与门逻辑。其中,与门逻辑的第一输入端用于依次接收第一分布矩阵中每个位置上的元素,与门逻辑的第二输入端用于依次接收第二分布矩阵中与被接收的第一分布矩阵上的元素位置相同的元素,与门逻辑的输出端用于将与门逻辑的第一输入端和与门逻辑的第二输入端的与运算结果输出至第一开关逻辑的第二输入端和第二开关逻辑的第二输入端。
具体地,由于如图8所示的基本逻辑在实现通过第一分布矩阵和第二分布矩阵得到第一掩码矩阵和第二掩码矩阵时,第一开关逻辑和第二开关逻辑在其第二输入端接收到的元素为[1]时需要闭合开关,如果在闭合开关的时延内第一输入端接收到的元素丢失或者未能同步导致输入元素的刷新,都有可能造成在开关闭合后,通过输出端所输出的元素错乱。因此,在本实施例中设置与门逻辑,与门逻辑的第一输入端和第二输入端分别依次接收第一分布矩阵中每个位置上的元素和第二分布矩阵中与被接收的第一分布矩阵上的元素位置相同的元素,并将二者进行相与运算后,从输出端输出至第一开关逻辑的第二输入端和第二开关逻辑的第二输入端。其中,与门逻辑在此起到了缓存的作用,为第一开关逻辑和第二开关逻辑提供开关闭合的时间,在开关闭合后再通过输出端向第一开关逻辑和第二开关逻辑输出与运算结果,从而保证了第一开关逻辑和第二开关逻辑的第二输入端准确无误地接收到正确的元素。图9所示的实施例中第一开关逻辑、第二开关逻辑的第一输入端、第二输入端和输出端的原理同图8中的实施例,不再赘述。
对于图9所述的逻辑电路,在另一种可行的实施方式中,包括:与门逻辑,第一开关逻辑和第二开关逻辑;其中,所述与门逻辑的第一输入端用于依次接收第一待处理矩阵对应的第一分布矩阵中每个位置上的元素,所述与门逻辑的第二输入端用于依次接收第二待处理矩阵对应的第二分布矩阵中与所述被接收的第一分布矩阵上的元素位置相同的元素,所述与门逻辑的输出端用于将所述与门逻辑的第一输入端和所述与门逻辑的第二输入端的与运算结果输出至所述第一开关逻辑的第二输入端和所述第二开关逻辑的第二输入端;所述第一开关逻辑的第一输入端用于依次接收所述第一待处理矩阵或所述第一分布矩阵中每个位置上的元素,所述第一开关逻辑的输出端用于将所述第一开关逻辑的第一输入端和所述第一开关逻辑的第二输入端的开关逻辑运算结果输出;所述第二开关逻辑的第一输入端用于依次接收所述第二待处理矩阵或所述第二分布矩阵中每个位置上的元素,所述第一开关逻辑的输出端用于将所述第二开关逻辑的第一输入端和所述第二开关逻辑的第二输入端的开关逻辑运算结果输出。
在一种可行的实施方式中,所述开关逻辑包括:当所述第一开关逻辑的第二输入端接收到1时,将所述第一开关逻辑的第一输入端同步接收到的元素输出;当所述第二开关逻辑的第二输入端接收到1时,将所述第二开关逻辑的第一输入端同步接收到的元素输出。
在一种可行的实施方式中,所述第一开关逻辑的结果输出和所述第二开关逻辑的结果输出,通过卷积运算,以获得所述第一待处理矩阵和所述第二待处理矩阵的卷积结果。
图10为本申请逻辑电路一实施例的结构示意图,本实施例提供的逻辑电路可用于替换如图8所示的逻辑电路。具体地,如图10所示的逻辑电路在图8所示逻辑电路的基础上,还包括:第一锁存器和第二锁存器。其中,第一锁存器的输入端用于依次接收第二分布矩阵中每个位置上的元素,第一锁存器的输出端用于在第一预设时延后将输入端接收的元素输出至第一开关逻辑;第二锁存器的输入端用于依次接收第一分布矩阵中每个位置上的元素,第二锁存器的输出端用于在第二预设时延后将输入端接收的元素输出至第二开关逻辑。
具体地,如图10所示的实施例中,提供另一种保证第一开关逻辑和第二开关逻辑的第二输入端准确无误地接收到正确的元素的方法。其中,第一锁存器和第二锁存器均起到缓存的作用,第一锁存器在接收到第二分布矩阵的元素后,为第一开关逻辑提供开关闭合的时间,在第一开关逻辑的开关闭合后再通过输出端向第一开关逻辑输出接收到的元素;第二锁存器在接收到第一分部矩阵的元素后,为第二开关逻辑提供开关闭合的时间,在第二开关逻辑的开关闭合后再通过输出端向第二开关逻辑输出接收到的元素。因此,可选地,第一预设时延可以设置为第一开关逻辑的开关打开时延,第二预设时延可以设置为第二开关逻辑的开关打开时延。其中,第一开关逻辑的打开时延与第二开关逻辑的打开时延相同。图10所示的实施例中第一开关逻辑、第二开关逻辑的第一输入端、第二输入端和输出端的原理同图8中的实施例,不再赘述。
进一步地,上述各实施例中的矩阵的处理方法,可应用于脉动阵列构架的处理器之中,对矩阵进行卷积运算,并且不需要改变已有的脉动阵列架构。
例如:图11为本申请矩阵的处理方法应用于脉动阵列处理器的处理结构示意图,如图11所示,采用现有的脉动阵列处理器进行卷积或者全链接运算时,假设第一存储单元和第二存储单元中分别存储了四个矩阵,则处理器会将待计算的第一存储单元中的四个矩阵分别预加载到计算单元1-4之中。随后,依次将第二存储单元内的矩阵加载到计算单元1中,与预加载的矩阵完成计算后,将矩阵传输至计算单元2中;计算单元2依次接收将计算单元1中完成计算的矩阵,并与预加载的矩阵完成计算后,将矩阵传输至计算单元3中;依次类推。
而为了实现本申请的矩阵的处理方法,在如图11所示的实施例中,可在脉动阵列处理器中的每个计算单元之前加入对齐单元,用于在矩阵计算之前将经过如图1所示的方法处理后得到的压缩矩阵进行对齐,以在计算单元中仅实现第一简化矩阵和第二简化矩阵的有效计算,保证计算单元中不会产生零值的无效计算。其中,对齐单元和计算单元可通过处理器中的软件程序实现;或者,对齐单元可通过处理器中的逻辑电路实现,而每个对齐单元的所采用的逻辑电路可以是图7-10中任一所示的逻辑电路。
图12A-图12E为本申请矩阵的处理方法应用于脉动阵列处理器的处理流程示意图,以下,通过图12的处理流程对图11所示的脉动阵列处理器的处理结构进行说明。如图12中的处理流程可以是处理器在进行矩阵的卷积或者全链接计算,例如处理器在进行深度学习网络的卷积或全链接计算时,需要对深度学习网络中的参数矩阵和数据矩阵进行卷积运算。
如图12A所示,处理器首先要将需要进行计算的参数矩阵通过如图1所示的方法进行处理,得到待计算的压缩矩阵1、压缩矩阵2、压缩矩阵3和压缩矩阵4,并将上述矩阵存储在处理器的第一存储单元中;将需要进行计算的数据矩阵通过如图1所示的方法进行处理,得到待计算的压缩矩阵A、压缩矩阵B、压缩矩阵C和压缩矩阵D,并将上述矩阵存储在处理器的第二存储单元中。其中,第一存储单元和第二存储单元可以是处理器中不同存储单元或者同一存储单元的不同存储位置,在此不做限定。
如图12B所示,处理器将第一存储单元中的压缩矩阵1、压缩矩阵2、压缩矩阵3和压缩矩阵4分别预加载到对齐单元1、对齐单元2、对齐单元3和对齐单元4中。更为具体地,对齐单元中预加载的矩阵可以是压缩矩阵中的依次排列的非零元素和分布矩阵。
如图12C所示,处理器将第二存储单元中的压缩矩阵A加载到对齐单元1中,使得对齐单元1通过压缩矩阵1中的分布矩阵和压缩矩阵A中的分布矩阵确定压缩矩阵1对应的简化矩阵1和压缩矩阵B对应的简化矩阵A。
如图12D所示,处理器将图12C的步骤中得到的简化矩阵1和简化矩阵A输出至计算单元1中,由计算单元1累加简化矩阵1和简化矩阵A中相同位置上元素的乘积。处理器还将第二存储单元中的压缩矩阵B加载到对齐单元1中,使得对齐单元1通过压缩矩阵1中的分布矩阵和压缩矩阵A中的分布矩阵确定压缩矩阵1对应的简化矩阵1和压缩矩阵B对应的简化矩阵B。处理器还将计算单元1中对齐完成后的压缩矩阵A加载到对齐单元2中,使得对齐单元2通过使得对齐单元2通过压缩矩阵2中的分布矩阵和压缩矩阵A中的分布矩阵确定压缩矩阵2对应的简化矩阵2和压缩矩阵A对应的简化矩阵A。
如图12E所示,处理器将图12D的步骤中得到的简化矩阵1和简化矩阵B输出至计算单元1中,由计算单元1累加简化矩阵1和简化矩阵B中相同位置上元素的乘积。处理器将图12D的步骤中得到的简化矩阵2和简化矩阵A输出至计算单元2中,由计算单元2累加简化矩阵2和简化矩阵A中相同位置上元素的乘积。处理器还将第二存储单元中的压缩矩阵C加载到对齐单元1中,使得对齐单元1通过压缩矩阵1中的分布矩阵和压缩矩阵C中的分布矩阵确定压缩矩阵1对应的简化矩阵1和压缩矩阵C对应的简化矩阵C。处理器还将计算单元1中对齐完成后的压缩矩阵B加载到对齐单元2中,使得对齐单元2通过使得对齐单元2通过压缩矩阵2中的分布矩阵和压缩矩阵B中的分布矩阵确定压缩矩阵2对应的简化矩阵2和压缩矩阵B对应的简化矩阵B。处理器还将计算单元2中对齐完成后的压缩矩阵A加载到对齐单元3中,使得对齐单元3通过使得对齐单元3通过压缩矩阵3中的分布矩阵和压缩矩阵A中的分布矩阵确定压缩矩阵3对应的简化矩阵3和压缩矩阵A对应的简化矩阵A。
在如图12E所示的处理完成后,对齐单元1将继续从第二存储空间中加载下一个待处理的压缩矩阵D,并且每个对齐单元继续在对齐动作完毕后都会将压缩矩阵向下一个对齐单元传输。每个对齐单元都会将通过所加载的两个压缩矩阵得到的简化矩阵传输至对应的计算单元计算,计算单元将计算结果输出。其中,通过压缩矩阵确定简化矩阵的方法及原理可参照本申请前述实施例,不再赘述。
综上,本申请所提供的矩阵的处理方法应用于脉动阵列处理器时,在处理器进行深度学习网络中的卷积或全链接计算时,能够对待计算的参数矩阵和数据矩阵进行压缩后,通过处理器中的对齐单元和计算单元对压缩后的数据矩阵和参数进行计算。从而在计算时避免了计算单元进行包含零元素的无效计算,从而提高了处理器的存储效率以及运算效率。并且使用本申请所提供的矩阵处理方法与现有的采用脉动阵列架构的处理器能够兼容,便于本申请中矩阵处理方法的实施与推广。
可选地,本申请提供的矩阵的处理方法还可以应用于处理器进行图像的卷积运算。其中,处理器能够处理的图像为数字图像,数字图像通过图像各像素点的灰度值组成的图像矩阵来表示。处理器对图像进行的卷积运算是指利用卷积核(或称为卷积模板)在图像矩阵上滑动,并将卷积核滑动过程中图像矩阵上对应位置的元素与卷积核中的元素相乘并求和,最终得到一个输出矩阵的元素的过程称为图像的卷积。
具体地,如图13所示,图13为本申请矩阵的处理方法应用于图像卷积运算的处理结构示意图。其中,进行卷积运算待处理矩阵为图中的输入图像矩阵,该矩阵的维数为6行6列,假设选取卷积运算的卷积核的维数为3行3列。则在对输入图像矩阵进行卷积运算时,处理器依次将卷积核与输入图像矩阵中维数3行3列的中间矩阵的元素对齐,并累加卷积核与中间矩阵对齐的元素之间的乘积得到计算结果,将该计算结果作为输入图像矩阵中与输入图像矩阵中所计算的中间矩阵的位置对应的元素。而在对上述得到的卷积核与中间矩阵进行卷积计算时,可以采用如本申请图5所示的实施例中的矩阵处理方法对中间矩阵和卷积核进行压缩处理后,得到卷积核的压缩矩阵和中间矩阵的压缩矩阵,随后通过所得到的两个压缩矩阵通过如本申请图6的实施例中所示的矩阵处理方法进行运算,以得到卷积核与中间矩阵进行的卷积运算结果。
例如,图13中所示的卷积核为[4,0,0;0,0,0;0,0,-4],在进行输入图像矩阵的卷积运算时,首先将卷积核中的9个元素与输入图像矩阵中第1行至第3行、第1列至第3列的9个元素对齐,得到待计算的中间矩阵为[0,0,0;0,1,1;0,0,2]。根据如图5所示的方法,将卷积核经过处理后得到卷积核的压缩矩阵为[2,4,-4,1,0,0,0,0,0,0,0,1],将中间矩阵经过处理后的到中间矩阵的压缩矩阵为[3,1,1,2,0,0,0,0,1,1,0,0,1]。随后根据卷积核的分布矩阵[1,0,0,0,0,0,0,0,1]和中间矩阵的分布矩阵[0,0,0,0,1,1,0,0,1]确定卷积核的掩码矩阵[0,1]以及中间矩阵的掩码矩阵[0,0,1]。根据卷积核的掩码矩阵确定卷积核的简化矩阵为[-4]、根据中间矩阵的掩码矩阵确定中间矩阵的简化矩阵为[2],并通过所得到的两个简化矩阵得到目标值-8。将-8作为输出图像矩阵内第2行第2列的元素。随后,在将卷积核向右平移一个元素,与输入图像矩阵中第1行至第3行、第2列至第4列的9个元素对齐,得到对齐的中间矩阵为[0,0,0;1,1,0;2,0,0],并继续通过上述矩阵的处理方法计算卷积核与中间矩阵的对应元素乘积累加之和,将得到的结果作为输出图像内第2行第3列的元素。依次类推,最终得到输出图像矩阵第2行至第5行、第2列至第5列中所有的元素,其中中间矩阵与卷积核的所有计算过程均可采用上述示例中的矩阵处理方法进行。此外,对于输出图像矩阵最外侧的第1行、第6行、第1列以及第6列的元素由于涉及图像卷积的边界问题,可采用如忽略边界元素、保留原边界元素等方式进行处理,由于不涉及矩阵的处理,本实施例对此不做具体限定。
综上,本申请所提供的矩阵方法能够应用于处理器对图像进行卷积运算,其中,在卷积运算中的卷积核与对应的图像矩阵的中间矩阵进行乘加运算时,通过卷积核的压缩矩阵和中间矩阵的压缩矩阵进行运算得到目标值。而由于压缩矩阵在进行运算时不需要在增加一些零元素以进行元素对齐,而只通过第一简化矩阵和第二简化矩阵中的元素进行绝对有效的运算,因此在计算时避免了进行包含零元素的无效计算。从而能够提高图像卷积运算的运算速度,并进一步提高了处理器的对于图像卷积运算的处理效率。
图14为本申请矩阵的处理装置一实施例的结构示意图。如图14所示,本实施例提供的矩阵的处理装置包括:第一确定模块1401,第二确定模块1402和处理模块1403。其中,第一确定模块1401用于确定待处理矩阵中的非零元素的数量,待处理矩阵为一维矩阵;第二确定模块1402用于确定待处理矩阵的分布矩阵,分布矩阵用于表示待处理矩阵中非零元素的位置;处理模块1403用于组合非零元素的数量、依次排列的待处理矩阵中每个非零元素的值和分布矩阵,以获得待处理矩阵的压缩矩阵。
本实施例提供的矩阵的处理装置,可用于执行如图1所示的矩阵的处理方法,其具体实现方式与原理相同,不再赘述。
可选地,在上述实施例中,分布矩阵为一维矩阵,待处理矩阵中每个位置上的元素和分布矩阵中相同位置上的元素一一对应;第二确定模块1402具体用于,依次扫描待处理矩阵中的元素;当扫描到的元素为非零元素时,确定分布矩阵中与扫描到的元素相对应的元素的值为1;当扫描到的元素为零值时,确定分布矩阵中与扫描到的元素相对应的元素的值为0。
可选地,在上述实施例中,待处理矩阵中的元素的数量为N,待处理矩阵中的非零元素的数量为M,对应的,分布矩阵中的元素的数量为N,分布矩阵中值为1的元素的数量为M,压缩矩阵中的元素的数量为M+N+1,其中,N为正整数,M为非负整数,M小于等于N。
本实施例提供的矩阵的处理装置,可用于执行前述实施例中的矩阵的处理方法,其具体实现方式与原理相同,不再赘述。
图15为本申请矩阵的处理装置一实施例的结构示意图。如图15所示,本实施例提供的矩阵的处理装置在图14的基础上,还包括:计算模块1501。其中,上述实施例中的待处理矩阵包括第一待处理矩阵和第二待处理矩阵,第一待处理矩阵中的元素的数量和第二待处理矩阵中的元素的数量相同,对应的,分布矩阵包括第一分布矩阵和第二分布矩阵。计算模块1501用于基于第一分布矩阵、第二分布矩阵、第一待处理矩阵中的非零元素和第二待处理矩阵中的非零元素,获得目标值,目标值与累加第一待处理矩阵中每个位置上的元素和第二待处理矩阵中相同位置上的元素的乘积的结果相同。
其中,计算模块1501具体用于,在第二分布矩阵中依次获取每个第一目标元素,以组成第一掩码矩阵,其中,每个第一目标元素在第二分布矩阵中的位置和第一分布矩阵中每个值为1的元素的位置相同;
当获取的第一目标元素的值为1时,将第一待处理矩阵的非零元素中的第一有效元素作为第一简化矩阵的元素,其中,第一有效元素在第一待处理矩阵的非零元素中的排列顺序与获取的第一目标元素在第一掩码矩阵中的排列顺序相同;
在第一分布矩阵中依次获取每个第二目标元素,以组成第二掩码矩阵,其中,每个第二目标元素在第一分布矩阵中的位置和第二分布矩阵中每个值为1的元素的位置相同;
当获取的第二目标元素的值为1时,将第二待处理矩阵的非零元素中的第二有效元素作为第二简化矩阵的元素,其中,第二有效元素在第二待处理矩阵的非零元素中的排列顺序与获取的第二目标元素在第二掩码矩阵中的排列顺序相同;
累加第一简化矩阵中每个位置上的元素和第二简化矩阵中相同位置上的元素的乘积,以获得目标值。
本实施例提供的矩阵的处理装置,可用于执行如图6所示的矩阵的处理方法,其具体实现方式与原理相同,不再赘述。
需要说明的是,本申请各实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
本申请还提供一种计算机可读存储介质,计算机可读存储介质中存储程序代码,当程序代码被执行时,以执行如上述实施例中任一的矩阵的处理方法。
本申请还提供一种计算机程序产品,计算机程序产品包含的程序代码被处理器执行时,实现如上述实施例中任一的矩阵的处理方法。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (15)
1.一种矩阵的处理方法,其特征在于,包括:
确定待处理矩阵中的多个非零元素;
确定所述待处理矩阵的分布矩阵,所述分布矩阵包括用于表示所述待处理矩阵中多个非零元素的位置的标识;
通过所述分布矩阵,在另一矩阵中获取包括多个目标元素的矩阵,其中,每个目标元素在所述另一矩阵中的位置对应于所述待处理矩阵中一个非零元素的位置;以及,
根据所述多个非零元素和所述包括多个目标元素的矩阵进行矩阵处理以得到运算结果。
2.根据权利要求1所述的方法,其特征在于,所述待处理矩阵为多维矩阵。
3.根据权利要求1或2所述的方法,其特征在于,所述矩阵处理包括乘加运算。
4.根据权利要求1至3任一项所述的方法,其特征在于,利用逻辑电路执行所述通过所述分布矩阵,在另一矩阵中获取包括多个目标元素的矩阵的操作。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述待处理矩阵为卷积核。
6.一种矩阵的处理装置,其特征在于,包括:
第一确定模块,用于确定待处理矩阵中的多个非零元素;
第二确定模块,用于确定所述待处理矩阵的分布矩阵,所述分布矩阵包括用于表示所述待处理矩阵中多个非零元素的位置的标识;
计算模块,用于通过所述分布矩阵,在另一矩阵中获取包括多个目标元素的矩阵,其中,每个目标元素在所述另一矩阵中的位置对应于所述待处理矩阵中一个非零元素的位置;以及,根据所述多个非零元素和所述包括多个目标元素的矩阵进行矩阵处理以得到运算结果。
7.根据权利要求6所述的装置,其特征在于,所述待处理矩阵为多维矩阵。
8.根据权利要求6或7所述的装置,其特征在于,所述矩阵处理包括乘加运算。
9.根据权利要求6至8任一项所述的装置,其特征在于,所述计算模块为硬件。
10.根据权利要求6至9任一项所述的装置,其特征在于,所述计算模块包括:逻辑电路,用于通过所述分布矩阵,在另一矩阵中获取包括多个目标元素的矩阵。
11.根据权利要求6至10任一项所述的装置,其特征在于,所述装置是处理器。
12.根据权利要求11所述的装置,其特征在于,所述处理器是图形处理器GPU。
13.根据权利要求6至12任一项所述的装置,其特征在于,所述待处理矩阵为卷积核。
14.一种矩阵的处理装置,其特征在于,包括:
处理器和存储器;
所述存储器,用于存储程序;
所述处理器,用于调用所述存储器所存储的程序,以执行如权利要求1-5中任一所述的方法。
15.根据权利要求14所述的装置,其特征在于,所述处理器是图形处理器GPU。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110395943.9A CN113190791A (zh) | 2018-08-06 | 2018-08-06 | 矩阵的处理方法、装置及逻辑电路 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110395943.9A CN113190791A (zh) | 2018-08-06 | 2018-08-06 | 矩阵的处理方法、装置及逻辑电路 |
CN201880015972.4A CN111010883B (zh) | 2018-08-06 | 2018-08-06 | 矩阵的处理方法、装置及逻辑电路 |
PCT/CN2018/098993 WO2020029018A1 (zh) | 2018-08-06 | 2018-08-06 | 矩阵的处理方法、装置及逻辑电路 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880015972.4A Division CN111010883B (zh) | 2018-08-06 | 2018-08-06 | 矩阵的处理方法、装置及逻辑电路 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113190791A true CN113190791A (zh) | 2021-07-30 |
Family
ID=69413876
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110395943.9A Pending CN113190791A (zh) | 2018-08-06 | 2018-08-06 | 矩阵的处理方法、装置及逻辑电路 |
CN201880015972.4A Active CN111010883B (zh) | 2018-08-06 | 2018-08-06 | 矩阵的处理方法、装置及逻辑电路 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880015972.4A Active CN111010883B (zh) | 2018-08-06 | 2018-08-06 | 矩阵的处理方法、装置及逻辑电路 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11250108B2 (zh) |
EP (1) | EP3690679A4 (zh) |
CN (2) | CN113190791A (zh) |
WO (1) | WO2020029018A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113496008A (zh) * | 2021-09-06 | 2021-10-12 | 北京壁仞科技开发有限公司 | 用于执行矩阵计算的方法、计算设备和计算机存储介质 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10474458B2 (en) | 2017-04-28 | 2019-11-12 | Intel Corporation | Instructions and logic to perform floating-point and integer operations for machine learning |
US10719323B2 (en) * | 2018-09-27 | 2020-07-21 | Intel Corporation | Systems and methods for performing matrix compress and decompress instructions |
US20200210517A1 (en) * | 2018-12-27 | 2020-07-02 | Intel Corporation | Systems and methods to accelerate multiplication of sparse matrices |
US11934342B2 (en) | 2019-03-15 | 2024-03-19 | Intel Corporation | Assistance for hardware prefetch in cache access |
AU2020241262A1 (en) | 2019-03-15 | 2021-11-04 | Intel Corporation | Sparse optimizations for a matrix accelerator architecture |
DE112020000850T5 (de) | 2019-03-15 | 2022-01-20 | Intel Corporation | Cache-Struktur und -Nutzung |
US11663746B2 (en) * | 2019-11-15 | 2023-05-30 | Intel Corporation | Systolic arithmetic on sparse data |
US11144615B1 (en) * | 2020-04-14 | 2021-10-12 | Apple Inc. | Circuit for performing pooling operation in neural processor |
CN114168895A (zh) * | 2020-09-11 | 2022-03-11 | 北京希姆计算科技有限公司 | 矩阵计算电路、方法、电子设备及计算机可读存储介质 |
CN115150614A (zh) * | 2021-03-30 | 2022-10-04 | 中国电信股份有限公司 | 图像特征的传输方法、装置和系统 |
CN114527930B (zh) * | 2021-05-27 | 2024-01-30 | 北京灵汐科技有限公司 | 权重矩阵数据存储方法、数据获取方法和装置、电子设备 |
CN113671009A (zh) * | 2021-07-27 | 2021-11-19 | 浙江华才检测技术有限公司 | 基于人工智能算法搭建的矩阵式广谱性物质检测传感器 |
Citations (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070198621A1 (en) * | 2006-02-13 | 2007-08-23 | Iu Research & Technology Corporation | Compression system and method for accelerating sparse matrix computations |
US20080126467A1 (en) * | 2006-09-26 | 2008-05-29 | Anwar Ghuloum | Technique for transposing nonsymmetric sparse matrices |
US20090282207A1 (en) * | 2008-05-06 | 2009-11-12 | L-3 Communications Integrated Systems, L.P. | System & method for storing a sparse matrix |
US20110078226A1 (en) * | 2009-09-30 | 2011-03-31 | International Business Machines Corporation | Sparse Matrix-Vector Multiplication on Graphics Processor Units |
CN102033854A (zh) * | 2010-12-17 | 2011-04-27 | 中国科学院软件研究所 | 针对稀疏矩阵的数据存储方法及基于该方法的SpMV实现方法 |
CN103336758A (zh) * | 2013-06-29 | 2013-10-02 | 中国科学院软件研究所 | 一种稀疏矩阵的存储方法CSRL及基于该方法的SpMV实现方法 |
US20140108481A1 (en) * | 2012-10-14 | 2014-04-17 | Microsoft Corporation | Universal fpga/asic matrix-vector multiplication architecture |
CN104636273A (zh) * | 2015-02-28 | 2015-05-20 | 中国科学技术大学 | 一种带多级Cache的SIMD众核处理器上的稀疏矩阵存储方法 |
CN105593843A (zh) * | 2013-08-30 | 2016-05-18 | 微软技术许可有限责任公司 | 稀疏矩阵数据结构 |
US20160179750A1 (en) * | 2014-12-22 | 2016-06-23 | Palo Alto Research Center Incorporated | Computer-Implemented System And Method For Efficient Sparse Matrix Representation And Processing |
US20160259826A1 (en) * | 2015-03-02 | 2016-09-08 | International Business Machines Corporation | Parallelized Hybrid Sparse Matrix Representations for Performing Personalized Content Ranking |
CN106846363A (zh) * | 2016-12-29 | 2017-06-13 | 西安电子科技大学 | 一种改进稀疏矩阵的尺度自适应性压缩跟踪方法 |
CN107229967A (zh) * | 2016-08-22 | 2017-10-03 | 北京深鉴智能科技有限公司 | 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法 |
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
US20170293659A1 (en) * | 2016-04-12 | 2017-10-12 | Hsilin Huang | Method, System and Program Product for Mask-Based Compression of a Sparse Matrix |
CN107689224A (zh) * | 2016-08-22 | 2018-02-13 | 北京深鉴科技有限公司 | 合理使用掩码的深度神经网络压缩方法 |
CN107909148A (zh) * | 2017-12-12 | 2018-04-13 | 北京地平线信息技术有限公司 | 用于执行卷积神经网络中的卷积运算的装置 |
CN107977704A (zh) * | 2017-11-10 | 2018-05-01 | 中国科学院计算技术研究所 | 权重数据存储方法和基于该方法的神经网络处理器 |
US20180129935A1 (en) * | 2016-11-07 | 2018-05-10 | Electronics And Telecommunications Research Institute | Convolutional neural network system and operation method thereof |
CN108268422A (zh) * | 2016-12-31 | 2018-07-10 | 英特尔公司 | 用于处理非常稀疏和超稀疏矩阵数据的硬件加速器架构 |
GB201808629D0 (en) * | 2018-05-25 | 2018-07-11 | Myrtle Software Ltd | Processing matrix vector multiplication |
US20180210862A1 (en) * | 2017-01-22 | 2018-07-26 | Gsi Technology Inc. | Sparse matrix multiplication in associative memory device |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5905666A (en) | 1995-01-03 | 1999-05-18 | International Business Machines Corporation | Processing system and method for performing sparse matrix multiplication by reordering vector blocks |
US6041404A (en) | 1998-03-31 | 2000-03-21 | Intel Corporation | Dual function system and method for shuffling packed data elements |
US6230253B1 (en) | 1998-03-31 | 2001-05-08 | Intel Corporation | Executing partial-width packed data instructions |
JP4735729B2 (ja) * | 2009-03-12 | 2011-07-27 | 沖電気工業株式会社 | 近似計算処理装置、近似ウェーブレット係数計算処理装置、及び近似ウェーブレット係数計算処理方法 |
US20100306300A1 (en) * | 2009-05-29 | 2010-12-02 | Microsoft Corporation | Sparse Matrix Padding |
US8751556B2 (en) * | 2010-06-11 | 2014-06-10 | Massachusetts Institute Of Technology | Processor for large graph algorithm computations and matrix operations |
CN102141976B (zh) * | 2011-01-10 | 2013-08-14 | 中国科学院软件研究所 | 稀疏矩阵的对角线数据存储方法及基于该方法的SpMV实现方法 |
US8862653B2 (en) | 2011-04-26 | 2014-10-14 | University Of South Carolina | System and method for sparse matrix vector multiplication processing |
CN102436438B (zh) * | 2011-12-13 | 2015-03-04 | 华中科技大学 | 基于gpu的稀疏矩阵数据存储方法 |
CN102522983B (zh) * | 2011-12-16 | 2014-06-04 | 宝鸡石油机械有限责任公司 | 一种矩阵式开关量驱动器 |
WO2014167730A1 (ja) * | 2013-04-12 | 2014-10-16 | 富士通株式会社 | 圧縮装置、圧縮方法、および圧縮プログラム |
US10346507B2 (en) | 2016-11-01 | 2019-07-09 | Nvidia Corporation | Symmetric block sparse matrix-vector multiplication |
US20180131946A1 (en) * | 2016-11-07 | 2018-05-10 | Electronics And Telecommunications Research Institute | Convolution neural network system and method for compressing synapse data of convolution neural network |
CN107807819B (zh) * | 2017-07-20 | 2021-06-25 | 上海寒武纪信息科技有限公司 | 一种支持离散数据表示的用于执行人工神经网络正向运算的装置及方法 |
CN107562694A (zh) * | 2017-08-23 | 2018-01-09 | 维沃移动通信有限公司 | 一种数据处理方法及移动终端 |
CN107944555B (zh) * | 2017-12-07 | 2021-09-17 | 广州方硅信息技术有限公司 | 神经网络压缩和加速的方法、存储设备和终端 |
JP2019148969A (ja) * | 2018-02-27 | 2019-09-05 | 富士通株式会社 | 行列演算装置、行列演算方法および行列演算プログラム |
US20210065005A1 (en) * | 2019-08-29 | 2021-03-04 | Alibaba Group Holding Limited | Systems and methods for providing vector-wise sparsity in a neural network |
-
2018
- 2018-08-06 CN CN202110395943.9A patent/CN113190791A/zh active Pending
- 2018-08-06 CN CN201880015972.4A patent/CN111010883B/zh active Active
- 2018-08-06 WO PCT/CN2018/098993 patent/WO2020029018A1/zh unknown
- 2018-08-06 EP EP18929049.7A patent/EP3690679A4/en active Pending
-
2020
- 2020-05-08 US US16/869,837 patent/US11250108B2/en active Active
-
2021
- 2021-12-23 US US17/560,472 patent/US11734386B2/en active Active
Patent Citations (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070198621A1 (en) * | 2006-02-13 | 2007-08-23 | Iu Research & Technology Corporation | Compression system and method for accelerating sparse matrix computations |
US20080126467A1 (en) * | 2006-09-26 | 2008-05-29 | Anwar Ghuloum | Technique for transposing nonsymmetric sparse matrices |
US20090282207A1 (en) * | 2008-05-06 | 2009-11-12 | L-3 Communications Integrated Systems, L.P. | System & method for storing a sparse matrix |
US20110078226A1 (en) * | 2009-09-30 | 2011-03-31 | International Business Machines Corporation | Sparse Matrix-Vector Multiplication on Graphics Processor Units |
CN102033854A (zh) * | 2010-12-17 | 2011-04-27 | 中国科学院软件研究所 | 针对稀疏矩阵的数据存储方法及基于该方法的SpMV实现方法 |
US20140108481A1 (en) * | 2012-10-14 | 2014-04-17 | Microsoft Corporation | Universal fpga/asic matrix-vector multiplication architecture |
CN103336758A (zh) * | 2013-06-29 | 2013-10-02 | 中国科学院软件研究所 | 一种稀疏矩阵的存储方法CSRL及基于该方法的SpMV实现方法 |
CN105593843A (zh) * | 2013-08-30 | 2016-05-18 | 微软技术许可有限责任公司 | 稀疏矩阵数据结构 |
US20170371839A1 (en) * | 2014-12-22 | 2017-12-28 | Palo Alto Research Center Incorporated | System And Method For Efficient Sparse Matrix Processing |
US20160179750A1 (en) * | 2014-12-22 | 2016-06-23 | Palo Alto Research Center Incorporated | Computer-Implemented System And Method For Efficient Sparse Matrix Representation And Processing |
CN104636273A (zh) * | 2015-02-28 | 2015-05-20 | 中国科学技术大学 | 一种带多级Cache的SIMD众核处理器上的稀疏矩阵存储方法 |
US20160259826A1 (en) * | 2015-03-02 | 2016-09-08 | International Business Machines Corporation | Parallelized Hybrid Sparse Matrix Representations for Performing Personalized Content Ranking |
US20170293659A1 (en) * | 2016-04-12 | 2017-10-12 | Hsilin Huang | Method, System and Program Product for Mask-Based Compression of a Sparse Matrix |
CN107229967A (zh) * | 2016-08-22 | 2017-10-03 | 北京深鉴智能科技有限公司 | 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法 |
CN107689224A (zh) * | 2016-08-22 | 2018-02-13 | 北京深鉴科技有限公司 | 合理使用掩码的深度神经网络压缩方法 |
US20180129935A1 (en) * | 2016-11-07 | 2018-05-10 | Electronics And Telecommunications Research Institute | Convolutional neural network system and operation method thereof |
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
CN106846363A (zh) * | 2016-12-29 | 2017-06-13 | 西安电子科技大学 | 一种改进稀疏矩阵的尺度自适应性压缩跟踪方法 |
CN108268422A (zh) * | 2016-12-31 | 2018-07-10 | 英特尔公司 | 用于处理非常稀疏和超稀疏矩阵数据的硬件加速器架构 |
US20180210862A1 (en) * | 2017-01-22 | 2018-07-26 | Gsi Technology Inc. | Sparse matrix multiplication in associative memory device |
CN107977704A (zh) * | 2017-11-10 | 2018-05-01 | 中国科学院计算技术研究所 | 权重数据存储方法和基于该方法的神经网络处理器 |
CN107909148A (zh) * | 2017-12-12 | 2018-04-13 | 北京地平线信息技术有限公司 | 用于执行卷积神经网络中的卷积运算的装置 |
GB201808629D0 (en) * | 2018-05-25 | 2018-07-11 | Myrtle Software Ltd | Processing matrix vector multiplication |
Non-Patent Citations (8)
Title |
---|
AYDIN BULUÇ DT AL: "Reduced-Bandwidth Multithreaded Algorithms for Sparse Matrix-Vector Multiplication", 《2011 IEEE INTERNATIONAL PARALLEL & DISTRIBUTED PROCESSING SYMPOSIUM》 * |
RAKSHITH KUNCHUM ET AL: "On Improving Performance of Sparse Matrix-Matrix Multiplication on GPUs", 《PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON SUPERCOMPUTING》 * |
SHIJIN ZHANG ET AL: "Cambricon-X: An accelerator for sparse neural networks", 《2016 49TH ANNUAL IEEE/ACM INTERNATIONAL SYMPOSIUM ON MICROARCHITECTURE》 * |
XING LIU ET AL: "Efficient sparse matrix-vector multiplication on x86-based many-core processors", 《PROCEEDINGS OF THE 27TH INTERNATIONAL ACM CONFERENCE ON INTERNATIONAL CONFERENCE ON SUPERCOMPUTING》 * |
XINHAI CHEN ET AL: "An efficient SIMD compression format for sparse matrix-vector multiplication", 《CONCURRENCY AND COMPUTATION PRACTICE AND EXPERIENCE》 * |
梁添: "基于GPU的稀疏矩阵运算优化研究", 《中国优秀博硕士学位论文全文数据库(硕士)基础科学辑》 * |
蒋川群: "稀疏矩阵相乘的一个改进算法", 《计算机工程与应用》 * |
雷杰 等: "深度网络模型压缩综述", 《软件学报》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113496008A (zh) * | 2021-09-06 | 2021-10-12 | 北京壁仞科技开发有限公司 | 用于执行矩阵计算的方法、计算设备和计算机存储介质 |
CN113496008B (zh) * | 2021-09-06 | 2021-12-03 | 北京壁仞科技开发有限公司 | 用于执行矩阵计算的方法、计算设备和计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3690679A4 (en) | 2021-02-17 |
US11250108B2 (en) | 2022-02-15 |
EP3690679A1 (en) | 2020-08-05 |
US11734386B2 (en) | 2023-08-22 |
WO2020029018A1 (zh) | 2020-02-13 |
US20200265108A1 (en) | 2020-08-20 |
CN111010883A (zh) | 2020-04-14 |
CN111010883B (zh) | 2022-07-12 |
US20220114235A1 (en) | 2022-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111010883B (zh) | 矩阵的处理方法、装置及逻辑电路 | |
US11595062B2 (en) | Decompression apparatus for decompressing a compressed artificial intelligence model and control method thereof | |
US11379556B2 (en) | Apparatus and method for matrix operations | |
CN108845828B (zh) | 一种协处理器、矩阵运算加速方法及系统 | |
KR20220114519A (ko) | 양자 오류 정정 디코딩 시스템 및 방법, 내결함성 양자 오류 정정 시스템 및 칩 | |
WO2020160608A1 (en) | Highly parallel convolutional neural network | |
CN111384972B (zh) | 多进制ldpc解码算法的优化方法、装置及解码器 | |
US20240137043A1 (en) | Data compression method and apparatus, and data decompression method and apparatus | |
US20230342419A1 (en) | Matrix calculation apparatus, method, system, circuit, and device, and chip | |
CN110796229A (zh) | 一种实现卷积运算的装置及方法 | |
CN112332854A (zh) | 霍夫曼编码的硬件实现方法、装置及存储介质 | |
CN115828044B (zh) | 基于神经网络双重稀疏性矩阵乘法运算电路、方法和装置 | |
CN116842304A (zh) | 一种不规则稀疏矩阵的计算方法及系统 | |
CN111083479A (zh) | 一种视频帧预测方法、装置及终端设备 | |
CN111836051B (zh) | 一种桌面图像编码、解码方法及相关装置 | |
CN111107375B (zh) | 一种视频编码方法、解码方法及装置 | |
CN110474647B (zh) | 有限域构造的ldpc码的译码方法、装置、译码器及存储介质 | |
CN113592966A (zh) | 图像处理方法及装置、电子设备和存储介质 | |
CN111224674B (zh) | 多进制ldpc码的解码方法、装置及解码器 | |
CN111384976A (zh) | 稀疏校验矩阵的存储方法和读取方法 | |
CN114554225B (zh) | 图像编码方法、装置、设备及计算机可读介质 | |
Liguori | A MAC-less Neural Inference Processor Supporting Compressed, Variable Precision Weights | |
US20240212314A1 (en) | Apparatuses and methods for providing and generating statistics for images with a formulaic representation | |
US20240152327A1 (en) | Computing circuit, computing method, and decoder | |
CN115708090A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20210730 |