CN112149049A - 用于变换矩阵的装置和方法、数据处理系统 - Google Patents

用于变换矩阵的装置和方法、数据处理系统 Download PDF

Info

Publication number
CN112149049A
CN112149049A CN201910559362.7A CN201910559362A CN112149049A CN 112149049 A CN112149049 A CN 112149049A CN 201910559362 A CN201910559362 A CN 201910559362A CN 112149049 A CN112149049 A CN 112149049A
Authority
CN
China
Prior art keywords
data
matrix
unit
row
transformed
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
Application number
CN201910559362.7A
Other languages
English (en)
Inventor
龚小章
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kunlun core (Beijing) Technology Co.,Ltd.
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201910559362.7A priority Critical patent/CN112149049A/zh
Priority to EP19214801.3A priority patent/EP3757821A1/en
Priority to US16/711,277 priority patent/US11520563B2/en
Priority to JP2020002746A priority patent/JP7000635B2/ja
Priority to KR1020200003639A priority patent/KR102306252B1/ko
Publication of CN112149049A publication Critical patent/CN112149049A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/015Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising having at least two separately controlled shifting levels, e.g. using shifting matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/78Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/2782Interleaver implementations, which reduce the amount of required interleaving memory
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1137Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/118Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure
    • H03M13/1185Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the parity-check matrix comprises a part with a double-diagonal

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Probability & Statistics with Applications (AREA)
  • Neurology (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本文中描述了用于变换矩阵的装置和方法、数据处理系统。该装置包括:第一移位单元,被配置为接收矩阵数据,并且对矩阵数据进行第一循环移位,以生成第一数据;缓存单元,被配置为将第一数据中的每一行数据以与该行数据中的各个数据的不同排列的排列顺序来写入到缓存单元,以将第一数据存储为第二数据;以及第二移位单元,被配置为从缓存单元读取第二数据,并且对第二数据进行第二循环移位,以生成变换后的矩阵数据。

Description

用于变换矩阵的装置和方法、数据处理系统
技术领域
本公开的实施例主要涉及矩阵数据处理领域,并且更具体地涉及用于变换矩阵的装置和方法、以及包括该装置的数据处理系统。
背景技术
在深度学习加速器中,作为输入数据的最核心的特征、模型参数、中间结果等数据都由矩阵格式表示,诸如一维矩阵、二维矩阵以及更多维矩阵。中央处理单元(CPU)通常在每个时钟周期处理的单位是一个数,而深度学习加速器的处理能力是传统CPU的几十倍乃至几百倍。因此,深度学习加速器在每个时钟周期处理的单位不是一个数,而是一个多维矩阵,诸如输入矩阵的一个矩阵块或者子矩阵。
通常,深度学习模型是一个复杂的计算过程,为了获得更好的性能,需要对诸如矩阵的数据进行一些格式变化和整理。在矩阵变换中,矩阵转置是最为频繁使用的操作,这类操作不改变矩阵内部的数据,但是会调整矩阵的维度和数据的顺序。
期望在深度学习加速器的硬件设计中提供实现高性能、低成本的矩阵变换方案。
发明内容
根据本公开的实施例提供了用于变换矩阵的装置和方法、以及包括该装置的数据处理系统,其能够在深度学习加速器中提供多维矩阵变换方案,并且具有流式处理、电路简单、功耗低等特点。
在本公开的第一方面,提供了一种用于变换矩阵的装置。该装置包括:第一移位单元,被配置为接收矩阵数据,并且对所述矩阵数据进行第一循环移位,以生成第一数据;缓存单元,被配置为将所述第一数据中的每一行数据以与所述行数据中的各个数据的不同排列的排列顺序来写入到所述缓存单元,以将所述第一数据存储为第二数据;以及第二移位单元,被配置为从所述缓存单元读取所述第二数据,并且对所述第二数据进行第二循环移位,以生成变换后的矩阵数据。
在本公开的第二方面,提供了一种数据处理系统。该数据处理系统包括:如上所述的装置;输入输出接口,电耦合到所述装置,并且被配置为将所述矩阵数据传送到所述装置;以及深度学习处理模块,电耦合到所述装置,并且被配置为基于深度学习模型来对所述变换后的矩阵数据进行处理。
在本公开的第三方面,提供了一种用于变换矩阵的方法。该方法包括:接收矩阵数据,并且对所述矩阵数据进行第一循环移位,以生成第一数据;将所述第一数据中的每一行数据以与所述行数据中的各个数据的不同排列的排列顺序来写入到缓存单元,以将所述第一数据在所述缓存单元中存储为第二数据;以及从所述缓存单元读取所述第二数据,并且对所述第二数据进行第二循环移位,以生成变换后的矩阵数据。
应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素,并且在附图中:
图1是示出根据本公开的实施例的数据处理系统的框图;
图2A至图2C是示出矩阵变换的示意图;
图3是示出根据本公开的实施例的矩阵变换装置的框图;
图4是示出根据本公开的实施例的缓存单元的示意图;
图5是示出根据本公开的实施例的矩阵变换的过程的示意图;
图6是示出根据本公开的实施例的矩阵变换的过程的示意图;
图7是示出根据本公开的实施例的矩阵变换的过程的示意图;
图8是示出根据本公开的实施例的矩阵变换的过程的示意图;
图9是示出根据本公开的另一实施例的矩阵变换的过程的示意图;
图10是示出根据本公开的另一实施例的矩阵变换的过程的示意图;以及
图11是示出根据本公开的实施例的用于变换矩阵的方法的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例。相反,提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如以上提及,深度学习加速器的输入通常是矩阵数据,并且在深度学习模型的计算过程中,需要对矩阵数据进行变换。在一个传统方案中,通过由通用处理器(CPU或ARM)进行显示的软件预处理或者协处理,来实现矩阵的维度拓展、转置等操作。然而,这种方案的矩阵变换性能较差,而且增加了用户的代码,使用不方便。此外,在另一个传统方案中,通过寄存器阵列来实现矩阵转置,其中将一个N×N的矩阵纵向移入寄存器阵列,然后再横向移出寄存器阵列,从而实现矩阵的转置。然而,这种方案需要消耗大量的寄存器,不能支持矩阵维度扩展,不能支持三维以上的矩阵转置,灵活性较差。
深度学习加速器的硬件设计包括FPGA电路设计或ASIC芯片设计等形式。如何实现高性能、低成本的矩阵变换电路、以及灵活地支持二维矩阵转置、三维矩阵转置、矩阵维度扩展和转置等多种矩阵变换是一个难点。
根据本公开的实施例提供了用于变换矩阵的装置,其通过第一移位单元接收矩阵数据并且对矩阵数据进行第一循环移位来生成第一数据,通过缓存单元将第一数据中的每一行数据以与该行数据中的各个数据的排列顺序不同的排列顺序来写入到缓存单元来将第一数据存储为第二数据,以及通过第二移位单元从缓存单元读取第二数据并且对第二数据进行第二循环移位来生成变换后的矩阵数据。以此方式,根据本公开的实施例提供了一种在深度学习加速器中实现多维矩阵的变换方案,其支持二维矩阵转置、三维矩阵转置、矩阵维度扩展和转置等多种矩阵变换,并且具有流式处理、电路简单、功耗低等特点。
下文中将结合附图参考各种实施例来详细描述本公开。
图1是示出根据本公开的实施例的数据处理系统的框图。如图1所示的数据处理系统100可以被实现在深度学习加速器中。参照图1,数据处理系统100可以包括矩阵变换装置102、输入输出接口104和深度学习处理模块106。
输入输出接口104被配置为从数据处理系统100外部接收矩阵数据,并且向数据处理系统100外部发送由数据处理系统100处理的结果。在一些实施例中,输入输出接口104被配置为从外部存储器中读取矩阵数据,并且向外部存储器写入表示处理的结果的数据。在一些实施例中,输入输出接口104被配置为接收矩阵块数据或子矩阵数据。此外,输入输出接口104进一步被配置为将接收到的矩阵数据传送到矩阵变换装置102。
矩阵变换装置102电耦合到输入输出接口104。矩阵变换装置102被配置为接收矩阵数据,并且对矩阵数据进行变换以生成变换后的矩阵数据。在一些实施例中,矩阵变换装置102被配置为对矩阵数据进行格式变换。在一些实施例中,矩阵变换装置102被配置为执行诸如二维矩阵转置、三维矩阵转置、矩阵维度扩展和转置等多种矩阵变换。在一些实施例中,矩阵变换装置102进一步被配置为将变换后的矩阵数据传送到深度学习处理模块106以用于计算处理。稍后将描述矩阵变换装置102的详细配置。
深度学习处理模块106电耦合到矩阵变换装置102。深度学习处理模块106被配置为基于深度学习模型来对变换后的矩阵数据进行处理。在一些实施例中,深度学习处理模块106被配置为执行各种矩阵计算、向量计算、非线形计算等处理。在一些实施例中,深度学习处理模块106被配置作为本领域已知的基于深度学习模型的知识产权(IP)核。
在一些实施例中,深度学习处理模块106进一步被配置为将处理的结果作为另外的矩阵数据传送到矩阵变换装置102。在一些实施例中,矩阵变换装置102进一步被配置为基于另外的矩阵数据来生成变换后的另外的矩阵数据,并且将变换后的另外的矩阵数据传送到输入输出接口104,以用于将变换后的另外的矩阵数据输出到外部装置。
在一些实施例中,深度学习处理模块106直接电耦合到输入输出接口104,并且进一步被配置为将处理的结果直接传送到输入输出接口104,以用于将处理的结果输出到外部装置。在一些实施例中,深度学习处理模块106进一步被配置为直接从输入输出接口104接收矩阵数据,并且对矩阵数据进行处理。
在一些实施例中,数据处理系统100以流水的方式进行操作,其中在由矩阵变换装置102对当前矩阵数据进行变换的过程中,输入输出接口104可以接收下一个矩阵数据,同时深度学习处理模块106可以对前一个变换后的矩阵数据进行处理。
图2A至图2C是示出由矩阵变换装置执行的矩阵变换的示意图。通常,二维矩阵由[n,m]表示,其中n表示第一个维度大小,并且m表示第二个维度大小。此外,三维矩阵由[n,m,k]来表示,依次类推。
图2A示出了(a)矩阵[4,2]以及(b)矩阵[2,4],其中左侧矩阵的[4,2]被转置为右侧的矩阵[2,4]。矩阵数据中的(0,0)数据表示第一行第一列数据,并且(2,1)数据表示第三行第二列数据,以此类推。图2A示出了矩阵[n,m]的二维矩阵转置。
图2B示出了(a)矩阵[4,3,2]以及(b)矩阵[3,4,2],其中左侧的矩阵[4,3,2]被转置为右侧的矩阵[3,4,2]。图2B示出了矩阵[n,m,k]的三维矩阵转置。
图2C示出了(a)[4,4]矩阵以及(b)[2,4,2]矩阵,其中左侧的[4,4]矩阵首先被拓展维度而变为[4,2,2],然后维度拓展的矩阵再被转置为右侧的[2,4,2]矩阵。图2C示出了二维矩阵拓展为三维矩阵、并且三维矩阵再被转置的变换。
图3是示出根据本公开的实施例的矩阵变换装置的框图。参照图3,矩阵变换装置102包括第一移位单元202、缓存单元204和第二移位单元206。
第一移位单元202被配置为接收矩阵数据,并且对矩阵数据进行第一循环移位,以生成第一数据。在一些实施例中,第一移位单元202被配置为分别对矩阵数据中的各个行数据进行第一循环移位。在一些实施例中,第一移位单元202被配置为将矩阵数据中的第i行数据循环右移(i-1)位,以生成第一数据。
缓存单元204电耦合到第一移位单元202,以及被配置为控制将第一数据写入到缓存单元204,以将第一数据存储为第二数据。缓存单元204将第一数据中的每一行数据以与该行数据中的各个数据的排列顺序不同的排列顺序来写入到缓存单元204中。在一些实施例中,缓存单元204包括存储控制器和存储单元组,其中存储控制器控制将第一数据写入到存储单元组。在一些实施例中,缓存单元204包括多个存储单元组,每个存储单元组包括多个存储地址,并且缓存单元204进一步被配置为将第一数据中的每一行数据分别写入到不同存储单元组的不同存储地址处,以将第一数据存储为第二数据。应当理解的是,由于第一数据没有按照其原有的行和列的排列顺序来被写入缓存单元204,缓存单元204中存储的第二数据是第一数据的排列顺序或格式改变后的数据。然而,与第一数据相比,第二数据之中的每个数据的内容没有改变。稍后将详细描述将第一数据写入到缓存单元。
第二移位单元206电耦合到缓存单元204,以及被配置为从缓存单元204读取第二数据,并且对第二数据进行第二循环移位,以生成变换后的矩阵数据。在一些实施例中,第二移位单元206被配置为分别读取第二数据中的存储在不同存储单元组的相同存储地址处的数据,以作为第二数据中的相应行数据。在一些实施例中,第二移位单元206被配置为对第二数据中的各个行数据进行第二循环移位,以生成变换后的矩阵数据中的相应行数据。在一些实施例中,第二移位单元206被配置为将第二数据中的第i行数据循环左移(i-1)位,以生成变换后的矩阵数据。此外,第二移位单元206进一步被配置为将变换后的矩阵数据传送到图1的深度学习处理模块106。
图4是示出根据本公开的实施例的缓存单元的示意图。参照图4,缓存单元204包括多个存储单元组302。
如图4所示,在一些实施例中,多个存储单元组302沿着x轴的方向顺序排列,并且x轴表示第i存储单元组302。此外,每个存储单元组302包括多个存储地址。为了便于说明,在一些实施例中,每个存储单元组302的多个存储地址被示出为沿着与x轴正交的y轴的方向排列,并且y轴表示每个存储单元组302的第j存储地址。在一些实施例中,存储地址也可以被称为深度。在一些实施例中,存储地址[i,j]表示第i存储单元组302的第j存储地址。这里,i和j分别为自然数。
在一些实施例中,存储单元组302为静态随机存取存储器(SRAM)组。下文中,将描述存储单元组302作为SRAM组的示例。应当理解的是,存储单元组302不限于SRAM组,并且还可以采用其他类型的存储单元的集合。
图5是示出根据本公开的实施例的矩阵变换的过程的示意图。图5中所示的左侧数据是矩阵数据中的第一行数据(0,0)、(0,1)、(0,2)、(0,3)、(0,4)、(0,5)、(0,6)、(0,7)。在一些实施例中,第一移位单元202从矩阵数据中读取该第一行数据,并且对该第一行数据进行循环右移(1-1=0)位,即,对该第一行数据实质上不进行循环右移。缓存单元204控制该第一行数据的写入,以第一对角线存储地址将该第一行数据写入缓存单元204中。在一些实施例中,缓存单元204将该第一行数据分别写入到多个存储单元组的存储地址[1,1]、[2,2]、[3,3]、[4,4]、[5,5]、[6,6]、[7,7]、[8,8],如图5所示。以此方式,矩阵数据中的第一行数据以第一对角线存储地址未按照其原有的格式或排列顺序被存储在缓存单元204中。
图6是示出根据本公开的实施例的矩阵变换的过程的示意图。图6中所示的左侧数据是矩阵数据中的第二行数据。在一些实施例中,第一移位单元202从矩阵数据中读取该第二行数据,并且对该第二行数据进行循环右移(2-1=1)位,以获得经过循环右移1位后的第二行数据(1,7)、(1,0)、(1,1)、(1,2)、(1,3)、(1,4)、(1,5)、(1,6)。缓存单元204控制循环右移后的第二行数据的写入,以第二对角线存储地址将循环右移后的第二行数据写入缓存单元204中。在一些实施例中,缓存单元204将循环右移后的第二行数据分别写入到多个存储单元组的存储地址[1,8]、[2,1]、[3,2]、[4,3]、[5,4]、[6,5]、[7,6]、[8,7],如图6所示。以此方式,矩阵数据中的循环右移后的第二行数据以第二对角线存储地址未按照其原有的格式或排列顺序被存储在缓存单元204中。
图7是示出根据本公开的实施例的矩阵变换的过程的示意图。图7中所示的左侧数据是矩阵数据中的第三行数据。在一些实施例中,第一移位单元202从矩阵数据中读取该第三行数据,并且对该第三行数据进行循环右移(3-1=2)位,以获得经过循环右移2位后的第三行数据(2,6)、(2,7)、(2,0)、(2,1)、(2,2)、(2,3)、(2,4)、(2,5)。缓存单元204控制循环右移后的第三行数据的写入,以第三对角线存储地址将循环右移后的第三行数据写入缓存单元204中。在一些实施例中,缓存单元204将循环右移后的第三行数据分别写入到多个存储单元组的存储地址[1,7]、[2,8]、[3,1]、[4,2]、[5,3]、[6,4]、[7,5]、[8,6],如图7所示。以此方式,矩阵数据中的循环右移后的第三行数据以第三对角线存储地址未按照其原有的格式或排列顺序被存储在缓存单元204中。
在一些实施例中,以此类推,第一移位单元202从矩阵数据中读取第i行数据,并且对第i行数据进行循环右移(i-1)位。缓存单元204控制循环右移后的第i行数据的写入,以第i对角线存储地址将循环右移后的第i行数据写入缓存单元204中。这里,假设由矩阵数据表示的矩阵包括n行和m列,其中n和m分别为自然数。在一些实施例中,缓存单元204将循环右移后的第i行数据中的m个列数据中的第j数据分别写入到第j存储单元组的第(m+j-i+1)存储地址(其中j大于等于1并且小于等于i-1)和第(j-i+1)存储地址(其中j大于等于i并且小于等于m)处,其中i为大于等于2并且小于等于n。此外,当i等于1时,如上所述,第一行数据中的m个列数据中的第j数据分别写入到第j存储单元组的第j存储地址处。以此方式,缓存单元204控制将循环右移后的各个行数据中的各个数据以相应对角线存储地址来分别写入到不同存储单元组的不同存储地址处。这样,经过第一循环移位后的矩阵数据以与其原有的格式或排列顺序不同的格式或排列顺序来被存储在缓存单元中,以便于通过读取来生成变换后的矩阵。
图8是示出根据本公开的实施例的矩阵变换的过程的示意图。图8的左侧部分示出了存储在缓存单元204中的第二数据的一部分。在一些实施例中,第二移位单元206从缓存单元204中依次读取存储在不同存储单元组的第1存储地址处的数据(0,0)、(1,0)、(2,0)、(3,0)、(4,0)、(5,0)、(6,0)、(7,0),以作为第二数据中的第一行数据。然后,第二移位单元206对第二数据中的第一行数据进行循环左移(1-1=0)位,即,对第二数据中的第一行数据实质上不进行循环左移。第二移位单元206将第二数据中的第一行数据输出为变换后的矩阵数据中的第一行数据。
在一些实施例中,第二移位单元206从缓存单元204中依次读取存储在不同存储单元组的第2存储地址处的数据(7,1)、(0,1)、(1,1)、(2,1)、(3,1)、(4,1)、(5,1)、(6,1),以作为第二数据中的第二行数据。第二移位单元206对第二数据中的第二行数据进行循环左移(2-1=1)位,生成循环左移后的第二行数据(0,1)、(1,1)、(2,1)、(3,1)、(4,1)、(5,1)、(6,1)、(7,1)。第二移位单元206将第二数据中的循环左移后的第二行数据输出为变换后的矩阵数据中的第二行数据。
在一些实施例中,第二移位单元206从缓存单元204中依次读取存储在不同存储单元组的第3存储地址处的数据(6,2)、(7,2)、(0,2)、(1,2)、(2,2)、(3,2)、(4,2)、(5,2),以作为第二数据中的第三行数据。第二移位单元206对第二数据中的第三行数据进行循环左移(3-1=2)位,生成循环左移后的第三行数据(0,2)、(1,2)、(2,2)、(3,2)、(4,2)、(5,2)、(6,2)、(7,2)。第二移位单元206将第二数据中的循环左移后的第三行数据输出为变换后的矩阵数据中的第三行数据。
在一些实施例中,以此类推,第二移位单元206从缓存单元204中分别依次读取第二数据中的存储在不同存储单元组的相同存储地址处的数据,以作为第二数据中的相应行数据。然后,第二移位单元206对第二数据中的第i行数据进行循环左移(i-1)位,以生成变换后的矩阵数据中的相应行数据。以此方式,矩阵变换装置102输出转置后的矩阵数据。
在一些实施例中,当矩阵[n,m]的n小于等于m时,可以按照如上所述的方式对矩阵数据进行第一循环移位以生成第一数据,控制第一数据被写入以存储为第二数据,读取第二数据中的各个行数据,以及对各个行数据进行第二循环移位,从而生成变换后的矩阵。例如,当n等于3并且m等于8时,矩阵数据中的各个行数据被如图7中所示地循环右移和写入。在一些实施例中,第二移位单元206分别读取存储在不同存储单元组的第一存储地址处的数据(0,0)、(1,0)、(2,0)、(dummy)、(dummy)、(dummy)、(dummy)、(dummy),第二存储地址处的数据(dummy)、(0,1)、(1,1)、(2,1)、
(dummy)、(dummy)、(dummy)、(dummy),……以及第八存储地址处的数据(1,7)、(2,7)、(dummy)、(dummy)、(dummy)、
(dummy)、(dummy)、(0,7),以作为第二数据中的相应行数据,其中dummy表示虚设数据,其在从矩阵变换装置102输出时被省略掉。第二移位单元206分别将第二数据中的第i行数据循环左移(i-1)位,以输出包括第一行数据(0,0)、(1,0)、(2,0)、第二行数据(0,1)、(1,1)、(2,1)……和第八行数据(0,7)、(1,7)、(2,7)的变换后的矩阵数据。以此方式,矩阵变换装置102输出矩阵[3,8]的转置矩阵[8,3]。
在一些实施例中,当n大于m时,第一移位单元202将矩阵[n,m]拆分成矩阵[m,m]和矩阵[n-m,m],并且按照如上所述的方式针对矩阵[m,m]进行变换,并且输出变换后的第一矩阵。对于矩阵[n-m,m],将经过第一循环移位之后的矩阵数据以多个存储单元组的第(m+1)存储地址开始写入缓存单元204,并且按照如上所述的方式,针对矩阵[n-m,m]进行变换,其中第二移位单元以第(m+1)存储地址开始读取数据,并且在对读取的数据执行第二循环移位之后输出变换后的第二矩阵。随后,可以组合第一矩阵和第二矩阵以生成转置后的矩阵。
在一些实施例中,当m大于缓存单元204的总数据宽度k时,第一移位单元202将矩阵[n,m]拆分成矩阵[n,k]和矩阵[n,m-k],并且按照如上所述的方式针对矩阵[n,k]进行变换,并且输出变换后的第一矩阵。对于矩阵[n,m-k],将经过第一循环移位之后的矩阵数据以存储单元组的第(k+1)存储地址开始写入缓存单元204,并且按照如上所述的方式,针对矩阵[n,m-k]进行变换,其中第二移位单元以第(k+1)存储地址开始读取,并且在对读取的数据执行第二循环移位之后输出变换后的第二矩阵。随后,可以组合第一矩阵和第二矩阵以生成转置后的矩阵。
在一些实施例中,与如上所述的先以对角线方式写入再以行方向读取数据的方式相反,可以先将第一数据中的各个行数据存储在不同存储单元组的相同地址处,然后以对应的对角线方式读取存储在缓存单元中的数据,以生成变换后的矩阵。
在一些实施例中,可以期望地设置第一数据中的各个行数据在缓存单元中的写入地址以及/或者改变读取的方式,从而执行期望地矩阵变换,包括维度变换、数据位置变换、数据对调等等。
图9和图10是示出根据本公开的另一实施例的矩阵变换的过程的示意图。图9和图10示出了先将矩阵[n,m]拓展为[n,p,q]、然后对矩阵[n,p,q]进行变换的过程的示例。
在一些实施例中,多个存储单元组302中的每s个存储单元组被分成一组存储单元组,每组存储单元组包括多个存储地址。在一些实施例中,多个存储地址中的每t个存储地址被分成一组存储地址。在一些实施例中,缓存单元204进一步被配置为将第一数据中的每t行数据中的多组数据分别写入到不同组的存储单元组的不同组的存储地址处,以将第一数据存储为第二数据,其中多组数据中的每组数据包括s乘以t个数据,其中s和t为自然数。
在一些实施例中,第一移位单元202进一步被配置为将矩阵数据中的每一行数据中的每s个数据分成一组数据,并且将矩阵数据中的第i行数据中的每组数据循环右移(i-1)乘以s位,以生成第一数据。
在一些实施例中,第二移位单元206进一步被配置为分别依次读取第二数据中的存储在不同组的存储单元组的相同组的存储地址处的各组数据,以作为第二数据中的相应行数据。在一些实施例中,第二移位单元206对第二数据中的各个行数据进行第二循环移位,以生成变换后的矩阵数据中的相应行数据。在一些实施例中,第二移位单元206进一步被配置为将第二数据中的第i行数据中的每组数据循环左移(i-1)乘以s位,即,(i-1)组。
图9和图10所示的示例中,输入矩阵例如为二维矩阵[4,8],矩阵变换装置102首先将二维矩阵[4,8]拓展为三维矩阵[4,4,2]。在一些实施例中,每一行数据中的每两个数据被分成一组数据,每两个存储单元组被分成一组存储单元组,以及不同组的存储单元组的同一存储地址被分成一组存储地址。
参照图9,第一移位单元202将第一行数据中的四组数据循环右移(1-1=0)乘以2位,即,实质上不进行循环右移。缓存单元204将第一行数据中的四组数据{(0,0)、(0,1)}、{(0,2)、(0,3)}、{(0,4)、(0,5)}、{(0,6)、(0,7)}分别写入第一和第二存储单元组的第一存储地址、第三和第四存储单元组的第二存储地址、第五和第六存储单元组的第三存储地址、第七和第八存储单元组的第四存储地址,如图9所示。
参照图10,第一移位单元202将第二行数据中的四组数据{(1,0)、(1,1)}、{(1,2)、(1,3)}、{(1,4)、(1,5)}、{(1,6)、(1,7)}循环右移(2-1=1)乘以2位,即,2位或者一个分组,以生成循环右移的第二行数据{(1,6)、(1,7)}、{(1,0)、(1,1)}、{(1,2)、(1,3)}、{(1,4)、(1,5)}。缓存单元204将该循环右移的第二行数据分别存储在第一和第二存储单元组的第四存储地址、第三和第四存储单元组的第一存储地址、第五和第六存储单元组的第二存储地址、第七和第八存储单元组的第四存储地址,如图10所示。
以此类推,与按照参考图5至图8描述的矩阵变换方式类似地对矩阵[4,4,2]进行第一循环移位、写入、读取和第二循环移位,从而将矩阵[4,8]拓展以及变换以生成变换后的矩阵[4,4,2]。
根据本公开的实施例,在深度学习加速器中针对深度学习处理模块实现用于变换矩阵的装置,该装置能够对从片外输入的诸如矩阵块或子矩阵等的矩阵数据进行变换,并且将变换后的矩阵数据传送到深度学习处理模块以用于计算处理。根据本公开的实施例的装置能够实现多维矩阵的变换方案,其支持二维矩阵转置、三维矩阵转置、矩阵维度扩展和转置等多种矩阵变换,并且具有流式处理、电路简单、功耗低等特点。
图11是示出根据本公开的实施例的用于变换矩阵的方法的流程图。参照图11,用于变换矩阵的方法400包括框402至框406。
在框402处,接收矩阵数据,并且对矩阵数据进行第一循环移位,以生成第一数据。在一些实施例中,将矩阵数据中的第i行数据循环右移(i-1)位,以生成第一数据,其中i为自然数。
在框404处,将第一数据中的每一行数据以与该行数据中的各个数据的排列顺序不同的排列顺序来写入到缓存单元,以将第一数据在缓存单元中存储为第二数据。在一些实施例中,缓存单元包括多个存储单元组,每个存储单元组包括多个存储地址。在一些实施例中,将第一数据中的每一行数据分别写入到不同存储单元组的不同存储地址处。
在一些实施例中,由矩阵数据表示的矩阵包括n行和m列,其中n和m分别为自然数。在一些实施例中,将第一数据中的第1行数据中的m个列数据中的第j数据分别写入到多个存储单元组中的第j存储单元组的第j存储地址处,其中j为大于等于1并且小于等于m的自然数。此外,将第一数据中的第i行数据中的m个列数据中的第j数据分别写入到多个存储单元组中的第j存储单元组的第(m+j-i+1)存储地址(其中j大于等于1并且小于等于i-1)和第(j-i+1)存储地址(其中j大于等于i并且小于等于m)处,其中i为大于等于2并且小于等于n的自然数。
在框406处,从缓存单元读取第二数据,并且对第二数据进行第二循环移位,以生成变换后的矩阵数据。在一些实施例中,分别读取第二数据中的存储在不同存储单元组的相同存储地址处的数据,以作为第二数据中的相应行数据。在一些实施例中,对第二数据中的各个行数据进行第二循环移位,以生成变换后的矩阵数据中的相应行数据。在一些实施例中,将第二数据中的第i行数据循环左移(i-1)位,以生成变换后的矩阵数据。
应当理解的是,用于实施本公开的实施例的方法可以采用一个或多个编程语言的任何组合来编写,以适用于片上系统(SoC)架构。此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。
虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

Claims (20)

1.一种用于变换矩阵的装置,包括:
第一移位单元,被配置为接收矩阵数据,并且对所述矩阵数据进行第一循环移位,以生成第一数据;
缓存单元,被配置为将所述第一数据中的每一行数据以与所述行数据中的各个数据的不同排列的排列顺序来写入到所述缓存单元,以将所述第一数据存储为第二数据;以及
第二移位单元,被配置为从所述缓存单元读取所述第二数据,并且对所述第二数据进行第二循环移位,以生成变换后的矩阵数据。
2.根据权利要求1所述的装置,其中所述缓存单元包括多个存储单元组,每个存储单元组包括多个存储地址,并且其中所述缓存单元进一步被配置为:
将所述第一数据中的每一行数据分别写入到不同存储单元组的不同存储地址处,以将所述第一数据存储为所述第二数据。
3.根据权利要求2所述的装置,其中所述第二移位单元进一步被配置为:
分别读取所述第二数据中的存储在不同存储单元组的相同存储地址处的数据,以作为所述第二数据中的相应行数据;以及
对所述第二数据中的各个行数据进行所述第二循环移位,以生成所述变换后的矩阵数据中的相应行数据。
4.根据权利要求3所述的装置,其中
所述第一移位单元进一步被配置为将所述矩阵数据中的第i行数据循环右移i-1位,以生成所述第一数据,其中i为自然数;以及
所述第二移位单元进一步被配置为将所述第二数据中的第i行数据循环左移i-1位,以生成所述变换后的矩阵数据。
5.根据权利要求4所述的装置,其中由所述矩阵数据表示的矩阵包括n行和m列,其中n和m分别为自然数,并且其中所述缓存单元进一步被配置为:
将所述第一数据中的第1行数据中的m个列数据中的第j数据分别写入到所述多个存储单元组中的第j存储单元组的第j存储地址处,其中j为大于等于1并且小于等于m的自然数;以及
将所述第一数据中的第i行数据中的m个列数据中的第j数据分别写入到所述多个存储单元组中的第j存储单元组的第一存储地址和第二存储地址处,其中i为大于等于2并且小于等于n的自然数,并且其中:
当j大于等于1并且小于等于i-1时,所述第一存储地址为第m+j-i+1存储地址;以及
当j大于等于i并且小于等于m时,所述第二存储地址为第j-i+1存储地址。
6.根据权利要求1所述的装置,其中所述第一移位单元进一步被配置为:
将由所述矩阵数据表示的矩阵拆分成包括p行的第一矩阵和包括q行的第二矩阵、或者包括p列的第一矩阵和包括q列的第二矩阵,其中p和q分别为自然数;
对所述第一矩阵的矩阵数据进行所述第一循环移位,以生成所述第一矩阵的所述第一数据;以及
对所述第二矩阵的矩阵数据进行所述第一循环移位,以生成所述第二矩阵的所述第一数据。
7.根据权利要求6所述的装置,其中所述缓存单元进一步被配置为:
将所述第一矩阵的所述第一数据以第1存储地址作为起始地址写入到所述缓存单元中,以将所述第一矩阵的所述第一数据存储为所述第一矩阵的所述第二数据;以及
将所述第二矩阵的所述第一数据以第k+1存储地址作为起始地址写入到所述缓存单元中,以将所述第二矩阵的所述第一数据存储为所述第二矩阵的所述第二数据,其中k是大于或等于p的自然数。
8.根据权利要求7所述的装置,其中所述第二移位单元进一步被配置为:
从所述缓存单元读取所述第一矩阵的所述第二数据,并且对所述第一矩阵的所述第二数据进行所述第二循环移位,以生成变换后的第一矩阵数据;
从所述缓存单元读取所述第二矩阵的所述第二数据,并且对所述第二矩阵的所述第二数据进行所述第二循环移位,以生成变换后的第二矩阵数据;以及
将所述变换后的第一矩阵数据和所述变换后的第二矩阵数据结合,以生成所述变换后的矩阵数据。
9.根据权利要求1所述的装置,其中所述缓存单元包括多个存储单元组,所述多个存储单元组中的每s个存储单元组被分成一组存储单元组,每组存储单元组包括多个存储地址,所述多个存储地址中的每t个存储地址被分成一组存储地址,并且所述缓存单元进一步被配置为:
将所述第一数据中的每t行数据中的多组数据分别写入到不同组的存储单元组的不同组的存储地址处,以将所述第一数据存储为所述第二数据,其中所述多组数据中的每组数据包括s乘以t个数据,其中s和t为自然数。
10.根据权利要求9所述的装置,其中所述第二移位单元进一步被配置为:
分别读取所述第二数据中的存储在不同组的存储单元组的相同组的存储地址处的各组数据,以作为所述第二数据中的相应行数据;以及
对所述第二数据中的各个行数据进行所述第二循环移位,以生成所述变换后的矩阵数据中的相应行数据。
11.根据权利要求10所述的装置,其中
所述第一移位单元进一步被配置为将所述矩阵数据中的每一行数据中的每s个数据分成一组数据,并且将所述矩阵数据中的第i行数据中的每组数据循环右移i-1乘以s位,以生成所述第一数据,其中i和s为自然数;以及
所述第二移位单元进一步被配置为将所述第二数据中的第i行数据中的每组数据循环左移i-1乘以s位。
12.根据权利要求1至11中任一项所述的装置,其中由所述变换后的矩阵数据表示的矩阵是由所述矩阵数据表示的矩阵的转置矩阵。
13.一种数据处理系统,包括:
根据权利要求1至12中任一项所述的装置;
输入输出接口,电耦合到所述装置,并且被配置为将所述矩阵数据传送到所述装置;以及
深度学习处理模块,电耦合到所述装置,并且被配置为基于深度学习模型来对所述变换后的矩阵数据进行处理。
14.根据权利要求13所述的数据处理系统,其中
所述深度学习处理模块进一步被配置为将所述处理的结果作为另外的矩阵数据传送到所述装置;以及
所述装置进一步被配置为基于所述另外的矩阵数据来生成变换后的另外的矩阵数据,并且将所述变换后的另外的矩阵数据传送到所述输入输出接口。
15.根据权利要求13所述的数据处理系统,其中所述深度学习处理模块电耦合到所述输入输出接口,并且进一步被配置为将所述处理的结果传送到所述输入输出接口。
16.一种用于变换矩阵的方法,包括:
接收矩阵数据,并且对所述矩阵数据进行第一循环移位,以生成第一数据;
将所述第一数据中的每一行数据以与所述行数据中的各个数据的不同排列的排列顺序来写入到缓存单元,以将所述第一数据在所述缓存单元中存储为第二数据;以及
从所述缓存单元读取所述第二数据,并且对所述第二数据进行第二循环移位,以生成变换后的矩阵数据。
17.根据权利要求16所述的方法,其中所述缓存单元包括多个存储单元组,每个存储单元组包括多个存储地址,并且其中将所述第一数据存储为所述第二数据包括:
将所述第一数据中的每一行数据分别写入到不同存储单元组的不同存储地址处。
18.根据权利要求17所述的装置,其中生成所述变换后的矩阵数据包括:
分别读取所述第二数据中的存储在不同存储单元组的相同存储地址处的数据,以作为所述第二数据中的相应行数据;以及
对所述第二数据中的各个行数据进行所述第二循环移位,以生成所述变换后的矩阵数据中的相应行数据。
19.根据权利要求18所述的方法,其中
将所述矩阵数据中的第i行数据循环右移i-1位,以生成所述第一数据,其中i为自然数;以及
将所述第二数据中的第i行数据循环左移i-1位,以生成所述变换后的矩阵数据。
20.根据权利要求19所述的装置,其中由所述矩阵数据表示的矩阵包括n行和m列,其中n和m分别为自然数,并且其中将所述第一数据存储为所述第二数据包括:
将所述第一数据中的第1行数据中的m个列数据中的第j数据分别写入到所述多个存储单元组中的第j存储单元组的第j存储地址处,其中j为大于等于1并且小于等于m的自然数;以及
将所述第一数据中的第i行数据中的m个列数据中的第j数据分别写入到所述多个存储单元组中的第j存储单元组的第一存储地址和第二存储地址处,其中i为大于等于2并且小于等于n的自然数,并且其中:
当j大于等于1并且小于等于i-1时,所述第一存储地址为第m+j-i+1存储地址;以及
当j大于等于i并且小于等于m时,所述第二存储地址为第j-i+1存储地址。
CN201910559362.7A 2019-06-26 2019-06-26 用于变换矩阵的装置和方法、数据处理系统 Pending CN112149049A (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201910559362.7A CN112149049A (zh) 2019-06-26 2019-06-26 用于变换矩阵的装置和方法、数据处理系统
EP19214801.3A EP3757821A1 (en) 2019-06-26 2019-12-10 Apparatus and method for transforming matrix, and dataprocessing system
US16/711,277 US11520563B2 (en) 2019-06-26 2019-12-11 Apparatus and method for transforming matrix, and data processing system
JP2020002746A JP7000635B2 (ja) 2019-06-26 2020-01-10 マトリックスを変換するための装置及び方法、データ処理システム
KR1020200003639A KR102306252B1 (ko) 2019-06-26 2020-01-10 매트릭스 변환 장치, 방법 및 데이터 처리 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910559362.7A CN112149049A (zh) 2019-06-26 2019-06-26 用于变换矩阵的装置和方法、数据处理系统

Publications (1)

Publication Number Publication Date
CN112149049A true CN112149049A (zh) 2020-12-29

Family

ID=68848035

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910559362.7A Pending CN112149049A (zh) 2019-06-26 2019-06-26 用于变换矩阵的装置和方法、数据处理系统

Country Status (5)

Country Link
US (1) US11520563B2 (zh)
EP (1) EP3757821A1 (zh)
JP (1) JP7000635B2 (zh)
KR (1) KR102306252B1 (zh)
CN (1) CN112149049A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116910437A (zh) * 2023-09-12 2023-10-20 腾讯科技(深圳)有限公司 矩阵转置装置、方法、ai处理器及计算机设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5719875A (en) * 1996-06-11 1998-02-17 Lucent Technologies Inc. Systematic convolution interleavers and deinterleavers
US7669014B2 (en) * 2007-07-23 2010-02-23 Nokia Corporation Transpose memory and method thereof
US8200594B1 (en) 2008-09-10 2012-06-12 Nvidia Corporation System, method, and computer program product for accelerating a game artificial intelligence process
US20110264723A1 (en) * 2010-04-21 2011-10-27 Samsung Electronics Co., Ltd. System and method for successive matrix transposes
US9201899B2 (en) 2011-10-14 2015-12-01 Panasonic Intellectual Property Management Co., Ltd. Transposition operation device, integrated circuit for the same, and transposition method
JP6651629B2 (ja) 2015-12-10 2020-02-19 ディープマインド テクノロジーズ リミテッド 外部メモリを用いたニューラルネットワークの拡張
US9952831B1 (en) 2017-02-16 2018-04-24 Google Llc Transposing in a matrix-vector processor
US10909447B2 (en) 2017-03-09 2021-02-02 Google Llc Transposing neural network matrices in hardware
CN117273096A (zh) 2017-05-17 2023-12-22 谷歌有限责任公司 在硬件中执行矩阵乘法
US10698974B2 (en) 2017-05-17 2020-06-30 Google Llc Low latency matrix multiply unit
CN109150196B (zh) 2017-06-27 2024-06-18 华为技术有限公司 信息处理的方法、装置和通信设备
US11328037B2 (en) * 2017-07-07 2022-05-10 Intel Corporation Memory-size- and bandwidth-efficient method for feeding systolic array matrix multipliers

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116910437A (zh) * 2023-09-12 2023-10-20 腾讯科技(深圳)有限公司 矩阵转置装置、方法、ai处理器及计算机设备
CN116910437B (zh) * 2023-09-12 2023-12-12 腾讯科技(深圳)有限公司 矩阵转置装置、方法、ai处理器及计算机设备

Also Published As

Publication number Publication date
JP2021005358A (ja) 2021-01-14
JP7000635B2 (ja) 2022-01-19
US20200412382A1 (en) 2020-12-31
KR102306252B1 (ko) 2021-09-28
EP3757821A1 (en) 2020-12-30
KR20210001872A (ko) 2021-01-06
US11520563B2 (en) 2022-12-06

Similar Documents

Publication Publication Date Title
US7836116B1 (en) Fast fourier transforms and related transforms using cooperative thread arrays
JP2010521728A (ja) データ圧縮のための回路及びこれを用いるプロセッサ
US7640284B1 (en) Bit reversal methods for a parallel processor
CN110796235B (zh) 卷积神经网络Valid卷积的向量化实现方法
US20030088600A1 (en) Matrix transposition in a computer system
CN102053948A (zh) 在单指令多数据多核处理器架构上转置矩阵的方法和系统
CN108897716B (zh) 通过存储器读写操作来缩减计算量的数据处理装置及方法
US8880575B2 (en) Fast fourier transform using a small capacity memory
CN110825312A (zh) 数据处理装置、人工智能芯片及电子设备
CN113919477A (zh) 一种卷积神经网络的加速方法及装置
CN110807170A (zh) 多样本多通道卷积神经网络Same卷积向量化实现方法
US20210042261A1 (en) Data processing
JP5359569B2 (ja) メモリのアクセス方法
US9098449B2 (en) FFT accelerator
CN112149049A (zh) 用于变换矩阵的装置和方法、数据处理系统
CN111221501B (zh) 一种用于大数乘法的数论变换电路
US9268744B2 (en) Parallel bit reversal devices and methods
CN109669666B (zh) 乘累加处理器
CN111814675B (zh) 基于fpga支持动态分辨率的卷积神经网络特征图组装系统
US11210105B1 (en) Data transmission between memory and on chip memory of inference engine for machine learning via a single data gathering instruction
CN111368250B (zh) 基于傅里叶变换/逆变换的数据处理系统、方法及设备
CN112905954A (zh) 一种利用fpga bram的cnn模型卷积运算加速计算方法
JPH09212489A (ja) 対称行列の固有値問題を解く並列処理装置および方法
CN117786298A (zh) 一种用于arm架构的通用矩阵乘法计算方法及系统
US20230307036A1 (en) Storage and Accessing Methods for Parameters in Streaming AI Accelerator Chip

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
TA01 Transfer of patent application right

Effective date of registration: 20211019

Address after: Baidu building, No. 10, 10th Street, Haidian District, Beijing 100086

Applicant after: Kunlun core (Beijing) Technology Co.,Ltd.

Address before: 100094 2 / F, baidu building, No.10 Shangdi 10th Street, Haidian District, Beijing

Applicant before: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd.

TA01 Transfer of patent application right
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination