CN112614040B - 用于卷积计算的方法、计算设备和计算机可读存储介质 - Google Patents

用于卷积计算的方法、计算设备和计算机可读存储介质 Download PDF

Info

Publication number
CN112614040B
CN112614040B CN202011484326.8A CN202011484326A CN112614040B CN 112614040 B CN112614040 B CN 112614040B CN 202011484326 A CN202011484326 A CN 202011484326A CN 112614040 B CN112614040 B CN 112614040B
Authority
CN
China
Prior art keywords
data
pixels
systolic array
cycle
period
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
Application number
CN202011484326.8A
Other languages
English (en)
Other versions
CN112614040A (zh
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.)
Shanghai Bi Ren Technology Co ltd
Original Assignee
Shanghai Biren Intelligent 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 Shanghai Biren Intelligent Technology Co Ltd filed Critical Shanghai Biren Intelligent Technology Co Ltd
Priority to CN202011484326.8A priority Critical patent/CN112614040B/zh
Publication of CN112614040A publication Critical patent/CN112614040A/zh
Application granted granted Critical
Publication of CN112614040B publication Critical patent/CN112614040B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • 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

Abstract

本公开涉及一种用于卷积计算的方法、计算设备和计算机可读存储介质。该方法包括:如果确定当前周期为初始周期,从输入缓存向脉动阵列加载n*n像素的数据,脉动阵列包括第一预定数目行乘以第二预定数目列的处理单元,初始周期与初始权重相关联,n为自然数;如果确定当前周期为初始周期之后的其他周期,基于当前周期的顺序,向脉动阵列加载一列像素的数据、一行像素的数据或者一个像素的数据;以及如果确定完成当前周期所对应的数据加载,经由输出复用单元,在脉动阵列中的一组或多组n*n像素的数据中选择一组n*n像素的数据,以便提供至通用矩阵乘单元。根据本公开的实施例,能够有效降低带宽占用和功率消耗。

Description

用于卷积计算的方法、计算设备和计算机可读存储介质
技术领域
本公开的实施例总体上涉及机器学习领域,更具体地涉及一种用于卷积计算的方法、计算设备和计算机可读存储介质。
背景技术
机器学习中的典型运算为卷积计算,卷积计算是将卷积核中的权重和对应的输入像素块相乘再相加进而生成对应输出特征的值。块卷积需要img2col(图像到列)函数将像素块转换为矩阵,传统卷积计算的方法,例如基于img2col函数的块卷积计算,其要求每个周期加载每个权重的完整像素。例如,在原始的2x2像素的图像数据经由填充(padding)处理得到的4x4像素的图像数据上进行3x3的块卷积(9个权重,从weight 0到weight 8,对应于初始周期至第八周期,即cycle 0至cycle 8)的运算时,每个周期需要加载完整的2x2像素的数据。由于对于相邻周期,所需加载的像素数据存在相同的数据,重新加载完整的2x2像素的数据会导致浪费带宽和功率。
综上,传统的卷积计算方案因每个周期需要重新加载对应于每个权重的完整像素,因此导致占用更多带宽和消耗更高的功率。
发明内容
本公开提供了一种用于卷积计算的方法、计算设备和计算机可读存储介质,能够有效降低带宽占用和功率消耗。
根据本公开的第一方面,提供了一种用于卷积计算的方法。该方法包括:如果确定当前周期为初始周期,从输入缓存向脉动阵列加载n*n像素的数据,脉动阵列包括第一预定数目行乘以第二预定数目列的处理单元,初始周期与初始权重相关联,n为自然数;如果确定当前周期为初始周期之后的其他周期,基于当前周期的顺序,向脉动阵列加载一列像素的数据、一行像素的数据或者一个像素的数据;以及如果确定完成当前周期所对应的数据加载,经由输出复用单元,在脉动阵列中的一组或多组n*n像素的数据中选择一组n*n像素的数据,以便提供至通用矩阵乘单元。
根据本发明的第二方面,还提供了一种计算设备,该设备包括:输入缓存,用于缓存待加载的数据;输入复用单元,用于在初始周期,将来自输入缓存的n*n像素的待加载的数据向脉动阵列加载,以及在初始周期之后的其他周期,向脉动阵列加载一列像素的数据、一行像素的数据或者一个像素的数据;脉动阵列,被配置在输入缓存和通用矩阵乘单元之间,脉动阵列包括第一预定数目行乘以第二预定数目列的处理单元;以及输出复用单元,用于在每一个周期从脉动阵列中的一组或者多组n*n像素的数据中选择一组n*n像素的数据,以便提供至通用矩阵乘单元。
根据本公开的第三方面,还提供了一种计算机可读存储介质。该计算机可读存储介质上存储有计算机程序,计算机程序被机器执行时执行本公开的第一方面的方法。
在一些实施例中,从输入缓存向脉动阵列加载n*n像素的数据包括:经由输入复用单元,从输入缓存向脉动阵列加载n*n像素的数据,输入复用单元包括多个第一输入复用单元和一个第二输入复用单元。
在一些实施例中,基于当前周期的顺序向脉动阵列加载一列像素的数据、一行像素的数据或者一个像素的数据包括:如果确定当前周期为第一周期,向脉动阵列加载第n+1列像素的数据;以及如果确定当前周期为第二周期,向脉动阵列加载第n+2列像素的数据。
在一些实施例中,基于当前周期的顺序向脉动阵列加载一列像素的数据、一行像素的数据或者一个像素的数据包括:如果确定当前周期为第三周期或者第六周期,脉动阵列自下而上地脉动处理单元的数据;以及经由输入复用单元,从输入缓存向脉动阵列加载第n行像素的数据。
在一些实施例中,基于当前周期的顺序向脉动阵列加载一列像素的数据、一行像素的数据或者一个像素的数据包括:如果确定当前周期为第四周期、第五周期、第七周期和第八周期中的一个周期,向脉动阵列加载一个像素的数据。
在一些实施例中,第一预定数目为8,第二预定数目为8或者11。
在一些实施例中,所加载的n*n像素的数据为8*8像素的数据。
在一些实施例中,输入复用单元包括多个第一输入复用单元和第二输入复用单元,第一预定数目为8,第二预定数目为8或者11。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。
图1示意性示出了传统的用于卷积计算的方法的示意图。
图2示意性示出了本公开的多个实施例能够在其中实现的计算设备的示意图。
图3示出了根据本公开的实施例的用于卷积计算的方法的流程图。
图4示出了根据本公开的实施例的用于加载数据的方法的示意图。
图5示出了根据本公开的实施例的用于向通用矩阵乘单元提供数据的方法的流程图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本公开内容的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如前文描述,传统的用于卷积计算的方案,因每个周期需要加载对应于每个权重的完整像素,因此导致占用更多带宽和消耗更高的功率。
以下结合图1说明传统的用于卷积计算的方法。图1示意性示出了传统的用于卷积计算的方法100的示意图。例如,如图1所示,例如在原始的2x2像素的图像数据(未示出)经由填充(padding)处理得到的4x4像素的图像数据110上进行3x3卷积核(未示出)的运算,该3x3卷积核包括9个权重,即初始权重(weight 0)到第八权重(weight 8)。例如,在初始周期,对应初始权重,需要加载2x2像素的数据120;对应第一权重,需要加载2x2像素的数据122;对应第二权重,需要加载2x2像素的数据124;对应第三权重,需要加载2x2像素的数据126;对应第四权重,需要加载2x2像素的数据128;对应第五权重,需要加载2x2像素的数据130;对应第六权重,需要加载2x2像素的数据132;对应第七权重,需要加载2x2像素的数据134;对应第八权重,需要加载2x2像素的数据136。可见,每个周期需要重新加载对应于每个权重的完整的2x2像素的数据。相邻权重之间所加载的部分像素相同。例如,初始周期中,对应初始权重(weight 0)所加载的2x2像素中的数据“1”和“5”,与第一周期中的对应于第一权重(weight 1)所加载的2x2像素中的数据“1”和“5”相同,因此,数据“1”和“5”至少被加载了两次。再例如,图1中黑色边框内的像素数据“5”、“6”、“9”和“10”对应于多个权重都存在被多次重复加载的情形。这些重复加载的情形导致卷积计算占用更多带宽和消耗更高的功率。
针对上述提及的现有方案中存在的各种问题,本公开的实施方式提供了一种用于卷积计算的方案,旨在至少部分地解决上述问题。在本公开的方案中,通过设置脉动阵列,并在初始周期经由输入缓存向脉动阵列加载n*n像素的数据,以及在其他周期,向脉动阵列加载一列、一行或者一个像素的数据,而无需针对每个周期均加载每个权重的完整像素,本公开利于占用更少的带宽。另外,通过在每一个周期经由输出复用单元在脉动阵列中的一组或多组n*n像素的数据中选择一组n*n像素的数据提供至通用矩阵乘单元,本公开不必进行脉动阵列的横向脉动,进而显著地降低功率。因而,本公开能够有效降低带宽占用和功率消耗。
下面将结合图2至图5来具体描述本公开的实施方式。
图2示意性示出了本公开的多个实施例能够在其中实现的计算设备200的示意图。如图2所示,计算设备200至少包括输入缓存210、输入复用单元220、脉动阵列240、输出复用单元260和通用矩阵乘单元(GEMM)250和控制器270。计算设备200可以用于GPU加速的神经网络计算。
关于输入缓存210,其用于缓存待加载的数据。例如,输入缓存210缓存有用于卷积计算的输入图像的像素块的数据。
输入复用单元220,其用于在初始周期,将来自输入缓存的n*n像素的待加载的数据向脉动阵列加载,以及在初始周期之后的其他周期(例如第一周期至第八周期),向脉动阵列加载一列像素的数据、一行像素的数据或者一个像素的数据。如图2所示,输入复用单元220例如包括多个第一输入复用单元222至228和一个第二输入复用单元230。
脉动阵列240,其被配置在输入缓存210和通用矩阵乘单元250之间,用于使得被加载的数据在处理单元的阵列中进行脉动,并且为通用矩阵乘单元250缓存像素数据。由于通用矩阵乘单元250本身无法缓存像素数据,如果未在输入缓存210和通用矩阵乘单元250之间配置脉动阵列240,通用矩阵乘单元250每个周期都需要从输入缓存210加载对应于每个权重的完整像素。由此,通过被配置在输入缓存210和通用矩阵乘单元250之间的脉动阵列240实现了通用矩阵乘单元250输入像素数据的过渡。脉动阵列240包括第一预定数目行(例如n行)乘以第二预定数目列(例如m列,m大于或者等于n,m和n为自然数)的处理单元(例如PE)。例如,脉动阵列240具有8行乘以11列的处理单元。8行处理单元例如是R0至R7行所指示。11列的处理单元例如是C0至C10列所指示。在一些实施例中,脉动阵列240具有8行乘以8列的处理单元。
关于脉动阵列240的脉动方式,例如包括自下至上的纵向脉动。与传统的脉动阵列的横向脉动方式不同,本公开通过输出复用单元260从脉动阵列中的多组n*n像素的数据中选择一组n*n像素的数据,以便提供至通用矩阵乘单元250。由于脉动意味着数据在寄存器之间进行传递,因此脉动会导致功率消耗,本公开的脉动阵列240仅进行纵向脉动、不涉及横向脉动,因此,可以进一步降低脉动阵列因横向脉动而导致的功率损耗。
关于输出复用单元260,其用于在每一个周期从脉动阵列中的一组或者多组n*n像素的数据中选择一组n*n像素的数据,以便提供至通用矩阵乘单元250。例如,输出复用单元260包括四选一的选择器,其可以从4组8x8像素的数据中(例如C0-C7列,C1-C8列,C2-C9列,C3-C10列)选择一组8x8像素的数据,以便提供至通用矩阵乘单元250。应当理解,选择器的功率消耗非常低。因此,利用输出复用单元260的选择器功能代理脉动阵列的横向脉动,可以显著降低计算设备200卷积计算时的功率损耗。
关于通用矩阵乘单元250,其用于基于脉动阵列240所提供的像素的数据用于矩阵乘法运算。
关于控制器270,其用于至少基于所接收的指令控制输入复用单元220、脉动阵列240和输出复用单元260等单元的动作。例如,控制器270可以根据存储在只读存储器(ROM)中的计算机程序指令或者从存储单元加载到随机存取存储器(RAM)中的计算机程序指令,来执行输入复用单元220、脉动阵列240和输出复用单元260的控制。
以下结合图3和图4说明用于卷积计算的方法300。图3示出了根据本公开的实施例的用于卷积计算的方法300的流程图。图4示出了根据本公开的实施例的用于加载数据的方法的示意图。应当理解,方法300例如可以在图2所描述的计算设备200处执行。也应当理解,方法300还可以包括未示出的附加组成部分、动作和/或可以省略所示出的组成部分、动作,本公开的范围在此方面不受限制。
步骤302处,如果计算设备200确定当前周期为初始周期,从输入缓存向脉动阵列加载n*n像素的数据,脉动阵列包括第一预定数目行乘以第二预定数目列的处理单元,初始周期与初始权重相关联,n为自然数。例如,如果计算设备200确定当前周期为初始周期(cycle0,对应初始权重weight 0),由输入缓存向脉动阵列加载8*8像素的数据,例如,图4中标记402所示的C0-C7列像素的数据。
步骤304处,如果计算设备200确定当前周期为初始周期之后的其他周期,基于当前周期的顺序,向脉动阵列加载一列像素的数据、一行像素的数据或者一个像素的数据。
例如,如果计算设备200确定当前周期为第一周期(cycle1,对应第一权重),向脉动阵列加载第n+1列像素的数据。如图4所示,如果计算设备200确定当前周期为第一周期,向脉动阵列加载标记404所示的C8列像素的数据,在第一周期,框内的R0-R7行*C1-C7列像素的数据被复用。
如果计算设备200确定当前周期为第二周期(cycle2,对应第二权重),向脉动阵列加载第n+2列像素的数据,例如,加载标记406所示的C9列像素的数据。在第二周期,框内的R0-R7行*C2-C8列像素的数据被复用。
如果计算设备200确定当前周期为第三周期或者第六周期,脉动阵列自下而上地脉动处理单元的数据;以及经由输入复用单元,从输入缓存向脉动阵列加载第n行像素的数据。例如,如图4所示,如果确定当前周期为第三周期(cycle3,对应第三权重),R0-R7行像素的数据整体自下而上纵向脉动一行,例如,初始周期的R1行像素的数据被脉动至R0行。然后,输入复用单元220从输入缓存210向脉动阵列加载408所示的第R7行像素的数据。在第三周期,框内的R0-R6行*C0-C7列像素的数据被复用。如果计算设备200确定当前周期为第六周期(cycle6,对应第六权重),R0-R7行像素的数据整体自下而上纵向脉动一行,例如,初始周期的R2(对应第三周期的R1)行像素的数据脉动至R0行。输入复用单元220从输入缓存210向脉动阵列加载414所示的第R7行像素的数据。在第六周期,框内的R0-R6行*C0-C7列像素的数据被复用。
如果计算设备200确定当前周期为第四周期、第五周期、第七周期和第八周期中的一个周期,向脉动阵列加载一个像素的数据。例如,如图4所示,如果确定当前周期为第四周期(cycle4,对应第四权重),输入复用单元220从输入缓存210向脉动阵列加载第R7行、第C8列的一个像素的数据“89”,如标记410所示。在第四周期,框内的R0-R6行*C1-C8列像素的数据、以及第R7行并且第C1-C7列的像素的数据“82至88”被复用。如果确定当前周期为第五周期(cycle5,对应第五权重),输入复用单元220从输入缓存210向脉动阵列加载第R7行、第C9列的一个像素的数据“90”,如标记412所示。在第五周期,框内的R0-R6行*C2-C9列像素的数据、以及第R7行并且第C2-C8列的像素的数据“83至89”被复用。如果确定当前周期为第七周期(cycle7,对应第七权重),输入复用单元220从输入缓存210向脉动阵列加载第R7行、第C8列一个像素的数据“99”,如标记416所示。在第七周期,框内的R0-R6行*C1-C8列像素的数据、以及第R7行并且第C1-C7列的像素的数据“92至98”被复用。如果确定当前周期为第八周期(cycle8,对应第八权重),输入复用单元220从输入缓存210向脉动阵列加载第R7行、第C9列一个像素的数据“100”,如标记418所示。在第八周期,框内的R0-R6行*C2-C9列像素的数据、以及第R7行并且第C2-C8列的像素的数据“93至99”被复用。
步骤306处,计算设备200确定是否完成当前周期所对应的数据加载。如果计算设备200确定尚未完成当前周期所对应的数据加载,则在步骤306处继续等待。
步骤308处,如果计算设备200确定完成当前周期所对应的数据加载,经由输出复用单元,在脉动阵列中的一组或多组n*n像素的数据中选择一组n*n像素的数据,以便提供至通用矩阵乘单元。
例如,如果计算设备200确定完成当前周期所对应的数据加载,输出复用单元260从4组8x8像素的数据中(例如C0-C7列,C1-C8列,C2-C9列,C3-C10列)选择一组8x8像素的数据,以便提供至通用矩阵乘单元250。例如,在初始周期,输出复用单元260选择C0-C7列的8x8像素的数据提供至通用矩阵乘单元250。在第一周期,输出复用单元260在两组(例如C0-C7列,C1-C8列)中选择C1-C8列的8x8像素的数据提供至通用矩阵乘单元250。在第二周期,输出复用单元260在三组(例如C0-C7列,C1-C8列、C2-C9列,)中选择C2-C9列的8x8像素的数据提供至通用矩阵乘单元250。
在上述方案中,通过设置脉动阵列,并在初始周期经由输入缓存向脉动阵列加载n*n像素的数据,以及在其他周期,向脉动阵列加载一列、一行或者一个像素的数据,而无需多次从输入缓冲器中获取重复数据,本公开利于占用更少的带宽。另外,通过在每一个周期经由输出复用单元在脉动阵列中的一组或多组n*n像素的数据中选择一组n*n像素的数据提供至通用矩阵乘单元,本公开不必进行脉动阵列的横向脉动,进而显著地降低功率。
具体而言,如图4所示。对于初始周期,需要初始加载所有8x8像素的数据,对于第一、第二周期,仅需要分别重新加载一列,对于第三、第六周期,仅需要分别重新加载一行,对于第四、第五、第七、第八周期,仅需要分别重新加载一个像素的数据。因此,与传统的每个周期需要加载每个权重的完整像素的解决方案相比,本公开明显提高输入像素数据的可复用性,并极大地节省了输入缓冲区的加载带宽和功耗。经研究表明,除1x1的卷积核(例如1x1过滤器)之外,累计节省输入缓冲区的加载带宽和功耗的比例从1.8%(例如针对1x2或者2x1的过滤器)到12.4%(例如针对8x8过滤器)。例如,对于典型的3x3过滤器,累计节省输入缓冲区的加载带宽和功耗的5.76%。因而,本公开能够有效降低带宽占用和功率消耗。
在一些实施例中,方法200还包括用于向通用矩阵乘单元提供数据的方法500。以下结合当在8x8像素的图像数据上进行3x3过滤器处理的例子,说明用于向通用矩阵乘单元提供数据的方法500。图5示出了根据本公开的实施例的用于向通用矩阵乘单元提供数据的方法500的流程图。应当理解,方法500例如可以在图2所描述的计算设备200处执行。应当理解,方法500还可以包括未示出的附加组成部分、动作和/或可以省略所示出的组成部分、动作,本公开的范围在此方面不受限制。
步骤502处,在初始周期,输出复用单元将脉动阵列中的第一列至第八列的8*8像素的数据提供至通用矩阵乘单元。例如,在cycle 0,对应于初始权重weight 0的8*8像素的数据(即C0-C7列)被提供至通用矩阵乘单元。
步骤504处,在第一周期,输出复用单元将脉动阵列中的第二列至第九列的8*8像素的数据提供至通用矩阵乘单元,第九列的像素的数据为在第一周期加载至脉动阵列中的。例如,在cycle 1对应于第一权重weight 1的8x8像素的数据(即C1-C8列)被提供至通用矩阵乘单元。其中C8列像素的数据为第一周期新加载至脉动阵列的。
步骤506处,在第二周期,输出复用单元将脉动阵列中的第三列至第十列的8*8像素的数据提供至通用矩阵乘单元,第十列的像素的数据为在第二周期加载至脉动阵列中的。例如,在cycle 2对应于第二权重weight 2的8*8像素的数据(即C2-C9列)被提供至通用矩阵乘单元。其中C9列像素的数据为第二周期新加载至脉动阵列的。
步骤508处,在第三周期,输出复用单元将脉动阵列中的第一列至第八列的8*8像素的数据提供至通用矩阵乘单元,第八行的像素的数据为在第三周期加载至脉动阵列中的。例如,在cycle 3对应于第三权重weight 3的8*8像素的数据(即C0-C7列)被提供至通用矩阵乘单元。其中R7行像素的数据为第三周期新加载至脉动阵列的。
步骤510处,在第四周期,输出复用单元将脉动阵列中的第二列至第九列的8*8像素的数据提供至通用矩阵乘单元,第八行第九列的一个像素的数据为在第四周期加载至脉动阵列中的。例如,在cycle 4对应于第四权重weight 4的8*8像素的数据(即C1-C8列)被提供至通用矩阵乘单元。其中(R7,C8)像素的数据为第四周期新加载至脉动阵列的。
步骤512处,在第五周期,输出复用单元将脉动阵列中的第三列至第十列的8*8像素的数据提供至通用矩阵乘单元,第八行第十列的一个像素的数据为在第五周期加载至脉动阵列中的。例如,在cycle 5对应于第五权重weight 5的8*8像素的数据(即C2-C9列)被提供至通用矩阵乘单元。其中(R7,C9)像素的数据为第五周期新加载至脉动阵列的。
步骤514处,在第六周期,输出复用单元将脉动阵列中的第一列至第八列的8*8像素的数据提供至通用矩阵乘单元,第八行的像素的数据为在第六周期加载至脉动阵列中的。例如,在cycle 6对应于第六权重weight 6的8*8像素的数据(即C0-C7列)被提供至通用矩阵乘单元。其中R7行像素的数据为第三周期新加载至脉动阵列的。
步骤516处,在第七周期,输出复用单元将脉动阵列中的第二列至第九列的8*8像素的数据提供至通用矩阵乘单元,第八行第九列的一个像素的数据为在第七周期加载至脉动阵列中的。例如,在cycle 7对应于第七权重weight 7的8*8像素的数据(即C1-C8列)被提供至通用矩阵乘单元。其中(R7,C8)像素的数据为第七周期新加载至脉动阵列的。
步骤518处,在第八周期,输出复用单元将脉动阵列中的第三列至第十列的8*8像素的数据提供至通用矩阵乘单元,第八行第十列的一个像素的数据为在第八周期加载至脉动阵列中的。例如,在cycle 8对应于第八权重weight 8的8*8像素的数据(即C2-C9列)被提供至通用矩阵乘单元。其中(R7,C9)像素的数据为第八周期新加载至脉动阵列的。
通过采用上述手段,本公开能够充分复用已加载的输入像素数据,提高输入数据的可复用性,极大地节省了输入缓冲区的加载带宽和功耗。
应当理解方法300和500可被实现为计算机软件程序,其可以被有形地包含于机器可读介质,例如存储单元。在一些实施例中,计算机程序的部分或者全部可以经由ROM和/或通信单元而被载入和/或安装到计算设备200上。当计算机程序被加载到RAM并由处理器执行时,可以执行上文描述的方法300和500的一个或多个动作。
本公开可以是方法、计算设备、计算机存储介质和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是——但不限于——电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

Claims (10)

1.一种用于卷积计算的方法,包括:
如果确定当前周期为初始周期,从输入缓存向脉动阵列加载n*n像素的数据,所述脉动阵列包括第一预定数目行乘以第二预定数目列的处理单元,所述初始周期与初始权重相关联,n为自然数;
如果确定当前周期为初始周期之后的其他周期,基于当前周期的顺序,向脉动阵列加载一列像素的数据、一行像素的数据或者一个像素的数据;以及
如果确定完成当前周期所对应的数据加载,经由输出复用单元,在脉动阵列中的一组或多组n*n像素的数据中选择一组n*n像素的数据,以便提供至通用矩阵乘单元。
2.根据权利要求1所述的方法,其中由输入缓存向脉动阵列加载n*n像素的数据包括:
经由输入复用单元,从输入缓存向脉动阵列加载n*n像素的数据,所述输入复用单元包括多个第一输入复用单元和一个第二输入复用单元。
3.根据权利要求1所述的方法,其中基于当前周期的顺序向脉动阵列加载一列像素的数据、一行像素的数据或者一个像素的数据包括:
如果确定当前周期为第一周期,向所述脉动阵列加载第n+1列像素的数据;以及
如果确定当前周期为第二周期,向所述脉动阵列加载第n+2列像素的数据。
4.根据权利要求3所述的方法,其中基于当前周期的顺序向脉动阵列加载一列像素的数据、一行像素的数据或者一个像素的数据包括:
如果确定当前周期为第三周期或者第六周期,所述脉动阵列自下而上地脉动所述处理单元的数据;以及
经由输入复用单元,从输入缓存向所述脉动阵列加载第n行像素的数据。
5.根据权利要求4所述的方法,其中基于当前周期的顺序向脉动阵列加载一列像素的数据、一行像素的数据或者一个像素的数据包括:
如果确定当前周期为第四周期、第五周期、第七周期和第八周期中的一个周期,向脉动阵列加载一个像素的数据。
6.根据权利要求1所述的方法,其中所述第一预定数目为8,所述第二预定数目为8或者11。
7.根据权利要求1所述的方法,其中所加载的n*n像素的数据为8*8像素的数据。
8.一种计算设备,包括:
输入缓存,用于缓存待加载的数据;
输入复用单元,用于在初始周期,将来自所述输入缓存的n*n像素的待加载的数据向脉动阵列加载,以及在所述初始周期之后的其他周期,向脉动阵列加载一列像素的数据、一行像素的数据或者一个像素的数据;
脉动阵列,被配置在所述输入缓存和通用矩阵乘单元之间,所述脉动阵列包括第一预定数目行乘以第二预定数目列的处理单元;以及
输出复用单元,用于在每一个周期从所述脉动阵列中的一组或者多组n*n像素的数据中选择一组n*n像素的数据,以便提供至所述通用矩阵乘单元。
9.根据权利要求8所述的设备 ,其中所述输入复用单元包括多个第一输入复用单元和第二输入复用单元,所述第一预定数目为8,所述第二预定数目为8或者11。
10.一种存储有计算机指令的计算机可读存储介质,其中所述计算机指令用于使所述计算机执行根据权利要求1-7中任一项所述的方法。
CN202011484326.8A 2020-12-16 2020-12-16 用于卷积计算的方法、计算设备和计算机可读存储介质 Active CN112614040B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011484326.8A CN112614040B (zh) 2020-12-16 2020-12-16 用于卷积计算的方法、计算设备和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011484326.8A CN112614040B (zh) 2020-12-16 2020-12-16 用于卷积计算的方法、计算设备和计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN112614040A CN112614040A (zh) 2021-04-06
CN112614040B true CN112614040B (zh) 2021-09-21

Family

ID=75239463

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011484326.8A Active CN112614040B (zh) 2020-12-16 2020-12-16 用于卷积计算的方法、计算设备和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN112614040B (zh)

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106844294A (zh) * 2016-12-29 2017-06-13 华为机器有限公司 卷积运算芯片和通信设备
CN108205701A (zh) * 2016-12-20 2018-06-26 联发科技股份有限公司 一种执行卷积计算的系统及方法
CN108985449A (zh) * 2018-06-28 2018-12-11 中国科学院计算技术研究所 一种对卷积神经网络处理器的控制方法及装置
CN110210610A (zh) * 2018-03-27 2019-09-06 腾讯科技(深圳)有限公司 卷积计算加速器、卷积计算方法及卷积计算设备
CN110378476A (zh) * 2019-07-11 2019-10-25 中国人民解放军国防科技大学 脉冲卷积神经网络的最大池化层的近似实现方法、系统及介质
CN110555512A (zh) * 2019-07-30 2019-12-10 北京航空航天大学 一种二值卷积神经网络数据重用方法及装置
CN111079559A (zh) * 2019-11-26 2020-04-28 成都深地领航能源科技有限公司 一种基于卷积神经网络的泥浆脉冲信号识别方法
CN111291323A (zh) * 2020-02-17 2020-06-16 南京大学 一种基于脉动阵列的矩阵乘法处理器及其数据处理方法
CN111652360A (zh) * 2020-05-25 2020-09-11 北京大学深圳研究生院 一种基于脉动阵列的卷积运算装置
CN111738433A (zh) * 2020-05-22 2020-10-02 华南理工大学 一种可重配置的卷积硬件加速器
CN111860809A (zh) * 2020-06-18 2020-10-30 清华大学 采用伪单元填充图像传感芯片进行首层卷积层处理的方法
CN111897579A (zh) * 2020-08-18 2020-11-06 腾讯科技(深圳)有限公司 图像数据处理方法、装置、计算机设备和存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6910009B2 (ja) * 2017-02-03 2021-07-28 パナソニックIpマネジメント株式会社 撮像装置およびカメラシステム
US20190295228A1 (en) * 2018-03-21 2019-09-26 Nvidia Corporation Image in-painting for irregular holes using partial convolutions

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108205701A (zh) * 2016-12-20 2018-06-26 联发科技股份有限公司 一种执行卷积计算的系统及方法
CN106844294A (zh) * 2016-12-29 2017-06-13 华为机器有限公司 卷积运算芯片和通信设备
CN110210610A (zh) * 2018-03-27 2019-09-06 腾讯科技(深圳)有限公司 卷积计算加速器、卷积计算方法及卷积计算设备
CN108985449A (zh) * 2018-06-28 2018-12-11 中国科学院计算技术研究所 一种对卷积神经网络处理器的控制方法及装置
CN110378476A (zh) * 2019-07-11 2019-10-25 中国人民解放军国防科技大学 脉冲卷积神经网络的最大池化层的近似实现方法、系统及介质
CN110555512A (zh) * 2019-07-30 2019-12-10 北京航空航天大学 一种二值卷积神经网络数据重用方法及装置
CN111079559A (zh) * 2019-11-26 2020-04-28 成都深地领航能源科技有限公司 一种基于卷积神经网络的泥浆脉冲信号识别方法
CN111291323A (zh) * 2020-02-17 2020-06-16 南京大学 一种基于脉动阵列的矩阵乘法处理器及其数据处理方法
CN111738433A (zh) * 2020-05-22 2020-10-02 华南理工大学 一种可重配置的卷积硬件加速器
CN111652360A (zh) * 2020-05-25 2020-09-11 北京大学深圳研究生院 一种基于脉动阵列的卷积运算装置
CN111860809A (zh) * 2020-06-18 2020-10-30 清华大学 采用伪单元填充图像传感芯片进行首层卷积层处理的方法
CN111897579A (zh) * 2020-08-18 2020-11-06 腾讯科技(深圳)有限公司 图像数据处理方法、装置、计算机设备和存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于线性脉动阵列的卷积神经网络计算优化与性能分析;刘勤让 等;《网络与信息安全学报》;20181231;第4卷(第12期);2018100-1-2018100-9 *
基于脉动阵列的卷积计算模块硬件设计;王春林 等;《微电子技术》;20200131;第57-61页 *

