CN112507284A - 稀疏矩阵乘法在可重构处理器阵列上的实现方法及装置 - Google Patents
稀疏矩阵乘法在可重构处理器阵列上的实现方法及装置 Download PDFInfo
- Publication number
- CN112507284A CN112507284A CN202011508930.XA CN202011508930A CN112507284A CN 112507284 A CN112507284 A CN 112507284A CN 202011508930 A CN202011508930 A CN 202011508930A CN 112507284 A CN112507284 A CN 112507284A
- Authority
- CN
- China
- Prior art keywords
- processor
- array
- sparse matrix
- reconfigurable
- elements
- 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
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/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种稀疏矩阵乘法在可重构处理器阵列上的实现方法及装置,其中,该方法包括:采用列压缩格式存储待乘法运算的第一稀疏矩阵和第二稀疏矩阵,得到第一稀疏矩阵和第二稀疏矩阵中非零元素的数值数组、行号数组和列偏移数组;通过可重构处理器阵列中的多个处理器,采用列优先法对第一稀疏矩阵和第二稀疏矩阵中的非零元素执行乘法运算,得到多个压缩列,其中,每个压缩列包括一个数值数组和一个行号数组;通过可重构处理器阵列中的多个处理器,采用双调排序归并法对执行乘法运算后的多个压缩列进行归并处理,得到第一稀疏矩阵和第二稀疏矩阵的乘法运算结果。本发明能够在可重构处理阵列上高效实现稀疏矩阵乘法。
Description
技术领域
本发明涉及可重构计算领域,尤其涉及一种稀疏矩阵乘法在可重构处理器阵列上的实现方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
近年来,逐渐增长的数据量对计算芯片的功耗和性能提出了越来越高的要求。在过去的几十年间,随着摩尔定律的延续,半导体行业和处理器的性能都在迅速发展。然而,摩尔定律即将走到尽头,但人们对算力、性能和功耗的需求仍未停止,对最新一代设备,对更高性能和更低功耗的要求变得越来越严格。新型芯片架构应当能够执行多种应用,同时保持低功耗、小面积和较短的上市时间。
基于传统冯诺依曼架构的通用处理器具有最高的灵活性,能够胜任不同种类算法和任务的需求。然而,通用处理器每条指令执行时都需要经过取指、译码的过程,访问指令存储器的开销非常大,指令的串行执行也为流水带来了一定的困难,需要通过停顿(Stall)、冲刷(Flush)等方式实现,而且会有性能上的损失。尽管人们通过超长指令字、超标量处理器等方式,在一定程度上提高了指令的并行性,但仍未从根本上改变通用处理器功耗大、性能低的问题。另外,由于摩尔定律接近终结,通用处理器将面临着巨大挑战。
相比于通用处理器,专用集成电路(ASIC)将指令固化到芯片上,通过数据流驱动芯片运行,由于无需取指译码,ASIC具有极高的能量效率和运算速度,但也正是由于指令被固化,芯片只能执行单一应用,实现单一功能。ASIC的问题并不只在于此,芯片流片所需要的一次性工程费用(NRE)成本也很高,通用处理器销量很高,NRE分摊到每颗芯片上时就很低了,但ASIC往往只局限于某些特殊应用,销量难以分摊NRE成本,因此,ASIC目前主要在通信基带、网络流处理等方面得到使用。
可重构计算是为了解决能量效率和灵活性之间的矛盾而出现的。可重构计算处理器包括一个主处理器和一个可重构硬件,处理器提供灵活性,通过控制可重构硬件的行为来切换不同的功能;硬件在重构后,数据流在其中流动时受硬件暂时固化的指令而非通用处理器控制,因而具有准ASIC的性能。可重构芯片的灵活性和能量效应介于通用处理器和ASIC之间,在性能和灵活性上达到折衷的同时也确保了成本不会过高。
可重构处理器由可重构数据通路和可重构控制器组成。可重构数据通路通常采用许多基本处理单元(PE)组成的阵列结构,每个PE的功能都与通用处理器的算术逻辑单元(ALU)相似,但又不局限于ALU的功能,例如,部分PE具有访存功能,可以独立完成访存操作。此外PE间具有独特的互联结构,可以实现中间结果在不同PE间的转发和传递,从而实现复杂的运算功能,有的设计中还具有脉动阵列结构,可以实现数据复用和脉动传递,减少访存操作的次数。由于PE在ALU的基础上附加了访存、路由(Route)等功能,而且数据来源相比ALU也拓展到了有路由的PE,传统指令集很难完全描述每个PE的功能,因此动态可重构处理器通过配置信息控制其行为。在PE进行计算的同时,可重构控制器加载配置信息,发送给各个PE,PE完成当前计算任务后即可加载新的配置信息,切换到不同的功能。相比静态可重构处理器,这种方式减轻了重新配置的时间代价,而且具有很高的灵活性,但相应的会带来功耗上的增加。
众所周知,稀疏矩阵的最大特点是矩阵中非零元素的个数远远小于矩阵元素的总数,而且非零元素的分布没有规律。通常将矩阵中非零元素的总数与矩阵中所有元素的总数的比值小于0.05的矩阵称为稀疏矩阵,这个比值称为这个矩阵的稠密度。在不同应用场景下,定义稀疏矩阵的稠密度也有所不同。与之相区别的是,如果非零元素的分布存在规律,如上三角矩阵、下三角矩阵、对角矩阵等,则通常称为特殊矩阵,但也有将其视为稀疏矩阵的。目前,稀疏矩阵已广泛应用于电路模拟、图像处理、计算流体力学、统计物理等工程领域,在神经网络上也有应用。
由于可重构处理阵列的运算单元支持加法、乘法、乘累加、选择等运算,运算单元可以并行计算,因而,如何充分通过可重构处理阵列的流水线和并行化计算,高效实现稀疏矩阵乘法,减少传统矩阵乘法运算所需的配置次数和访存次数,是目前亟待解决的技术问题。
发明内容
本发明实施例中提供了一种稀疏矩阵乘法在可重构处理器阵列的实现方法,用以传统矩阵乘法运算所需的配置次数和访存次数较多的技术问题,该方法包括:采用列压缩格式存储待乘法运算的第一稀疏矩阵和第二稀疏矩阵,得到第一稀疏矩阵和第二稀疏矩阵中非零元素的数值数组、行号数组和列偏移数组;通过可重构处理器阵列中的多个处理器,采用列优先法对第一稀疏矩阵和第二稀疏矩阵中的非零元素执行乘法运算,得到多个压缩列,其中,每个压缩列包括一个数值数组和一个行号数组;通过可重构处理器阵列中的多个处理器,采用双调排序归并法对执行乘法运算后的多个压缩列进行归并处理,得到第一稀疏矩阵和第二稀疏矩阵的乘法运算结果。
本发明实施例中还提供了一种稀疏矩阵乘法在可重构处理器阵列上的实现方法,用以传统矩阵乘法运算所需的配置次数和访存次数较多的技术问题,该装置包括:稀疏矩阵压缩存储模块,用于采用列压缩格式存储待乘法运算的第一稀疏矩阵和第二稀疏矩阵,得到第一稀疏矩阵和第二稀疏矩阵中非零元素的数值数组、行号数组和列偏移数组;可重构乘法运算模块,用于通过可重构处理器阵列中的多个处理器,采用列优先法对第一稀疏矩阵和第二稀疏矩阵中的非零元素执行乘法运算,得到多个压缩列,其中,每个压缩列包括一个数值数组和一个行号数组;可重构加法运算模块,用于通过可重构处理器阵列中的多个处理器,采用双调排序归并法对执行乘法运算后的多个压缩列进行归并处理,得到第一稀疏矩阵和第二稀疏矩阵的乘法运算结果。
本发明实施例中还提供了一种计算机设备,用以传统矩阵乘法运算所需的配置次数和访存次数较多的技术问题,该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述稀疏矩阵乘法在可重构处理器阵列上的实现方法。
本发明实施例中还提供了一种计算机可读存储介质,用以传统矩阵乘法运算所需的配置次数和访存次数较多的技术问题,该计算机可读存储介质存储有执行上述稀疏矩阵乘法在可重构处理器阵列上的实现方法的计算机程序。
本发明实施例中,采用列压缩格式存储待乘法运算的第一稀疏矩阵和第二稀疏矩阵,得到第一稀疏矩阵和第二稀疏矩阵中非零元素的数值数组、行号数组和列偏移数组,进而通过可重构处理器阵列中的多个处理器,采用列优先法对第一稀疏矩阵和第二稀疏矩阵中的非零元素执行乘法运算,并采用双调排序归并法对执行乘法运算后的多个压缩列进行归并处理,得到第一稀疏矩阵和第二稀疏矩阵的乘法运算结果。本发明实施例能够在可重构处理阵列上高效实现稀疏矩阵乘法,减少传统矩阵乘法运算所需的配置次数和访存次数。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中提供的一种稀疏矩阵乘法在可重构处理器阵列上的实现方法流程图;
图2为本发明实施例中提供的一个稀疏矩阵的列压缩格式示意图;
图3为本发明实施例中提供的双调排序的过程示意图;
图4为本发明实施例中提供的乘法阶段的数据流示意图;
图5为本发明实施例中提供的乘法阶段的PE排布示意图;
图6为本发明实施例中提供的双调排序归并法的计算流程图;
图7为本发明实施例中提供的双调排序归并法的PE排布示意图;
图8为本发明实施例中提供的一种稀疏矩阵乘法在可重构处理器阵列上的实现装置示意图;
图9为本发明实施例中提供的一种计算机设备示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
由于可重构处理阵列的运算单元支持加法、乘法、乘累加、选择等运算,运算单元可以并行计算,因而,为了提高稀疏矩阵乘法的运算效率,本发明实施例中提供了一种稀疏矩阵乘法在可重构处理器阵列上的实现方法,相比传统的矩阵乘法运算,可以充分利用可重构处理阵列的流水线和并行化计算,减少所需的配置次数和访存次数。
例如,在可重构处理器阵列上实现稀疏矩阵乘法A×B,可首先采用列压缩格式存储矩阵A和矩阵B,然后使用矩阵B的每一列向量乘以矩阵A,然后将各列运算结果的相加合并排序,可得到矩阵A和矩阵B的乘积。
图1为本发明实施例中提供的一种稀疏矩阵乘法在可重构处理器阵列上的实现方法流程图,如图1所示,该方法包括如下步骤:
S101,采用列压缩格式存储待乘法运算的第一稀疏矩阵和第二稀疏矩阵,得到第一稀疏矩阵和第二稀疏矩阵中非零元素的数值数组、行号数组和列偏移数组。
需要说明的是,在稀疏矩阵中,由于矩阵中绝大部分是零元素,如果将这些零元素也存储在计算机里面,则浪费大量的存储空间。利用列压缩格式对稀疏矩阵进行存储,仅存储非零元素,能够节省大量存储空间。
典型的稀疏矩阵存储格式有三元组格式、列压缩格式、对角线格式、混合格式等,不同的存储格式对不同的矩阵压缩效率不同,运算前编码解码的复杂度也不相同。为了具有更好的稳定性和更高的存储效率,同时便于进行稀疏矩阵乘法,以及考虑到通用性和向其它矩阵运算的迁移性,本发明实施例选择用列压缩格式作为稀疏矩阵的存储格式。
列压缩格式(Compressed Sparse Column,CSC)是一种稀疏矩阵压缩格式,它需要用三组数据来表示:数值数组(Values)、行号数组(Row Indices)和列偏移数组(ColumnOffsets)。按照先增加行号后增加列号的顺序遍历稀疏矩阵,并用数值数组与行号数组分别顺序存储非零元素的数值和行号。列偏移表示该列的第一个元素在数值数组和行号数组中的起始位置,可以理解为用列指针的方式标记出该列第一个元素的位置,从而可以迅速找到某一列的所有元素,元素总数可以用下一列的元素位置减去该列的元素位置得到。最后在列偏移数组的末尾补上矩阵总的元素个数。一个稀疏矩阵(Matrix)的列压缩格式的如图2所示。
本发明实施例中,采用列压缩格式,并配以相应的乘法运算和加法运算方式,可以保证两个采用列压缩格式的稀疏矩阵相乘后仍然是列压缩格式,即在连续相乘的过程中无需进行格式的转换。
在具体实施时,上述S101可以通过如下步骤来实现:按照先增加行号后增加列号的顺序遍历第一稀疏矩阵或第二稀疏矩阵;使用数值数组与行号数组分别顺序存储第一稀疏矩阵或第二稀疏矩阵中遍历到的非零元素的数值和行号;根据第一稀疏矩阵或第二稀疏矩阵中非零元素的数值数组和行号数组,生成第一稀疏矩阵或第二稀疏矩阵的列偏移数组,其中,列偏移数组中包含:第一稀疏矩阵或第二稀疏矩阵中每一列首个非零元素在数值数组和行号数组中的位置,以及第一稀疏矩阵或第二稀疏矩阵中非零元素的个数。
S102,通过可重构处理器阵列中的多个处理器,采用列优先法对第一稀疏矩阵和第二稀疏矩阵中的非零元素执行乘法运算,得到多个压缩列,其中,每个压缩列包括一个数值数组和一个行号数组;
需要说明的是,矩阵的乘法运算方式,主要有内积法、外积法、行优先法、列优先法。这些矩阵乘法运算方式只在乘法顺序上有不同,最终所需进行的乘法总次数是一样的。但是考虑到稀疏矩阵中有很多零元素,如果在乘法过程中能够跳过零元素,就能大量减轻运算量。
本发明实施例中,采用列压缩格式对稀疏矩阵进行存储后,列优先法的乘法与之相性最好,这是因为:利用列压缩格式的每一列的行号与左矩阵的列号进行匹配,则该列的乘法结果可以表示为左矩阵相应列的线性组合,即行号不变、数值相乘,每次乘法仅对非零元素进行,从而保证了每次乘法运算都是有效的,且加法后得到该列对应的结果仍然是列压缩格式。
在一个实施例中,上述S102可以通过如下步骤来实现:通过第一处理器读取待运算两个元素的数值,通过第二处理器对待运算元素执行乘法运算,通过第三处理器将运算结果存储到可重构处理器阵列的共享存储器中;通过第四处理器读取待运算元素的行号,通过第五处理器对待运算元素进行路由,通过第六处理器将路由后的行号存储到可重构处理器阵列的共享存储器中;其中,第一处理器、第三处理器、第四处理器和第六处理器为可重构处理器阵列中处于边缘位置的处理器;第二处理器和第五处理器为可重构处理器阵列中处于内部位置的处理器。
S103,通过可重构处理器阵列中的多个处理器,采用双调排序归并法对执行乘法运算后的多个压缩列进行归并处理,得到第一稀疏矩阵和第二稀疏矩阵的乘法运算结果。
需要说明的是,本发明实施例中,在采用列压缩格式存储待乘法运算的第一稀疏矩阵和第二稀疏矩阵,并采用列优先法对第一稀疏矩阵和第二稀疏矩阵中的非零元素执行乘法运算,通过求解执行乘法运算后各个压缩列的和,即可得到第一稀疏矩阵和第二稀疏矩阵的乘法运算结果。
由于压缩列是有序的,因而,通过将两个压缩列反向拼接,则可得到一个有序序列,在一个实施例中,上述S103可以通过如下步骤来实现:将对执行乘法运算后的多个压缩列两两反向拼接,得到多个双调序列;通过可重构处理器阵列中的多个处理器,对每个双调序列中的各个元素按照数值大小进行排序,得到每个双调序列对应的有序序列;针对各个有序序列,将相同行号的数值相加,实现多个压缩列的归并处理。
在一个实施例中,在通过可重构处理器阵列中的多个处理器,对每个双调序列中的各个元素按照数值大小进行排序的时候,可以通过如下步骤来实现:通过第一处理器和第二处理器读取待比较的两个元素的数值;通过第三处理器对读取的两个元素执行比较运算;将比较后的两个元素分别存储到第四处理器和第五处理器中;通过第六处理器和第七处理器分别将第四处理器和第五处理器的元素存储到可重构处理器阵列的共享存储器中;通过第八处理器和第九处理器分别对第一处理器和第二处理器读取的元素进行路由;其中,第一处理器、第二处理器、第三处理器、第四处理器、第五处理器、第六处理器、第七处理器、第八处理器和第九处理器为可重构处理器阵列中处于边缘位置的处理器;第九处理器为可重构处理器阵列中处于内部位置的处理器。
本发明实施例中,每个压缩列由两个数组组成:行号和数值。因为这些压缩列都是有序的,因此相当于将这几个压缩列作排序,之后再将行号相同的数值合并相加即可。因此此处的加法,其本质是多个有序序列的归并。
有序序列归并的主要方法有归并排序和归并网络。归并排序方法需要逐项比较各序列的首元素值,并进行选择,这在可重构处理器阵列上实现时,流水线将会在每次选择操作时阻塞,严重影响了合并的性能。因此本发明使用双调排序归并。
双调排序归并法用于对双调序列进行归并。双调序列指的是一个先单调递增后单调递减,或者先单调递减后单调递增的序列。对一个双调序列,可以通过如下方式变成有序序列:假定序列长度为n=2^k,并将所有元素从上到下排成一列,则首先将第1个元素与第1+n/2比较,将小的元素放在上面,大的元素放在下面,接下来2和2+n/2比较,以此类推完成此轮比较,此时得到的序列,上半部分的每个元素都比下半部分的每个元素小(这是双调序列的特性,可以用0-1规则证明)。然后看成2个n/2长度的序列,因为它们都是双调序列,所以可以重复上面的过程,总共重复k轮,最后一轮是长度为2的序列,因此该轮比完后就能得到最终的排序结果。
由于压缩列都是有序的,因此可以用双调排序归并法进行归并,将一个压缩列与另一个压缩列反向拼接在一起就构成了一个双调序列,双调排序归并后得到一个新的压缩列,这样递归下去就能完成所有压缩列的合并。一次双调排序的过程如图3所示,一个双调序列经log2(n)次排序后变为了一个有序序列。
与归并排序法相比,双调排序归并法的优点在于其排序次数和排序过程与数据本身无关,是对数据不敏感的稳定的排序算法。而且每个比较单元的结构是完全相同的,即在可重构处理器阵列上实现时,进行比较的可重构处理器无需调整其配置,只需要调整负责选择数据的可重构处理器,即可实现新一轮的比较和排序。同一轮比较可以在可重构处理器阵列上并行执行。
每次向量合并完成后,都需要合并相同序号元素,因为在此情况下相同序号元素至多有两个且必定相邻,只需要过一级相邻元素比较器即可计算出是否需要合并,再经过一个选择单元,将前一个数的值更新为新的和,将后一个数的值更新为0。最后存储时,需要经过一个判断是否为0的比较器,如果为0就存入一个废弃的地址,否则存入对应位置即可。此处即使是0元素也要进行一次存储的目的是减少负责存储的可重构处理器的配置次数,同时不让流水线中断。
由此完成两个压缩列的合并,且合并的结果也是压缩列。用递归的方式即可完成加法的全过程。
下面,结合图4~图7,对本发明实施例进行详细说明。
本发明实施例中提供的稀疏矩阵乘法在可重构处理器阵列上的实现方法,利用可重构处理器阵列实现加法、乘法、减法、选择、访存、路由等基本运算,能够高效完成稀疏矩阵的乘法运算。在具体实施时,可以包括如下三部分:
(一)稀疏矩阵压缩存储:
采用列压缩格式来存储稀疏矩阵,则稀疏矩阵用三个数组表示:数值数组、行号数组和列偏移数组。实际运算过程中给出的是数值数组和行号数组的基址,若要获取特定列的数值数组和行号数组,需要用基址加上列偏移数组的偏移量。数组的长度可以用相邻偏移量的差求得。
(二)稀疏矩阵压缩存储:
乘法运算主要有以下3步:用边缘的PE读取行号和数据,通过内部的PE实现乘法和路由,再用边缘的PE将行号和数据存入shared memory中。数据的存取都是连续进行的,因此可以流水线执行,无需调整配置。数据流图如图4所示,各PE执行功能的排布如图5所示。图4所示的Value表示数值;Row Indices表示行号;Load、Mux、Route、Store分别表示读取单元、乘法运算单元、路由单元、存储单元。每个功能单元均可由可重构处理单元阵列中的一个处理单元来实现,在可重构处理阵列中的排布如图5所示。
(三)稀疏矩阵压缩存储:
加法运算主要有以下两部分:用双调排序归并法进行合并,以及相邻元素的相加和存储。
双调排序归并法的比较单元功能始终不变,通过改变输入的地址来读取不同的数,比较后将较大的数和较小的数分别存入相应的位置,以实现一次比较和交换顺序。其计算流图如图6所示,PE排布如图7所示。图6所示的Load、Minus、Route、SEL、Store分别表示读取单元、减法运算单元、选择单元、存储单元。每个功能单元均可由可重构处理单元阵列中的一个处理单元来实现,在可重构处理阵列中的排布如图7所示。
相邻元素在相加和存储时,所使用的比较器与排序时所使用的比较器完全相同,区别仅在于SEL单元(选择单元)的输入和Store单元(存储单元)的输入不同,如果两个相邻元素序号不同,则正常存储即可;如果两个相邻元素的序号不同,则需要将二者相加的结果正常存储,同时另一次存储需要存入一个废弃的地址,以保证流水线不中断。
由上可知,本发明实施例中,通过对两个待乘法运算的稀疏矩阵,采用列压缩存储格式存储,并采用列优先的方法进行乘法,减少了所需的乘法次数,保证每次乘法都是有效的;通过双调排序的方法实现排序和累加功能,利于硬件流水执行归并过程。本发明提出了该稀疏矩阵乘法方案在可重构处理器上的配置和实现方案,有效实现了稀疏矩阵乘法。
基于同一发明构思,本发明实施例中还提供了一种稀疏矩阵乘法在可重构处理器阵列上的实现装置,如下面的实施例所述。由于该装置解决问题的原理与稀疏矩阵乘法在可重构处理器阵列上的实现方法相似,因此该装置的实施可以参见稀疏矩阵乘法在可重构处理器阵列上的实现方法的实施,重复之处不再赘述。
图8为本发明实施例中提供的一种稀疏矩阵乘法在可重构处理器阵列上的实现装置示意图,如图8所示,该装置包括:稀疏矩阵压缩存储模块81、可重构乘法运算模块82和可重构加法运算模块83。
其中,稀疏矩阵压缩存储模块81,用于采用列压缩格式存储待乘法运算的第一稀疏矩阵和第二稀疏矩阵,得到第一稀疏矩阵和第二稀疏矩阵中非零元素的数值数组、行号数组和列偏移数组;可重构乘法运算模块82,用于通过可重构处理器阵列中的多个处理器,采用列优先法对第一稀疏矩阵和第二稀疏矩阵中的非零元素执行乘法运算,得到多个压缩列,其中,每个压缩列包括一个数值数组和一个行号数组;可重构加法运算模块83,用于通过可重构处理器阵列中的多个处理器,采用双调排序归并法对执行乘法运算后的多个压缩列进行归并处理,得到第一稀疏矩阵和第二稀疏矩阵的乘法运算结果。
在一个实施例中,上述稀疏矩阵压缩存储模块81还用于按照先增加行号后增加列号的顺序遍历第一稀疏矩阵或第二稀疏矩阵;使用数值数组与行号数组分别顺序存储第一稀疏矩阵或第二稀疏矩阵中遍历到的非零元素的数值和行号;根据第一稀疏矩阵或第二稀疏矩阵中非零元素的数值数组和行号数组,生成第一稀疏矩阵或第二稀疏矩阵的列偏移数组,其中,列偏移数组中包含:第一稀疏矩阵或第二稀疏矩阵中每一列首个非零元素在数值数组和行号数组中的位置,以及第一稀疏矩阵或第二稀疏矩阵中非零元素的个数。
在一个实施例中,上述可重构乘法运算模块82可具体包括:乘法运算模块821,用于通过第一处理器读取待运算两个元素的数值,通过第二处理器对待运算元素执行乘法运算,通过第三处理器将运算结果存储到可重构处理器阵列的共享存储器中;乘法运算阶段路由模块822,用于通过第四处理器读取待运算元素的行号,通过第五处理器对待运算元素进行路由,通过第六处理器将路由后的行号存储到可重构处理器阵列的共享存储器中;其中,第一处理器、第三处理器、第四处理器和第六处理器为可重构处理器阵列中处于边缘位置的处理器;第二处理器和第五处理器为可重构处理器阵列中处于内部位置的处理器。
在一个实施例中,上述可重构加法运算模块83还用于将对执行乘法运算后的多个压缩列两两反向拼接,得到多个双调序列;通过可重构处理器阵列中的多个处理器,对每个双调序列中的各个元素按照数值大小进行排序,得到每个双调序列对应的有序序列;针对各个有序序列,将相同行号的数值相加,实现多个压缩列的归并处理。
在一个实施例中,上述可重构加法运算模块83可具体包括:比较模块831,用于通过第一处理器和第二处理器读取待比较的两个元素的数值,通过第三处理器对读取的两个元素执行比较运算,将比较后的两个元素分别存储到第四处理器和第五处理器中;存储模块832,用于通过第六处理器和第七处理器分别将第四处理器和第五处理器的元素存储到可重构处理器阵列的共享存储器中;加法运算阶段路由模块833,用于通过第八处理器和第九处理器分别对第一处理器和第二处理器读取的元素进行路由;其中,第一处理器、第二处理器、第三处理器、第四处理器、第五处理器、第六处理器、第七处理器、第八处理器和第九处理器为可重构处理器阵列中处于边缘位置的处理器;第九处理器为可重构处理器阵列中处于内部位置的处理器。
基于同一发明构思,本发明实施例中还提供了一种计算机设备,用以传统矩阵乘法运算所需的配置次数和访存次数较多的技术问题,图9为本发明实施例中提供的一种计算机设备示意图,如图9所示,该计算机设备90包括存储器901、处理器902及存储在存储器901上并可在处理器902上运行的计算机程序,处理器902执行计算机程序时实现上述稀疏矩阵乘法在可重构处理器阵列上的实现方法。
基于同一发明构思,本发明实施例中还提供了一种计算机可读存储介质,用以传统矩阵乘法运算所需的配置次数和访存次数较多的技术问题,该计算机可读存储介质存储有执行上述稀疏矩阵乘法在可重构处理器阵列上的实现方法的计算机程序。
综上所述,本发明实施例中提供了一种稀疏矩阵乘法在可重构处理器阵列上的实现方法、装置、计算机设备及计算机可读存储介质,采用列压缩格式存储待乘法运算的第一稀疏矩阵和第二稀疏矩阵,得到第一稀疏矩阵和第二稀疏矩阵中非零元素的数值数组、行号数组和列偏移数组,进而通过可重构处理器阵列中的多个处理器,采用列优先法对第一稀疏矩阵和第二稀疏矩阵中的非零元素执行乘法运算,并采用双调排序归并法对执行乘法运算后的多个压缩列进行归并处理,得到第一稀疏矩阵和第二稀疏矩阵的乘法运算结果。本发明实施例能够在可重构处理阵列上高效实现稀疏矩阵乘法,减少传统矩阵乘法运算所需的配置次数和访存次数。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种稀疏矩阵乘法在可重构处理器阵列上的实现方法,其特征在于,包括:
采用列压缩格式存储待乘法运算的第一稀疏矩阵和第二稀疏矩阵,得到第一稀疏矩阵和第二稀疏矩阵中非零元素的数值数组、行号数组和列偏移数组;
通过可重构处理器阵列中的多个处理器,采用列优先法对第一稀疏矩阵和第二稀疏矩阵中的非零元素执行乘法运算,得到多个压缩列,其中,每个压缩列包括一个数值数组和一个行号数组;
通过可重构处理器阵列中的多个处理器,采用双调排序归并法对执行乘法运算后的多个压缩列进行归并处理,得到第一稀疏矩阵和第二稀疏矩阵的乘法运算结果。
2.如权利要求1所述的方法,其特征在于,采用列压缩格式存储待乘法运算的第一稀疏矩阵和第二稀疏矩阵,得到第一稀疏矩阵和第二稀疏矩阵中非零元素的数值数组、行号数组和列偏移数组,包括:
按照先增加行号后增加列号的顺序遍历第一稀疏矩阵或第二稀疏矩阵;
使用数值数组与行号数组分别顺序存储第一稀疏矩阵或第二稀疏矩阵中遍历到的非零元素的数值和行号;
根据第一稀疏矩阵或第二稀疏矩阵中非零元素的数值数组和行号数组,生成第一稀疏矩阵或第二稀疏矩阵的列偏移数组,其中,所述列偏移数组中包含:所述第一稀疏矩阵或第二稀疏矩阵中每一列首个非零元素在数值数组和行号数组中的位置,以及所述第一稀疏矩阵或第二稀疏矩阵中非零元素的个数。
3.如权利要求1所述的方法,其特征在于,通过可重构处理器阵列中的多个处理器,采用列优先法对第一稀疏矩阵和第二稀疏矩阵中的非零元素执行乘法运算,包括:
通过第一处理器读取待运算两个元素的数值,通过第二处理器对待运算元素执行乘法运算,通过第三处理器将运算结果存储到可重构处理器阵列的共享存储器中;
通过第四处理器读取待运算元素的行号,通过第五处理器对待运算元素进行路由,通过第六处理器将路由后的行号存储到可重构处理器阵列的共享存储器中;
其中,第一处理器、第三处理器、第四处理器和第六处理器为可重构处理器阵列中处于边缘位置的处理器;第二处理器和第五处理器为可重构处理器阵列中处于内部位置的处理器。
4.如权利要求1所述的方法,其特征在于,通过可重构处理器阵列中的多个处理器,采用双调排序归并法对执行乘法运算后的多个压缩列进行归并处理,包括:
将对执行乘法运算后的多个压缩列两两反向拼接,得到多个双调序列;
通过可重构处理器阵列中的多个处理器,对每个双调序列中的各个元素按照数值大小进行排序,得到每个双调序列对应的有序序列;
针对各个有序序列,将相同行号的数值相加,实现多个压缩列的归并处理。
5.如权利要求4所述的方法,其特征在于,通过可重构处理器阵列中的多个处理器,对每个双调序列中的各个元素按照数值大小进行排序,得到每个双调序列对应的有序序列,包括:
通过第一处理器和第二处理器读取待比较的两个元素的数值;
通过第三处理器对读取的两个元素执行比较运算;
将比较后的两个元素分别存储到第四处理器和第五处理器中;
通过第六处理器和第七处理器分别将第四处理器和第五处理器的元素存储到可重构处理器阵列的共享存储器中;
通过第八处理器和第九处理器分别对第一处理器和第二处理器读取的元素进行路由;
其中,第一处理器、第二处理器、第三处理器、第四处理器、第五处理器、第六处理器、第七处理器、第八处理器和第九处理器为可重构处理器阵列中处于边缘位置的处理器;所述第九处理器为可重构处理器阵列中处于内部位置的处理器。
6.一种稀疏矩阵乘法在可重构处理器阵列上的实现装置,其特征在于,包括:
稀疏矩阵压缩存储模块,用于采用列压缩格式存储待乘法运算的第一稀疏矩阵和第二稀疏矩阵,得到第一稀疏矩阵和第二稀疏矩阵中非零元素的数值数组、行号数组和列偏移数组;
可重构乘法运算模块,用于通过可重构处理器阵列中的多个处理器,采用列优先法对第一稀疏矩阵和第二稀疏矩阵中的非零元素执行乘法运算,得到多个压缩列,其中,每个压缩列包括一个数值数组和一个行号数组;
可重构加法运算模块,用于通过可重构处理器阵列中的多个处理器,采用双调排序归并法对执行乘法运算后的多个压缩列进行归并处理,得到第一稀疏矩阵和第二稀疏矩阵的乘法运算结果。
7.如权利要求6所述的装置,其特征在于,所述可重构乘法运算模块具体包括:
乘法运算模块,用于通过第一处理器读取待运算两个元素的数值,通过第二处理器对待运算元素执行乘法运算,通过第三处理器将运算结果存储到可重构处理器阵列的共享存储器中;
乘法运算阶段路由模块,用于通过第四处理器读取待运算元素的行号,通过第五处理器对待运算元素进行路由,通过第六处理器将路由后的行号存储到可重构处理器阵列的共享存储器中;
其中,第一处理器、第三处理器、第四处理器和第六处理器为可重构处理器阵列中处于边缘位置的处理器;第二处理器和第五处理器为可重构处理器阵列中处于内部位置的处理器。
8.如权利要求6所述的装置,其特征在于,所述可重构加法运算模块还用于:将对执行乘法运算后的多个压缩列两两反向拼接,得到多个双调序列;通过可重构处理器阵列中的多个处理器,对每个双调序列中的各个元素按照数值大小进行排序,得到每个双调序列对应的有序序列;针对各个有序序列,将相同行号的数值相加,实现多个压缩列的归并处理;
所述可重构加法运算模块具体包括:
比较模块,用于通过第一处理器和第二处理器读取待比较的两个元素的数值,通过第三处理器对读取的两个元素执行比较运算,将比较后的两个元素分别存储到第四处理器和第五处理器中;
存储模块,用于通过第六处理器和第七处理器分别将第四处理器和第五处理器的元素存储到可重构处理器阵列的共享存储器中;
加法运算阶段路由模块,用于通过第八处理器和第九处理器分别对第一处理器和第二处理器读取的元素进行路由;
其中,第一处理器、第二处理器、第三处理器、第四处理器、第五处理器、第六处理器、第七处理器、第八处理器和第九处理器为可重构处理器阵列中处于边缘位置的处理器;所述第九处理器为可重构处理器阵列中处于内部位置的处理器。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5任一所述稀疏矩阵乘法在可重构处理器阵列上的实现方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至5任一所述稀疏矩阵乘法在可重构处理器阵列上的实现方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011508930.XA CN112507284B (zh) | 2020-12-18 | 2020-12-18 | 稀疏矩阵乘法在可重构处理器阵列上的实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011508930.XA CN112507284B (zh) | 2020-12-18 | 2020-12-18 | 稀疏矩阵乘法在可重构处理器阵列上的实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112507284A true CN112507284A (zh) | 2021-03-16 |
CN112507284B CN112507284B (zh) | 2022-08-12 |
Family
ID=74921738
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011508930.XA Active CN112507284B (zh) | 2020-12-18 | 2020-12-18 | 稀疏矩阵乘法在可重构处理器阵列上的实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112507284B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113111303A (zh) * | 2021-03-30 | 2021-07-13 | 网易有道信息技术(北京)有限公司 | 矩阵乘法运算方法、装置、介质和计算设备 |
CN113506589A (zh) * | 2021-06-28 | 2021-10-15 | 华中科技大学 | 一种稀疏矩阵存算系统及方法 |
WO2022222578A1 (zh) * | 2021-04-21 | 2022-10-27 | 华为技术有限公司 | 一种聚合通信的方法、系统和计算机设备 |
CN118244139A (zh) * | 2024-05-20 | 2024-06-25 | 广汽能源科技有限公司 | 一致性检测方法、装置、电子设备及计算机可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160140084A1 (en) * | 2014-11-14 | 2016-05-19 | Advanced Micro Devices, Inc. | Efficient sparse matrix-vector multiplication on parallel processors |
CN108351786A (zh) * | 2015-12-15 | 2018-07-31 | 英特尔公司 | 在指令集架构中对数据进行排序并且合并经排序数据 |
CN109710213A (zh) * | 2018-12-25 | 2019-05-03 | 广东浪潮大数据研究有限公司 | 一种稀疏矩阵加速计算方法、装置、设备及其系统 |
CN110888832A (zh) * | 2018-09-10 | 2020-03-17 | 东京计器株式会社 | 可重构处理器 |
CN111796796A (zh) * | 2020-06-12 | 2020-10-20 | 杭州云象网络技术有限公司 | 基于稀疏矩阵乘法的fpga存储方法、计算方法、模块和fpga板 |
-
2020
- 2020-12-18 CN CN202011508930.XA patent/CN112507284B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160140084A1 (en) * | 2014-11-14 | 2016-05-19 | Advanced Micro Devices, Inc. | Efficient sparse matrix-vector multiplication on parallel processors |
CN108351786A (zh) * | 2015-12-15 | 2018-07-31 | 英特尔公司 | 在指令集架构中对数据进行排序并且合并经排序数据 |
CN110888832A (zh) * | 2018-09-10 | 2020-03-17 | 东京计器株式会社 | 可重构处理器 |
CN109710213A (zh) * | 2018-12-25 | 2019-05-03 | 广东浪潮大数据研究有限公司 | 一种稀疏矩阵加速计算方法、装置、设备及其系统 |
CN111796796A (zh) * | 2020-06-12 | 2020-10-20 | 杭州云象网络技术有限公司 | 基于稀疏矩阵乘法的fpga存储方法、计算方法、模块和fpga板 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113111303A (zh) * | 2021-03-30 | 2021-07-13 | 网易有道信息技术(北京)有限公司 | 矩阵乘法运算方法、装置、介质和计算设备 |
CN113111303B (zh) * | 2021-03-30 | 2022-04-05 | 网易有道信息技术(北京)有限公司 | 数据读取方法、装置、介质和计算设备 |
WO2022222578A1 (zh) * | 2021-04-21 | 2022-10-27 | 华为技术有限公司 | 一种聚合通信的方法、系统和计算机设备 |
CN113506589A (zh) * | 2021-06-28 | 2021-10-15 | 华中科技大学 | 一种稀疏矩阵存算系统及方法 |
CN113506589B (zh) * | 2021-06-28 | 2022-04-26 | 华中科技大学 | 一种稀疏矩阵存算系统及方法 |
WO2023272917A1 (zh) * | 2021-06-28 | 2023-01-05 | 华中科技大学 | 一种稀疏矩阵存算系统及方法 |
CN118244139A (zh) * | 2024-05-20 | 2024-06-25 | 广汽能源科技有限公司 | 一致性检测方法、装置、电子设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112507284B (zh) | 2022-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112507284B (zh) | 稀疏矩阵乘法在可重构处理器阵列上的实现方法及装置 | |
JP6977239B2 (ja) | 行列乗算器 | |
CN111656367A (zh) | 神经网络加速器的系统和体系结构 | |
JP2020533691A (ja) | Simd命令を用いた効率的な直接畳み込み | |
US20040139131A1 (en) | Method and system for performing calculation operations and a device | |
JP7461945B2 (ja) | 部分行列の順序付けを伴う行列乗算器 | |
US6601077B1 (en) | DSP unit for multi-level global accumulation | |
JP7241470B2 (ja) | ベクトルプロセッサの配列ソート方法 | |
CN111930519B (zh) | 用于分布式数据处理的并行决策系统及其方法 | |
JPH10187438A (ja) | 乗算器の入力に対する遷移を減少させる方法 | |
US20210200711A1 (en) | System and Method for Configurable Systolic Array with Partial Read/Write | |
CN104182207A (zh) | 处理器中的移动平均处理及处理器 | |
US9361065B2 (en) | Processor and processing method | |
CN112446007A (zh) | 一种矩阵运算方法、运算装置以及处理器 | |
JP7038608B2 (ja) | 半導体装置 | |
JP4310500B2 (ja) | 重要成分優先計算方式ならびに装置 | |
KR19990011774A (ko) | 비디오 압축 및 해제를 위한 벡터 프로세서 명령어 | |
WO2019023910A1 (zh) | 数据处理方法和设备 | |
CN111027688A (zh) | 一种基于fpga的神经网络计算器生成方法及装置 | |
JP2016224801A (ja) | 並列計算機システム、並列計算方法及びプログラム | |
US20230129750A1 (en) | Performing a floating-point multiply-add operation in a computer implemented environment | |
GB2523805A (en) | Data processing apparatus and method for performing vector scan operation | |
CN113407154A (zh) | 一种向量计算装置及方法 | |
US20240004830A1 (en) | Floorplan-optimized matrix extension architecture for processors | |
WO2020246598A1 (ja) | 演算装置、演算方法、および演算プログラム |
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 |