CN115470176B - 计算装置、利用计算装置实施卷积运算的方法及相关产品 - Google Patents

计算装置、利用计算装置实施卷积运算的方法及相关产品 Download PDF

Info

Publication number
CN115470176B
CN115470176B CN202110648346.2A CN202110648346A CN115470176B CN 115470176 B CN115470176 B CN 115470176B CN 202110648346 A CN202110648346 A CN 202110648346A CN 115470176 B CN115470176 B CN 115470176B
Authority
CN
China
Prior art keywords
weight
processing circuit
circuit
convolution
computing device
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
CN202110648346.2A
Other languages
English (en)
Other versions
CN115470176A (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 CN202110648346.2A priority Critical patent/CN115470176B/zh
Priority to PCT/CN2022/097669 priority patent/WO2022257980A1/zh
Publication of CN115470176A publication Critical patent/CN115470176A/zh
Application granted granted Critical
Publication of CN115470176B publication Critical patent/CN115470176B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • 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
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Image Processing (AREA)

Abstract

本披露公开了一种计算装置、利用计算装置实施卷积运算的方法及相关产品。该计算装置可以包括在组合处理装置中,该组合处理装置还可以包括接口装置和其他处理装置。该计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于存储该计算装置和其他处理装置的数据。本披露的方案对卷积运算进行优化,提高了运算处理效率。

Description

计算装置、利用计算装置实施卷积运算的方法及相关产品
技术领域
本披露一般地涉及数据处理领域。更具体地,本披露涉及一种配置用于执行卷积运算的计算装置、利用计算装置实施卷积运算的方法、芯片和板卡。
背景技术
目前,深度学习(Deep Learning)已经成为机器学习中的重要分支,也大力助推着人工智能(AI)的发展。深度学习的核心技术——深度神经网络(DNN)已在诸多行业有着广泛的应用。
卷积层是神经网络模型中的常用隐含层之一,其通过卷积运算对输入数据进行特征提取。神经网络模型中包含了大量的卷积运算,卷积运算的计算性能极大地影响整个神经网络模型的计算性能。当神经网络模型应用于不同领域时,例如语音识别、机器翻译、图像处理等等,其对应的输入特征图和权值的各个维度大小可能各有不同。为了充分利用深度学习处理器的硬件优势,需要针对不同规模的卷积运算进行优化,以提高执行神经网络模型的计算性能。
发明内容
为了至少解决如上所提到的一个或多个技术问题,本披露在多个方面中提出了一种计算装置,其通过对输入特征图和权值进行分块,可以有效提高大规模卷积运算的运算效率。本披露实施例的卷积运算可以是各种神经网络模型中的运算,这些神经网络模型可以应用于各种领域,诸如图像处理、语音处理、文本处理等等,这些处理例如可以包括但不限于识别和分类。
在第一方面中,本披露实施例提供了一种计算装置,配置用于执行卷积运算,所述计算装置包括主处理电路和多个从处理电路,其中:所述主处理电路用于:在所述卷积运算期间,将输入特征图按最低存储维度分块,以广播方式将特征图块传输给调度的多个从处理电路;以及将权值按照输出通道维度分块,以供所调度的所述从处理电路加载对应的权值块;并且所调度的每个所述从处理电路用于:针对所述特征图块和对应的权值块,执行卷积运算;以及将运算结果返回给所述主处理电路。
在第二方面中,本披露实施例提供了一种芯片,其包括前述第一方面任一实施例的计算装置。
在第三方面中,本披露实施例提供了一种板卡,其包括前述第二方面的任一实施例的芯片。
在第四方面中,本披露实施例提供了一种由前述第一方面任一实施例的计算装置实施卷积运算的方法。
通过如上所提供的计算装置、芯片、板卡以及由计算装置实施卷积运算的方法,本披露实施例的方案针对大规模的输入特征图和权值进行分块,以适应单个运算装置的处理能力,从而充分利用深度学习处理器的并行处理能力,可以有效提高卷积运算的运算效率。此外,在一些实施例中,输入特征图和权值可以通过不同的数据路径进行传输,从而支持输入特征图和权值的多种复用方式,进一步优化卷积运算,减小数据吞吐量。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1示出本披露实施例的板卡的结构图;
图2示出本披露实施例的组合处理装置的结构图;
图3示出本披露实施例的单核或多核计算装置的处理器核的内部结构示意图;
图4示出可以应用本披露实施例的示例性卷积运算原理示例;
图5示例性示出根据本披露实施例的卷积运算过程;
图6示出根据本披露实施例的计算装置的示例性结构示意图;
图7示出根据本披露实施例的从处理电路的部分结构示意图;
图8示出根据本披露实施例的权值数据在第二存储电路中的示意性存储方式;以及
图9示出根据本披露实施例的卷积运算方法的示例性流程图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中可能出现的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本披露的具体实施方式。
图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间的数据搬运。
基于前述硬件环境,在一个方面中,本披露实施例提供了一种计算装置,其配置用于执行卷积运算,从而可以对例如神经网络模型中的卷积运算进行优化。
图4示出了可以应用本披露实施例的示例性卷积运算原理示例。如图所示,例如神经网络模型中的卷积层可以执行卷积运算,通过对输入特征图(也称为输入数据、神经元或输入神经元)应用卷积核(也称为滤波器、权值等)做卷积处理,从而进行特征提取。
图中示例性示出了大小为6×6×3的输入数据,其可以表示3个6×6大小的输入特征图(即6×6×3的三维矩阵),分别表示三个不同的特征。此示例中特征图的宽度W为6,高度H也为6。输入特征图的数量也可以称为输入通道数Ci。例如图中示例输入有3个特征图,也称为3个特征通道或3个输入通道。
图中还示例性示出了大小为2×3×3×3的卷积核,其可以表示2个3×3×3大小的立体卷积核(即2个3×3×3的三维矩阵),每个立体卷积核(又称为滤波器)又具有3个不同的3×3大小的二维卷积核,对应输入的3个不同的特征图。立体卷积核的数量可以称为输出通道数Co,此示例中为2。每个立体卷积核中,二维卷积核的数量可以称为输入通道数Ci,其与输入特征图的通道数一致。每个二维卷积核具有相应的宽度Kw和高度Kh,在此示例中Kw和Kh均为3。
输入特征图与滤波器的卷积结果输出2个4×4大小的特征图。其中,输入特征图与上方的立体卷积核的卷积结果得到上方的1个4×4的输出特征图,输入特征图与下方的立体卷积核的卷积结果得到下方的1个4×4的输出特征图。输出特征图中每个位置上的值由每个输入特征图的对应区块和对应卷积核做二维卷积运算之后再加和得到。例如,图中示出了上方的输出特征图上(0,0)位置的值(也即卷积输出点)由输入特征图中黑色立方体框出的区块与上方的立体卷积核进行二维卷积运算得到3个值,再加和得到最终值。
在本披露实施例中,每个卷积输出点具有对应的感受野,感受野的形状等于卷积核的形状,例如图中输出特征图上(0,0)位置的卷积输出点的感受野是图中的3×3×3的黑色立方体框。每个卷积输出点的值对应于其感受野内的输入特征图与权值的对位乘累加结果。可以理解,在本披露实施例中,感受野是相对于单个卷积层而言的,当前层的输入特征图中某个位置的特征向量是由前一层固定区域的输入计算出来的,这个区域就是这个位置的感受野。
为了得到其他位置的输出,可以在输入特征图上移动卷积核的位置,也即移动卷积输出点的感受野。在图中示例中,卷积步长(Sx,Sy)为(1,1),当横向(宽度方向)向右或纵向(高度方向)向下移动一格后做卷积运算,可以分别得到上方的输出特征图上(0,1)或(1,0)位置的值。
从上面的描述可知,在神经网络的一个卷积层中,有一组输入特征图,共包含H×W×Ci个信息,其中H和W分别是输入特征图的高度和宽度,Ci是输入特征图的个数,也称为输入通道数。卷积层有Ci×Co个Kh×Kw大小的卷积核,其中Ci是输入通道数,Co是输出特征图的个数(或输出通道数),Kh和Kw分别是卷积核的高度和宽度。输出特征图包含Ho×Wo×Co个信息,其中Ho和Wo分别是输出特征图的高度和宽度,Co是输出通道数。此外,在卷积运算中,还会涉及到卷积步长(Sx,Sy),卷积步长的大小会影响输出特征图的尺寸。
在本披露实施例中,所涉及的多维数据的维度表征为(N,H,W,C)或(Co,H,W,Ci),其代表了数据在存储器中的存储顺序。可以理解,虽然多维数据具有多个维度,但是因为存储器的布局始终是一维的,因此多维数据与存储器上的存储顺序之间存在对应关系。多维数据通常被分配在连续的存储空间中,也即可以将多维数据进行一维展开,按顺序存储在存储器上。例如,在本披露实施例中,初始的输入特征图可以按照低维度(此处C/Ci为最低维度)优先方式,进行顺序存储;而为了优化卷积运算,在运算过程中可以调整输入特征图的存储顺序,如后面将详细描述的。相邻的维度是指多维数据的维度信息表示中相互紧挨着的维度,例如,W和Ci相邻,相邻的维度也可以称为连续的维度。
为了充分利用带宽,适配运算器阵列的吞吐量等需求,通常需要将数据进行向量化对齐。人工智能芯片的设计通常以Ci维度为最低维度,也即上述NHWC摆放顺序,Ci维度上的数据是连续的。因此,向量化对齐要求需要Ci维度的大小对齐到指定数值,例如对齐值Aci,从而以该对齐值Aci为单位进行存取数。基于不同的设计,Aci可以有不同的数值,例如64、128、256、512等。通常,运算器阵列的输入端口大小也与该对齐值相关,例如在输入数据位宽对称的情形下,运算器阵列的输入端口大小通常为对齐值的2倍,也即一次性处理对齐值Aci规模的输入特征图数据和权值数据。当输入特征图的Ci维度较大时,比较容易满足上述对齐要求。
图5示例性示出了根据本披露实施例的卷积运算过程。在此实施例中,输入特征图的Ci(图中表示为fi)维度较大,因此每次只取一部分数据进行运算,例如取的数据量满足运算器的一次最大处理量,从而既充分利用了运算器的算力,又能节省运算时间。在此示例中,假设对齐值为512比特,也即要求一次读取的一行(一个缓存行)数据为512比特。为了描述简便起见,在本披露的示例中,假设输入特征图与权值的数据位宽相同,例如都是8比特或16比特,则一个缓存行可以包括64个8比特数据或32个16比特数据。
如图所示,输入特征图510的规模较大,输入通道维度fi超过512比特,例如为512的倍数;权值520的输入通道维度Ci与输入特征图510的输入通道维度fi大小相等,也超过512比特。因此,每次可以从输入特征图510中读取一行输入数据511,从权值520中读取一行权值数据521作为卷积核数据,二者执行对位乘累加运算,得到卷积结果530中的一个部分和531。
从前面图4的描述可知,每个卷积输出点的值对应于其感受野内的输入特征图与权值的对位乘累加结果。通过多次取数和对位乘累加运算,将输入数据行与权值行同时遍历整个感受野,得到多个部分和并进行累加,则可获得对应该感受野的卷积输出点的值。
由此可见,上述卷积运算中计算各个部分和的过程具有并行性,因此通过适当的硬件配置,充分利用并行处理可能性,则可以加速运算,提升效率。此外,由于卷积过程中卷积核的移动,也即感受野的移动,导致计算部分和的过程中存在部分数据的重复使用,因此如果能够合理利用数据的复用,则可以进一步降低运算期间的数据吞吐量,从而提升效率。
图6示出了根据本披露实施例的计算装置600的示意性结构框图。可以理解,该结构可以视为图3中单个处理核的运算模块的内部结构细化,也可以视为在多个图3所示处理核的运算模块基础上联合的功能划分框图。如图6所示,本披露实施例的计算装置600可以配置用于执行卷积运算,其可以包括主处理电路610和多个从处理电路620。主处理电路和从处理电路之间以及多个从处理电路之间可以通过各种连接相互通信。
主处理电路和从处理电路可以相互配合,由此实现并行运算处理。在这种配置中,主处理电路例如可以用于对输入数据执行前序处理,例如对数据进行拆分,以及从多个从处理电路接收中间结果并执行后续处理,以得到运算指令的最终运算结果。从处理电路例如可以用于根据运算指令,对相应的数据(例如,拆分的数据)并行执行中间运算得到多个中间结果,并将多个中间结果传输回主处理电路。
在不同的应用场景中,多个从处理电路之间的连接方式既可以是通过硬线布置的硬连接方式,也可以是根据例如微指令进行配置的逻辑连接方式,以形成多种从处理电路阵列的拓扑结构。本披露实施例在此方面没有限制。
通过将计算装置600设置成主从结构(例如一主多从结构,或者多主多从结构,本披露在此方面没有限制),对于正向运算的计算指令,可以根据计算指令将数据进行拆分,从而通过多个从处理电路对计算量较大的部分进行并行运算以提高运算速度,节省运算时间,进而降低功耗。
为了支持运算功能,主处理电路和从处理电路可以包括各种计算电路,例如可以包括向量运算单元及矩阵运算单元。向量运算单元用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元负责深度学习算法的核心计算,例如矩阵乘和卷积。
在一些实施例中,主处理电路610可以在卷积运算期间,将输入特征图按最低存储维度分块,以广播方式将特征图块传输给调度的多个从处理电路;以及将权值按照输出通道Co维度分块,以供所调度的从处理电路加载对应的权值块。此时,所调度的每个从处理电路620可以针对广播的特征图块和对应的权值块,执行卷积运算;以及将运算结果返回给主处理电路。上述最低存储维度例如是输入通道Ci维度。
在一些实现中,主处理电路610在广播特征图块时,可以将特征图块在最低存储维度上对齐到第一对齐要求,该第一对齐要求根据从处理电路的处理能力而确定。例如,取决于从处理电路中运算器阵列的最大吞吐量,第一对齐要求例如可以等于最大吞吐量,从而可以利用全部的运算器阵列。
在一个示例中,第一对齐要求例如是64字节,也即512比特,由此对齐后的每个特征图块在最低存储维度上的大小为64字节。其余存储维度的大小均为1个数据位。例如,对于三维特征图,假设数据位宽为8比特,则可以划分成64×1×1形状的包含64个数据的特征图块。假设数据位宽为16比特,则可以划分成32×1×1形状的包含32个数据的特征图块。
为了与划分的特征图块执行卷积运算,权值也需要进行划分。从图4的描述可知,权值比输入特征图多一个维度:输出通道Co维度,因此权值的划分与输入特征图的划分略有不同。
在一些实施例中,可以首先按照Co维度,将权值分成多个权值块,每个权值块对应一个输出通道的权值数据。可以理解,每个权值块相当于一个立体卷积核(例如参考图4的立体卷积核)。由此,可以在不同的从处理电路上针对不同的权值块并行地执行卷积运算处理。根据前述的卷积原理可以理解,不同输出通道上的卷积结果无需进行累加,因此各从处理电路可以相对独立地进行运算处理。
在每个权值块中,可以按与输入特征图类似的方式进行划分,也即按最低存储维度(例如Ci维度)划分成多个权值行。同样地,权值行在最低存储维度上也对齐到第一对齐要求,从而特征图块与权值行可以执行对位乘累加运算。
当权值行和特征图块同时遍历某个卷积输出点的感受野执行对位乘累加运算时,可以得到多个部分和,这些部分和的累加结果即为该卷积输出点的最终值。
在本披露一些实施例中,通过利用不同的数据通路传输输入特征图和权值,可以支持输入特征图和权值的多种复用方式,从而减小运算期间的数据吞吐量,提升处理效率。
具体地,计算装置600中还可以包括第一存储装置630和第二存储装置640,用于分别存储经由不同数据通道传输的数据。
第一存储电路630可以用于存储多播数据,也即第一存储电路中的数据将通过广播总线传输给多个从处理电路,这些从处理电路接收到相同的数据。可以理解,通过广播总线可以实现广播和多播。多播是指将一份数据传输到多个从处理电路的通信方式;而广播是将一份数据传输到所有从处理电路的通信方式,是多播的一个特例。由于多播和广播都对应一对多的传输方式,本文中未对二者特意区分,广播和多播可以统称为多播,本领域技术人员根据上下文可以明确其含义。
第二存储电路640可以用于存储分发数据,也即第二存储电路中的数据将分别传输给不同的从处理电路,每个从处理电路接收到不同的数据。
通过分别提供第一存储电路和第二存储电路,可以支持针对待运算的数据以不同传输方式进行传输,从而通过在多个从处理电路之间复用多播数据来降低数据吞吐量。
在一些实施例中,主处理电路可以将输入特征图存储在第一存储电路630中,以在运算期间通过广播方式将划分的特征图块传输给调度的多个从处理电路。对应地,主处理电路可以将权值按前述方式分块存储在第二存储电路640中,其中的权值块可以在运算前分发给对应的从处理电路。
可以理解,虽然在图6中将各个处理电路与存储电路示出为分立的模块,但是根据不同的配置,存储电路与处理电路也可以合并成一个模块。例如,第一存储电路630可以与主处理电路610合并在一起,第二存储电路640则可以由多个从处理电路620共享,并为每个从处理电路分配独立的存储区域,加速访问。本披露实施例在此方面没有限制。此外,在该计算装置中,主处理电路和从处理电路可以属于同一处理器或芯片的不同模块,也可以属于不同处理器,本披露在此方面也没有限制。
图7示出了根据本披露实施例的从处理电路的内部结构示意图。如图所示,从处理电路700包括第一缓冲电路710、第二缓冲电路720以及多个运算电路730。
第一缓冲电路710可以用于缓存并处理权值或输入特征图。相应地,第二缓冲电路720则可以用于缓存并处理输入特征图或权值。这两个缓冲电路均用于选取参与运算的数据。第一缓冲电路710的数据可以来自例如图6中的第一存储电路630或第二存储电路640,对应地,第二缓冲电路720的数据可以来自例如图6中的第二存储电路640或第一存储电路630。
在一些实施例中,第一缓冲电路710用于缓存来自第二存储电路的权值块中的权值行。这些权值行是权值块按照在第二存储电路中的最低存储维度(例如,Ci维度)划分而成的,例如按照前面描述的在最低存储维度上对齐到第一对齐要求的划分方式。这些权值行可以在运算期间被分发给对应的运算电路730。
在一些实施例中,第二缓冲电路720用于缓存由主处理电路广播的、来自第一存储电路的输入特征图中的特征图块。这些特征图块可以在运算期间被广播传输给从处理电路700内的所有运算电路730。
每个运算电路730可以用于针对从第一缓冲电路710分发的权值行和从第二缓冲电路720广播的特征图块,执行对位乘累加运算。
从处理电路700中还可以包括第三缓冲电路740,用于缓存各个运算电路730的运算结果。
可以理解,虽然图中示出了4个运算电路730,但是根据不同的硬件配置,从处理电路中可以包括更多或更少的运算电路,本披露实施例在此方面没有限制。
如前面所提到,在一些实施例中,通过合理地分配各个数据的存储方式,可以加快数据访存速度。
图8示出了根据本披露实施例的权值数据在第二存储电路中的示意性存储方式。
如图所示,第二存储电路800可以为每个从处理电路分配一个存储区域,从而每个从处理电路运算所需的权值只需要从其对应的存储区域读取即可。图中示例性示出了为16个从处理电路分配了16块存储区域801~816。每个存储区域中存储该从处理电路要处理的权值块。可以理解,取决于不同的硬件配置,从处理电路的数量可以不同,例如4个、8个、32个或更多。在图8的示例中,以每个从处理电路包括4个运算电路为例进行描述,但是本披露实施例不限于此。
如前面所提到的,Co维度上的运算结果无需累加,因此分配在不同的运算电路上可以相对独立地进行运算。由此,在每个存储区域中可以存储不同Co维度上的权值,也即可以存储不同的权值块。从图中示例中,所示的16块存储区域中的权值块对应的Co各不相同。
当Co维度大小超过可调度的从处理电路的数量时,需要通过多个运算轮次来执行运算。各轮次使用的权值块可以按照运算轮次顺序分组,每个权值块组中的权值块数量对应于对应轮次运算中所调度的从处理电路的总运算能力。
以图中示例为例,假设总共16个从处理电路均可调度,并且每个从处理电路包括4个运算电路,则每轮运算中可以调度总计64个运算电路,分别为64个Co执行运算。进一步假设权值的Co维度大小为128,超过可调度的运算电路总数64,则可以分成两轮运算来完成全部计算。在第一轮运算中,64个运算电路分别针对Co=0,1,…,63的权值进行运算;在第二轮运算中,这64个运算电路分别针对Co=64,65,…,127的权值进行运算。因此,权值按照Co维度可以拆分成128个权值块,前64个权值块可以是第一权值块组821,后64个权值块可以是第二权值块组822。
进一步地,由于第二存储电路是按照从处理电路分配存储区域的,而每个从处理电路中包括多个运算电路,因此,在一些实施例中,可以将每个权值块组中的权值块按照对应轮次运算中所调度的从处理电路顺序分段,每个权值块段对应一个调度的从处理电路,每个权值块段分别存储在第二存储电路中为对应的从处理电路分配的存储区域中。每个权值块段内包含至少一个权值块,即每个从处理电路对应的权值块为一个以上。可选地,每个权值块段内包括的权值块数量等于每个从处理电路中包括的运算电路的数量。
如图所示,在第一权值块组821中,64个权值块按照16个从处理电路顺序分成16个权值块段,其中包括Co=0,1,2,3这4个权值块的第一权值块段831分配给第一从处理电路,其中的4个权值块分别分配给第一从处理电路中的4个运算电路;包括Co=4,5,6,7这4个权值块的第二权值块段832分配给第二从处理电路,其中的4个权值块分别分配给第二从处理电路中的4个运算电路;以此类推。在第二权值块组822中,也类似地划分权值块段并相应地进行存储,此处不再重复。
前面描述了本披露实施例的计算装置的硬件结构以及数据的示例性存储方式,上述硬件结构可以为参与运算的输入特征图和权值提供不同的数据通路,从而利用不同的数据传输方式(例如,广播、多播、分发等)来减少运算期间的数据吞吐量,提高运算效率。在实际运算中,根据参与运算的数据的规模特性,可以采取不同的复用方式,包括权值复用和/或输入特征图复用。
在一些实施例中,输入特征图可以在同一个从处理电路的所有运算电路上复用,而每个运算电路针对不同的输出通道对应的权值块和该输入特征图执行运算。此时,输入特征图以广播方式传输给所有运算电路,而每个运算电路可以预先加载对应输出通道的权值。
在一些实现中,每个被调度的从处理电路可以按照所分配的Co维度值,从第二存储电路中轮流读取当前轮次运算中分配给该从处理电路的权值块段中各个权值块的权值行。所读取的权值行继而被存储到该从处理电路的第一缓冲电路中。在运算前,从处理电路可以按照各个权值行所对应的Co维度,分发给该从处理电路中的不同运算电路。运算期间,从处理电路可以将第二缓冲电路中的特征图块广播给各个运算电路。由此,运算电路可以针对分发的权值行与广播的特征图块执行对位乘累加运算,得到权值行与特征图块所对应的感受野上的部分和结果。
以图8的示例为例,第二存储电路中为每个从处理电路分配的存储区域连续存储4个Co的权值。第一从处理电路可以在Co方向交替读取数据,例如在第一步运算中,先读Co=0的第一权值行,然后Co=1的第一权值行,Co=2的第一权值行,最后是Co=3的第一权值行。在下一步运算中,先读Co=0的第二权值行,然后Co=1的第二权值行,Co=2的第二权值行,最后是Co=3的第二权值行。
读出的权值行存在第一缓冲电路中,并按Co分发给不同的运算电路。例如,Co=0的权值行发送给第一运算电路,Co=1的权值行发送给第二运算电路,以此类推。
从处理电路将缓存在第二缓冲电路上的特征图块广播给其内的所有运算电路。该从处理电路的各个运算电路分别在第一步运算中得到对应Co上首个(或第一)感受野上的一个部分和。
为了得到整个感受野上的所有部分和结果,从而获得与感受野对应的卷积输出点的最终结果,需要遍历整个感受野,重复多次获取相应的权值行与特征图块,执行权值行与特征图块对位乘累加运算得到多个部分和结果,这些部分和结果累加得到对应卷积输出点的最终结果。
在遍历过程中,可以采用不同的复用方式。相应地,从处理电路可以根据权值和/或输入特征图的复用方式,控制读取第一缓冲电路和第二缓冲电路中的内容。
在一些实现中,当采用权值复用时,也即同一权值行可以用于多个不同的输入特征图块,从处理电路可以将第二缓冲电路中缓存的输入特征图中对应不同卷积输出点/感受野的特征图块连续广播给其内的多个运算电路。此处,不同卷积输出点/感受野的数量等于权值复用次数SR。例如,当权值复用次数SR=2时,可以将对应例如第一卷积输出点的第一特征图块和对应第二卷积输出点的第二特征图块连续广播给从处理电路内的所有4个运算电路。
在这些实现中,每个运算电路可以针对连续广播的特征图块,使用同一权值行分别执行对位乘累加运算,得到属于不同卷积输出点的SR个部分和结果。
在多轮运算中,可以将每次得到的属于同一卷积输出点的部分和结果进行累加,直至已累加了遍历对应感受野得到的所有部分和结果,从而获得该卷积输出点的最终结果。
可以理解,根据具体情况,权值复用次数可以不同,例如SR可以取2、4、8、…。权值复用次数SR受限于第二存储电路的读取带宽和读取端口数量。例如,当第二存储电路的读取带宽为64字节,端口数为1时,至少读1拍的64字节到第一缓冲电路,最多读8拍的64字节数据。此时,权值复用次数SR最多为32次。
可选地或附加地,在一些实现中,可以采用输入特征图复用,也即同一特征图块可以用于多个不同的权值行。注意,此处的输入特征图复用是指在单个运算电路中同一输入特征图多次用于与不同的权值行进行运算。在前面描述的实施例中,输入特征图复用是在所有运算电路上复用,也即同一输入特征图在多个运算电路上分别与不同的权值行进行运算。
当在单个运算电路中采用输入特征图复用时,从处理电路可以按照Co维度,从分配给该从处理电路的权值块段中的各个权值块中各读取一个权值行,其中读取的权值行数量等于输入特征图复用次数NR与该从处理电路内的运算电路数量之积。然后,读取的权值行可以缓存在第一缓冲电路中并分发给各个运算电路。
在这些实现中,每个运算电路针对从第二缓冲电路广播的特征图块,使用从第一缓冲电路分发的NR个权值行分别执行对位乘累加运算,得到属于不同Co维度的NR个部分和结果。
例如以图8的示例为例,在第二存储电路中存储了128个Co的权值块,分配给每个从处理电路的存储区域中各包括8个Co的权值块。在采用输入特征图复用次数NR=2的方案时,例如对于第一从处理电路,在读数时每次从8个权值块中各取出一个权值行存入第一缓冲电路中。在第一从处理电路的每个运算电路中计算两个Co的结果,也即每个特征图块被复用2次。例如第一运算电路计算Co=0和Co=64的结果,第二运算电路计算Co=1和Co=65的结果,以此类推。由此,16个从处理电路可以同时计算16×4×2=128个Co的结果。可以理解,取决于Co的分配方式,也可以每个运算电路处理顺序的两个Co的权值行,例如第一运算电路计算Co=0和Co=1的结果,本披露在此方面没有限制。还可以理解,当Co超过128时,还需要在Co维度上遍历,重复发送输入特征图块,而从处理电路读取不同的Co所对应的权值行。
同样地,在多轮运算中,可以将每次得到的属于同一Co维度的部分和结果进行累加,以得到对应Co上的卷积输出。
可以理解,根据具体情况,输入特征图复用次数可以不同,例如NR可以取2、4、8、…。输入特征图复用次数NR受限于第一缓冲电路的容量大小。例如,第一缓冲电路可以存储9×64B的数据。在无输入特征图复用时,存放4×64B的权值,分别对应4个运算电路;存在输入特征图复用时,存放8×64B的权值,每2×64B对应1个运算电路。因此,在此示例中,受限于第一缓冲电路,输入特征图的复用次数NR最多为2次。
上面描述的单个运算电路内的权值复用和输入特征图复用,可以单独使用,也可以组合使用。无论采用哪种复用方式,主处理电路可以将从所调度的多个从处理电路在多轮运算中返回的运算结果按照分块和复用方式进行拼接,以得到最终结果。具体地,属于同一Co维度的、属于同一感受野的部分和结果进行累加,得到该Co维度上与感受野对应的卷积输出点的结果。
如前面所提到的,主处理电路例如可以从多个从处理电路接收中间结果并执行后续处理,以得到最终运算结果。具体地,在上述实施例中,主处理电路可以用于将处理不同Co维度的从处理电路的运算结果进行拼接,以得到整个Co维度上的卷积运算结果。
在另一些实施例中,通过多轮计算来完成单个Co维度的卷积运算的每个从处理电路可以将各轮计算中的部分和结果按照对应的卷积输出点/感受野进行累加汇总后再返回给主处理电路。
本披露实施例还提供了利用前述计算装置执行卷积运算的方法。图9示出根据本披露实施例的卷积运算方法900的示例性流程图。
如图所示,在步骤910中,主处理电路在卷积运算期间,将输入特征图按最低存储维度分块,以广播方式将特征图块传输给调度的多个从处理电路。在步骤920中,主处理电路将权值按照Co维度分块,以供所调度的从处理电路加载对应的权值块。在步骤930中,所调度的每个从处理电路针对特征图块和对应的权值块,执行卷积运算;以及将运算结果返回给主处理电路。
本领域技术人员可以理解,方法流程图中描述的步骤与前面结合图4-6描述的计算装置的各个电路相对应,因此前面描述的特征同样适用于方法步骤,此处不再重复。虽然上面按照方法流程顺序描述了本披露实施例的卷积运算方法,但是本领域技术人员可以理解,这些方法步骤也可以采用其他顺序来执行或者同时执行。例如,步骤910和步骤920可以同时执行,或者步骤920可以在步骤910之前执行。
本披露实施例还提供了一种芯片,其可以包括前面结合附图描述的任一实施例的计算装置。进一步地,本披露还提供了一种板卡,该板卡可以包括前述芯片。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如中央处理器、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
依据以下条款可更好地理解前述内容:
条款1、一种计算装置,配置用于执行卷积运算,所述计算装置包括主处理电路和多个从处理电路,其中:
所述主处理电路用于:
在所述卷积运算期间,将输入特征图按最低存储维度分块,以广播方式将特征图块传输给调度的多个从处理电路;以及
将权值按照输出通道维度分块,以供所调度的所述从处理电路加载对应的权值块;并且
所调度的每个所述从处理电路用于:
针对所述特征图块和对应的权值块,执行卷积运算;以及
将运算结果返回给所述主处理电路。
条款2、根据条款1所述的计算装置,其中所述主处理电路进一步用于:在广播所述特征图块时,将所述特征图块在所述最低存储维度上对齐到第一对齐要求,所述第一对齐要求根据所述从处理电路的处理能力而确定。
条款3、根据条款2所述的计算装置,其中所述第一对齐要求等于所述从处理电路中的运算电路的单次最大数据处理量,对齐后的每个特征图块在所述最低存储维度上的大小等于所述单次最大数据处理量。
条款4、根据条款1-3任一所述的计算装置,其中,所述主处理电路进一步用于:
将在所述输出通道维度上连续划分的多个权值块,按照运算轮次顺序分组,每个权值块组中的权值块数量对应于对应轮次运算中所调度的从处理电路的总运算能力;
将每个权值块组中的权值块按照对应轮次运算中所调度的从处理电路顺序分段,每个权值块段对应一个调度的从处理电路;以及
将每个权值块段分别存储在为对应的从处理电路分配的存储区域中。
条款5、根据条款1-4任一所述的计算装置,其中每个从处理电路还包括第一缓冲电路、第二缓冲电路和多个运算电路,其中:
所述第一缓冲电路,用于缓存所述从处理电路对应的至少一个所述权值块中按最低存储维度划分的一个或多个权值行,所述权值行在运算期间被分发给对应的运算电路;以及
所述第二缓冲电路,用于缓存所述主处理电路广播的特征图块,所述特征图块在运算期间被广播传输给所述从处理电路内的所有运算电路;
其中每个运算电路用于:针对从所述第一缓冲电路中分发的权值行和从第二缓冲电路中广播的特征图块,执行对位乘累加运算。
条款6、根据条款5所述的计算装置,其中所述从处理电路进一步用于:
按照所述输出通道维度,轮流读取当前轮次运算中分配给所述从处理电路的权值块段中各个权值块的权值行;
将读取的权值行存储到所述第一缓冲电路中;以及
按照各个权值行所对应的输出通道维度,分发给所述从处理电路中的不同运算电路以与从第二缓冲电路广播的特征图块执行对位乘累加运算,得到对应卷积输出点上的部分和结果。
条款7、根据条款6所述的计算装置,其中所述从处理电路进一步用于:根据所述权值和/或所述输入特征图的复用方式,控制读取所述第一缓冲电路和第二缓冲电路中的内容,以将所述权值行和所述特征图块同时遍历卷积输出点的整个感受野执行对位乘累加运算,得到多个部分和结果并累加得到对应卷积输出点上的卷积输出。
条款8、根据条款7所述的计算装置,其中:
所述从处理电路进一步用于将所述第二缓冲电路中缓存的所述输入特征图中对应不同卷积输出点的特征图块连续广播给所述多个运算电路,其中所述不同卷积输出点的数量等于权值复用次数SR;并且
每个运算电路进一步用于:
针对连续广播的特征图块,使用同一权值行分别执行对位乘累加运算,得到属于不同卷积输出点的SR个部分和结果;以及
将在多轮运算中得到的属于同一卷积输出点的部分和结果进行累加,以得到对应卷积输出点上的卷积输出。
条款9、根据条款7-8任一所述的计算装置,其中:
所述从处理电路进一步用于:
按照所述输出通道维度,从分配给所述从处理电路的权值块段中的各个权值块中各读取一个权值行,其中读取的权值行数量等于输入特征图复用次数NR与所述从处理电路内的运算电路数量之积;以及
将读取的权值行存入所述第一缓冲电路中并分发给所述多个运算电路;并且
每个运算电路进一步用于:
针对从所述第二缓冲电路广播的特征图块,使用从所述第一缓冲电路分发的NR个权值行分别执行对位乘累加运算,得到属于不同输出通道维度的NR个部分和结果;以及
将在多轮运算中得到的属于同一输出通道维度的部分和结果进行累加,以得到对应输出通道维度上的卷积输出。
条款10、根据条款1-9任一所述的计算装置,其中所述主处理电路进一步用于:将从所调度的多个从处理电路在多轮运算中返回的运算结果按照分块和复用方式进行拼接,以得到最终结果。
条款11、一种芯片,其特征在于,所述芯片包括如条款1-10任一所述的计算装置。
条款12、一种板卡,其特征在于,所述板卡包括条款11所述的芯片。
条款13、一种由条款1-10任一所述的计算装置实施卷积运算的方法。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。

Claims (11)

1.一种计算装置,配置用于执行卷积运算,所述计算装置包括主处理电路和多个从处理电路,其中:
所述主处理电路用于:
在所述卷积运算期间,将输入特征图按最低存储维度分块,以广播方式将特征图块传输给调度的多个从处理电路;以及
将权值按照输出通道维度分块,以供所调度的所述从处理电路加载对应的权值块,其中所述权值块按最低存储维度划分成多个权值行;并且
所调度的每个所述从处理电路用于:
针对所述特征图块和对应的权值块,执行卷积运算;以及
将运算结果返回给所述主处理电路,
其中所述主处理电路用于将所述特征图块在所述最低存储维度上对齐到第一对齐要求,以便针对所述特征图块和对应的权值行,执行所述卷积运算,其中所述第一对齐要求根据所述从处理电路的处理能力而确定,其中所述第一对齐要求等于所述从处理电路中的运算电路的单次最大数据处理量,对齐后的每个特征图块在所述最低存储维度上的大小等于所述单次最大数据处理量;其中,所述输入特征图按照最低存储维度连续存放,且所述最低存储维度上的数据按照所述第一对齐要求对齐到指定数值。
2.根据权利要求1所述的计算装置,其中,所述主处理电路进一步用于:
将在所述输出通道维度上连续划分的多个权值块,按照运算轮次顺序分组,每个权值块组中的权值块数量对应于对应轮次运算中所调度的从处理电路的总运算能力;
将每个权值块组中的权值块按照对应轮次运算中所调度的从处理电路顺序分段,每个权值块段对应一个调度的从处理电路;以及
将每个权值块段分别存储在为对应的从处理电路分配的存储区域中。
3.根据权利要求1所述的计算装置,其中每个从处理电路还包括第一缓冲电路、第二缓冲电路和多个运算电路,其中:
所述第一缓冲电路,用于缓存所述从处理电路对应的至少一个所述权值块中按最低存储维度划分的一个或多个权值行,所述权值行在运算期间被分发给对应的运算电路;以及
所述第二缓冲电路,用于缓存所述主处理电路广播的特征图块,所述特征图块在运算期间被广播传输给所述从处理电路内的所有运算电路;
其中每个运算电路用于:针对从所述第一缓冲电路中分发的权值行和从第二缓冲电路中广播的特征图块,执行对位乘累加运算。
4.根据权利要求3所述的计算装置,其中所述从处理电路进一步用于:
按照所述输出通道维度,轮流读取当前轮次运算中分配给所述从处理电路的权值块段中各个权值块的权值行;
将读取的权值行存储到所述第一缓冲电路中;以及
按照各个权值行所对应的输出通道维度,分发给所述从处理电路中的不同运算电路以与从第二缓冲电路广播的特征图块执行对位乘累加运算,得到对应卷积输出点上的部分和结果。
5.根据权利要求4所述的计算装置,其中所述从处理电路进一步用于:
根据所述权值和/或所述输入特征图的复用方式,控制读取所述第一缓冲电路和第二缓冲电路中的内容,以将所述权值行和所述特征图块同时遍历卷积输出点的整个感受野执行对位乘累加运算,得到多个部分和结果并累加得到对应卷积输出点上的卷积输出。
6.根据权利要求5所述的计算装置,其中:
所述从处理电路进一步用于将所述第二缓冲电路中缓存的所述输入特征图中对应不同卷积输出点的特征图块连续广播给所述多个运算电路,其中所述不同卷积输出点的数量等于权值复用次数SR;并且
每个运算电路进一步用于:
针对连续广播的特征图块,使用同一权值行分别执行对位乘累加运算,得到属于不同卷积输出点的SR个部分和结果;以及
将在多轮运算中得到的属于同一卷积输出点的部分和结果进行累加,以得到对应卷积输出点上的卷积输出。
7.根据权利要求6所述的计算装置,其中:
所述从处理电路进一步用于:
按照所述输出通道维度,从分配给所述从处理电路的权值块段中的各个权值块中各读取一个权值行,其中读取的权值行数量等于输入特征图复用次数NR与所述从处理电路内的运算电路数量之积;以及
将读取的权值行存入所述第一缓冲电路中并分发给所述多个运算电路;并且
每个运算电路进一步用于:
针对从所述第二缓冲电路广播的特征图块,使用从所述第一缓冲电路分发的NR个权值行分别执行对位乘累加运算,得到属于不同输出通道维度的NR个部分和结果;以及
将在多轮运算中得到的属于同一输出通道维度的部分和结果进行累加,以得到对应输出通道维度上的卷积输出。
8.根据权利要求1-7任一所述的计算装置,其中所述主处理电路进一步用于:
将从所调度的多个从处理电路在多轮运算中返回的运算结果按照分块和复用方式进行拼接,以得到最终结果。
9.一种芯片,其特征在于,所述芯片包括如权利要求1-8任一所述的计算装置。
10.一种板卡,其特征在于,所述板卡包括权利要求9所述的芯片。
11.一种由权利要求1-8任一所述的计算装置实施卷积运算的方法。
CN202110648346.2A 2021-06-10 2021-06-10 计算装置、利用计算装置实施卷积运算的方法及相关产品 Active CN115470176B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110648346.2A CN115470176B (zh) 2021-06-10 2021-06-10 计算装置、利用计算装置实施卷积运算的方法及相关产品
PCT/CN2022/097669 WO2022257980A1 (zh) 2021-06-10 2022-06-08 计算装置、利用计算装置实施卷积运算的方法及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110648346.2A CN115470176B (zh) 2021-06-10 2021-06-10 计算装置、利用计算装置实施卷积运算的方法及相关产品

Publications (2)

Publication Number Publication Date
CN115470176A CN115470176A (zh) 2022-12-13
CN115470176B true CN115470176B (zh) 2024-04-09

Family

ID=84363557

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110648346.2A Active CN115470176B (zh) 2021-06-10 2021-06-10 计算装置、利用计算装置实施卷积运算的方法及相关产品

Country Status (2)

Country Link
CN (1) CN115470176B (zh)
WO (1) WO2022257980A1 (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020177640A (ja) * 2019-12-06 2020-10-29 カンブリコン テクノロジーズ コーポレーション リミテッドCambricon Technologies Corporation Limited チップ装置および関連製品
JP2020177641A (ja) * 2019-12-06 2020-10-29 カンブリコン テクノロジーズ コーポレーション リミテッドCambricon Technologies Corporation Limited チップ装置および関連製品
CN111860801A (zh) * 2019-04-30 2020-10-30 百度(美国)有限责任公司 神经网络方法、神经网络系统和计算机可读介质
CN112470138A (zh) * 2019-11-29 2021-03-09 深圳市大疆创新科技有限公司 计算装置、方法、处理器和可移动设备
CN112633490A (zh) * 2020-12-31 2021-04-09 上海寒武纪信息科技有限公司 执行神经网络模型的数据处理装置、方法及相关产品

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110866589B (zh) * 2018-08-10 2023-06-30 阿里巴巴(中国)有限公司 深度神经网络模型的运行方法、装置及框架
CN110059797B (zh) * 2018-10-10 2020-03-10 中科寒武纪科技股份有限公司 一种计算装置及相关产品
EP3648013A1 (en) * 2018-11-02 2020-05-06 Tata Consultancy Services Limited Method and system for partitioning of deep convolution network for executing on computationally constraint devices
US11741350B2 (en) * 2019-11-27 2023-08-29 Amazon Technologies, Inc. Efficient utilization of processing element array
CN112288082B (zh) * 2020-11-23 2023-06-13 天津大学 一种基于hls的可重构通用标准卷积加速器设计方法
CN112508184B (zh) * 2020-12-16 2022-04-29 重庆邮电大学 一种基于卷积神经网络的快速图像识别加速器设计方法
CN112801901B (zh) * 2021-01-21 2023-08-18 北京交通大学 基于分块多尺度卷积神经网络的图像去模糊算法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111860801A (zh) * 2019-04-30 2020-10-30 百度(美国)有限责任公司 神经网络方法、神经网络系统和计算机可读介质
CN112470138A (zh) * 2019-11-29 2021-03-09 深圳市大疆创新科技有限公司 计算装置、方法、处理器和可移动设备
WO2021102946A1 (zh) * 2019-11-29 2021-06-03 深圳市大疆创新科技有限公司 计算装置、方法、处理器和可移动设备
JP2020177640A (ja) * 2019-12-06 2020-10-29 カンブリコン テクノロジーズ コーポレーション リミテッドCambricon Technologies Corporation Limited チップ装置および関連製品
JP2020177641A (ja) * 2019-12-06 2020-10-29 カンブリコン テクノロジーズ コーポレーション リミテッドCambricon Technologies Corporation Limited チップ装置および関連製品
CN112633490A (zh) * 2020-12-31 2021-04-09 上海寒武纪信息科技有限公司 执行神经网络模型的数据处理装置、方法及相关产品

Also Published As

Publication number Publication date
WO2022257980A1 (zh) 2022-12-15
CN115470176A (zh) 2022-12-13

Similar Documents

Publication Publication Date Title
CN110222308B (zh) 一种矩阵乘矩阵运算方法及装置
US20200089535A1 (en) Data sharing system and data sharing method therefor
CN112633490B (zh) 执行神经网络模型的数据处理装置、方法及相关产品
CN110909872B (zh) 集成电路芯片装置及相关产品
CN109711540B (zh) 一种计算装置及板卡
CN110059809B (zh) 一种计算装置及相关产品
CN113837922A (zh) 计算装置、数据处理方法及相关产品
CN111488963A (zh) 神经网络计算装置和方法
CN115470176B (zh) 计算装置、利用计算装置实施卷积运算的方法及相关产品
CN109711538B (zh) 运算方法、装置及相关产品
CN111368967A (zh) 一种神经网络计算装置和方法
CN115081600A (zh) 执行Winograd卷积的变换单元、集成电路装置及板卡
CN113850377A (zh) 数据处理装置、数据处理方法及相关产品
CN111368987B (zh) 一种神经网络计算装置和方法
CN110197275B (zh) 集成电路芯片装置及相关产品
CN115081603A (zh) 执行Winograd卷积的计算装置、集成电路装置及板卡
CN111368990A (zh) 一种神经网络计算装置和方法
CN113792867B (zh) 运算电路、芯片和板卡
CN117252241A (zh) 执行卷积运算的计算装置、方法及相关产品
CN113469333B (zh) 执行神经网络模型的人工智能处理器、方法及相关产品
CN115081602A (zh) 执行Winograd卷积的计算装置、集成电路装置及板卡
CN116150556A (zh) 执行卷积运算的计算装置、方法及相关产品
WO2023087814A1 (zh) 计算装置、利用计算装置实施卷积运算的方法及相关产品
CN117235424A (zh) 计算装置、计算方法及相关产品
CN115438777A (zh) 对神经元数据执行Winograd卷积正变换的装置

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