CN110598175A - 一种基于图计算加速器的稀疏矩阵列向量比较装置 - Google Patents
一种基于图计算加速器的稀疏矩阵列向量比较装置 Download PDFInfo
- Publication number
- CN110598175A CN110598175A CN201910877555.7A CN201910877555A CN110598175A CN 110598175 A CN110598175 A CN 110598175A CN 201910877555 A CN201910877555 A CN 201910877555A CN 110598175 A CN110598175 A CN 110598175A
- Authority
- CN
- China
- Prior art keywords
- comparison
- vector
- operation circuit
- output module
- comparison operation
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- 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)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开一种基于图计算加速器的稀疏矩阵列向量比较装置,包括:N个比较运算电路,比较向量的所有非零元素输入第一个比较运算电路;目标向量的所有非零元素分别输入至N个比较运算电路;每一个比较运算电路包括:操作电路、直接输出模块和中间输出模块;每一个操作电路将比较向量的全部或部分非零元素和输入至比较运算电路的目标向量的一个非零元素进行比较;N个比较运算电路通过中间输出模块、直接输出模块依次连接,第n‑1个比较运算电路的中间输出模块、直接输出模块的结果分别输入至第n个比较运算电路;最后一个比较运算电路输出稀疏矩阵列向量比较后的结果向量,解决了现有技术中没有对两个稀疏矩阵列向量的比较装置的缺陷。
Description
技术领域
本发明涉及一种图计算加速器技术,特别涉及一种基于图计算加速器的稀疏矩阵列向量比较装置。
背景技术
随着社交网络等新型互联网应用的兴起和各种电子设备的普及,图计算、尤其是大规模图计算的相关应用日益成为学术界和工业界的研究热点,从技术、应用及自主知识产权等角度看图计算加速器的研发都势在必行。在图计算加速器的设计过程中,需要考虑经CSCI(Compressed Sparse Column Independently,独立稀疏列压缩)压缩过的稀疏矩阵列向量比较的高效实现。在这里,每一个稀疏矩阵列向量中的每个非零元素按照CSCI格式压缩成一个个的数据对,每一个数据对结构包括:(索引index,数值value)。
当前,矩阵中非零元素的个数远远小于矩阵元素的总数,并且非零元素的分布没有规律,则该矩阵为稀疏矩阵,与之相反,若非零元素数目占大多数时,则称该矩阵为稠密矩阵。对于稠密矩阵列向量的运算,需要将矩阵的所有元素进行存储,在进行两个稠密矩阵列向量运算时,直接对相同行的元素进行运算。
然而,现有技术中没有提供任何可以高效实现两个稀疏矩阵列向量的比较运算的装置。
发明内容
本发明的目的是提供一种基于图计算加速器的稀疏矩阵列向量比较装置,用于解决现有技术中没有对两个稀疏矩阵列向量的比较装置的缺陷。
为了达到上述的目的,本发明采用的主要技术方案包括:
第一方面,本发明提供一种基于图计算加速器的稀疏矩阵列向量比较装置,所述稀疏矩阵列向量包括:至少一个比较向量和至少一个目标向量,其中,所述装置包括:
N个比较运算电路,所述比较运算电路的数量大于等所述稀疏矩阵中列向量的非零元素的最大个数;
针对每一个比较向量,所述比较向量的所有非零元素输入第一个比较运算电路;
针对每一个目标向量,所述目标向量的所有非零元素分别输入至N个比较运算电路;
每一个比较运算电路包括:操作电路、直接输出模块和中间输出模块;其中,每一个比较运算电路的操作电路用于将比较向量的全部或部分非零元素和输入至比较运算电路的目标向量的一个非零元素进行比较;
N个比较运算电路通过中间输出模块、直接输出模块依次连接,具体地,第n-1个比较运算电路的中间输出模块、直接输出模块的结果分别输入至第n个比较运算电路;n属于N的元素;
第n个比较运算电路的操作电路对第n-1个比较运算电路的直接输出模块的结果进行透传,第n个比较运算电路的操作电路对第n-1个比较运算电路的中间输出模块的结果进行处理;
最后一个比较运算电路输出稀疏矩阵列向量比较后的结果向量。
可选地,针对第一个比较运算电路的操作电路,基于比较策略将比较向量的所有非零元素和目标向量的第一个非零元素进行比较;
所述比较策略包括:比较向量中非零元素的行索引小于目标向量第一个非零元素的行索引的非零元素作为直接输出模块的输出结果;比较向量中大于目标向量第一个非零元素的行索引的非零元素作为中间输出模块的输出结果;比较向量中非零元素的行索引等于目标向量第一个非零元素的行索引的,则对这两个索引相同的非零元素进行运算;
针对第n个比较运算电路的操作电路,基于比较策略将第n-1个比较运算电路的中间输出模块输出的非零元素与目标向量输入至第n个比较运算电路的非零元素进行比较。
可选地,所述操作电路包括:N1个分组比较单元;所有分组比较单元都依次连接;
针对第一个比较运算电路的操作电路,将所述比较向量按照非零元素的顺序分为N1组;
第一个分组比较单元,基于比较策略将分组后比较向量的第一组非零元素和目标向量的第一个非零元素进行比较;
所述第一个比较运算电路的操作电路中第n1个分组比较单元,基于比较策略将分组后比较向量的第n1组非零元素和目标向量的第一个非零元素进行比较;
其中,n1为N1中的元素,且均为大于1的自然数。
可选地,若比较向量和目标向量中的非零元素个数均为64个,N和N1均为8,分组后比较向量的每一组的非零元素为8个,操作电路为8个分组比较单元CU0~CU7;
针对第一个分组比较单元CU0,若分组后比较向量的第一组非零元素的行索引与所述目标向量的第一个非零元素的行索引相同,则对两个行索引相同的非零元素作比较运算;比较运算后的结果传输至直接输出模块;
其他行索引小于目标向量的第一个非零元素的索引的非零元素传输到直接输出模块,大于目标向量的第一个非零元素的行索引的非零元素传输到中间接输出模块;
剩余分组比较单元CU1~CU7不再进行比较,将不再进行比较的比较向量的非零元素传输至操作电路连接的直接输出模块。
可选地,所述稀疏矩阵的压缩格式采用的是CSCI压缩格式。
可选地,所述操作电路中每一个分组比较单元的比较运算依据所述稀疏矩阵列向量比较装置所属的图计算加速器的应用确定。
可选地,所述第一个分组比较单元CU0对两个行索引相同的非零元素作比较运算包括:基于广度优先搜索算法BFS,取两个数值的较小值。
第二方面,本发明提供一种图计算加速器,其中,包括上述第一方面任一所述的基于图计算加速器的稀疏矩阵列向量比较装置。
本发明的有益效果是:
本申请的装置适用于所有的稀疏矩阵列向量的比较运算,且可提高运算效率,可以应用到不同的图计算应用,提高了适用性。
此外,每个图计算加速器中图计算应用本发明的装置都是相同的,只是在行索引比较完成后,对数值的运算取决于不同的图计算应用。
附图说明
图1是本发明一实施例提供的两个稀疏向量比较结构示意图;
图2是本发明一实施例提供的比较运算电路的示意图;
图3是本发明一实施例提供的比较单元内部电路的结构示意图;
图4至图13是本发明一实施例提供的稀疏矩阵列向量比较装置具体处理的过程示意图。
具体实施方式
为了更好地解释本发明,以便于理解,下面结合附图,通过具体实施方式,对本发明作详细描述。
为了更好的理解本发明实施例的方案,以下对本发明实施例的装置进行概述说明。
本发明实施例中的稀疏矩阵采用的存储格式是独立稀疏列压缩CSCI格式,仅存储稀疏矩阵中的非零元素来节省存储空间。所以两个列向量要进行运算时,首先需要找到相同行的元素,而不能直接运算。CSCI图数据压缩格式的具体实现方式是:每列独立压缩后的图数据包括:列标识数据对和非零元素数据对,每个数据对包括索引和数值。列标识数据对的索引表示第几列,数值表示该列有几个非零元素;非零元素数据对的索引表示给非零元素在第几行,数值表示该非零元素的数值。此外,本申请实施例中部分稀疏向量可为稀疏矩阵列向量的简称
在BFS(Breadth First Search,广度优先搜索)、SSSP(Single Source ShortestPath,单源最短路径)等图计算应用中都需要对稀疏矩阵的列向量进行运算,所以在进行两个列向量的运算时,首先得确定非零元素是否在同一行,所以就有了稀疏列向量中非零元素行索引进行比较的运算。比较完稀疏列向量的行索引后,根据不同的图计算应用就要对其数值进行相应的运算。
本申请中的稀疏矩阵的压缩格式采用的是CSCI格式,实现的是两个稀疏矩阵列向量的运算,具体的实现方法如图1,假设两个列向量分别为比较向量和目标向量,该电路由n个比较运算单元组成,比较向量的n个非零元素从第一个比较运算单元输入,目标向量的n个非零元素分别输入至n个比较运算电路。首先,目标向量的第一个非零元素和比较向量的所有非零元素比较,比较结束后,比较向量中的非零元素行索引小于目标向量第一个非零元素行索引的非零元素可以作为输出,不再进行下一级的比较,大于目标向量第一个非零元素行索引的比较向量非零元素将被输出,作为第二个比较运算电路的输入,然后和目标向量第二个非零元素比较,小于其行索引的非零元素直接作为输出,大于的被输出作为下一级比较运算电路的输入,以此类推,越往后比较运算电路输入非零元素个数越来越少,目标向量元素更快速找到其索引相同的比较向量元素。
实施例一
本发明实施例提供一种基于图计算加速器的稀疏矩阵列向量比较装置,所述稀疏矩阵列向量包括:至少一个比较向量和至少一个目标向量,其特征在于,所述装置包括:
N个比较运算电路,所述比较运算电路的数量大于等所述稀疏矩阵中列向量的非零元素的最大个数;N为大于1的自然数;如图1所示。
针对每一个比较向量,所述比较向量的所有非零元素输入第一个比较运算电路;
针对每一个目标向量,所述目标向量的所有非零元素分别输入至N个比较运算电路;
每一个比较运算电路包括:操作电路、直接输出模块和中间输出模块;其中,每一个比较运算电路的操作电路用于将比较向量的全部或部分非零元素和输入至比较运算电路的目标向量的一个非零元素进行比较;
N个比较运算电路通过中间输出模块、直接输出模块依次连接,具体地,第n-1个比较运算电路的中间输出模块、直接输出模块的结果分别输入至第n个比较运算电路;n属于N的元素;
第n个比较运算电路的操作电路对第n-1个比较运算电路的直接输出模块的结果进行透传,第n个比较运算电路的操作电路对第n-1个比较运算电路的中间输出模块的结果进行处理;
最后一个比较运算电路输出稀疏矩阵列向量比较后的结果向量。
在本实施例中,针对第一个比较运算电路的操作电路,基于比较策略将比较向量的所有非零元素和目标向量的第一个非零元素进行比较;
所述比较策略包括:比较向量中非零元素的行索引小于目标向量第一个非零元素的行索引的非零元素作为直接输出模块的输出结果;比较向量中大于目标向量第一个非零元素的行索引的非零元素作为中间输出模块的输出结果;比较向量中非零元素的行索引等于目标向量第一个非零元素的行索引的,则对这两个索引相同的非零元素进行运算;
针对第n个比较运算电路的操作电路,基于比较策略将第n-1个比较运算电路的中间输出模块输出的非零元素与目标向量输入至第n个比较运算电路的非零元素进行比较。
需要说明的是,稀疏矩阵中零元素的个数远远大于非零元素的个数。当稀疏矩阵中的两个列向量进行运算时,为方便解释,在本申请中两个列向量分别称为目标向量和比较向量。两个向量中的非零元素个数不确定,可以相等,也可以不相等。
关于N个比较运算电路,当列向量的非零元素个数小于N时,两个稀疏列向量运算时都可以使用上述的装置。当然比较运算电路的个数可以根据列向量的非零元素个数扩展。
在本实施例中,装置的最后一个比较运算电路可以没有中间输出模块。
在具体实现过程中,前述的操作电路可包括:N1个分组比较单元;所有分组比较单元都依次连接;
针对第一个比较运算电路的操作电路,将所述比较向量按照非零元素的顺序分为N1组;
第一个分组比较单元,基于比较策略将分组后比较向量的第一组非零元素和目标向量的第一个非零元素进行比较;
所述第一个比较运算电路的操作电路中第n1个分组比较单元,基于比较策略将分组后比较向量的第n1组非零元素和目标向量的第一个非零元素进行比较;
其中,n1为N1中的元素。
为了更好的理解,下面举例来说,若比较向量和目标向量中的非零元素个数均为64个,N和N1均为8,分组后比较向量的每一组的非零元素为8个,操作电路为8个分组比较单元CU0~CU7;
针对第一个分组比较单元CU0,若分组后比较向量的第一组非零元素的行索引与所述目标向量的第一个非零元素的行索引相同,则对两个行索引相同的非零元素作比较运算;比较运算后的结果传输至直接输出模块;需要说明的是:不同的图计算应用数值要做的运算不同。本发明以广度优先搜索算法BFS为例,取两个数值的较小值。
其他行索引小于目标向量的第一个非零元素的索引的非零元素传输到直接输出模块,大于目标向量的第一个非零元素的行索引的非零元素传输到中间接输出模块;
剩余分组比较单元CU1~CU7不再进行比较,将不再进行比较的比较向量的非零元素传输至操作电路连接的中间输出模块。
在本实施例中,所述稀疏矩阵的压缩格式采用的是CSCI压缩格式。
特别地,所述操作电路中每一个分组比较单元的比较运算依据所述稀疏矩阵列向量比较装置所属的图计算加速器的应用确定。
例如,前述的第一个分组比较单元CU0对两个行索引相同的非零元素作比较运算包括:基于广度优先搜索算法BFS,取两个数值的较小值。
本申请的装置适用于所有的稀疏矩阵列向量的比较运算,且可提高运算效率,可以应用到不同的图计算应用,提高了适用性。
实施例二
本实施例中可对前述装置的比较方法进行说明,假设每个稀疏向量有n个非零元素.
前述的操作电路,用于将比较的稀疏向量元素进行分组之后和目标向量元素先进行索引比较,若有相同的索引,则继续对数值进行运算,然后将索引和数值进行拼接(例如:(索引、数值)这样的拼接方式),作为输出结果。同时,比较向量中非零元素的索引小于该输出索引的都可以直接作为输出,不参与后面目标向量其他元素的比较。
所述直接输出模块,用于将在比较过程中可以直接输出的非零元素在每一级操作电路中进行透传,同时也将正在比较的可以输出的向量元素在下一级进行透传。
所述中间输出模块,用于将比较向量中其他需要输出至下一级和下一个目标非零向量比较的非零元素输出作为下一级的输入。
举例来说,操作电路可包括:8个分组比较单元。
所述分组比较单元,用于将目标向量元素和比较向量的8个元素进行比较。将比较向量顺序分组,每组为8个非零元素,目标向量元素首先和比较向量的首个元素索引进行比较,小于或相等就可以结束比较,直接输出相应结果,比较向量的其他元素可以输出至下一级进行比较;若大于,接着和比较向量的最后一个元素索引进行比较,若相等输出相应结果,本级的比较结束,小于该元素索引的比较向量元素都可以送至直接输出模块,若大于比较向量的最后一个元素索引,则要和下一组比较向量继续进行比较;若小于比较向量的最后一个元素索引,继续按照二分法进行比较,得到本级比较的结果,最后将可以直接输出的向量元素送至直接输出模块,将需要输出下一级继续比较的比较向量元素送至中间输出模块。
下面结合图1至图3对前述的装置和工作原理进行详细说明。
如图1所示,假设目标稀疏向量有n个非零元素,本发明所实施的稀疏向量比较由n个比较运算电路组成,每个比较运算电路分配一个目标向量的非零元素,比较向量的所有非零元素作为第一个比较运算电路的输入,经过第一个比较运算电路后,可以直接输出的向量元素和需要继续与目标向量第二个非零元素继续比较的向量元素分别输出至第二个比较运算电路,以此类推,直到比较完目标向量的最后一个非零元素。
如图2所示,本实施例的比较运算电路包括:操作电路、中间输出模块和直接输出模块。
其中,操作电路将比较向量的非零元素按照每组8个比较元素进行分组,得到8个分组比较单元,8个分组比较单元(Comparing Unit,CU)可以进行索引比较。中间输出模块暂存需要输出至下一个比较运算电路和下一个目标向量元素进行比较。直接输出模块暂存已确定可以直接输出的向量元素,之后每一级运算比较电路都进行透传,直到最终输出。
如图3所示,分组比较单元CU,实现一个目标向量非零元素和比较向量中的8个非零元素进行比较的过程。其中target表示目标向量元素,com表示目标向量的元素,00表示目标向量元素的索引等于比较向量元素索引,01表示小于,10表示大于。比较步骤如下:
第一步:目标元素索引target_index和com0_index比较。
(1)若比较结果相等(00),target的数值和com0的数值根据不同的图计算应用做相应的运算,例如,可以基于广度优先搜索算法BFS,取两个数值的较小值。
然后和索引拼接通过直接输出模块暂存,之后每一级比较运算电路都透传,com1~com7通过中间输出模块暂存,输出至下一级和目标向量的下一个非零元素做比较运算,本级的比较运算电路运算结束。
(2)若比较结果为小于(01),直接将target暂存在直接输出模块,之后每一级比较运算电路都透传,com0~com7通过中间输出模块暂存,输出至下一级和目标向量的下一个非零元素做比较运算,本级的比较运算电路运算结束。
(3)若比较结果为大于(10),则跳转至第二步。
第二步:目标元素索引target_index和com7_index比较。
(1)若比较结果为相等(00),target的数值和com7的数值比较取较小值,然后和索引拼接通过直接输出模块暂存,之后每一级比较运算电路都透传,com0~com6也通过直接输出模块暂存,之后每一级比较运算电路都透传,本级的比较运算电路运算结束。
(2)若比较结果为大于(10),com0~com7通过直接输出模块暂存,之后每一级比较运算电路都透传,target需要和下一组的比较向量元素进行比较运算。
(3)若比较结果为小于(01),跳转至第三步。
第三步:目标元素索引target_index和com6_index比较。
(1)若比较结果为相等(00),target的数值和com6的数值比较取较小值,然后和索引拼接通过直接输出模块暂存,之后每一级比较运算电路都透传,com0~com5也通过直接输出模块暂存,之后每一级比较运算电路都透传,本级的比较运算电路运算结束。
(2)若比较结果为大于(10),target、com0~com5通过直接输出模块暂存,之后每一级比较运算电路都透传,com7通过中间输出模块和目标向量的下一个元素进行比较运算。本级的比较运算电路运算结束。
(3)若比较结果为小于(01),跳转至第四步。
第四步:目标元素索引target_index和com3_index比较。
(1)若比较结果为相等(00),target的数值和com3的数值比较取较小值,然后和索引拼接通过直接输出模块暂存,之后每一级比较运算电路都透传,com0~com2也通过直接输出模块暂存,之后每一级比较运算电路都透传,本级的比较运算电路运算结束。
(2)若比较结果为小于(01),跳转至第五(1)步。
(3)若比较结果为大于(10),跳转至第五(2)步。
第五(1)步:目标元素索引target_index和com2_index比较。
(1)若比较结果为相等(00),target的数值和com2的数值比较取较小值,然后和索引拼接通过直接输出模块暂存,之后每一级比较运算电路都透传,com0、com1也通过直接输出模块暂存,之后每一级比较运算电路都透传,com3~com7通过中间输出模块暂存,输出至下一级比较运算电路和目标向量的下一个非零元素进行比较运算,本级的比较运算电路运算结束。
(2)若比较结果为大于(10),target、com0~com2通过直接输出模块暂存,之后每一级比较运算电路都透传,com3~com7通过中间输出模块暂存,输出至下一级比较运算电路和目标向量的下一个非零元素进行比较运算,本级的比较运算电路运算结束。
(3)若比较结果为小于(01),跳转至第六(1)步。
第五(2)步:目标元素索引target_index和com4_index比较。
(1)若比较结果相等(00),target的数值和com4的数值比较取较小值,然后和索引拼接通过直接输出模块暂存,之后每一级比较运算电路都透传,com0~com3也通过直接输出模块暂存,之后每一级比较运算电路都透传,com5~com7通过中间输出模块暂存,输出至下一级比较运算电路和目标向量的下一个非零元素进行比较运算,本级的比较运算电路运算结束。
(2)若比较结果为小于(01),target、com0~com3通过直接输出模块暂存,之后每一级比较运算电路都透传,com4~com7通过中间输出模块暂存,输出至下一级比较运算电路和目标向量的下一个非零元素进行比较运算,本级的比较运算电路运算结束。
(3)若比较结果为大于(10),跳转至第六(2)步。
第六(1)步:目标元素索引target_index和com1_index比较。
(1)若比较结果为相等(00),target的数值和com1的数值比较取较小值,然后和索引拼接通过直接输出模块暂存,之后每一级比较运算电路都透传,com0也通过直接输出模块暂存,之后每一级比较运算电路都透传,com2~com7通过中间输出模块暂存,输出至下一级比较运算电路和目标向量的下一个非零元素进行比较运算,本级的比较运算电路运算结束。
(2)若比较结果为小于(01),target,com0通过直接输出模块暂存,之后每一级比较运算电路都透传,com1~com7通过中间输出模块暂存,输出至下一级比较运算电路和目标向量的下一个非零元素进行比较运算,本级的比较运算电路运算结束。
(3)若比较结果为大于(10),target、com0、com1通过直接输出模块暂存,之后每一级比较运算电路都透传,com2~com7通过中间输出模块暂存,输出至下一级比较运算电路和目标向量的下一个非零元素进行比较运算,本级的比较运算电路运算结束。
第六(2)步:目标元素索引target_index和com5_index比较。
(1)若比较结果为相等(00),target的数值和com5的数值比较取较小值,然后和索引拼接(例如,(索引、数值))通过直接输出模块暂存,之后每一级比较运算电路都透传,com0~com4也通过直接输出模块暂存,之后每一级比较运算电路都透传,com6~com7通过中间输出模块暂存,输出至下一级比较运算电路和目标向量的下一个非零元素进行比较运算,本级的比较运算电路运算结束。
(2)若比较结果为小于(01),target,com0~com4通过直接输出模块暂存,之后每一级比较运算电路都透传,com5~com7通过中间输出模块暂存,输出至下一级比较运算电路和目标向量的下一个非零元素进行比较运算,本级的比较运算电路运算结束。
(3)若比较结果为大于(10),target、com0~com5通过直接输出模块暂存,之后每一级比较运算电路都透传,com6、com7通过中间输出模块暂存,输出至下一级比较运算电路和目标向量的下一个非零元素进行比较运算,本级的比较运算电路运算结束。
实施例三
如图4所示,CU0中,目标向量的第一个非零元素和比较向量分组后的第一组8个非零元素进行行索引比较,
若比较向量的第一组中的非零元素的最小行索引(compare0_index)都大于目标向量第一个非零元素的行索引(target0_index),则目标向量的第一个非零元素可以直接输出至直接输出电路,分组比较单元CU0~CU7不再运行,将不再进行比较的比较向量的非零元素输出至操作电路连接的中间输出模块,之后作为第二个比较运算电路的输入比较向量,继续和目标向量的第二个非零元素比较,如图4中①所示。
若比较向量的第一组中的非零元素中存在和目标向量的第一个非零元素行索引相同,则将两个非零元素的数值进行相应的运算,该结果传输至直接输出电路,比较向量中其他索引小于目标向量的第一个非零元素的索引的非零元素传输到直接输出电路,剩余大于目标向量的第一个非零元素的索引的非零元素传输到中间接输出电路。剩余分组比较单元CU1~CU7不再运行,将不再进行比较的比较向量的非零元素输出至操作电路连接的中间输出模块,之后作为第二个比较运算电路的输入比较向量,继续和目标向量的第二个非零元素比较,如图4中②所示。
若比较向量的第一组中的非零元素的行索引均小于目标向量第一个非零元素的行索引,将比较向量非零元素的第一组输出至直接输出模块,目标向量第一个非零元素的行索引继续和比较向量的第二组CU2的8个非零元素的索引比较,比较方法以此类推,如图4中③所示。
另外,如图5所示,假设有两个稀疏列向量,每个数据对标识的含义:逗号“,”之前的数表示该非零元素的行索引,逗号之后的数表示该非零元素的数值。目标向量和比较向量随机分配,如图5所示,目标向量(target)有7个非零元素,比较向量(compare)有8个非零元素,映射在本发明的结构上,如图6所示,图中mid表示中间输出结果,imm表示直接输出结果。此时有8个比较运算电路,最后一个比较运算电路输入的比较向量的元素置0。
按照前述举例的BFS的比较运算,若有和目标元素索引相同的比较向量元素,则这两个元素的数值进行比较,取较小值;若没有,则直接输出目标元素。
比较运算电路0的比较过程:目标向量的第一个非零元素(4,2)和比较向量的所有非零元素(15,2)、(18,3)、(24,1)、(26,3)、(28,2)、(35,2)、(44,1)、(52,3)的索引比较,(4,2)的行索引小于比较向量的所有非零元素的行索引,可以将(4,2)直接输出,所以结果如下:
比较运算电路1的比较过程:目标向量的第二个非零元素(15,3)和从比较运算电路0输出的中间输出结果mid元素(15,2)、(18,3)、(24,1)、(26,3)、(28,2)、(35,2)、(44,1)、(52,3)的索引比较,(15,3)和比较运算电路0输出的中间输出结果mid中的元素(15,2)的行索引相同,两个元素的数值进行比较取较小值,然后将比较的结果(15,2)和上一级透传过来的直接输出结果(4,2)以其作为比较运算电路1的直接输出结果,结果如下:
比较运算电路2的比较过程:目标向量的第三个非零元素(20,1)和从比较运算电路1输出的中间输出结果mid元素(18,3)、(24,1)、(26,3)、(28,2)、(35,2)、(44,1)、(52,3)的索引比较,可以看出,目标向量元素(20,1)的行索引大于元素(18,3)的行索引,而小于元素(24,1)的行索引,所以本级比较运算电路的中间输出结果和直接输出结果如下:
比较运算电路3的比较过程:目标向量的第四个非零元素(26,3)和从比较运算电路2输出的中间输出结果mid元素(24,1)、(26,3)、(28,2)、(35,2)、(44,1)、(52,3)的索引比较,可以看出,目标元素(26,3)的行索引大于元素(24,1)的行索引,等于元素(26,3)的行索引,所以本级比较运算电路的输出结果如下:
比较运算电路4的比较过程:目标向量的第五个非零元素(27,2)和从比较运算电路3输出的中间输出结果mid元素(28,2)、(35,2)、(44,1)、(52,3)的索引比较,可以看出,目标元素(27,2)的行索引小于比较运算电路3输出的所有中间输出结果的行索引,所以本级的输出结果如下:
比较运算电路5的比较过程:目标向量的第六个非零元素(44,2)和从比较运算电路4输出的中间输出结果mid元素(28,2)、(35,2)、(44,1)、(52,3)的索引比较,结果如下:
比较运算电路6的比较过程:目标向量的第七个非零元素(52,1)和从比较运算电路5输出的中间输出结果mid元素(52,3)的索引比较,此时比较结束,没有中间输出结果,可以将中间输出结果置0,结果如下:
比较运算电路7不再做任何操作,直接将比较运算电路6输出的直接输出结果imm透传,作为最终的输出结果,最后一个比较运算电路没有中间输出结果。
针对图3,为方便理解,解释说明一下:假设目标向量元素是(5,2),可以看出,该元素的行索引是5(即,该元素在目标向量的第五行),数值是2。比较向量第一组的8个非零元素是(3,1)、(5,1)、(8,3)、(11,2)、(15,3)、(19,2)、(20,3)、(27,5),也可以表示为在数轴上可如图7所示。
按照图3的比较方法,目标向量元素(target)(5,2)先和比较向量的第一个非零元素(com0)(3,1)进行行索引比较,如图8示,显然target(5,2)的行索引大于com0(3,1)的行索引,则com0(3,1)可以送到直接输出电路。
接下来参见图9至图13,target(5,2)和com7(27,5)进行行索引比较,如图9所示,target的行索引是5,com7的行索引是27,显然target的行索引小于com7的行索引,接着就要和com6进行行索引比较,如图10所示,显然target的行索引还是小于com6的行索引,还有com1~com5没有和target进行行索引比较,采用二分法的方法进行比较运算,接下来将target的行索引和com3的行索引进行比较,如图11所示,target的行索引仍小于com3的行索引,下一步就是将target的行索引和com2的行索引进行比较,如图12所示,target的行索引小于com2的行索引,接下来target继续和com1的行索引进行比较,如图13所示,可以看出target的行索引和com1的行索引相等,接着对target和com1的数值进行取较小值的运算,可以看出,target的数值是2,com1的数值是1,两者取较小值是1,所以target和com1数值比较的结果是(5,1)。
需要说明的是:拼接的意思就是把索引5,和数值比较的结果1组合成一个数据对,如(5,1)。
target和com0~com7的比较就结束了,直接输出的向量元素有间接输出且需要被输出至下一个比较运算单元的向量元素有
以上对本发明的具体实施例进行的描述只是为了说明本发明的技术路线和特点,其目的在于让本领域内的技术人员能够了解本发明的内容并据以实施,但本发明并不限于上述特定实施方式。凡是在本发明权利要求的范围内做出的各种变化或修饰,都应涵盖在本发明的保护范围内。
Claims (8)
1.一种基于图计算加速器的稀疏矩阵列向量比较装置,所述稀疏矩阵列向量包括:至少一个比较向量和至少一个目标向量,其特征在于,所述装置包括:
N个比较运算电路,所述比较运算电路的数量大于等所述稀疏矩阵中列向量的非零元素的最大个数;
针对每一个比较向量,所述比较向量的所有非零元素输入第一个比较运算电路;
针对每一个目标向量,所述目标向量的所有非零元素分别输入至N个比较运算电路;
每一个比较运算电路包括:操作电路、直接输出模块和中间输出模块;其中,每一个比较运算电路的操作电路用于将比较向量的全部或部分非零元素和输入至比较运算电路的目标向量的一个非零元素进行比较;
N个比较运算电路通过中间输出模块、直接输出模块依次连接,具体地,第n-1个比较运算电路的中间输出模块、直接输出模块的结果分别输入至第n个比较运算电路;n属于N的元素;
第n个比较运算电路的操作电路对第n-1个比较运算电路的直接输出模块的结果进行透传,第n个比较运算电路的操作电路对第n-1个比较运算电路的中间输出模块的结果进行处理;
最后一个比较运算电路输出稀疏矩阵列向量比较后的结果向量。
2.根据权利要求1所述的稀疏矩阵列向量比较装置,其特征在于,
针对第一个比较运算电路的操作电路,基于比较策略将比较向量的所有非零元素和目标向量的第一个非零元素进行比较;
所述比较策略包括:比较向量中非零元素的行索引小于目标向量第一个非零元素的行索引的非零元素作为直接输出模块的输出结果;比较向量中大于目标向量第一个非零元素的行索引的非零元素作为中间输出模块的输出结果;比较向量中非零元素的行索引等于目标向量第一个非零元素的行索引的,则对这两个索引相同的非零元素进行运算;
针对第n个比较运算电路的操作电路,基于比较策略将第n-1个比较运算电路的中间输出模块输出的非零元素与目标向量输入至第n个比较运算电路的非零元素进行比较。
3.根据权利要求1所述的稀疏矩阵列向量比较装置,其特征在于,所述操作电路包括:N1个分组比较单元;所有分组比较单元都依次连接;
针对第一个比较运算电路的操作电路,将所述比较向量按照非零元素的顺序分为N1组;
第一个分组比较单元,基于比较策略将分组后比较向量的第一组非零元素和目标向量的第一个非零元素进行比较;
所述第一个比较运算电路的操作电路中第n1个分组比较单元,基于比较策略将分组后比较向量的第n1组非零元素和目标向量的第一个非零元素进行比较;
其中,n1为N1中的元素。
4.根据权利要求2所述的稀疏矩阵列向量比较装置,其特征在于,
若比较向量和目标向量中的非零元素个数均为64个,N和N1均为8,分组后比较向量的每一组的非零元素为8个,操作电路为8个分组比较单元CU0~CU7;
针对第一个分组比较单元CU0,若分组后比较向量的第一组非零元素的行索引与所述目标向量的第一个非零元素的行索引相同,则对两个行索引相同的非零元素作比较运算;比较运算后的结果传输至直接输出模块;
其他行索引小于目标向量的第一个非零元素的索引的非零元素传输到直接输出模块,大于目标向量的第一个非零元素的行索引的非零元素传输到中间接输出模块;
剩余分组比较单元CU1~CU7不再进行比较,将不再进行比较的比较向量的非零元素传输至操作电路连接的直接输出模块。
5.根据权利要求1至4任一所述的稀疏矩阵列向量比较装置,其特征在于,
所述稀疏矩阵的压缩格式采用的是CSCI压缩格式。
6.根据权利要求2所述的稀疏矩阵列向量比较装置,其特征在于,
所述操作电路中每一个分组比较单元的比较运算依据所述稀疏矩阵列向量比较装置所属的图计算加速器的应用确定。
7.根据权利要求4所述的稀疏矩阵列向量比较装置,其特征在于,
所述第一个分组比较单元CU0对两个行索引相同的非零元素作比较运算包括:基于广度优先搜索算法BFS,取两个数值的较小值。
8.一种图计算加速器,其特征在于,包括上述权利要求1至7任一所述的基于图计算加速器的稀疏矩阵列向量比较装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910877555.7A CN110598175B (zh) | 2019-09-17 | 2019-09-17 | 一种基于图计算加速器的稀疏矩阵列向量比较装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910877555.7A CN110598175B (zh) | 2019-09-17 | 2019-09-17 | 一种基于图计算加速器的稀疏矩阵列向量比较装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110598175A true CN110598175A (zh) | 2019-12-20 |
CN110598175B CN110598175B (zh) | 2021-01-01 |
Family
ID=68860273
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910877555.7A Active CN110598175B (zh) | 2019-09-17 | 2019-09-17 | 一种基于图计算加速器的稀疏矩阵列向量比较装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110598175B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090157787A1 (en) * | 2007-12-18 | 2009-06-18 | Electronics And Telecommunications Research Institute | Row-vector norm comparison method and row-vector norm comparison apparatus for inverse matrix |
CN105893333A (zh) * | 2016-03-25 | 2016-08-24 | 合肥工业大学 | 一种用于music算法中计算协方差矩阵的硬件电路 |
CN107315563A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行向量比较运算的装置和方法 |
CN108388446A (zh) * | 2018-02-05 | 2018-08-10 | 上海寒武纪信息科技有限公司 | 运算模块以及方法 |
CN108960418A (zh) * | 2018-08-08 | 2018-12-07 | 上海寒武纪信息科技有限公司 | 神经网络处理装置及其执行矩阵向量乘指令的方法 |
US20190095339A1 (en) * | 2017-09-27 | 2019-03-28 | Apple Inc. | System control using sparse data |
CN109919826A (zh) * | 2019-02-02 | 2019-06-21 | 西安邮电大学 | 一种用于图计算加速器的图数据压缩方法及图计算加速器 |
CN109949202A (zh) * | 2019-02-02 | 2019-06-28 | 西安邮电大学 | 一种并行的图计算加速器结构 |
CN110110851A (zh) * | 2019-04-30 | 2019-08-09 | 南京大学 | 一种lstm神经网络的fpga加速器及其加速方法 |
-
2019
- 2019-09-17 CN CN201910877555.7A patent/CN110598175B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090157787A1 (en) * | 2007-12-18 | 2009-06-18 | Electronics And Telecommunications Research Institute | Row-vector norm comparison method and row-vector norm comparison apparatus for inverse matrix |
CN105893333A (zh) * | 2016-03-25 | 2016-08-24 | 合肥工业大学 | 一种用于music算法中计算协方差矩阵的硬件电路 |
CN107315563A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行向量比较运算的装置和方法 |
US20190095339A1 (en) * | 2017-09-27 | 2019-03-28 | Apple Inc. | System control using sparse data |
CN108388446A (zh) * | 2018-02-05 | 2018-08-10 | 上海寒武纪信息科技有限公司 | 运算模块以及方法 |
CN108960418A (zh) * | 2018-08-08 | 2018-12-07 | 上海寒武纪信息科技有限公司 | 神经网络处理装置及其执行矩阵向量乘指令的方法 |
CN109919826A (zh) * | 2019-02-02 | 2019-06-21 | 西安邮电大学 | 一种用于图计算加速器的图数据压缩方法及图计算加速器 |
CN109949202A (zh) * | 2019-02-02 | 2019-06-28 | 西安邮电大学 | 一种并行的图计算加速器结构 |
CN110110851A (zh) * | 2019-04-30 | 2019-08-09 | 南京大学 | 一种lstm神经网络的fpga加速器及其加速方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110598175B (zh) | 2021-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108416327B (zh) | 一种目标检测方法、装置、计算机设备及可读存储介质 | |
EP3624018B1 (en) | Neural network computation device and method | |
CN109543816B (zh) | 一种基于权重捏合的卷积神经网络计算方法和*** | |
US20210349692A1 (en) | Multiplier and multiplication method | |
CN112200300B (zh) | 卷积神经网络运算方法及装置 | |
CN112257844B (zh) | 一种基于混合精度配置的卷积神经网络加速器及其实现方法 | |
CN110889416A (zh) | 一种基于级联改良网络的显著性物体检测方法 | |
CN108228536A (zh) | 使用FPGA实现Hermitian矩阵分解的方法 | |
CN112862091B (zh) | 一种基于快速卷积的资源复用型神经网络硬件加速电路 | |
CN104809161B (zh) | 一种对稀疏矩阵进行压缩和查询的方法及*** | |
CN112257366A (zh) | 一种用于等价性验证的cnf生成方法及*** | |
CN114138231B (zh) | 执行矩阵乘法运算的方法、电路及soc | |
CN110635809B (zh) | 一种基于公式语言的并行极化码bp译码器的设计方法 | |
CN115952846A (zh) | Ai算法架构的实现装置、稀疏卷积运算方法及相关设备 | |
CN110554854B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN110598175B (zh) | 一种基于图计算加速器的稀疏矩阵列向量比较装置 | |
JP2015503785A (ja) | Fft/dftの逆順ソーティングシステム、方法およびその演算システム | |
KR20020080789A (ko) | 패스트퓨리에변환 장치 | |
Liu et al. | Tcp-net: Minimizing operation counts of binarized neural network inference | |
CN115878957B (zh) | 一种矩阵乘法加速装置及方法 | |
WO2024124808A1 (zh) | 卷积计算单元、ai运算阵列、稀疏卷积运算方法及相关设备 | |
US20230206045A1 (en) | Deep learning acceleration with mixed precision | |
CN112269806B (zh) | 数据查询方法、装置、设备以及计算机存储介质 | |
US20230206046A1 (en) | Deep learning acceleration with mixed precision | |
CN116402106B (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 |