CN113792867B - 运算电路、芯片和板卡 - Google Patents

运算电路、芯片和板卡 Download PDF

Info

Publication number
CN113792867B
CN113792867B CN202111062233.0A CN202111062233A CN113792867B CN 113792867 B CN113792867 B CN 113792867B CN 202111062233 A CN202111062233 A CN 202111062233A CN 113792867 B CN113792867 B CN 113792867B
Authority
CN
China
Prior art keywords
array
elements
pooling
input data
dimension
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
CN202111062233.0A
Other languages
English (en)
Other versions
CN113792867A (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.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp 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 Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN202111062233.0A priority Critical patent/CN113792867B/zh
Publication of CN113792867A publication Critical patent/CN113792867A/zh
Application granted granted Critical
Publication of CN113792867B publication Critical patent/CN113792867B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Multi Processors (AREA)

Abstract

本披露公开了一种运算电路、芯片和板卡。该运算电路可以实现为计算装置包括在组合处理装置中,该组合处理装置还可以包括接口装置和其他处理装置。该计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于存储该计算装置和其他处理装置的数据。本披露的方案基于多维运算电路阵列对池化运算进行优化,有助于提高诸如神经网络的运算速度。

Description

运算电路、芯片和板卡
技术领域
本披露一般地涉及电路领域。更具体地,本披露涉及一种运算电路、芯片和板卡。
背景技术
目前,深度学习(Deep Learning)已经成为机器学习中的重要分支,也大力助推着人工智能(AI)的发展。深度学习的核心技术——深度神经网络(DNN)已在诸多行业有着广泛的应用。
神经网络模型中通常存在三种典型层,分别是卷积层、池化层以及全连接层。因此,这些层的计算性能极大地影响整个神经网络模型的计算性能。此外,神经网络模型中通常为多维数据的运算,现有的运算方式往往采用将运算平铺开的方式。这种运算过程与原有神经网络模型中的含义解耦,导致一些可以利用的信息丢失,无法有效利用。
发明内容
为了至少解决如上所提到的一个或多个技术问题,本披露提出了一种运算电路,其通过构造具有至少三个维度的多维运算电路阵列,可以将诸如神经网络模型的多维数据的运算直接映射到多维运算电路阵列上,从而能够有效契合神经网络模型的多维数据结构,有助于提高程序员的使用效率,并进一步提高神经网络模型的运算速度。
在第一方面中,本披露实施例提供了一种运算电路,包括具有至少三个维度的运算电路阵列,其中:所述运算电路阵列的每个维度包括至少一种运算元件,所述运算电路阵列中的每个运算元件与至少一个维度上的至少一个相邻运算元件电性连接,并且所述运算元件包括比较器和/或加法器。
在一些实施例中,所述运算电路阵列为三维运算电路阵列,并且每个维度包括多个运算元件,至少在第一维度上相邻的运算元件电性连接,所述第一维度为所述运算电路阵列的宽度、高度或深度中任一维度。
在一些实施例中,所述运算电路阵列用于按如下执行池化运算:启用所述运算电路阵列中与所述池化运算的池化窗口和输入数据的通道数匹配的运算元件阵列,其中所述池化窗口为二维矩阵;将输入数据元素按照维度映射关系分配到所述运算元件阵列上;以及在针对每个池化窗口的运算过程中,所述运算元件阵列中各个运算元件的输入数据元素和按照所述池化运算的规则进行运算的运算结果中至少一项在所述运算元件阵列上按指定方向传递。
在第二方面中,本披露实施例提供了一种芯片,其包括前述第一方面的运算电路。
在第三方面中,本披露实施例提供了一种板卡,其包括前述第二方面的芯片。
通过如上所提供的运算电路、芯片和板卡,本披露实施例的方案通过提供至少三维运算电路阵列,可以与诸如神经网络模型中的至少三维数据进行映射,从而运算过程与神经网络模型中的含义耦合,可以充分利用有效信息。此外,在一些实施例中,这种三维运算电路阵列可以配置成执行池化运算,其可以通过运算电路阵列之间的数据传递来降低访存带宽压力,从而提高整体的运算效率。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1示出本披露实施例的板卡的结构图;
图2示出本披露实施例的组合处理装置的结构图;
图3示出本披露实施例的单核或多核计算装置的处理器核的内部结构示意图;
图4示出了根据本披露实施例的多维运算电路阵列的示意性结构图;
图5示出了根据本披露实施例的三维运算电路阵列的三种不同配置;
图6示出了可以应用本披露实施例的示例性池化运算原理示例;
图7示出了根据本披露一个实施例的运算元件阵列上的池化运算过程;以及
图8示出了根据本披露另一实施例的运算元件阵列上的池化运算过程。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中可能出现的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本披露的具体实施方式。
图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间的数据搬运。
以上结合图1-图3对本公开的硬件架构及其内部结构进行了详细的描述。可以理解的是上述描述仅仅是示例性的而非限制性的。根据不同的应用场景和硬件规格,本领域技术人员也可以对本公开的板卡及其内部结构进行改变,而这些改变依然落入本公开的保护范围内。本披露的实施例基于前述硬件环境,提供一种运算电路,其可以用于实现例如图3中的运算模块32中的各种电路,包括但不限于向量运算单元321和矩阵运算单元322。
如背景技术中所提到的,现有的针对多维数据的运算方式通常是将运算平铺开,采用二维结构甚至是一维结构进行运算。例如以具有WHC(宽度W、高度H、通道C)三维结构的神经元为例,往往以某一维度(例如W)优先,进行遍历循环展开,从而将W/H维度合并为一个维度。甚至可能定义维度优先顺序,例如C->W->H,从而将三个维度合并为一个维度进行运算。这样的运算过程与原有神经网络的含义解耦,导致一些可以利用的信息丢失,无法有效利用。
本披露实施例提供了一种多维运算电路阵列,其可以有效契合神经网络的多维数据结构,有助于提高程序员的使用效率,并进一步提高神经网络的运算速度。进一步地,本披露实施例还提供了一种利用多维运算电路阵列进行池化运算的方案,其能够充分利用多维运算电路阵列与多维数据的映射关系,降低数据访存带宽需求,提高整体运算性能。
图4示出了根据本披露实施例的一种多维运算电路阵列的示意性结构图。在本披露实施例中,多维运算电路阵列具有至少三个维度,以与神经网络模型中常见的三维数据相映射。可以理解,当需要与更高维度的数据进行映射时,可以相应地构造更高维度的运算电路阵列。出于示例描述的目的,图4中以三维运算电路阵列为例进行图示和说明。
如图所示,三维运算电路阵列400包括三个维度,可以分别称为宽度W、高度H和深度D。每个维度包括至少一种运算元件(PE)401。取决于不同的计算需求,这些运算元件可以包括比较器和/或加法器。进一步地,运算电路阵列中的每个运算元件与至少一个维度上的至少一个相邻运算元件电性连接。
此处的“相邻”是指在同一维度上相邻,例如同宽度、同高度或同深度等。例如以X、Y、Z坐标来指示三维空间中的运算元件,则在一些实施例中,PE(X,Y,Z)可与PE(X-1,Y,Z)、PE(X+1,Y,Z)、PE(X,Y-1,Z)、PE(X,Y+1,Z)、PE(X,Y,Z-1)和PE(X,Y,Z+1)中的一个或多个电性相连。
考虑到池化运算的运算特性,上述三维运算电路阵列只要有一个维度上的相邻运算元件电性连接即可。
图5示出了根据本披露实施例的三维运算电路阵列的三种不同配置。在这三种配置中,每种配置均只有一个维度上的相邻运算元件电性连接。为了便于描述,在后文中将此电性连接的维度称为第一维度,其余维度(第二维度和第三维度)的相邻运算元件可以电性连接,也可以不连接,本披露实施例在此方面没有限制。
为了便于区分,图5中将电性连接用双线示出,其余线条仅用于示出空间相对位置关系。图中a表示宽度维度为第一维度,其上相邻运算元件电性连接;图中b表示高度维度为第一维度,其上相邻运算元件电性连接;以及图中c表示深度维度为第一维度,其上相邻运算元件电性连接。由此可见,第一维度可以是宽度、高度和深度中任一。
图6示出了可以应用本披露实施例的示例性池化运算原理示例,以便更好地理解在本披露实施例的多维运算电路阵列上执行池化运算的方案。如图所示,例如神经网络模型中的池化层可以执行池化运算,通过对输入特征图(也称为输入数据、神经元或输入神经元)在每个池化窗口上施加池化处理,从而主动减小输入特征图的尺寸,也即减少参数的数量和计算量,抑制过拟合。池化的方法有很多种,常见的包括最大池化和平均池化。
最大池化法是在池化窗口Kr×Kc内找最大值作为输出。如图所示,假设池化窗口为2×2,池化步长为2,不做边界扩充,从输入特征图610的左上角的2×2子矩阵找到最大值7作为第1个输出,池化窗口在输入特征图上右移2格后找到最大值5作为第2个输出,继续向下滑动池化窗口可以得到所有的输出值620。最大池化法仅保留池化窗口内特征的最大值,可以提高特征的鲁棒性。
平均池化法的计算过程与最大池化法类似,区别在于平均池化法在池化窗口内对所有的数取平均值,会把图像的一些特征平均化,也就是模糊化。图中示出了平均池化法得到的输出特征图630,其余参数与最大池化法相同。
当输入特征图包括多个通道(C)时,可以在每个通道上应用相同的池化运算规则。由此可见,由于通道C维度的池化运算相互之间独立,因此C维度可以映射到三维运算电路阵列上相邻运算元件未电性连接的维度,而不影响池化运算的执行。
由此,在本披露的一些实施例中,当使用前述多维运算电路阵列进行池化运算时,可以只启用运算电路阵列中与池化运算的池化窗口和输入数据的通道C数值匹配的运算元件阵列。例如,在图6的示例中,此时的池化窗口是2×2大小的二维矩阵,假设输入数据的通道数C=4,则可以仅启用2×2×4大小的运算元件阵列。
此时,可以将各通道维度上池化窗口所对应的输入数据元素按照维度映射关系分配到所启用的运算元件阵列上。
进一步地,在一些实施例中,运算元件阵列可以按如下映射关系分配输入数据元素:输入数据的宽度维度和高度维度之一对应运算元件阵列的第一维度;以及输入数据的其余两个维度对应运算元件阵列的其余两个维度。
从前面对池化运算的描述可知,池化窗口只在宽度和高度维度上平移滑动,也即输入数据只在W和H方向上移动,C方向上不传递,因此只要宽度和高度任一维度上的相邻运算元件电性连接即可。剩余维度对于电性连接不做要求。
例如,对于图5所示的三种配置,为了便于程序员对数据含义与运算关系的理解,可以做如下映射。对于a配置,可以将输入数据的宽度维度对应运算元件阵列的宽度维度;将输入数据的高度维度对应运算元件阵列的高度维度;以及将输入数据的通道维度对应运算元件阵列的深度维度。
对于b配置,可以进行与a配置相同的映射。对于c配置,则需要输入数据做适当维度调整,例如可以将输入数据的宽度维度对应运算元件阵列的深度维度,将输入数据的高度维度对应运算元件阵列的宽度维度,以及将输入数据的通道维度对应运算元件阵列的高度维度。可以理解,只要遵循本披露实施例的运算原理,可以有多种映射方式,此处不一一列举。
进一步地,在针对每个池化窗口的运算过程中,运算元件阵列中各个运算元件的输入数据元素和按照池化运算的规则进行运算的运算结果中至少一项在该运算元件阵列上按指定方向传递。
具体地,在一些实施例中,可以采用输入数据元素在运算元件阵列上定向传递,而运算结果静止的方式。在另一些实施例中,可以采用输入数据元素在运算元件阵列上静止,而运算结果定向传递的方式。通过运算元件之间的这种数据传递来获得所需要的数据,而不需要从片上RAM或片外DDR获取数据,可以有效减少片外访存带宽,缓解访存压力。
以下结合具体的池化运算示例来详细描述上述几种在运算元件阵列上实施的不同方式。在该池化运算示例中,假设池化窗口大小为3×3,池化步长在宽度和高度方向均为3。由于通道C维度上的运算是类似地,为了简便起见,仅针对宽度W和高度H维度进行图示和描述。进一步地,不防假设运算元件阵列在宽度W维度上的相邻运算元件电性连接,也即第一维度为宽度W维度,相应地输入数据元素和运算结果也是在第一维度上定向传递。
在下文描述中,n(0,0,0)表示输入数据或神经元,其中第一个0表示通道C方向上第0个、第二个0表示是宽度W方向上第0个,第三个0表示是高度H方向上第0个。虽然该示例中将输入数据的坐标按特定顺序示出,但是本披露实施例在此方面没有限制,其顺序可以交换,只需要区分C通道即可。
基于上述符号表示,通过平均池化法计算输出数据或输出神经元的方式可表示如下:
out1(0,0,0)=avg(n(0,0,0)~n(0,2,0),n(0,0,1)~n(0,2,1),n(0,0,2)~n(0,2,2))
通过最大池化法计算输出数据或输出神经元的方式可表示如下:
out2(0,0,0)=max(n(0,0,0)~n(0,2,0),n(0,0,1)~n(0,2,1),n(0,0,2)~n(0,2,2))
其中out1(0,0,0)、out2(0,0,0)表示输出数据或输出神经元,其中第一个0表示是通道C方向上第0个、第二个0表示是宽度W方向上第0个,第三个0表示是高度H方向上第0个。在下面的描述中,由于各通道上运算独立,因此省却了C维度。
首先,可以对3×3大小的运算元件阵列进行初始化。
具体地,可以从存储电路中读取首个输出数据元素的扫描窗口所覆盖的输入数据元素,将其一一对应地加载到3×3个运算元件。在一种实现中,可以将各个输入数据元素同时分配给各个运算元件。在另一种实现中,考虑到输入数据元素的定向传递,可以顺次加载输入数据元素,这种加载方式可以降低访存带宽。
例如,可以首先向运算元件阵列中第2列上(W=2)的3个运算元件对应加载输入数据中W=0的3个输入数据元素。在下一时钟周期,第2列的输入数据元素向左移动,传递到第1列上(W=1)的3个运算元件,同时第2列运算元件从存储电路加载输入数据中W=1的3个输入数据元素;以及在下一时钟周期,第1列的输入数据元素向左移动,传递到第0列(W=0)上的3个运算元件,第2列的输入数据元素向左移动,传递到第1列上的3个运算元件,第2列再次从存储电路中加载输入数据中W=2的3个输入数据元素。此时运算元件阵列就绪,其载入了对应第一扫描窗口的输入数据元素。
从上述数据加载传递过程可以看出,数据在第一维度(此示例为宽度)上从右向左逐列移动。因此,为了表示简便起见,在图示和描述时,以Ni来表示各列输入数据,其中i=0,1,2,…。
图7示出了根据本披露一个实施例的运算元件阵列上的池化运算过程。图7的表格中示出了3列运算元件,每列包括3个运算元件。可以理解,在深度方向上还存在C-1个3×3的运算元件阵列,其上运算过程类似。
图中步骤S71示出了初始化后的运算元件阵列,其中第0列加载有输入数据N0,第1列加载有输入数据N1,第2列加载有输入数据N2。
接着,按照输入数据元素流动,结果静止的方式实现池化运算。例如第0列对应阵列的输出,因此仅在第0列产生运算结果,其余各列只传递输入数据。在一些实施例中,取决于不同的池化运算规则,需要产生运算结果的运算元件可以包括比较器和/或加法器,其相应地实现最大池化法或平均池化法。
具体地,在步骤S72中,第1列的输入数据元素向左移动,传递到第0列,第0列的运算元件按照池化运算规则执行运算,例如将自己的数据N0与传递来的数据N1相加(平均池化),或者将自己的数据N0与传递来的数据N1比较大小并输出较大值(最大池化)。与此同时,第2列的输入数据元素N2向左移动,传递到第1列,第2列再次从存储电路中加载输入数据元素N3。
接着,在步骤S73中,第1列的输入数据元素N2向左移动,传递到第0列,第0列的运算元件按照池化运算规则执行运算,例如将上次运算结果(N0+N1)与传递来的数据N2相加得到部分结果N0+N1+N2(平均池化),或者将上次运算结果(max(N0,N1))与传递来的数据N2比较大小并输出较大值max(N0,N1,N2)(最大池化)。与此同时,第2列的输入数据元素N2向左移动,传递到第1列,第2列再次从存储电路中加载输入数据元素N3。
接着,在步骤S74中,第0列的运算结果可以输出,其余列上的输入数据元素继续向左移动,以为下一池化窗口的池化运算做准备。依次类推,当宽度W方向运算完毕后,可输出对应的输出数据元素,从而可以接着计算输出数据的下一行。
可选地或附加地,本披露实施例的运算电路还可以包括池化运算电路,此池化运算电路可以与所启用的运算元件阵列中沿第一维度方向传递的最后一面的各个运算元件电性连接,以将该最后一面的各个运算元件的运算结果进行池化处理,得到对应的输出数据元素。
在实施最大化池化处理时,池化运算电路可以包括多个比较器,比较器的数量可以对应于通道C数量。每个比较器用于将同一通道的第0列的运算元件的运算结果进行比较,输出其中最大值,作为最终结果。
在实施平均池化处理时,池化运算电路可以包括多个累加器和除法器,累加器和除法器的数量可以对应于通道C数量。每个累加器用于将同一通道的第0列的运算元件的运算结果进行累加,对应的除法器将累加结果在池化窗口上平均,输出平均值作为最终结果。
可以理解,此池化运算电路可以包括作为多维运算电路阵列的一部分,也可以位于多维运算电路阵列的外部,本披露实施例在此方面没有限制。
从图7的表格中还可以看出,底色相同的数据或运算代表对应同一输出数据元素的池化操作,由此上述运算过程也是通过流水方式完成各个输出数据元素的运算。
从图7还可以看出,在针对每个池化窗口的运算过程中,在运算元件阵列的第一维度上,在每个时钟周期,从左向右将输入数据元素传递给相邻运算元件,其中最左侧运算元件的输入数据元素来自存储电路,最右侧运算元件连接输出端;并且最右侧运算元件在每个时钟周期针对传递来的输入数据元素与上一时钟周期的运算结果按照池化运算的规则执行运算以更新运算结果。例如,在针对特定池化窗口的运算中,池化运算只在第0列运算元件上执行,也即运算结果静止在第0列运算元件上直至输出;而输入数据元素则在第一维度上定向传递。
图8示出了根据本披露另一实施例的运算元件阵列上的池化运算过程。此实施例与图7实施例的不同之处在于输入数据元素静止,而运算结果定向传递。
类似地,图中步骤S81示出了初始化后的运算元件阵列,其中第0列加载有输入数据N0,第1列加载有输入数据N1,第2列加载有输入数据N2。
接着,在针对单个池化窗口的运算中,按照输入数据元素静止,结果流动的方式实现池化运算。
具体地,在步骤S82中,第2列的运算结果(在最外侧一列,其运算结果等于输入数据元素)向左传递到第1列,第1列的运算元件按照池化运算规则执行运算,例如将自己的数据N1与传递来的数据N2相加(平均池化),或者将自己的数据N1与传递来的数据N2比较大小并输出较大值(最大池化)。与此同时,第2列再次从存储电路中加载输入数据元素N3。
接着,在步骤S83中,第1列的运算结果向左移动,传递到第0列,第0列的运算元件按照池化运算规则执行运算,例如将传递来的运算结果(N2+N1)与自己的数据N0相加得到部分结果N2+N1+N0(平均池化),或者将传递来的运算结果(max(N2,N1))与自己的数据N0比较大小并输出较大值max(N2,N1,N0)(最大池化)。与此同时,第2列的输入数据元素N3向左移动,传递到第1列,第2列再次从存储电路中加载输入数据元素N4。
接着,在步骤S84中,第0列的运算结果可以输出,其余列上的输入数据元素继续向左移动,以为下一池化窗口的池化运算做准备。依次类推,当宽度W方向运算完毕后,可输出对应的输出数据元素,从而可以接着计算输出数据的下一行。
从图8可以看出,在针对每个池化窗口的运算过程中,在运算元件阵列的所述第一维度上,在每个时钟周期,从左向右将运算结果传递给相邻运算元件,其中最左侧运算元件的输入数据元素来自存储电路,最右侧运算元件连接输出端;并且运算元件阵列的每个运算元件在每个时钟周期针对传递来的运算结果与本地加载的输入数据元素按照池化运算的规则执行运算以产生运算结果传递给下一运算元件。
例如,在针对某个池化窗口的运算中,池化运算在各列运算元件上都执行(最靠近存储器的第2列无需运算,或者看成运算结果为输入数据元素本身),也即运算结果在第一维度上定向传递;而输入数据元素则在各列运算元件上静止。
以上结合附图和示例详细描述了基于本披露实施例的多维运算阵列进行池化运算的过程。可以理解,基于本披露的教导,本领域技术人员可以做出各种修改和变形,例如,改变数据到运算电路阵列的映射方式,改变数据定向传递的方向,等等,这些修改和变形都涵盖在本披露实施例的范围内。
本披露实施例还提供了一种芯片,其可以包括前面结合附图描述的任一实施例的运算电路。进一步地,本披露还提供了一种板卡,该板卡可以包括前述芯片。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、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、根据条款所述的运算电路,其中所述运算电路阵列为三维运算电路阵列,并且每个维度包括多个运算元件,至少在第一维度上相邻的运算元件电性连接,所述第一维度为所述运算电路阵列的宽度、高度或深度中任一维度。
条款3、根据条款2所述的运算电路,其中所述运算电路阵列用于按如下执行池化运算:
启用所述运算电路阵列中与所述池化运算的池化窗口和输入数据的通道数匹配的运算元件阵列,其中所述池化窗口为二维矩阵;
将输入数据元素按照维度映射关系分配到所述运算元件阵列上;以及
在针对每个池化窗口的运算过程中,所述运算元件阵列中各个运算元件的输入数据元素和按照所述池化运算的规则进行运算的运算结果中至少一项在所述运算元件阵列上按指定方向传递。
条款4、根据条款3所述的运算电路,其中所述运算元件阵列进一步按如下映射关系分配所述输入数据元素:
输入数据的宽度维度和高度维度之一对应所述运算元件阵列的所述第一维度;以及
将输入数据的其余两个维度对应所述运算元件阵列的其余两个维度。
条款5、根据条款4所述的运算电路,其中所述运算元件阵列进一步用于按如下将输入数据元素在所述运算元件阵列上按指定方向传递:
在针对每个池化窗口的运算过程中,在所述运算元件阵列的所述第一维度上,在每个时钟周期,从左向右将输入数据元素传递给相邻运算元件,其中最左侧运算元件的输入数据元素来自存储电路,最右侧运算元件连接输出端;并且
所述最右侧运算元件在每个时钟周期针对传递来的输入数据元素与上一时钟周期的运算结果按所述池化运算的规则执行运算以更新所述运算结果。
条款6、根据条款4所述的运算电路,其中所述运算元件阵列进一步用于按如下将按照所述池化运算的规则进行运算的运算结果在所述运算元件阵列上按指定方向传递:
在针对每个池化窗口的运算过程中,在所述运算元件阵列的所述第一维度上,在每个时钟周期,从左向右将运算结果传递给相邻运算元件,其中最左侧运算元件的输入数据元素来自存储电路,最右侧运算元件连接输出端;并且
所述运算元件阵列的每个运算元件在每个时钟周期针对传递来的运算结果与本地加载的输入数据元素按照所述池化运算的规则执行运算以产生运算结果传递给下一运算元件。
条款7、根据条款5或6所述的运算电路,其中所述运算元件阵列进一步用于按如下进行初始化:
将对应首个输出数据元素的池化窗口内的输入数据元素一一对应地加载到所述运算元件阵列中的各个运算元件。
条款8、根据条款7所述的运算电路,还包括:
池化运算电路,与所述运算元件阵列中沿所述第一维度方向传递的最后一面的各个运算元件电性连接,以将所述最后一面的各个运算元件的运算结果进行池化处理,得到对应的输出数据元素。
条款9、一种芯片,包括根据条款1-8任一所述的运算电路。
条款10、一种板卡,包括根据条款9所述的芯片。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。

Claims (8)

1.一种运算电路,包括具有至少三个维度的运算电路阵列,其中:
所述运算电路阵列的每个维度包括至少一种运算元件,
所述运算电路阵列中的每个运算元件与至少一个维度上的至少一个相邻运算元件电性连接,并且
所述运算元件包括比较器和/或加法器;
其中所述运算电路阵列为三维运算电路阵列,并且每个维度包括多个运算元件,结合池化运算的运算特性,至少在第一维度上相邻的运算元件电性连接,以及在其余维度上的相邻运算元件选择性电性连接,所述第一维度为所述运算电路阵列的宽度、高度或深度中任一维度;
其中所述运算电路阵列用于按如下执行池化运算:
启用所述运算电路阵列中与所述池化运算的池化窗口和输入数据的通道数匹配的运算元件阵列,其中所述池化窗口为二维矩阵;
将输入数据元素按照维度映射关系分配到所述运算元件阵列上;以及
在针对每个池化窗口的运算过程中,所述运算元件阵列中各个运算元件的输入数据元素和按照所述池化运算的规则进行运算的运算结果中至少一项在所述运算元件阵列上按指定方向传递。
2.根据权利要求1所述的运算电路,其中所述运算元件阵列进一步按如下映射关系分配所述输入数据元素:
输入数据的宽度维度和高度维度之一对应所述运算元件阵列的所述第一维度;以及
将输入数据的其余两个维度对应所述运算元件阵列的其余两个维度。
3.根据权利要求2所述的运算电路,其中所述运算元件阵列进一步用于按如下将输入数据元素在所述运算元件阵列上按指定方向传递:
在针对每个池化窗口的运算过程中,在所述运算元件阵列的所述第一维度上,在每个时钟周期,从左向右将输入数据元素传递给相邻运算元件,其中最左侧运算元件的输入数据元素来自存储电路,最右侧运算元件连接输出端;并且
所述最右侧运算元件在每个时钟周期针对传递来的输入数据元素与上一时钟周期的运算结果按所述池化运算的规则执行运算以更新所述运算结果。
4.根据权利要求2所述的运算电路,其中所述运算元件阵列进一步用于按如下将按照所述池化运算的规则进行运算的运算结果在所述运算元件阵列上按指定方向传递:
在针对每个池化窗口的运算过程中,在所述运算元件阵列的所述第一维度上,在每个时钟周期,从左向右将运算结果传递给相邻运算元件,其中最左侧运算元件的输入数据元素来自存储电路,最右侧运算元件连接输出端;并且
所述运算元件阵列的每个运算元件在每个时钟周期针对传递来的运算结果与本地加载的输入数据元素按照所述池化运算的规则执行运算以产生运算结果传递给下一运算元件。
5.根据权利要求3或4所述的运算电路,其中所述运算元件阵列进一步用于按如下进行初始化:
将对应首个输出数据元素的池化窗口内的输入数据元素一一对应地加载到所述运算元件阵列中的各个运算元件。
6.根据权利要求5所述的运算电路,还包括:
池化运算电路,与所述运算元件阵列中沿所述第一维度方向传递的最后一面的各个运算元件电性连接,以将所述最后一面的各个运算元件的运算结果进行池化处理,得到对应的输出数据元素。
7.一种芯片,包括根据权利要求1-6任一所述的运算电路。
8.一种板卡,包括根据权利要求7所述的芯片。
CN202111062233.0A 2021-09-10 2021-09-10 运算电路、芯片和板卡 Active CN113792867B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111062233.0A CN113792867B (zh) 2021-09-10 2021-09-10 运算电路、芯片和板卡

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111062233.0A CN113792867B (zh) 2021-09-10 2021-09-10 运算电路、芯片和板卡

Publications (2)

Publication Number Publication Date
CN113792867A CN113792867A (zh) 2021-12-14
CN113792867B true CN113792867B (zh) 2024-05-10

Family

ID=79183084

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111062233.0A Active CN113792867B (zh) 2021-09-10 2021-09-10 运算电路、芯片和板卡

Country Status (1)

Country Link
CN (1) CN113792867B (zh)

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9465857B1 (en) * 2013-09-26 2016-10-11 Groupon, Inc. Dynamic clustering for streaming data
EP3343467A1 (en) * 2016-12-30 2018-07-04 Intel Corporation Max pooling in a matrix processing architecture
CN108874744A (zh) * 2017-05-08 2018-11-23 辉达公司 矩阵乘积累加运算的广义加速
JP2019003414A (ja) * 2017-06-15 2019-01-10 公立大学法人会津大学 データ処理装置、及びこれにおけるデータ処理方法
US10228864B1 (en) * 2016-12-30 2019-03-12 Parallels International Gmbh Pre-fetching data based on memory usage patterns
CN109726168A (zh) * 2016-11-03 2019-05-07 北京中科寒武纪科技有限公司 Slam运算装置和方法
CN109977446A (zh) * 2017-12-28 2019-07-05 北京中科寒武纪科技有限公司 集成电路芯片装置及相关产品
CN110196735A (zh) * 2018-02-27 2019-09-03 上海寒武纪信息科技有限公司 一种计算装置及相关产品
WO2020034079A1 (zh) * 2018-08-14 2020-02-20 深圳市大疆创新科技有限公司 基于脉动阵列的神经网络处理装置
CN112633490A (zh) * 2020-12-31 2021-04-09 上海寒武纪信息科技有限公司 执行神经网络模型的数据处理装置、方法及相关产品
WO2021081854A1 (zh) * 2019-10-30 2021-05-06 华为技术有限公司 一种卷积运算电路和卷积运算方法
GB202109299D0 (en) * 2021-06-28 2021-08-11 Imagination Tech Ltd Implementation of pooling and unpooling or reverse pooling in hardware

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9465857B1 (en) * 2013-09-26 2016-10-11 Groupon, Inc. Dynamic clustering for streaming data
CN109726168A (zh) * 2016-11-03 2019-05-07 北京中科寒武纪科技有限公司 Slam运算装置和方法
EP3343467A1 (en) * 2016-12-30 2018-07-04 Intel Corporation Max pooling in a matrix processing architecture
US10228864B1 (en) * 2016-12-30 2019-03-12 Parallels International Gmbh Pre-fetching data based on memory usage patterns
CN108874744A (zh) * 2017-05-08 2018-11-23 辉达公司 矩阵乘积累加运算的广义加速
JP2019003414A (ja) * 2017-06-15 2019-01-10 公立大学法人会津大学 データ処理装置、及びこれにおけるデータ処理方法
CN109977446A (zh) * 2017-12-28 2019-07-05 北京中科寒武纪科技有限公司 集成电路芯片装置及相关产品
CN110196735A (zh) * 2018-02-27 2019-09-03 上海寒武纪信息科技有限公司 一种计算装置及相关产品
WO2020034079A1 (zh) * 2018-08-14 2020-02-20 深圳市大疆创新科技有限公司 基于脉动阵列的神经网络处理装置
WO2021081854A1 (zh) * 2019-10-30 2021-05-06 华为技术有限公司 一种卷积运算电路和卷积运算方法
CN112633490A (zh) * 2020-12-31 2021-04-09 上海寒武纪信息科技有限公司 执行神经网络模型的数据处理装置、方法及相关产品
GB202109299D0 (en) * 2021-06-28 2021-08-11 Imagination Tech Ltd Implementation of pooling and unpooling or reverse pooling in hardware

Also Published As

Publication number Publication date
CN113792867A (zh) 2021-12-14

Similar Documents

Publication Publication Date Title
CN113469336A (zh) 优化神经网络模型的编译方法、执行方法及相关产品
WO2023045446A1 (zh) 计算装置、数据处理方法及相关产品
CN116185942A (zh) 数据处理方法、装置、存储介质以及电子设备
CN111488963B (zh) 神经网络计算装置和方法
CN109711540B (zh) 一种计算装置及板卡
CN113469333B (zh) 执行神经网络模型的人工智能处理器、方法及相关产品
CN113792867B (zh) 运算电路、芯片和板卡
CN113469337B (zh) 用于优化神经网络模型的编译方法及其相关产品
CN111047005A (zh) 运算方法、装置、计算机设备和存储介质
CN112817898B (zh) 数据传输方法、处理器、芯片及电子设备
WO2022001500A1 (zh) 计算装置、集成电路芯片、板卡、电子设备和计算方法
CN117234408A (zh) 基于指令读取数据中的目标数据的方法及其设备
CN114692844A (zh) 数据处理装置、数据处理方法及相关产品
CN113469365B (zh) 基于神经网络模型的推理和编译方法及其相关产品
CN113742266B (zh) 集成电路装置、电子设备、板卡和计算方法
WO2022257980A1 (zh) 计算装置、利用计算装置实施卷积运算的方法及相关产品
CN114692847B (zh) 数据处理电路、数据处理方法及相关产品
CN112395002B (zh) 运算方法、装置、计算机设备和存储介质
WO2022001496A1 (zh) 计算装置、集成电路芯片、板卡、电子设备和计算方法
CN117235424A (zh) 计算装置、计算方法及相关产品
CN114444677A (zh) 进行稀疏化训练的装置、板卡、方法及可读存储介质
CN113791754A (zh) 运算电路、芯片和板卡
CN116385714A (zh) 图像处理方法及相关产品
CN116484926A (zh) 自适应拆分优化的设备及方法
CN116483255A (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
GR01 Patent grant
GR01 Patent grant