Also Published As

Publication number Publication date
CN112614040A (zh) 2021-04-06

Similar Documents

Publication Publication Date Title
CN108182471B (zh) 一种卷积神经网络推理加速器及方法
US20230064381A1 (en) Memory-Size- and Bandwidth-Efficient Method for Feeding Systolic Array Matrix Multipliers
JP7358382B2 (ja) 演算を加速するための加速器及びシステム
US8555034B2 (en) Execution of variable width vector processing instructions
US11175920B2 (en) Efficient work execution in a parallel computing system
KR20200143685A (ko) 연산을 가속하기 위한 방법 및 가속기 장치
US20170206089A1 (en) Information processing apparatus and computational method
JP2021509747A (ja) ハードウェアベースのプーリングのシステムおよび方法
EP4227886A1 (en) Matrix operation method and apparatus for image data, device, and storage medium
CN108073549B (zh) 卷积运算装置及方法
JPWO2019082859A1 (ja) 推論装置、畳み込み演算実行方法及びプログラム
JP5279046B2 (ja) データ処理装置
EP3553738B1 (en) Histogram statistic circuit and multimedia processing system
CN112862725A (zh) 用于计算的方法、计算设备和计算机可读存储介质
CN112614040B (zh) 用于卷积计算的方法、计算设备和计算机可读存储介质
EP3264261B1 (en) Processor and control method of processor
JP6906622B2 (ja) 演算回路および演算方法
CN111047037A (zh) 数据处理方法、装置、设备及存储介质
US9966932B2 (en) Parallel filtering method and corresponding apparatus
KR101672539B1 (ko) 그래픽 처리 유닛 및 그 캐싱 방법
CN108491546A (zh) 一种页面切换方法及电子设备
CN112862724B (zh) 用于计算的方法、计算设备和计算机可读存储介质
US20020156992A1 (en) Information processing device and computer system
CN112614043B (zh) 用于卷积的方法、计算设备和计算机可读存储介质
US11915337B2 (en) Single pass downsampler

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
CP03 Change of name, title or address

Address after: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai

Patentee after: Shanghai Bi Ren Technology Co.,Ltd.

Country or region after: China

Address before: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai

Patentee before: Shanghai Bilin Intelligent Technology Co.,Ltd.

Country or region before: China

CP03 Change of name, title or address