CN110826711B - 一种矩阵处理装置、方法及设备 - Google Patents
一种矩阵处理装置、方法及设备 Download PDFInfo
- Publication number
- CN110826711B CN110826711B CN201911035753.5A CN201911035753A CN110826711B CN 110826711 B CN110826711 B CN 110826711B CN 201911035753 A CN201911035753 A CN 201911035753A CN 110826711 B CN110826711 B CN 110826711B
- Authority
- CN
- China
- Prior art keywords
- matrix
- sequence number
- input
- counter
- same
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Biomedical Technology (AREA)
- Pure & Applied Mathematics (AREA)
- Biophysics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种矩阵处理装置、方法及设备。深度神经网络运算在模型训练中除了需要载入常规权值矩阵,还经常需要将原矩阵经过转置、回转、倒序等处理后再载入。本发明通过预处理电路与执行电路的配合,以较小的硬件开销实现低延时的矩阵处理,另一方面,本发明通过设置可自由调控的预处理电路,从而实现了对不同大小矩阵的灵活处理。
Description
技术领域
本发明涉及数据处理领域,具体涉及一种矩阵处理装置、矩阵处理方法以及处理设备。
背景技术
当下互联网和物联网的可用数字数据呈指数级增长,这驱动了对高性能数据分析算法的需求。其中,深度神经网络(Deep Neural Network)在目标识别、自动驾驶和无人机导航等领域具有广阔的应用前景。线性代数运算广泛存在于深度神经网络中,例如,深度神经网络在模型训练中除了需要海量载入常规权值矩阵,还经常需要将原矩阵经过转置、回转、倒序等处理后再载入。
但在已知的现有技术中,矩阵处理装置大多需要使用大量的存储资源,导致矩阵处理装置的硬件资源开销很大,此外,对存储资源的反复读写也造成了矩阵处理过程存在较高的延时。特别是在矩阵转置的过程中,控制逻辑复杂且延时高,在处理大规模矩阵时,还需要大规模的存储装置;在我们所知的现有技术中,执行矩阵转置操作的装置对于不同大小的矩阵兼容性差,难以实现利用同一设计方案,解决不同大小的矩阵转置问题。
发明内容
针对上述问题,根据本发明的第一方面,提供一种矩阵处理装置,从而能够以较小的硬件开销实现低延时的矩阵处理。
该矩阵处理装置包括预处理电路和执行电路。预处理电路包括多个计数器,前述计数器按序启动,至少一个计数器的启动时间不早于最先启动的计数器,按序启动的计数器之间的启动时间间隔相同。已启动的计数器用于按照单调递增或单调递减的方式从初始值开始计数生成并输出序号值,同一个计数器输出的序号值组成序号向量。
执行电路包括多个选择单元,选择单元包括一个序号寄存器、一个输出端口和至少一个输入端口,至少一个选择单元与前述计数器对应相连,同一个序号寄存器用于逐一接收同一个序号向量中的序号值。
每个选择单元均接收输入矩阵,其中,同一个输入端口用于逐一接收同一个输入向量中的矩阵元素。选择单元用于根据序号寄存器中的序号值,对应选择输入端口中的矩阵元素从输出端口输出,并形成输出矩阵。
本发明通过按序启动计数器生成序号值并发送序号值组成的矩阵至执行电路,执行电路根据该矩阵,对输入矩阵进行选择处理后得到输出矩阵,整个矩阵处理装置的操作逻辑简单、易于实现。同时,本发明通过计数器直接向选择单元发送序号值,不需要额外使用专门的存储装置,硬件开销小、延时低,极大地减小了矩阵处理装置的面积。此外,通过计数器与选择单元对应相连,使得矩阵处理装置整体布线整齐简洁,节省电路面积。
优选地,上述矩阵处理装置还包括控制单元,预处理电路还包括触发单元,触发单元与每个待启动的计数器相连。控制单元与预处理电路相连,用于向预处理电路发送有效信号,有效信号用于控制触发单元按序启动计数器。
通过控制单元使用有效信号控制触发单元,能够根据输入矩阵的大小,灵活地按序启动相应的计数器,提高了矩阵处理装置的灵活程度和适用范围。
更为优选地,前述控制单元还用于向预处理电路发送并行数,有效信号用于控制触发单元每次同时启动与该并行数相同个数的计数器。
使用控制单元向预处理电路发送并行数,使有效信号根据该并行数每次同时启动多个计数器,从而使预处理电路同时生成多个由序号值组成的矩阵,将前述多个矩阵同时发送至执行电路,并使用执行电路同时接收多个输入矩阵,以此实现多个输入矩阵的并行处理。从而能够最大限度地使用执行电路中的硬件资源,避免过多的选择单元闲置,大幅度提高了矩阵处理装置对于矩阵数据的吞吐量。
更为优选地,前述控制单元还用于向预处理电路发送阈值,序号值与初始值的差值不小于阈值的计数器停止输出序号值。
通过控制单元向预处理电路发送阈值,使得序号值与初始值的差值不小于阈值的计数器不再输出序号值,降低了矩阵处理装置的功耗。同时,在矩阵的流水化处理中,该计数器复位之后继续生成并输出序号值,使得矩阵处理装置可以无缝衔接地处理下一批输入矩阵,提高了矩阵处理装置的效率。
更为优选地,相等的序号值所对应的输入端口相互耦合,用于接收同一个输入向量。
通过相互耦合的输入端口接收输入向量,能使得每一个对应的输入端口接收到同一个的输入向量,而不需要单独向每个输入端口传输相同输入向量,简化了整个输入矩阵的传输逻辑,降低了输入矩阵的传输成本。
更为优选地,上述矩阵处理装置还包括输入寄存器和计数寄存器。输入寄存器与执行电路相连,用于暂存输入矩阵;计数寄存器与预处理电路以及执行电路分别相连,用于暂存序号向量组成的矩阵。
使用上述寄存器暂存序号向量组成的矩阵和输入矩阵,能够在执行电路进行上一批矩阵处理或进行其它处理时,延后该输入矩阵的处理操作,防止在执行电路与其它矩阵发送冲突,提高了矩阵处理装置的稳定性。
针对上述问题,根据本发明的第二方面,提供一种矩阵处理方法,从而能够以较小的硬件开销实现低延时的矩阵处理。
提供选择单元和计数器,每个选择单元包括一个序号寄存器、一个输出端口和至少一个输入端口,该矩阵处理方法包括:
步骤S100:将计数器按序启动,至少一个计数器的启动时间不早于最先启动的计数器,按序启动的计数器之间的启动时间间隔相同。然后使用已启动的计数器按单调递增或单调递减的方式从初始值开始计数生成并输出序号值,同一个计数器输出的序号值组成序号向量。
步骤S200:将同一个序号向量中的序号值逐一发送至同一个序号寄存器。同时,将输入矩阵发送至选择单元,其中,将同一个输入向量中的矩阵元素逐一发送至同一个输入端口。
步骤300:使用选择单元根据序号寄存器中的序号值,对应选择输入端口中的矩阵元素,对应选择出的矩阵元素从输出端口输出,这些矩阵元素组成输出矩阵。
本发明仅需要将序号值组成的矩阵和输入矩阵同时传输至执行电路,通过选择单元即可完成矩阵处理。在多个输入矩阵的流水化处理中,仅需要使用上述矩阵处理方法,将各个输入矩阵和其对应的序号值组成的矩阵同时传入执行电路中,即可实现输入矩阵的流水化处理,逻辑简单、易于实现。
优选地,提供有效信号和并行数,提供触发单元,上述矩阵处理方法包括:使用有效信号控制触发单元按序启动计数器,其中,触发单元每次同时启动与并行数相同个数的计数器。
使用有效信号控制触发单元,能够根据输入矩阵的大小,灵活地按序启动对应的计数器,从而提高矩阵处理方法的灵活程度和适用范围。使用并行数使有效信号每次同时启动多个计数器,能够同时生成多个由序号值组成的矩阵,然后通过执行电路同时接收前述矩阵与对应的多个输入矩阵,从而实现多个输入矩阵的并行处理,提高了矩阵处理方法对于矩阵的处理效率。
更为优选地,上述矩阵处理方法还包括,在同一个输入矩阵中,将输入向量相对于前一个输入向量,沿同一个方向错位相同个矩阵元素传入选择单元,不存在前一个输入向量时,跳过错位处理。
将输入矩阵错位传入选择单元,使排布在未经错位处理的原输入矩阵次对角线上的多个矩阵元素,在同一时刻,关于原输入矩阵的主对角线进行相对位置的交换;并使排布在平行于该次对角线的一条直线上的多个矩阵元素,在同一时刻,关于原输入矩阵的主对角线进行相对位置的交换,从而高效便捷地完成矩阵处理。
针对上述问题,根据本发明的第三方面,提供一种矩阵处理设备,从而能够以较小的硬件开销实现低延时的矩阵处理。该处理设备包括处理器和存储器,该处理器包括上述第一方面中的任意一种矩阵处理装置,该存储器存储有计算机程序,该计算机程序被该处理器执行时,实现上述第二方面中的任一种矩阵处理方法的步骤。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面对实施例描述中需要使用的附图作简单的介绍,显而易见的,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本发明实施例提供的一种矩阵处理装置的结构示意图;
图2是本发明实施例提供的一种执行电路的连线示意图;
图3是本发明实施例提供的另一种矩阵处理装置的结构示意图;
图4是本发明实施例提供的另一种矩阵处理装置的结构示意图;
图5是本发明实施例提供的另一种矩阵处理装置的结构示意图;
图6是本发明实施例提供的一种矩阵处理方法的流程示意图;
图7是本发明实施例提供的一种序号值生成过程示意图;
图8是本发明实施例提供的一种矩阵处理过程示意图;
图9是本发明实施例提供的另一种矩阵处理装置的结构示意图;
图10是本发明实施例提供的另一种矩阵处理方法的流程示意图;
图11是本发明实施例提供的另一种序号值生成过程示意图;
图12(A)至图12(B)是本发明实施例提供的另一种矩阵处理过程示意图;
图13是本发明实施例提供的一种向量处理过程示意图;
图14是本发明实施例提供的一种矩阵处理设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述。显然,所给出的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有付出创造性劳动的前提下所获得的所有其它实施方法,均属于本申请的保护范围。
本申请的说明书和权利要求书及所述附图中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
下面,对本发明所涉及的相关实施例进行具体说明。
图1示出了矩阵处理装置100的结构示意图。矩阵处理装置100包括预处理电路110和执行电路120,预处理电路110和执行电路120相连。预处理电路用于生成序号值,并将序号值发送至执行电路120,同时,执行电路120接收输入矩阵,并根据序号值组成的矩阵,得到输出矩阵。
请参见图2(A),是本实施例中预处理电路110与执行电路120的连接关系示意图。其中,预处理电路110包括三个计数器111,为了简化布线并缩小矩阵处理装置100的面积,计数器111通常排布在一条直线上。
三个计数器111按序启动,已启动计数器111用于从初始值开始,按照单调递增或单调递减的方式进行计数,从而得到并输出序号值,同一个计数器111输出的序号值组成序号向量。为了便于实现,通常将初始值预设为零,每个时钟周期按照单调递增的方式,逐次加一生成并输出序号值,但在实际实施中,可以将初始值预设为计数器111计数范围内任意数值,同时将计数方式预设为单调递增或单调递减中的任意一种。
执行电路120包括三个选择单元121,为了简化布线并缩小矩阵处理装置100的面积,选择单元121通常排布在一条直线上。在一种优选地实施方式中,选择单元121包括一个序号寄存器、一个输出端口和两个输入端口,为了便于描述,两个输入端口分别表示为输入端口[0]和输入端口[1]。
显而易见的,在其它一些的实施方式中,可以包括更多或更少的计数器111,也可以包括更多或更少的选择单元121,计数器111与选择单元121的数量既可以相等也可以不相等。除此之外,还可以根据输入矩阵的大小,选用包括更多或更少输入端口的选择单元121,而不限于本实施例所示出的两个输入端口。
选择单元121与计数器111对应相连,选择单元121通过同一个序号寄存器逐一接收同一个序号向量的每一个序号值;同时,选择单元121接收输入矩阵,具体的,同一个输入端口逐一接收同一个输入向量的每一个矩阵元素。选择单元121根据序号寄存器中的序号值,对应选择输入端口中的矩阵元素并从输出端口输出,形成输出矩阵。选择单元121可采用多路调制器(Multiplexer)代替,使用其它类似或相近的结构实现上述功能的也可作为选择单元,均可视为对本方案的简单置换。
在其它一些实施方式中,在保证计数器111与选择单元121对应相连的前提下,可以对计数器111之间的相对位置进行调整,而不仅限于将计数器111排布在一条直线上。同理,选择单元121之间的相对位置也可以进行调整。
请参见图2(B),可以将相等的序号值所对应的输入端口相互耦合,即将三个选择单元121的输入端口[0]相互耦合,将三个选择单元121的输入端口[1]相互耦合。通过向相互耦合的输入端口输入一个输入向量,可以使相互耦合的每一个输入端口均接收相同的输入向量。在其它一些实施方式中,还可以将相等的序号值所对应的输入端口均与同一条数据总线相连,然后通过该数据总线传输同一个输入向量至前述每一个输入端口,也可以实现上述技术效果。
本发明还提供一种便于按序启动计数器的矩阵处理装置。请参见图3,是矩阵处理装置300的结构示意图。矩阵处理装置300包括预处理电路310、执行电路320和控制单元330。预处理电路310与执行电路320以及控制单元330分别相连。其中,预处理电路310包括三个计数器311和一个触发单元312,触发单元312与计数器311分别相连。在其它一些实现方式中,计数器311和触发单元312也可以通过数据总线的方式相连,或者使用光信号传输的方式实现通信。
控制单元330用于向预处理电路310发送有效信号,有效信号用于控制触发单元312按序启动计数器311。使用其它部件或信号实现与上述相同或相似功能的,均可视为对本方案的简单置换。
预处理电路310生成序号向量的过程以及执行电路320根据序号向量组成的矩阵选择并输出输出矩阵的过程与上述实施例相同,此处不再赘述。
为了降低矩阵处理装置300的功耗并简化控制逻辑,控制单元330还用于向预处理电路310发送阈值,序号值与初始值的差值不小于该阈值的计数器311,停止输出序号值。
为了提高对于输入矩阵的处理效率,矩阵处理装置可以并行处理多个输入矩阵。控制单元330向预处理电路发送并行数,有效信号用于控制触发单元312每次同时启动与该并行数相同个数的计数器311。具体的,并行数可以是不大于计数器311个数的任意正整数。
为了便于实现,同时启动多个计数器时,被同时启动的计数器之中,距离最近的两个计数器所间隔的计数器个数为上述阈值减一,例如预处理电路包括N个计数器,阈值为K,需要同时启动三个计数器,则通常同时启动第一个计数器、第(K+1)个计数器和第(2K+1)个计数器。此外,还将被同时启动的计数器的初始值的差值设置为阈值。例如,上述第一个计数器的初始值预设为零,则第(K+1)个计数器的初始值预设为K,第(2K+1)个计数器的初始值预设为2K。
请参见图4,是本发明实施例提供的一种矩阵处理装置400的结构示意图。矩阵处理装置400包括预处理电路410、执行电路420、控制单元430、输入寄存器440和计数寄存器450。控制单元430与预处理电路410相连,控制单元430用于向预处理电路410发送有效信号、阈值和并行数,运行逻辑与上述实施例相同,此处不再赘述。计数寄存器450与预处理电路410以及执行电路420分别相连,用于暂存序号值组成的矩阵;输入寄存器440与执行电路420相连,用于暂存输入矩阵。其中,预处理电路410生成序号值、执行电路420根据序号值组成的矩阵选择并输出输出矩阵的过程与上述实施例相同,此处不再赘述。
上述所提及的矩阵处理装置100、矩阵处理装置300以及矩阵处理装置400并不限于上述所示出的实现方式,而是可以包括更多或更少的部件。
为了便于理解,下面以矩阵转置为例,给出具体的矩阵处理过程。
请参见图5,是本实施例提供的一种矩阵处理装置的结构示意图。该矩阵处理装置包括预处理电路、执行电路和控制单元,预处理电路与控制单元以及执行电路分别相连。
其中执行电路包括三个选择单元,每个选择单元包括两个输入端口。为了便于描述,执行电路中的三个选择单元分别表示为选择单元[0]、选择单元[1]和选择单元[2];两个输入端口分别表示为输入端口[0]和输入端口[1]。
预处理电路包括三个计数器和一个触发单元,该触发单元与计数器分别相连。为了便于描述,三个计数器分别表示为计数器[0]、计数器[1]、计数器[2]。
计数器与选择单元对应相连,即计数器[0]与选择单元[0]相连、计数器[1]与选择单元[1]相连、计数器[2]与选择单元[2]相连。本发明实施例涉及输入端口和输出端口的所有示意图中,仅所示出了各个模块的相对位置,并不意味着输出端口要正对执行电路设置。在一种优选的实际实施方式中,输入端口、输出端口的方向应根据实际布线,以最优化的原则设置。
具体的,步骤S610:控制单元向预处理电路发送有效信号、阈值和并行数,其中阈值为2,并行数为1。有效信号控制触发单元,将计数器[0]、计数器[1]以及计数器[2]逐一按序启动。已启动的计数器从初始值(该初始值被预设为零)开始按照单调递增的方式,逐次加一进行计数从而生成并输出序号值,直至序号值不小于2时,停止输出序号值,即可得到由序号值组成的矩阵。
步骤S620:执行电路接收输入矩阵W和上述序号值组成的矩阵。其中,输入矩阵W的第一行向量传入输入端口[0],第二行向量传入输入端口[1],第一行向量比第二行向量提前一个矩阵元素传入选择单元。选择单元[0]的序号寄存器接收计数器[0]输出的序号值,选择单元[1]的序号寄存器接收计数器[1]输出的序号值,选择单元[2]的序号寄存器接收计数器[2]输出的序号值。具体的,各个计数器被启动后所生成的序号值请参见图7。
请参见图8,是本实施例中输入矩阵W的处理过程示意图。
在周期0时,选择单元[0]接收计数器[0]发送的序号值0,输入端口[0]接收到矩阵元素A,该选择单元将矩阵元素A从输出端口输出。
在周期1时,选择单元[0]接收到计数器[0]发送的序号值1,输入端口[0]接收到矩阵元素B,输入端口[1]接收到矩阵元素D,选择单元[0]根据序号值1选择并输出输入端口[1]中的矩阵元素D;选择单元[1]接收到计数器[1]发送的序号值0,输入端口[0]接收到矩阵元素B,输入端口[1]接收到矩阵元素D,选择单元[1]根据序号值0选择并输出输入端口[0]中的矩阵元素B。在其它周期中,选择单元的工作逻辑与此类似,此处不再赘述。直至周期3时,执行电路已输出完整的输出矩阵,为预期的转置矩阵
为了便于理解并行处理多个输入矩阵的过程,下面以矩阵转置为例,给出具体的矩阵处理过程。请参见图9,是本实施例提供的一种矩阵处理装置的结构示意图。矩阵处理装置包括执行电路、预处理电路和控制单元,预处理电路与控制单元以及执行电路分别相连。
执行电路包括四个选择单元,每个选择单元包括四个输入端口,为了便于描述,四个选择单元分别表示为选择单元[0]、选择单元[1]、选择单元[2]以及选择单元[3];每个选择单元的输入端口分别表示为输入端口[0]、输入端口[1]、输入端口[2]以及输入端口[3]。
预处理电路包括四个计数器和一个触发单元,触发单元与计数器分别相连。四个计数器分别表示为计数器[0]、计数器[1]、计数器[2]以及计数器[3]。计数器与选择单元对应相连。
请参见图10,是本实施例提供的一种矩阵处理方法的流程示意图。
步骤S1010:使用控制单元向预处理电路发送阈值、有效信号和并行数,其中,阈值和并行数均为2。使用有效信号控制触发单元,按序逐一启动计数器[0]和计数器[1],已启动的计数器[0]和计数器[1]均从零开始按照单调递增的方式逐次加一进行计数生成并输出序号值,直至序号值不小于2时停止输出序号值。同时,触发单元按序逐一启动计数器[2]和计数器[3],已启动的计数器[2]和计数器[3]均从2开始按照单调递增的方式逐次加一进行计数生成并输出序号值,直至序号值不小于4时停止输出序号值。
步骤S1020:使用执行电路接收输入矩阵P和输入矩阵Q。其中,将输入矩阵P和Q的第一行向量均相对于第二行向量提前一个矩阵元素传入选择单元。输入端口[0]接收输入矩阵P的第一行输入向量;输入端口[1]接收输入矩阵P的第二行输入向量;输入端口[2]接收输入矩阵Q的第一行输入向量;输入端口[3]接收输入矩阵Q的第二行输入向量。同时,每个选择单元还对应接收计数器发送的序号值,具体的,各个计数器启动后所生成的序号值请参见图11。
请参见图12(A)和图12(B),是本实施例中输入矩阵P和输入矩阵Q的处理过程示意图。
在周期0时,选择单元[0]接收到计数器[0]发送的序号值0,同时,输入端口[0]接收到矩阵元素A,选择单元[0]选择并输出矩阵元素A;选择单元[2]接收到计数器[2]发送的序号值2,同时输入端口[2]接收到矩阵元素1,选择单元[2]选择并输出矩阵元素1。在周期1时,选择单元[0]接收到计数器[0]发送的序号值1,输入端口[1]接收到矩阵元素C,因此选择单元[0]选择并输出矩阵元素C;选择单元[1]接收到计数器[1]发送的序号值0,输入端口[0]接收到矩阵元素B,因此选择单元[1]选择并输出矩阵元素B;选择单元[2]接收到计数器[2]发送的序号值3,输入端口[3]接收到矩阵元素3,因此选择单元[2]选择并输出矩阵元素3;选择单元[3]接收到计数器[3]发送的序号值2,输入端口[2]接收到矩阵元素2,因此选择单元[3]选择并输出矩阵元素2。在其它周期中,选择单元的工作逻辑与此类似,此处不再赘述。直至周期2时,执行电路已输出完整的输出矩阵,为预期的转置矩阵和转置矩阵
本发明也可以使用一个选择单元完成一个向量的转置。提供一个输入向量W为[AB],提供一个包括两个输入端口的选择单元,两个输入端口分别表示为输入端口[0]和输入端口[1]。将矩阵元素A传入输入端口[1],矩阵元素B传入输入端口[0],其中,矩阵元素A比矩阵元素B提前一个周期输入选择单元。提供一个计数器从1开始按照单调递减的方法逐次减一进行计数生成并输出序号值,计数器在两个时钟周期分别输出序号值1和序号值0。
请参见图13,在周期0时,输入端口[1]接收到矩阵元素A,同时序号寄存器接收到序号值1,选择单元选择并输出矩阵元素A;在周期1时,输入端口[0]接收到矩阵元素B,同时序号寄存器接收到序号值0,选择单元选择并输出矩阵元素B。通过上述过程,即获得了转置向量
请参见图14,是本发明实施例提供的一种矩阵处理的处理设备的结构示意图。其中,处理设备1400包括一个或多个处理器1410、通信接口1420、存储器1430以及数据总线1440。上述处理器1410、通信接口1420和存储器1430可以通过图14所示出的数据总线1440相连,也可以通过无线传输等其它方式实现通信。具体的,处理器1410包括前述实施例中所揭示的矩阵处理装置的结构,用于执行存储器1430中存储的程序代码,该程序代码被执行时,实现前述实施例中所揭示的矩阵处理方法的相关功能。
显而易见的是,处理器1410包括中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
通信接口1420可以为有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他模块或装置设备进行通信。例如,本申请实施例中通信接口1420具体可用于接收用户输入的输入数据;或者接收外部设备的数据等。
存储器1430包括易失性存储器(Volatile Memory),例如随机存取存储器(RandomAccess Memory,RAM);存储器也可以包括非易失性存储器(Non-Volatile Memory),例如只读存储器(Read-Only Memory,ROM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);存储器还可以包括上述种类的存储器的组合。
在具体的实现中,并不限于图14所示出的实现方式,而是可以包括更多或更少的部件,本实施例并不进行具体限定。
本领域普通技术人员可以意识到,结合本文中的实施例所揭示的内容,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (9)
1.一种矩阵处理装置,提供外部传入的输入矩阵,所述输入矩阵包括至少一个输入向量,其特征在于,包括预处理电路、执行电路和控制单元;
所述预处理电路包括多个计数器,所述计数器按序启动,至少一个所述计数器的启动时间不早于最先启动的所述计数器,按序启动的所述计数器之间的启动时间间隔相同;已启动的所述计数器用于按单调递增或单调递减的方式从初始值开始计数生成并输出序号值,同一个所述计数器输出的所述序号值组成序号向量;
所述执行电路包括多个选择单元,所述选择单元包括一个序号寄存器、一个输出端口和至少一个输入端口,至少一个所述选择单元与所述计数器对应连接;同一个所述序号寄存器用于逐一接收同一个所述序号向量中的所述序号值;
每个所述选择单元均用于接收所述输入矩阵,其中,同一个所述输入端口用于逐一接收同一个所述输入向量中的矩阵元素;
所述选择单元还用于根据所述序号寄存器中的所述序号值,对应选择所述输入端口中的矩阵元素,对应选择出的所述矩阵元素从所述输出端口输出并形成输出矩阵;
所述控制单元用于向所述预处理电路发送阈值,所述序号值与所述初始值的差值不小于所述阈值的所述计数器停止输出所述序号值。
2.根据权利要求1所述的矩阵处理装置,其特征在于,还包括控制单元,所述预处理电路还包括触发单元,所述触发单元与每个待启动的所述计数器相连;
所述控制单元与所述预处理电路相连,所述控制单元用于向所述预处理电路发送有效信号,所述有效信号用于控制所述触发单元按序启动所述计数器。
3.根据权利要求2所述的矩阵处理装置,其特征在于,所述控制单元还用于向所述预处理电路发送并行数,所述有效信号用于控制所述触发单元每次同时启动与所述并行数相同个数的所述计数器。
4.根据权利要求1所述的矩阵处理装置,其特征在于,相等的所述序号值对应的所述输入端口相互耦合,用于接收同一个所述输入向量。
5.根据权利要求1所述的矩阵处理装置,其特征在于,还包括输入寄存器和计数寄存器,所述输入寄存器与所述执行电路相连,用于暂存所述输入矩阵;所述计数寄存器与所述预处理电路和所述执行电路分别相连,用于暂存所述序号向量组成的矩阵。
6.一种矩阵处理方法,提供外部传入的输入矩阵,所述输入矩阵包括至少一个输入向量,其特征在于,提供选择单元和计数器,每个所述选择单元均包括一个序号寄存器、一个输出端口和至少一个输入端口;所述矩阵处理方法包括:
步骤S100:设定阈值,将所述计数器按序启动,至少一个所述计数器的启动时间不早于最先启动的所述计数器,按序启动的所述计数器之间的启动时间间隔相同;使用已启动的所述计数器按单调递增或单调递减的方式从初始值开始计数生成并输出序号值,当所述计数器生成的所述序号值与所述初始值的差值不小于所述阈值时,停止所述计数器输出序号值,同一个所述计数器输出的所述序号值组成序号向量;
步骤S200:将同一个所述序号向量中的所述序号值逐一发送至同一个所述序号寄存器;同时,将所述输入矩阵发送至所述选择单元,其中,将同一个所述输入向量中的矩阵元素逐一发送至同一个所述输入端口;
步骤S300:使用选择单元根据所述序号寄存器中的所述序号值对应选择所述输入端口中的矩阵元素,对应选择出的所述矩阵元素从所述输出端口输出,形成输出矩阵。
7.根据权利要求6所述的矩阵处理方法,其特征在于,提供并行数和有效信号,提供触发单元,所述方法包括:
使用所述有效信号控制所述触发单元按序启动所述计数器,其中,所述触发单元每次同时启动与所述并行数相同个数的所述计数器。
8.根据权利要求7所述的矩阵处理方法,其特征在于,在同一个输入矩阵中,所述输入向量相对于前一个所述输入向量,沿同一个方向错位相同个矩阵元素传入所述选择单元,不存在前一个所述输入向量时,跳过错位处理。
9.一种矩阵处理设备,包括处理器和存储器,其特征在于,所述处理器包括如权利要求1至5任一项所述的矩阵处理装置,所述存储器存储了可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求6至8中的任一项矩阵处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911035753.5A CN110826711B (zh) | 2019-10-29 | 2019-10-29 | 一种矩阵处理装置、方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911035753.5A CN110826711B (zh) | 2019-10-29 | 2019-10-29 | 一种矩阵处理装置、方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110826711A CN110826711A (zh) | 2020-02-21 |
CN110826711B true CN110826711B (zh) | 2022-04-26 |
Family
ID=69551474
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911035753.5A Active CN110826711B (zh) | 2019-10-29 | 2019-10-29 | 一种矩阵处理装置、方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110826711B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1122026A (zh) * | 1994-08-19 | 1996-05-08 | 财团法人工业技术研究院 | 离散余弦转换/反离散余弦转换电路的转置存储器 |
CN101489129A (zh) * | 2009-01-19 | 2009-07-22 | 山东大学 | 一种实现高速二维离散余弦变换的集成电路及方法 |
CN205721754U (zh) * | 2016-06-08 | 2016-11-23 | 成都傅立叶电子科技有限公司 | 矩阵数据转置装置 |
CN109408117A (zh) * | 2018-10-08 | 2019-03-01 | 京东方科技集团股份有限公司 | 矩阵转置装置及方法、显示装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7669014B2 (en) * | 2007-07-23 | 2010-02-23 | Nokia Corporation | Transpose memory and method thereof |
-
2019
- 2019-10-29 CN CN201911035753.5A patent/CN110826711B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1122026A (zh) * | 1994-08-19 | 1996-05-08 | 财团法人工业技术研究院 | 离散余弦转换/反离散余弦转换电路的转置存储器 |
CN101489129A (zh) * | 2009-01-19 | 2009-07-22 | 山东大学 | 一种实现高速二维离散余弦变换的集成电路及方法 |
CN205721754U (zh) * | 2016-06-08 | 2016-11-23 | 成都傅立叶电子科技有限公司 | 矩阵数据转置装置 |
CN109408117A (zh) * | 2018-10-08 | 2019-03-01 | 京东方科技集团股份有限公司 | 矩阵转置装置及方法、显示装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110826711A (zh) | 2020-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11645224B2 (en) | Neural processing accelerator | |
US11874896B2 (en) | Methods and apparatus for job scheduling in a programmable mixed-radix DFT/IDFT processor | |
CN110390384B (zh) | 一种可配置的通用卷积神经网络加速器 | |
EP3859543A1 (en) | Parallel processing of reduction and broadcast operations on large datasets of non-scalar data | |
CN104899182A (zh) | 一种支持可变分块的矩阵乘加速方法 | |
CN110210615B (zh) | 一种用于执行神经网络计算的脉动阵列*** | |
CN112686379B (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
US20140247908A1 (en) | Bi-directional ring-bus architecture for cordic-based matrix inversion | |
CN111427835A (zh) | 一种基于混合路由算法的片上网络设计方法和装置 | |
EP3251314A1 (en) | Method and apparatus for parallelized qrd-based operations over multiple execution unit processing system | |
JP5353709B2 (ja) | シストリックアレイ及び演算方法 | |
Haghi et al. | A reconfigurable compute-in-the-network fpga assistant for high-level collective support with distributed matrix multiply case study | |
CN110826711B (zh) | 一种矩阵处理装置、方法及设备 | |
US10349251B2 (en) | Methods and apparatus for twiddle factor generation for use with a programmable mixed-radix DFT/IDFT processor | |
US20230376733A1 (en) | Convolutional neural network accelerator hardware | |
CN113407238A (zh) | 一种具有异构处理器的众核架构及其数据处理方法 | |
US11016822B1 (en) | Cascade streaming between data processing engines in an array | |
US11829322B2 (en) | Methods and apparatus for a vector memory subsystem for use with a programmable mixed-radix DFT/IDFT processor | |
CN112528224B (zh) | 一种矩阵特征值分解分组循环迭代流水实现方法及*** | |
CN111401522B (zh) | 脉动阵列变速控制方法及可变速脉动阵列微框架*** | |
CN118095351B (zh) | 层归一化计算的协同处理装置及方法 | |
CN114095289B (zh) | 数据多播电路、方法、电子设备及计算机可读存储介质 | |
CN113504893B (zh) | 一种智能芯片架构和高效处理数据的方法 | |
US20230058749A1 (en) | Adaptive matrix multipliers | |
CN112445752B (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20210208 Address after: 311201 No. 602-11, complex building, 1099 Qingxi 2nd Road, Hezhuang street, Qiantang New District, Hangzhou City, Zhejiang Province Applicant after: Zhonghao Xinying (Hangzhou) Technology Co.,Ltd. Address before: 518057 5-15, block B, building 10, science and technology ecological park, Yuehai street, Nanshan District, Shenzhen City, Guangdong Province Applicant before: Shenzhen Xinying Technology Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |