CN114692074A - 矩阵乘法电路、方法及相关产品 - Google Patents
矩阵乘法电路、方法及相关产品 Download PDFInfo
- Publication number
- CN114692074A CN114692074A CN202011563258.4A CN202011563258A CN114692074A CN 114692074 A CN114692074 A CN 114692074A CN 202011563258 A CN202011563258 A CN 202011563258A CN 114692074 A CN114692074 A CN 114692074A
- Authority
- CN
- China
- Prior art keywords
- circuit
- index
- vector
- matrix
- row
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本披露公开了一种矩阵乘法电路、利用矩阵乘法电路执行稀疏矩阵乘法的方法及相关产品。该矩阵乘法电路可以实现为计算装置包括在组合处理装置中,该组合处理装置还可以包括接口装置和其他处理装置。该计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于存储该计算装置和其他处理装置的数据。本披露的方案提供了支持稀疏矩阵乘法的电路,其可以简化处理,提高机器的处理效率。
Description
技术领域
本披露一般地涉及数据处理领域。更具体地,本披露涉及矩阵乘法电路、利用矩阵乘法电路执行稀疏矩阵乘法的方法、芯片和板卡。
背景技术
稀疏矩阵在数据处理中占有一定的比例。例如,近年来迅猛发展的深度学习算法是一种计算密集型和存储密集型的工具,随着信息处理任务的日趋复杂,对算法实时性和准确性要求不断增高,神经网络往往会被设计得越来越深,使得其计算量和存储空间需求越来越大,导致现存的基于深度学习的人工智能技术难以直接应用在硬件资源受限的手机、卫星或嵌入式设备上。
因此,深度神经网络模型的压缩、加速、优化变得格外重要。稀疏化正是模型轻量化方法之一。网络参数稀疏化是通过适当的方法减少较大网络中的冗余成分,以降低网络对计算量和存储空间的需求。这种网络参数稀疏化将会产生稀疏矩阵。
稀疏矩阵矩阵的性质决定了它能够利用数据结构特点极大地降低运算和存储复杂度。因此,稀疏矩阵相关存储和运算方式的研究和硬件化实现,能够为处理相关数据结构的处理性能带来巨大的提升。现有的硬件不能充分利用稀疏矩阵的特性,有效地支持稀疏矩阵的相关运算。
发明内容
为了至少部分地解决背景技术中提到的一个或多个技术问题,本披露的方案提供了一种矩阵乘法电路、利用矩阵乘法电路来执行稀疏矩阵乘法的方法、芯片和板卡。
在第一方面中,本披露公开一种矩阵乘法电路,包括:向量标量乘法电路,配置用于对左乘矩阵中每一行中的各个数据元素分别与右乘矩阵的对应行向量执行乘法运算,得到多个中间行向量,其中所述左乘矩阵和右乘矩阵中至少一个是由稀疏矩阵中的有效数据元素构成的致密矩阵;以及向量排序累加电路,配置用于将基于左乘矩阵中同一行的数据元素得到的多个所述中间行向量进行排序累加,以生成融合行向量作为结果矩阵中对应的行向量。
在第二方面中,本披露提供一种芯片,包括前述第一方面任一实施例的电路。
在第三方面中,本披露提供一种板卡,包括前述第二方面任一实施例的芯片。
在第四方面中,本披露提供一种使用根据前述第一方面任一实施例的矩阵乘法电路来执行稀疏矩阵乘法的方法。
通过如上所提供的矩阵乘法电路、使用该矩阵乘法电路来执行稀疏矩阵乘法的方法、芯片和板卡,本披露实施例提供了一种支持稀疏矩阵乘法的硬件电路,其能够通过优化乘法运算过程,极大降低运算复杂度,由此提高机器的处理效率。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1示出本披露实施例的板卡的结构图;
图2示出本披露实施例的组合处理装置的结构图;
图3示出本披露实施例的单核或多核计算装置的处理器核的内部结构示意图;
图4示出几种稀疏矩阵的存储方式;
图5示出根据本披露实施例的矩阵乘法电路的示例性结构框图;以及
图6示出本披露实施例的向量排序累加电路的示例性电路图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中可能出现的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本披露的具体实施方式。
图1示出本披露实施例的一种板卡10的结构示意图。如图1所示,板卡10包括芯片101,其是一种系统级芯片(System on Chip,SoC),或称片上系统,集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,用以支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求。特别是深度学习技术大量应用在云端智能领域,云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,此实施例的板卡10适用在云端智能应用,具有庞大的片外存储、片上存储和强大的计算能力。
芯片101通过对外接口装置102与外部设备103相连接。外部设备103例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备103通过对外接口装置102传递至芯片101。芯片101的计算结果可以经由对外接口装置102传送回外部设备103。根据不同的应用场景,对外接口装置102可以具有不同的接口形式,例如PCIe接口等。
板卡10还包括用于存储数据的存储器件104,其包括一个或多个存储单元105。存储器件104通过总线与控制器件106和芯片101进行连接和数据传输。板卡10中的控制器件106配置用于对芯片101的状态进行调控。为此,在一个应用场景中,控制器件106可以包括单片机(Micro Controller Unit,MCU)。
图2是示出此实施例的芯片101中的组合处理装置的结构图。如图2中所示,组合处理装置20包括计算装置201、接口装置202、处理装置203和存储装置204。
计算装置201配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通过接口装置202与处理装置203进行交互,以共同完成用户指定的操作。
接口装置202用于在计算装置201与处理装置203间传输数据和控制指令。例如,计算装置201可以经由接口装置202从处理装置203中获取输入数据,写入计算装置201片上的存储装置。进一步,计算装置201可以经由接口装置202从处理装置203中获取控制指令,写入计算装置201片上的控制缓存中。替代地或可选地,接口装置202也可以读取计算装置201的存储装置中的数据并传输给处理装置203。
处理装置203作为通用的处理装置,执行包括但不限于数据搬运、对计算装置201的开启和/或停止等基本控制。根据实现方式的不同,处理装置203可以是中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算装置201而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置201和处理装置203整合共同考虑时,二者视为形成异构多核结构。
存储装置204用以存储待处理的数据,其可以是DRAM,为DDR内存,大小通常为16G或更大,用于保存计算装置201和/或处理装置203的数据。
图3示出了计算装置201为单核或多核装置时处理器核的内部结构示意图。计算装置301用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,计算装置301包括三大模块:控制模块31、运算模块32及存储模块33。
控制模块31用以协调并控制运算模块32和存储模块33的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,IFU)311及指令译码单元(instructiondecode unit,IDU)312。取指单元311用以获取来自处理装置203的指令,指令译码单元312则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块32和存储模块33。
运算模块32包括向量运算单元321及矩阵运算单元322。向量运算单元321用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元322负责深度学习算法的核心计算,即矩阵乘及卷积。
存储模块33用来存储或搬运相关数据,包括神经元存储单元(neuron RAM,NRAM)331、参数存储单元(weight RAM,WRAM)332、直接内存访问模块(direct memory access,DMA)333。NRAM 331用以存储输入神经元、输出神经元和计算后的中间结果;WRAM 332则用以存储深度学习网络的卷积核,即权值;DMA 333通过总线34连接DRAM 204,负责计算装置301与DRAM 204间的数据搬运。
本披露的实施例基于前述硬件环境,提供一种矩阵乘法电路,其可以优化稀疏矩阵乘法运算,极大降低运算复杂度。
在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵。简单来说,稀疏矩阵就是绝大部分都是0的矩阵,只包含很少的非零值。下面示出了一个大小为3×6的稀疏矩阵的示例:
稀疏矩阵因为绝大部分都是0元素,如果仍然按照普通方式存储,无疑会浪费很多空间;同时如果进行运算时也按普通方式计算,则零元素对最终结果没有帮助,反而增加了许多无效计算。
对于稀疏矩阵的存储,为了达到压缩的目的,只存储非零元素值(有时也称为有效元素值),但是也要保留非零元素的位置,方便恢复。因此,稀疏矩阵的存储不仅存储非零元素值,同时存储其坐标位置(行索引,列索引)。
图4示出了几种稀疏矩阵的存储方式。或者说,图4提供了几种用于存储稀疏矩阵的数据结构。
COO存储方式,称为坐标格式。COO方式采用三个数组来存储稀疏矩阵,其分别存储非零元素坐标的行索引(行号)、列索引(列号)和数值。这三个数组的长度均为稀疏矩阵中非零元素的个数。理论上稀疏矩阵中的元素在存储时顺序可以是任意的,但是为了方便元素访问,存储时先按照先左后右、先上后下顺序进行存储,也即按照行优先存储。
如图所示,对于第一个元素“1”,其行索引为0,列索引为0,数值为1;对于第二个元素“2”,其行索引为0,列索引为1,数值为2;其他非零元素进行类似存储。从图中可以看出,COO这种存储方式中,行索引数组和列索引数组存在一定的重复元素。
CSR存储方式,称为压缩稀疏行格式。CSR方式对COO格式中的行索引数组进行压缩,其他两个数组保持不变,从而三个数组分别是行指针、列索引和数值。列索引数组和数值数组的长度仍然是非零元素的个数。行指针数组则存储每行第一个非零元素距离稀疏矩阵第一个非零元素的偏移位置,其最后一个元素存储稀疏矩阵中非零元素的总个数,因此行指针数组的长度是稀疏矩阵行数加1。
如图所示,列索引数组和数值数组与COO方式相同。对于行指针数组,第一个元素为“0”,也即表示第0行的第一个非零元素“1”距离稀疏矩阵第一个非零元素的偏移位置为0,因为就是第一个非零元素自身。第二个元素“2”表示第1行第一个非零元素“2”距离稀疏矩阵第一个非零元素“1”的偏移位置为2,其等于第0行非零元素的个数;第三个元素“4”表示第2行第一个非零元素“5”距离稀疏矩阵第一个非零元素“1”的偏移位置为4,其等于第0行和第1行非零元素的个数。第四个元素“6”表示所有非零元素的总个数。
CSC存储方式,称为压缩稀疏列格式,其与CSR类似,只不过对列进行压缩,行索引和数据数组保持不变。列指针数组存储每列第一个非零元素距离稀疏矩阵第一个非零元素的偏移位置,其最后一个元素存储稀疏矩阵中非零元素的总个数,因此列指针数组的长度是稀疏矩阵列数加1。
如图所示,行索引数组和数值数组与COO方式相同。对于列指针数组,第一个元素为“0”,也即表示第0列的第一个非零元素。第二个元素“1”表示第1列第一个非零元素“2”距离稀疏矩阵第一个非零元素“1”的偏移位置为1,其等于第0列非零元素的个数;第三个元素“3”表示第2列第一个非零元素“4”距离稀疏矩阵第一个非零元素“1”的偏移位置为3,其等于第0列和第1列非零元素的个数,以此类推可以得到其他列指针元素。
在本披露的实施例中,当稀疏矩阵以上述任一压缩的存储方式提供时,可以称为稀疏矩阵的致密形式,或者由稀疏矩阵中的有效数据元素(例如非零值)构成的矩阵形式可以称为致密矩阵。当稀疏矩阵是以致密形式提供时,可以对致密矩阵进行行方向或列方向的切分,以供后续处理。
例如,在本披露的一个实施例中,可以根据致密矩阵的存储方式,进行行方向的切分,从而输出切分出的行向量和对应的列索引以供处理。
仍然以图4的矩阵为例,由有效数据元素(1,2,3,4,5,6)构成的致密矩阵进行行切分后,输出三个行向量(1,2),(3,4)和(5,6),各个行向量具有对应的列索引向量(0,1),(1,2)和(3,5),分别指示对应行向量中各个数据元素的列索引。
下面描述本披露实施例采用的稀疏矩阵乘法运算的原理。
根据矩阵乘法的定义,可以按公式(1)计算矩阵乘法:
结果矩阵的每一行数据可以看成是一个行向量,长度为列数。提取行向量中的公共因子,该结果矩阵又可以表示成公式(2):
从公式(2)可知,结果矩阵的第i个行向量可以看成左乘矩阵第i行的各个元素分别与右乘矩阵中对应行向量进行标量乘之后得到的多个行向量的累加。换言之,矩阵乘法可以拆分成向量标量乘和向量累加两个步骤。
上述运算方式同样适用于稀疏矩阵乘法。公式(3)、(4)和(5)分别示出了稀疏矩阵乘法中至少一个矩阵为稀疏矩阵的计算公式。
从上述公式可知,当参与乘法运算的矩阵是稀疏矩阵时,可以只让有效数据元素(或非零元素)参与第一步的向量标量乘计算,也即可以实现致密运算,算力无损失,每个运算的结果都是有意义的。但是在第二步的向量累加时,需要进行列索引对齐累加,或称为向量排序累加。
基于上述原理,本披露实施例提供了一种矩阵乘法电路,其可以有效地优化稀疏矩阵乘法运算,避免算力浪费。更具体地,本披露实施例针对矩阵乘法步骤中的向量排序累加,提供了一种硬件实现方案,从而可以降低向量排序累加的调度复杂度和时间开销,有效提高处理效率。
图5示出了根据本披露实施例的矩阵乘法电路的示例性结构框图。如图所示,矩阵乘法电路500主要包括两部分:向量标量乘法电路510和向量排序累加电路520。
向量标量乘法电路510配置成执行行向量与标量之间的点乘运算。具体地,电路510用于对左乘矩阵中每一行中的各个数据元素分别与右乘矩阵的对应行向量执行乘法运算,从而得到多个中间行向量。从前面的公式可以看出,行向量的数量取决于左乘矩阵中该行的有效数据元素个数,也即非零元素个数,以及右乘矩阵中非全零行向量的个数。
向量标量乘法电路510可以采用各种已有的电路实现,诸如图3中的向量运算单元321,本披露实施例在此方面没有限制。
向量排序累加电路520配置成执行上述中间行向量的排序累加。具体地,电路520将基于左乘矩阵中同一行的数据元素得到的多个中间行向量进行排序累加,以生成融合行向量,作为结果矩阵中对应的行向量。
进一步地,矩阵乘法电路500中还可以包括控制电路530,用于控制输送给向量标量乘法电路510和向量排序累加电路520的数据元素。如前面所提到的,矩阵中的每个数据元素可以具有关联的行索引和列索引,用于指示该数据元素在矩阵中的位置信息。因此,控制电路530可以根据这些行索引和/或列索引,控制输送给向量标量乘法电路510和向量排序累加电路520的数据元素或向量。
在一些实施例中,控制电路530可以控制向量标量乘法电路510执行以下操作:对左乘矩阵中第i行的K个数据元素与右乘矩阵中对应的K个行向量分别执行乘法运算,得到K个中间行向量,其中在每个乘法运算中,左乘矩阵中数据元素的列索引等于右乘矩阵中行向量的行索引,i、K均为自然数,K是左乘矩阵中每行的数据元素个数,也即非零元素个数。
在一些实施例中,控制电路530可以控制向量排序累加电路520执行以下操作:将上述K个中间行向量中的向量元素,按照其列索引的顺序,归并为一个有序的融合行向量,其中具有相同列索引的向量元素累加成该融合行向量中的一个融合向量元素,该融合行向量作为矩阵乘法的结果矩阵第i行的行向量。
进一步地,矩阵乘法电路500还可以包括预处理电路540。当参与乘法运算的稀疏矩阵以致密形式提供时,预处理电路540可以配置用于根据致密矩阵的存储方式,进行行方向的切分,从而输出切分出的行向量和对应的列索引以供处理。
尽管在图5中将控制单元530和预处理电路540示出为两个分离的模块,但是本领域技术人员可以理解,这两个单元也可以实现为一个模块或更多模块,本披露在此方面没有限制。
图6示出本披露实施例的向量排序累加电路的示例性电路图。向量排序累加可以看成数据的融合处理,因此在下面的描述中,基于上下文,可以理解“融合”与“排序累加”具有相同的含义。
如图所示,在一个实施例中,存储电路可以示例性划分为两部分:第一存储电路622和第二存储电路624。
第一存储电路622可以配置用于存储待融合的K路数据和这K路数据对应的K路索引,K>1。这K路索引中的索引元素指示K路数据中对应的数据元素的索引信息,也即索引元素与数据元素具有一一对应的关系。
在本披露实施例中,这K路数据即上面提到的K个中间行向量,K路索引即K个中间行向量中各个数据元素的列索引,其中第k路索引中的索引元素对应于第k个中间行向量中各向量元素的列索引,k=1…K。
此外,这K路索引中每路索引的索引元素均按第一顺序有序排列,例如按照从小到大的顺序排列,并且K路数据中每路数据的数据元素按照对应索引的顺序有序排列。图中示例性示出了4路索引以及对应的4路数据,图中各个数据元素用符号D来标识,未示出具体数值。在一些实施例中,每路索引可以是连续存储的,例如作为一个向量进行存储,从而可以根据每路索引的起始地址或向量的起始地址来访问该路索引/索引向量。对应地,每路数据也可以是连续存储的,例如作为一个向量进行存储,从而可以根据每路数据的起始地址或向量的起始地址来访问该路数据/数据向量。
第二存储电路624可以配置用于存储向量排序累加电路输出的融合数据和融合数据对应的融合索引,其中融合索引中的融合索引元素按第二顺序有序排列,并且融合数据中的融合数据元素按照融合索引的顺序有序排列。从图中示例可以看出,待融合的4路数据变成了一路融合数据,相应的4路索引也变成了一路融合索引,其中融合索引元素按照从小到大的顺序排列,大小相同的索引元素被去除。与之对应的融合数据元素按照融合索引的顺序排列,并且具有相同索引的数据元素进行累加,作为融合数据元素。
在一些实施例中,向量排序累加电路600可以包括排序电路632和累加电路636,以协同实现排序累加功能。具体地,排序电路632用于将K路索引按照索引元素的大小排序,并有序输出给累加电路636。累加电路636则在从排序电路接收到相同的索引元素时,将相同的索引元素对应的数据元素进行累加处理,并去除重复的索引元素。
在一些实施例中,排序电路632可以包括比较电路631和缓冲电路633。比较电路631实现比较功能,其对多路待融合的索引中的索引元素的大小进行比较,并提交比较结果给控制电路610以供排序。控制电路610根据比较结果确定索引元素在缓冲电路633中的插入位置。缓冲电路633用于缓存已比较的索引元素以及与其对应的数据元素的信息,并按索引元素的大小顺序缓存。
具体地,比较电路631可以配置用于将待融合索引中的索引元素与缓冲电路633中未输出的索引元素进行比较,并输出比较结果给控制电路610。而缓冲电路633可以配置用于根据控制电路610的控制,有序存储已比较的索引元素以及与其对应的数据元素的信息,以及有序输出已比较的索引元素以及与其对应的数据元素的信息。
在一些实施例中,缓冲电路633可以配置成缓存K个索引元素,这K个索引元素按照大小排序。本领域技术人员可以理解,缓冲电路也可以配置成缓存更多的索引元素,本披露实施例在此方面没有限制。取决于缓冲电路633中的排序方式以及期望输出的排序方式,诸如从小到大,或从大到小,每次可以按照指定顺序输出当前序列中的首个索引元素或末个索引元素。例如,在图中的示例中,缓冲电路633从左到右按照从大到小的顺序缓存索引元素,每次输出最右边的一个索引元素,也即当前序列中最小的索引元素,例如“7”。
在这些实施例中,比较电路631可以包括K-1路比较器,配置用于将待融合的索引元素分别与缓冲电路633中未输出的索引元素进行比较,也即与当前序列输出首个或末个索引元素后剩余的K-1个索引元素进行比较,生成比较结果并输出给控制电路610。
例如,对于待融合的4路数据,图中示出了3路比较器,其将从第一存储电路622接收的指定索引元素(此时为9)与缓冲电路633中当前未输出的3个索引元素进行比较,图中为左边的三个索引元素100、10和9。
在一些实施例中,比较器的比较结果可以使用位图来表示。例如,如果待融合的索引元素(例如,9)大于等于缓冲电路中的索引元素,则比较器可以输出“1”,否则,输出“0”;反过来也可以。在图中的示例中,待融合的索引元素(9)与缓冲电路中的各个索引元素(100、10和9)的比较结果为“001”,输出给控制电路610。
控制电路610可以配置用于根据接收的比较结果,确定该待融合的索引元素在缓冲电路633的当前序列中的插入位置。具体地,控制电路610可以进一步配置用于根据位图中比特位的变化位置,确定插入位置。在图中的示例中,比较结果为“001”,说明当前待融合的索引元素小于缓冲电路中左起第1个和第2个索引元素,大于等于左起第3个索引元素,则插入位置在第2个索引元素与第3个索引元素之间,也即在“10”和“9”之间。
在一些实施例中,缓冲电路633可以配置用于根据控制电路610的指示,在插入位置中插入该待融合的索引元素。在图中示例中,缓冲电路633中插入该索引元素之后的序列变为“100,10,9,9”。
为了使得在归并排序累加处理中能够获取到索引对应的数据,在一些实施例中,缓冲电路633可以进一步配置用于:按索引元素的值顺序,有序存储已比较的索引元素以及与其对应的数据元素。如图所示,缓冲电路633除了缓存索引元素,还缓存与其对应的数据元素的信息。因此,每次对索引元素进行比较确定插入位置之后,可以将与该索引元素对应的数据元素信息也一并插入到缓存电路中。本领域技术人员可以理解,数据元素的信息可以是数据元素本身,例如图中示例性示出的D32、D23等等;数据元素的信息也可以是指向该数据元素的地址,本披露实施例在此方面没有限制。
接着,缓冲电路633可以输出最右端的索引元素“9”。此时,控制电路610可以进一步配置用于根据缓冲电路中输出的索引元素,确定待融合的下一索引元素的访存信息。具体地,控制电路根据输出的索引元素在K路索引中属于哪一路索引,从该路索引中取出下一待融合的索引元素,送到比较电路631进行比较。
进一步地,在有序输出时,缓冲电路633可以配置成按索引元素的值顺序(例如,从小到大),有序输出已比较的索引元素作为融合索引,并同步输出与其对应的数据元素作为融合数据。输出的数据提供给累加电路636做进一步处理。
为了清楚起见,图中还示出了缓冲电路633中随排序进度缓存过的索引序列。如图所示,初始地,K路索引中各路的首个索引元素按照从大到小的顺序存储在缓冲电路633中。在一些实现中,这4个索引元素可以一次性取出、排序并存储在缓冲电路中。在另一些实现中,可以将缓冲电路中的数据初始化为负数,按顺序(例如,按照从第1路到第4路的顺序)逐个取出各路索引的首个索引元素,与缓冲电路中的数据进行比较,并放入合适位置。在此示例中,4路索引的首个索引元素都是0,因此可以根据取数的顺序,按照各路索引的序号排列,例如第1路的“0”放置在最右边,第2路的“0”放置在右边第2位置,以此类推。
接着,缓冲电路中最右边的属于第1路的“0”被输出。根据这个输出的索引元素属于哪一路索引,从对应的该路索引中取出下一待融合的索引元素,也即第1路第2个索引元素“2”。“2”被送入比较电路与缓冲电路中剩余的三个“0”进行比较,比较结果为“111”,也即比缓冲电路中现有的三个数“0”都大,因此“2”被插入在序列最尾端,此时缓冲电路中的序列变为“2,0,0,0”。
接着,缓冲电路中最右边的属于第2路的“0”被输出,因此取出第2路第2个元素“3”与缓冲电路中剩余的“2,0,0”进行比较,比较结果为“111”,因此“3”被插入在序列最尾端,此时缓冲电路中的序列变为“3,2,0,0”。
接着,缓冲电路中最右边的属于第3路的“0”被输出,因此取出第3路第2个元素“100”与缓冲电路中剩余的“2,0,0”进行比较,比较结果为“111”,因此“100”被插入在序列最尾端,此时缓冲电路中的序列变为“100,3,2,0”。
接着,输出缓冲电路最右边的属于第4路的“0”,取出第4路第2个元素“2”与缓冲电路中剩余的“100,3,2”进行比较,比较结果为“001”,因此“2”被插入在序列最右边第1个元素之后,此时缓冲电路中的序列变为“100,3,2,2”。
依次类推,可以逐个将K路索引中的索引元素进行比较,并根据大小排序插入到缓冲电路中的合适位置,再由缓冲电路输出。例如,缓冲电路每次输出的最小索引元素可以按顺序输出给累加电路636。本领域技术人员可以理解,如果缓冲电路的空间足够,也可以在排序完成之后再统一输出归并排序后的元素。
从输出的归并排序后的索引元素可以看出,当存在大小相同的索引元素时,排序电路632仍然保留这些大小相同的索引元素,不会进行去重操作,而是提供给累加电路636进行处理。
在一些实施例中,累加电路636可以包括比较器637、缓冲器635和加法器639。
比较器637可以配置用于将从排序电路632有序输出的索引元素与上一个融合索引元素进行比较并输出比较结果。比较结果可以是“1”指示相同,“0”指示不相同;反之亦然。
缓冲器635可以配置用于根据比较器637的比较结果来控制输出索引元素。在一些实施例中,缓冲器635可以仅当比较结果指示不相同时,输出当前索引元素作为新的融合索引元素。换言之,当比较结果指示相同时,缓冲器635不输出当前索引元素,也即丢弃与上一个融合索引元素重复的索引元素。如图所示,第二存储电路624中的融合索引不存在重复的融合索引元素。
加法器639可以配置用于根据比较器637的比较结果,来控制数据元素的累加。具体地,当比较结果指示不相同时,直接输出与当前索引元素对应的数据元素作为新的融合数据元素;当比较结果指示相同时,将当前索引元素对应的数据元素累加到上一个融合索引元素所对应的融合数据元素上。
通过在每次接收到排序电路632的输出时,将当前索引元素与上一个融合索引元素进行比较,可以针对相同的索引元素进行区别处理,从而实现索引去重和数据累加功能。
从上面的描述可知,本披露实施例提供了一种矩阵乘法电路,其能够有效支持稀疏矩阵乘法。进一步地,本披露实施例提供了向量标量乘法电路,其针对稀疏矩阵中的非零元素值进行运算,所有运算都是有效的,因此无算力浪费。更进一步地,本披露实施例提供了一种向量排序累加电路,其可以支持对前述运算中的向量排序累加,从而降低向量化的非对齐算力损失。本披露实施例的矩阵乘法电路通过优化乘法运算过程,极大降低运算复杂度,由此提高机器的处理效率。此外,本披露一些实施例还提供了使用该矩阵乘法电路来执行稀疏矩阵乘法的方法、芯片和板卡,其包含与前面针对矩阵乘法电路描述的特征对应的特征,此处不再重复。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如中央处理器、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
依据以下条款可更好地理解前述内容:
条款1、一种矩阵乘法电路,包括:
向量标量乘法电路,配置用于对左乘矩阵中每一行中的各个数据元素分别与右乘矩阵的对应行向量执行乘法运算,得到多个中间行向量,其中所述左乘矩阵和右乘矩阵中至少一个是由稀疏矩阵中的有效数据元素构成的致密矩阵;以及
向量排序累加电路,配置用于将基于左乘矩阵中同一行的数据元素得到的多个所述中间行向量进行排序累加,以生成融合行向量作为结果矩阵中对应的行向量。
条款2、根据条款1所述的电路,其中每个数据元素具有关联的行索引和列索引,用于指示所述数据元素在未稀疏化矩阵中的位置信息,所述电路还包括:
控制电路,配置用于根据所述行索引和/或列索引控制输送给所述向量标量乘法电路和向量排序累加电路的数据元素或向量。
条款3、根据条款2所述的电路,其中:
所述向量标量乘法电路进一步配置用于在所述控制电路的控制下,对左乘矩阵中第i行的K个数据元素与右乘矩阵中对应的K个行向量分别执行乘法运算,得到K个中间行向量,其中在每个所述乘法运算中,左乘矩阵中数据元素的列索引等于右乘矩阵中行向量的行索引,i、K均为自然数,K是左乘矩阵中每行的数据元素个数;并且
所述向量排序累加电路进一步配置用于在所述控制电路的控制下,将所述K个中间行向量中的向量元素,按照其列索引的顺序,归并为一个有序的融合行向量,其中具有相同列索引的向量元素累加成所述融合行向量中的一个融合向量元素,所述融合行向量作为所述结果矩阵第i行的行向量。
条款4、根据条款3所述的电路,其中所述向量排序累加电路包括排序电路和累加电路,其中
所述排序电路配置用于将所述K个中间行向量对应的K路索引按大小排序并有序输出给所述累加电路,其中第k路索引中的索引元素对应于第k个中间行向量中各向量元素的列索引,k=1…K;并且
所述累加电路配置用于当从所述排序电路接收到相同的索引元素时,将相同的索引元素对应的向量元素进行累加处理,并去除重复的索引元素。
条款5、根据条款4所述的电路,其中所述排序电路包括比较电路和缓冲电路,其中:
所述比较电路配置用于将所述K路索引中待排序的索引元素与所述缓冲电路中未输出的索引元素进行比较,并输出比较结果给所述控制电路;并且
所述缓冲电路配置用于根据所述控制电路的控制,有序存储已比较的索引元素以及与其对应的向量元素的信息,以及有序输出已比较的索引元素以及与其对应的向量元素的信息。
条款6、根据条款5所述的电路,其中所述比较电路包括:
K-1路比较器,配置用于将所述K路索引中待排序的索引元素分别与所述缓冲电路中当前序列的K-1个索引元素进行比较,生成比较结果并输出给所述控制电路。
条款7、根据条款6所述的电路,其中所述控制电路配置用于根据所述比较结果,确定所述待排序的索引元素在所述缓冲电路中当前序列中的插入位置。
条款8、根据条款7所述的电路,其中所述比较结果使用位图来表示,并且所述控制电路进一步配置用于:根据所述位图中比特位的变化位置,确定所述插入位置。
条款9、根据条款7-8任一所述的电路,其中所述缓冲电路配置用于根据所述控制电路的指示,在所述插入位置中插入所述待排序的索引元素以及与其对应的数据元素的信息。
条款10、根据条款5-9任一所述的电路,其中所述缓冲电路进一步配置用于按指定顺序输出当前序列中的首个或末个索引元素以及与其对应的向量元素的信息。
条款11、根据条款10所述的电路,其中所述控制电路进一步配置用于:根据所述缓冲电路中输出的索引元素,确定待排序的下一索引元素的访存信息。
条款12、根据条款4-11任一所述的电路,其中所述累加电路包括比较器、缓冲器和加法器,其中:
所述比较器配置用于将从所述排序电路输出的索引元素与上一个融合索引元素进行比较并输出比较结果;
所述缓冲器配置用于仅当所述比较结果指示不相同时,输出所述索引元素作为新的融合索引元素;并且
所述加法器配置用于当所述比较结果指示不相同时,直接输出与所述索引元素对应的向量元素作为新的融合向量元素,以及当所述比较结果指示相同时,将所述索引元素对应的向量元素累加到上一个融合索引元素所对应的融合向量元素上。
条款13、根据条款1-12任一所述的电路,其中所述致密矩阵采用以下任一方式存储:压缩稀疏行CSR存储、压缩稀疏列CSC存储和坐标COO存储,并且所述电路还包括:
预处理电路,配置用于按照所述致密矩阵的存储方式,对所述致密矩阵进行行切分,并输出切分出的行向量和对应的列索引以供处理。
条款14、一种芯片,包括根据条款1-13任一所述的电路。
条款15、一种板卡,包括根据条款14所述的芯片。
条款16、一种使用根据条款1-13任一所述的矩阵乘法电路来执行稀疏矩阵乘法的方法。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。
Claims (16)
1.一种矩阵乘法电路,包括:
向量标量乘法电路,配置用于对左乘矩阵中每一行中的各个数据元素分别与右乘矩阵的对应行向量执行乘法运算,得到多个中间行向量,其中所述左乘矩阵和右乘矩阵中至少一个是由稀疏矩阵中的有效数据元素构成的致密矩阵;以及
向量排序累加电路,配置用于将基于左乘矩阵中同一行的数据元素得到的多个所述中间行向量进行排序累加,以生成融合行向量作为结果矩阵中对应的行向量。
2.根据权利要求1所述的电路,其中每个数据元素具有关联的行索引和列索引,用于指示所述数据元素在未稀疏化矩阵中的位置信息,所述电路还包括:
控制电路,配置用于根据所述行索引和/或列索引控制输送给所述向量标量乘法电路和向量排序累加电路的数据元素或向量。
3.根据权利要求2所述的电路,其中:
所述向量标量乘法电路进一步配置用于在所述控制电路的控制下,对左乘矩阵中第i行的K个数据元素与右乘矩阵中对应的K个行向量分别执行乘法运算,得到K个中间行向量,其中在每个所述乘法运算中,左乘矩阵中数据元素的列索引等于右乘矩阵中行向量的行索引,i、K均为自然数,K是左乘矩阵中每行的数据元素个数;并且
所述向量排序累加电路进一步配置用于在所述控制电路的控制下,将所述K个中间行向量中的向量元素,按照其列索引的顺序,归并为一个有序的融合行向量,其中具有相同列索引的向量元素累加成所述融合行向量中的一个融合向量元素,所述融合行向量作为所述结果矩阵第i行的行向量。
4.根据权利要求3所述的电路,其中所述向量排序累加电路包括排序电路和累加电路,其中
所述排序电路配置用于将所述K个中间行向量对应的K路索引按大小排序并有序输出给所述累加电路,其中第k路索引中的索引元素对应于第k个中间行向量中各向量元素的列索引,k=1…K;并且
所述累加电路配置用于当从所述排序电路接收到相同的索引元素时,将相同的索引元素对应的向量元素进行累加处理,并去除重复的索引元素。
5.根据权利要求4所述的电路,其中所述排序电路包括比较电路和缓冲电路,其中:
所述比较电路配置用于将所述K路索引中待排序的索引元素与所述缓冲电路中未输出的索引元素进行比较,并输出比较结果给所述控制电路;并且
所述缓冲电路配置用于根据所述控制电路的控制,有序存储已比较的索引元素以及与其对应的向量元素的信息,以及有序输出已比较的索引元素以及与其对应的向量元素的信息。
6.根据权利要求5所述的电路,其中所述比较电路包括:
K-1路比较器,配置用于将所述K路索引中待排序的索引元素分别与所述缓冲电路中当前序列的K-1个索引元素进行比较,生成比较结果并输出给所述控制电路。
7.根据权利要求6所述的电路,其中所述控制电路配置用于根据所述比较结果,确定所述待排序的索引元素在所述缓冲电路中当前序列中的插入位置。
8.根据权利要求7所述的电路,其中所述比较结果使用位图来表示,并且所述控制电路进一步配置用于:根据所述位图中比特位的变化位置,确定所述插入位置。
9.根据权利要求7-8任一所述的电路,其中所述缓冲电路配置用于根据所述控制电路的指示,在所述插入位置中插入所述待排序的索引元素以及与其对应的数据元素的信息。
10.根据权利要求5-9任一所述的电路,其中所述缓冲电路进一步配置用于按指定顺序输出当前序列中的首个或末个索引元素以及与其对应的向量元素的信息。
11.根据权利要求10所述的电路,其中所述控制电路进一步配置用于:根据所述缓冲电路中输出的索引元素,确定待排序的下一索引元素的访存信息。
12.根据权利要求4-11任一所述的电路,其中所述累加电路包括比较器、缓冲器和加法器,其中:
所述比较器配置用于将从所述排序电路输出的索引元素与上一个融合索引元素进行比较并输出比较结果;
所述缓冲器配置用于仅当所述比较结果指示不相同时,输出所述索引元素作为新的融合索引元素;并且
所述加法器配置用于当所述比较结果指示不相同时,直接输出与所述索引元素对应的向量元素作为新的融合向量元素,以及当所述比较结果指示相同时,将所述索引元素对应的向量元素累加到上一个融合索引元素所对应的融合向量元素上。
13.根据权利要求1-12任一所述的电路,其中所述致密矩阵采用以下任一方式存储:压缩稀疏行CSR存储、压缩稀疏列CSC存储和坐标COO存储,并且所述电路还包括:
预处理电路,配置用于按照所述致密矩阵的存储方式,对所述致密矩阵进行行切分,并输出切分出的行向量和对应的列索引以供处理。
14.一种芯片,包括根据权利要求1-13任一所述的电路。
15.一种板卡,包括根据权利要求14所述的芯片。
16.一种使用根据权利要求1-13任一所述的矩阵乘法电路来执行稀疏矩阵乘法的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011563258.4A CN114692074A (zh) | 2020-12-25 | 2020-12-25 | 矩阵乘法电路、方法及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011563258.4A CN114692074A (zh) | 2020-12-25 | 2020-12-25 | 矩阵乘法电路、方法及相关产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114692074A true CN114692074A (zh) | 2022-07-01 |
Family
ID=82130862
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011563258.4A Pending CN114692074A (zh) | 2020-12-25 | 2020-12-25 | 矩阵乘法电路、方法及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114692074A (zh) |
-
2020
- 2020-12-25 CN CN202011563258.4A patent/CN114692074A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109543832B (zh) | 一种计算装置及板卡 | |
CN109104876B (zh) | 一种运算装置及相关产品 | |
CN109522052B (zh) | 一种计算装置及板卡 | |
CN110163357B (zh) | 一种计算装置及方法 | |
CN111047022A (zh) | 一种计算装置及相关产品 | |
CN110059797B (zh) | 一种计算装置及相关产品 | |
CN114692074A (zh) | 矩阵乘法电路、方法及相关产品 | |
CN114692838A (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN114691559A (zh) | 数据处理电路、数据处理方法及相关产品 | |
CN114691561A (zh) | 数据处理电路、数据处理方法及相关产品 | |
CN114691560A (zh) | 数据处理电路、数据处理方法及相关产品 | |
CN114691083A (zh) | 矩阵乘法电路、方法及相关产品 | |
WO2022134688A1 (zh) | 数据处理电路、数据处理方法及相关产品 | |
CN114692846A (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN117235424A (zh) | 计算装置、计算方法及相关产品 | |
CN115221104A (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN114692839A (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN114692845A (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN114692840A (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN115237371A (zh) | 计算装置、数据处理方法及相关产品 | |
CN115237370A (zh) | 计算装置、数据处理方法及相关产品 | |
CN114444677A (zh) | 进行稀疏化训练的装置、板卡、方法及可读存储介质 | |
CN115438777A (zh) | 对神经元数据执行Winograd卷积正变换的装置 | |
CN114691593A (zh) | 基于多核处理器的数据处理方法及相关产品 | |
CN115237373A (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 |