CN111767246A - 数据处理方法、相关设备及计算机可读介质 - Google Patents
数据处理方法、相关设备及计算机可读介质 Download PDFInfo
- Publication number
- CN111767246A CN111767246A CN202010516159.4A CN202010516159A CN111767246A CN 111767246 A CN111767246 A CN 111767246A CN 202010516159 A CN202010516159 A CN 202010516159A CN 111767246 A CN111767246 A CN 111767246A
- Authority
- CN
- China
- Prior art keywords
- convolution
- processing
- input data
- kernel
- core
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 11
- 238000012545 processing Methods 0.000 claims abstract description 309
- 230000015654 memory Effects 0.000 claims abstract description 39
- 238000003860 storage Methods 0.000 claims description 67
- 238000000034 method Methods 0.000 claims description 41
- 238000004364 calculation method Methods 0.000 claims description 31
- 238000004590 computer program Methods 0.000 claims description 6
- 238000004519 manufacturing process Methods 0.000 claims description 2
- 238000009826 distribution Methods 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 8
- 239000011159 matrix material Substances 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Pure & Applied Mathematics (AREA)
- Biophysics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Biomedical Technology (AREA)
- Mathematical Optimization (AREA)
- Health & Medical Sciences (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Complex Calculations (AREA)
Abstract
本发明实施例公开了一种计算设备,包括:包括处理器、存储器以及总线,所述处理器和所述存储器通过所述总线连接,所述存储器用于存储指令,所述处理器用于调用所述存储器中存储的指令,用于执行特定的数据处理方法,以提升数据处理性能和效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据处理方法、相关设备及计算机可读介质。
背景技术
卷积(convolution,conv)运算是权值(weight)和输入数据(input)的乘法累加计算。处理器通过重复计算权值与输入数据的乘积,并做累加计算得到。由于处理器的寄存器资源有限,在卷积运算过程中需不断重复加载权值和输入数据,这将带来大量的输入输出(input output,IO)访存量、导致出现IO瓶颈、影响处理器的计算效率。
发明内容
本发明实施例提供一种数据处理方法,能够解决现有技术中存在的IO访存量较大、出现IO瓶颈、影响计算效率等问题。
第一方面,本申请实施例提供了一种数据处理方法,应用于部署有至少一个计算簇cluster的计算芯片中,所述计算簇包括m个处理核,所述方法包括:
计算芯片获取卷积核;
计算芯片对卷积核进行拆分,将拆分结果对应的卷积权值分配至m个处理核,确定所述处理核每次执行conv2D指令对应的卷积权值;
计算芯片根据所述卷积核沿整个输入数据的深度方向滑动情况以及所述卷积核的拆分结果,确定所述处理核每次执行conv2D指令对应的输入数据;
每个处理核执行conv2D指令,获得对应的中间结果,计算芯片根据每个处理核的中间结果获得卷积结果。
第二方面,本申请实施例提供了一种计算装置,该装置包括用于执行上述第一方面的方法的单元或模块。
第三方面,本申请实施例提供了一种计算芯片,该计算芯片中部署有包含m 个处理核的计算簇cluster,该计算芯片用于执行如上第一方面的方法。
第四方面,本申请实施例提供了另一种计算设备,包括处理器、存储器以及总线,所述处理器和所述存储器通过所述总线连接,所述存储器用于存储指令,所述处理器用于调用所述存储器中存储的指令,用于执行上述第一方面的方法。
第五方面,本申请实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。
通过实施本申请实施例,能够将卷积核预先分配至m个处理核中,进而卷积核在整个输入数据的深度方向滑动情况,确定卷积运算的流水线。在同一流水线下,输入数据与m个处理核的卷积权值进行卷积运算,以实现输入数据和卷积权值之间的卷积运算。这样能够解决现有技术中存在的IO访存量较大、出现IO瓶颈、影响计算效率等问题。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种计算芯片的结构示意图。
图2是本申请实施例提供的一种数据处理方法的流程示意图。
图3是本申请实施例提供的一种卷积核的拆分示意图。
图4是本申请实施例提供的一种卷积核加载的示意图。
图5是本申请实施例提供的一种输入数据与卷积权值运算的映射关系示意图。
图6-图9是本申请实施例提供的几种处理核中实现卷积运算的具体示意图;
图10是本申请实施例提供的卷积运算原理的具体示意图;
图11是本申请实施例提供的一种计算芯片的结构示意图;
图12是本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
卷积操作的维度计算是定义神经网络结构的重要问题,在使用如PyTorch、Tensorflow等深度学习框架搭建神经网络的时候,对每一层输入的维度和输出的维度都必须计算准确,否则容易出错,这里将详细说明相关的维度计算。
首先,我们看一下卷积操作涉及的东西,一个卷积操作需要定义卷积核的大小、输入图像的padding长度以及卷积操作的步长。以一个二维输入为例,一个多卷积核操作的示意图如图10所示。这个例子的输入数据是一个三维数据,带有通道数,输入数据第三个维度是通道数,使用了两个卷积核(滤波器)扫描得到两个二维图像(一个卷积核对一个三维数据,即带多个通道的二维数据扫描可以得到一个图像,要求卷积核也是三维,且通道数和输入数据通道数一样),组成输出数据的两个通道。下面我们来描述具体计算。
假设输入数据大小是:w×h
其中,w是宽度,h是高度。卷积核大小是:f×f
padding的长度是p(padding),步长是s(stride),那么经过卷积操作之后,输出的数据大小:
如果输入的数据是三维数据,即:w×h×c
其中,w是宽度,h是高度,c是通道数(对于RGB图像输入来说,这个值一般是3,在文本处理中,通常是不同embedding模型的个数)。
这个时候的卷积核通常也是带通道的三维卷积核:f×f×c
注意,一般来说,卷积核的通道数c和输入数据的通道数是一致的。因此,这个时候卷积之后的输出依然是一个二维数据,其大小为:
这里的维度做了向下取整,防止结果不是整数的情况。假如希望输出的也是带通道的结果,那么这时候就要使用多个卷积核来操作了,最终输出的数据维度是:
其中,c′是卷积核的个数。
计算芯片执行conv2D指令的过程中,通过卷积核在整个输入数据上做2-D 方向移动,不在深度方向移动,且卷积核的深度的维度大小与整个输入数据的深度的维度大小相等,并且在深度方向做累加操作。
计算芯片执行conv3D指令的过程中,通过卷积核在整个输入数据上做深度方向移动,再此基础上,卷积核在整个输入数据上可以做2-D方向移动,并且在深度方向做累加操作。
目前在卷积(conv)运算过程中,由于需要大量重复加载权值和输入数据,造成IO总线的带宽瓶颈,进一步地,大量的IO访存将带来较大的功耗问题、同时还降低了处理器的计算效率。尤其地,在3D卷积运算(conv3D)时需要重复调用卷积指令实现conv3D的计算,这样IO瓶颈、功耗及计算效率等问题将进一步放大。为解决上述问题,本申请提出一种数据处理方法及所述方法适用的相关框架。
请参见图1,是本申请实施例提供的一种计算芯片的结构示意图。如图1所示的计算芯片100中部署有一个或多个计算簇cluster,本申请图示及下文以一个 cluster为例进行相关内容阐述,但并不构成限定。每个计算簇中包括m个处理核102(ipu core)及该m个处理核102共享的存储空间,也可称为共享空间104 (shared memory,SM)。m为系统自定义设置的正整数。
每个处理核102支持独立运行,m个处理核102共享一个共享空间104,可以在该共享空间104中共享数据、或暂存数据。其中,m个处理核102可支持并行运算或串行运算。在并行运算中,m个处理核102可同时计算m份不同的数据。但由于m个处理核102同时运行,每个处理核102都需要独立的输入数据,这样每个处理核102都需要独立与双倍速率同步动态随机存储器(double data rate,DDR)或共享空间104交换数据。若将每个处理核102所需计算的输入数据存储在DDR中,由于DDR是计算芯片100之外的存储部件,DDR到cluster 进行数据交换的IO带宽有限,IO速度会成为瓶颈。如果把每个处理核102所需计算的输入数据或中间数据存储在共享空间104,理想状态下,每个处理核102 仅能使用共享空间104大小的1/m,这样的存储空间通常无法满足卷积运算过程中的中间数据的存储需求。
为了解决上述问题,提出基于conv2D指令来实现conv3D运算,且同一 cluster内的每个处理核102执行conv2D指令,在串行运算过程中,m个处理核102通过共享空间104可进行相互通信。即每个cluster内部的m个处理核102 可进行cluster内部的核间流水通信,即每个处理核102执行了conv2D指令,获得的输出结果放置共享空间104上,并作为下个处理核102的输入。其中,m 个处理核102的数据流具体如图箭头所示。这样,以cluster为单位,同一cluster 内每个处理核102的输出数据为下一个处理核执行conv2D指令的输入数据。在同一时间拍,每个处理核102执行conv2D指令,实现conv3D运算操作。
现有执行Conv3D运算过程中需从DDR到cluster传输m份输入数据,本技术方案仅需传输1份输入数据,大大缓解了DDR到cluster之间的带宽开销、有利于缓解IO瓶颈、IO访存量较大等问题。
本申请中的共享空间104起中转的作用,最大化发挥了存储空间的共享属性,相当于彻底打通了m个处理核102之间的连接,使得每个处理核102无需再等待所需计算的数据,有利于提升处理核102的计算效率,整体提升计算芯片的计算性能。
需要说明的是,本申请中,一个cluster内部的m个处理核102是流水线串行运行,下个处理核102需使用上个处理核102输出的运算结果作为输入数据。但针对每个处理核而言,在处理完一次运算后可加载相应输入数据进入下次运算。
在实际应用中,计算芯片可部署在计算设备中应用,该计算设备包括但不限于智能手机(如Android手机、IOS手机等)、个人电脑、平板电脑、掌上电脑、移动互联网设备(MID,Mobile Internet Devices)或穿戴式智能设备等设备,本发明实施例不作限定。
请参见图2,是本申请实施例提供的一种数据处理方法的流程示意图。该方法应用于图1所示的计算芯片100中,如图2所示的方法包括如下实施步骤:
S201、计算芯片获取卷积核。
对于本技术方案来说,卷积核的尺寸为A1×B1×C1。A1为卷积核的高度,B1为卷积核的宽度,C1为卷积核的深度。
S202、计算芯片对卷积核进行拆分,将拆分结果对应的卷积权值分配至m 个处理核,确定所述处理核每次执行conv2D指令对应的卷积权值。
计算芯片可预先将卷积核拆分为m份,得到m份卷积权值,以对应部署或分配到相应地处理核中参与卷积运算操作。在卷积运算时,每个处理核可使用自身部署的卷积权值进行卷积运算。本申请涉及的拆分方式并不做限定,例如按照一定比例拆分或平均拆分等等。
举例来说,以卷积核为3×3×3为例,m取4,4个处理核分别为处理核1~处理核4,卷积核包括27个权值数据,计算芯片可将卷积核平均分配至4个处理核中。请参见图3示出一种可能的卷积核的拆分示意图。如图3中,每个小立方体表示一个卷积权值,为方便查看和理解,本申请可将三维空间中的小立方体抽象为二维平面中一个小方格,具体如图所示。每个小方格(矩形)同样表示一个卷积权值。
在卷积权值分配过程中,处理核1执行卷积运算使用7个卷积权值,具体如图示的7个1。处理核2执行卷积运算使用7个卷积权值,如图示中7个2。处理核3执行卷积运算使用7个卷积权值,如图示中7个3。处理核4执行卷积运算使用6个卷积权值,如图示中6个4。其中图示中的1、2、3和4仅用于区分被分配至4个不同的处理核,并不表示每个卷积权值的数值。
在本申请中,卷积核A1×B1×C1在不同方向角度来看,可视为由沿着某视角方向上的多个二维的平面数据块组成。例如以视角方向为深度方向为例,卷积核A1×B1×C1具体由C1个的A1×B1平面数据块组成。同样地在计算芯片加载卷积核时,也可沿着该视角方向依次加载该视角方向上的多个平面数据块。
举例来说,以卷积核为2×3×3为例,请参见图4示出计算芯片对卷积核加载过程的具体示意图。如图4所示,在深度方向(depth)上包括3个2×3的平面数据块,具体如图4所示depth分别为1、2和3。在计算芯片加载卷积权值时,可先加载depth=1层的平面数据块。在加载该平面数据块时,又具体可沿着高度方向加载该平面数据块中包含的每个数据,即固定宽度沿着高度方向加载每个数据,例如灰色矩形示例出加载每个数据的次序。在加载完depth=1层的平面数据块,按照上述数据加载原理,沿着深度方向顺序加载每层的平面数据块。
需要说明的是,由于以卷积核为2×3×3为例,所以depth取最大值为3,一个cluster内处理核数量m为4。本申请披露的内容对于depth和m并不做限定,均适于本技术方案。
S203、计算芯片根据所述卷积核沿整个输入数据的深度方向滑动情况以及所述卷积核的拆分结果,确定所述处理核每次执行conv2D指令对应的输入数据。
对于本技术方案来说,滑动卷积核时,沿着深度方向滑动卷积核的操作执行完毕后,基于此,执行在2-D方向滑动卷积核的操作。
S204、每个处理核执行conv2D指令,获得对应的中间结果,计算芯片根据每个处理核的中间结果获得卷积结果。
以卷积核的depth最大值是3为例,计算芯片根据m个处理核的权值,确定每个处理核的权值对应在深度方向占用卷积核的层数量p。然后按照每个处理核对应的层数量p,沿着深度方向顺序加载输入数据包含的Ci个平面数据块 Ai×Bi,以对应与m个处理核的卷积权值进行卷积运算,得到中间结果。
为方便更好地理解本申请,下面以卷积核A1×B1×C1为3×3×3,m=4为例进行详述。4个处理核分别可表示为core_1、core_2、core_3和core_4。参见图 3所述示例,core_1中预先部署有7个1对应位置的7个卷积权值,且这7个卷积权值均位于卷积核在深度方向上的第1层(即depth=1,1个层)。core_2中预先部署有7个2对应位置的7个卷积权值,且这7个卷积核位于卷积核在深度方向上的第1层及第2层(即depth=1和2,2个层)。core_3中预先部署有 7个3对应位置的7个卷积权值,且这7个卷积权值位于卷积核在深度方向上的第2层及第3层(即depth=2和3,2个层)。core_4中预先部署有6个4对应位置的6个卷积权值,且这6个卷积权值位于卷积核在深度方向上的第3层(即 depth=3,1个层)。
输入数据A2×B2×C2中沿着深度方向上包括C2个平面数据块A2×B2。以C2=8 为例,针对计算芯片而言输入数据中包含8个(层)平面数据块A2×B2,为了获得卷积结果同样包含沿着深度方向上的8个(层)平面数据块,需要执行补齐 (padding)操作。补齐(padding)则是为了弥补以下的缺漏。输入数据进行卷积运算后,越是边缘的像素,对于输出的影响越小,这是因为靠近矩阵中央的像素会参与多次计算,但是边缘像素可能只参与一次,甚至不参与,导致容易丢失边缘信息。补齐便是在原矩阵周围补上像素值,以扩大矩阵的边界,让原本位于矩阵边界的像素不再是边界,信息得以被截取不丢失。具体请参见图5 示出一种图像数据块与卷积结果块运算的映射关系示意图。
如图5所示,计算芯片(计算芯片中m个处理核)可在深度方向上为输入数据的首尾各补一层0(图示为addpad,即一层由全0组成的平面数据块A2×B2)。首层addpad、输入数据中的第1层及第2层的平面数据块A2×B2,可计算得到卷积结果中的第1层(个)平面数据块A2×B2。输入数据中的第1层、第2层及第 3层平面数据块A2×B2,可计算得到卷积结果中的第2层平面数据块A2×B2。依次类推,输入数据中的第j-1层、第j层及第j+1层平面数据块A2×B2,可计算得到卷积结果中的第j层平面数据块A2×B2。可选地,在输入数据的深度方向上的层数量C2不足以计算获得卷积结果中的C2个平面数据块A2×B2时,可用补 addpad的方式以执行conv2D指令来实现conv3D的计算。
结合上述图3及图5的相关阐述可知,计算芯片利用m个处理核实现卷积核3×3×3与输入数据A2×B2×C2的卷积运算时,计算芯片需根据m个处理核的卷积权值对应在深度方向上占卷积核的层数量和层次序,来顺序移动并加载输入数据,以实现卷积核与输入数据的卷积运算,得到卷积结果A2×B2×C2,该卷积结果中包括沿深度方向上的C2个平面数据块A2×B2。示例性地,以4个处理核计算卷积核中的第2个平面数据块A2×B2为例,4个处理核需利用输入数据 A2×B2×C2中沿着深度方向划分的第1个、第2个及第3个平面数据块A2×B2,计算得到卷积结果中的第2个平面数据块A2×B2。
具体实现中,针对第1个处理核(core_1)而言,需利用输入数据中depth=1 层的平面数据块A2×B2作为core_1执行conv2D指令处理的输入数据,再结合 core_1中部署的7个卷积权值(即图3中7个1对应位置上的7个卷积权值) 进行卷积运算,得到core_1的第2个中间卷积块A2×B2,具体如图6示出一种可能的卷积运算示意图。如图6,输入数据块(图示input)为输入数据中depth=1 层的平面数据块A2×B2,与core_1中的卷积权值进行卷积运算,输出(图示 output)core_1的第2个中间卷积块A2×B2。可选地,core_1可将core_1的第2个中间卷积块A2×B2缓存至存储空间104中,以供core_2使用。
针对第二个处理核(core_2)而言,需利用图像数据块中depth=1和2层的平面数据块A2×B2作为输入数据块,再结合core_2中部署的7个卷积权值(即图3中7个2对应位置上的7个卷积权值)进行卷积运算,得到core_2的第2 个中间输出块A2×B2。进而再与core_1的第2个中间卷积块A2×B2进行求和运算,得到core_2的第2个中间卷积块A2×B2。参见图7示出另一种可能的卷积运算示意图。如图7中,输入数据块input为depth=1和2层各自的平面数据块A2×B2,与core_2的卷积权值进行卷积运算,输出output core_2的第2个中间输出块A2×B2。再从存储空间104中获取core_1的第2个中间卷积块A2×B2,并与core_2 的第2个中间输出块A2×B2进行求和运算,得到core_2的第2个中间卷积块 A2×B2。可选地,core_2可将core_2的第2个中间卷积块A2×B2缓存至存储空间 104中,以供core_3使用。
针对第三个处理核(core_3)而言,需利用图像数据块中depth=2和3层的平面数据块A2×B2作为输入数据块,再结合core_3中部署的7个卷积权值(即图3中7个3对应位置上的7个卷积权值)进行卷积运算,得到core_3的第2 个中间输出块A2×B2。进而再与core_2的第2个中间卷积块A2×B2进行求和运算,得到core_3的第2个中间卷积块A2×B2。参见图8示出另一种可能的卷积运算示意图。如图8中,输入数据块input为depth=2和3层各自的平面数据块A2×B2,与core_3的卷积权值进行卷积运算,输出output core_3的第2个中间输出块A2×B2。再从存储空间104中获取core_2的第2个中间卷积块A2×B2,并与core_3 的第2个中间输出块A2×B2进行求和运算,得到core_3的第2个中间卷积块 A2×B2。可选地,core_3可将core_3的第2个中间卷积块A2×B2缓存至存储空间 104中,以供core_4使用。
针对第四个处理核(core_4)而言,需利用图像数据块中depth=3层的平面数据块A2×B2作为输入数据块,再结合core_4中部署的6个卷积权值(即图3 中6个4对应位置上的6个卷积权值)进行卷积运算,得到core_4的第2个中间输出块A2×B2。进而再与core_3的第2个中间卷积块A2×B2进行求和运算,得到core_4的第2个中间卷积块A2×B2。参见图9示出另一种可能的卷积运算示意图。如图9中,输入数据块input为depth=3层的平面数据块A2×B2,与core_4 的卷积权值进行卷积运算,输出output core_4的第2个中间输出块A2×B2。再从存储空间104中获取core_3的第2个中间卷积块A2×B2,并与core_4的第2个中间输出块A2×B2进行求和运算,得到core_4的第2个中间卷积块A2×B2。此时,该core_4的第2个中间卷积块A2×B2即为计算芯片通过4个处理核计算输出的卷积结果中包含的第2层(个)平面数据块A2×B2。可选地,core_4可将core_4 的第2个中间卷积块(即卷积结果块中第2个平面数据块)缓存至计算芯片的 DDR中。
为了更直观地了解上例中计算芯片通过沿着深度方向移动图5所示的输入数据分别与4个处理核的卷积权值执行conv2D指令实现conv3D操作具体实现过程,步长为1为例,下面以表格的形式示出。如下表1示出4个处理核实现卷积运算的流程示意图。
在时间片1内,计算芯片将输入数据中depth=0层的平面数据块由DDR加载到共享空间104的对应存储区域,处理核1将如图3示的7个1对应权值与 depth=0层的输入数据执行卷积运算,获得中间结果P_0。
在时间片2内,如图3示的两个2对应的权值分配至处理核2,这两个权值对应的depth=0层的输入数据并没有参与处理核1的卷积运算,与中间结果P_0 一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核2。
同时,卷积核第一次在深度方向平移相应步长,计算芯片将输入数据中 depth=1层的平面数据块由DDR加载到共享空间104的对应存储区域,处理核1 将如图3示的7个1对应权值与depth=1层的输入数据执行卷积运算,获得中间结果P_1。
在时间片3内,处理核2将如图3示的7个2对应权值分别与对应的depth=0 层没有参与处理核1执行卷积运算的输入数据以及depth=1的输入数据执行卷积运算,得到的结果与处理核1的中间结果P_0进行相加操作,获得新的中间结果P_0。
在同一时间片内,将处理核1在时间片2获得的中间结果P_1以及depth=1 层的没有参与处理核1的卷积运算的输入数据一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核2。
同时,卷积核第二次在深度方向平移相应步长,计算芯片将输入数据中 depth=2层的平面数据块由DDR加载到共享空间104的对应存储区域,处理核1 将如图3示的7个1对应权值与depth=2层的输入数据执行卷积运算,获得中间结果P_2。
在时间片4内,如图3示的四个3对应的权值分配至处理核3,这四个权值对应的depth=1层的输入数据并没有参与处理核2的卷积运算,与处理核2获得的中间结果P_0一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核3。
在同一时间片内,在卷积核第一次深度方向平移相应步长情况下,处理核2 将如图3所示的7个2对应权值分别与对应的depth=1层没有参与处理核1执行卷积运算的输入数据以及depth=2的输入数据执行卷积运算,得到的结果与处理核1的中间结果P_1进行相加操作,获得新的中间结果P_1。
同时,在卷积核第二次深度方向平移相应步长情况下,如图3示的两个2 对应的权值分配至处理核2,这两个权值对应的depth=2层的输入数据并没有参与处理核1的卷积运算,与中间结果P_2一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核2。
同时,卷积核第三次在深度方向平移相应步长,计算芯片将输入数据中 depth=3层的平面数据块由DDR加载到共享空间104的对应存储区域,处理核1 将如图3示的7个1对应权值与depth=3层的输入数据执行卷积运算,获得中间结果P_3。
在时间片5内,处理核3将如图3示的7个3对应权值分别与对应的depth=1 层没有参与处理核2执行卷积运算的输入数据以及depth=2的输入数据执行卷积运算,得到的结果与处理核2的中间结果P_0进行相加操作,获得新的中间结果P_0。
同一时间片内,在卷积核第一次深度方向平移相应步长情况下,将处理核2 在时间片4获得的中间结果P_1以及depth=2层的没有参与处理核2的卷积运算的输入数据一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核3。
同时,在卷积核第二次深度方向平移相应步长情况下,处理核2将如图3 所示的7个2对应权值分别与对应的depth=2层没有参与处理核1的卷积运算的输入数据以及depth=3的输入数据执行卷积运算,得到的结果与处理核1的中间结果P_2进行相加操作,获得新的中间结果P_2。
同时,在卷积核第三次深度方向平移相应步长情况下,将处理核1在时间片4获得的中间结果P_3以及depth=3层的没有参与处理核1的卷积运算的输入数据一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核2。
同时,在卷积核第四次深度方向平移相应步长情况下,计算芯片将输入数据中depth=4层的平面数据块由DDR加载到共享空间104的对应存储区域,处理核1将如图3示的7个1对应权值与depth=4层的输入数据执行卷积运算,获得中间结果P_4。
在时间片6内,如图3示的六个4对应的权值分配至处理核4,这六个权值对应的depth=2层的输入数据并没有参与处理核3的卷积运算,与处理核3获得的中间结果P_0一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核4。
同一时间片内,在卷积核第一次深度方向平移相应步长情况下,处理核3 将如图3示的7个3对应权值分别与对应的depth=2层没有参与处理核2执行卷积运算的输入数据以及depth=3的输入数据执行卷积运算,得到的结果与处理核 3的中间结果P_1进行相加操作,获得新的中间结果P_1。
同时,在卷积核第二次深度方向平移相应步长情况下,将处理核2在时间片5获得的中间结果P_2以及depth=3层的没有参与处理核2的卷积运算的输入数据一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核3。
同时,在卷积核第三次深度方向平移相应步长情况下,处理核2将如图3 所示的7个2对应权值分别与对应的depth=3层没有参与处理核1的卷积运算的输入数据以及depth=4的输入数据执行卷积运算,得到的结果与处理核1的中间结果P_3进行相加操作,获得新的中间结果P_3。
同时,在卷积核第四次深度方向平移相应步长情况下,将处理核1在时间片5获得的中间结果P_4以及depth=4层的没有参与处理核1的卷积运算的输入数据一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核2。
同时,卷积核第五次深度方向平移相应步长,计算芯片将输入数据中depth=5 层的平面数据块由DDR加载到共享空间104的对应存储区域,处理核1将如图 3示的7个1对应权值与depth=5层的输入数据执行卷积运算,获得中间结果P_5。
在时间片7内,如图3示的六个4对应的权值分配至处理核4,处理核4将如图3示的六个4对应权值分别与对应的depth=2层没有参与处理核3执行卷积运算的输入数据执行卷积运算,得到的结果与处理核3的中间结果P_0进行相加操作,获得卷积结果的部分值Out_0。
同一时间片内,在卷积核第一次深度方向平移相应步长情况下,如图3示的六个4对应的权值分配至处理核4,这六个权值对应的depth=3层的输入数据并没有参与处理核3的卷积运算,与处理核3获得的中间结果P_1一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核4。
同时,在卷积核第二次深度方向平移相应步长情况下,处理核3将如图3 示的7个3对应权值分别与对应的depth=3层没有参与处理核2执行卷积运算的输入数据以及depth=4的输入数据执行卷积运算,得到的结果与处理核2的中间结果P_2进行相加操作,获得新的中间结果P_2。
同时,在卷积核第三次深度方向平移相应步长情况下,将处理核2在时间片6获得的中间结果P_3以及depth=4层的没有参与处理核2的卷积运算的输入数据一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核3。
同时,在卷积核第四次深度方向平移相应步长情况下,处理核2将如图3 所示的7个2对应权值分别与对应的depth=4层没有参与处理核1执行卷积运算的输入数据以及depth=5的输入数据执行卷积运算,得到的结果与处理核1的中间结果P_4进行相加操作,获得新的中间结果P_4。
同时,在卷积核第五次深度方向平移相应步长情况下,将处理核1在时间片6获得的中间结果P_5以及depth=5层的没有参与处理核1的卷积运算的输入数据一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核2。
同时,卷积核第六次深度方向平移相应步长,计算芯片将输入数据中depth=6 层的平面数据块由DDR加载到共享空间104的对应存储区域,处理核1将如图 3示的7个1对应权值与depth=6层的输入数据执行卷积运算,获得中间结果P_6。
在时间片8内,在卷积核第一次深度方向平移相应步长情况下,如图3示的六个4对应的权值分配至处理核4,处理核4将如图3示的六个4对应权值分别与对应的depth=3层没有参与处理核3执行卷积运算的输入数据执行卷积运算,得到的结果与处理核3的中间结果P_1进行相加操作,获得卷积结果的部分值Out_1。
同一时间片内,在卷积核第二次深度方向平移相应步长情况下,如图3示的六个4对应的权值分配至处理核4,这六个权值对应的depth=4层的输入数据并没有参与处理核3的卷积运算,与处理核3获得的中间结果P_2一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核4。
同时,在卷积核第三次深度方向平移相应步长情况下,处理核3将如图3 示的7个3对应权值分别与对应的depth=4层没有参与处理核2执行卷积运算的输入数据以及depth=5的输入数据执行卷积运算,得到的结果与处理核2的中间结果P_3进行相加操作,获得新的中间结果P_3。
同时,在卷积核第四次深度方向平移相应步长情况下,将处理核2在时间片7获得的中间结果P_4以及depth=5层的没有参与处理核2的卷积运算的输入数据一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核3。
同时,在卷积核第五次深度方向平移相应步长情况下,处理核2将如图3 所示的7个2对应权值分别与对应的depth=5层没有参与处理核1执行卷积运算的输入数据以及depth=6的输入数据执行卷积运算,得到的结果与处理核1的中间结果P_5进行相加操作,获得新的中间结果P_5。
同时,在卷积核第六次深度方向平移相应步长情况下,将处理核1在时间片7获得的中间结果P_6以及depth=6层的没有参与处理核1的卷积运算的输入数据一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核2。
同时,卷积核第七次深度方向平移相应步长,计算芯片将输入数据中depth=7 层的平面数据块由DDR加载到共享空间104的对应存储区域,处理核1将如图 3示的7个1对应权值与depth=7层的输入数据执行卷积运算,获得中间结果P_7。
在时间片9内,在卷积核第二次深度方向平移相应步长情况下,如图3示的六个4对应的权值分配至处理核4,处理核4将如图3示的六个4对应权值分别与对应的depth=4层没有参与处理核3执行卷积运算的输入数据执行卷积运算,得到的结果与处理核3的中间结果P_2进行相加操作,获得卷积结果的部分值Out_2。
同一时间片内,在卷积核第三次深度方向平移相应步长情况下,如图3示的六个4对应的权值分配至处理核4,这六个权值对应的depth=5层的输入数据并没有参与处理核3的卷积运算,与处理核3获得的中间结果P_3一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核4。
同时,在卷积核第四次深度方向平移相应步长情况下,处理核3将如图3 示的7个3对应权值分别与对应的depth=5层没有参与处理核2执行卷积运算的输入数据以及depth=6的输入数据执行卷积运算,得到的结果与处理核2的中间结果P_4进行相加操作,获得新的中间结果P_4。
同时,在卷积核第五次深度方向平移相应步长情况下,将处理核2在时间片8获得的中间结果P_5以及depth=6层的没有参与处理核2的卷积运算的输入数据一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核3。
同时,在卷积核第六次深度方向平移相应步长情况下,处理核2将如图3 所示的7个2对应权值分别与对应的depth=6层没有参与处理核1执行卷积运算的输入数据以及depth=7的输入数据执行卷积运算,得到的结果与处理核1的中间结果P_6进行相加操作,获得新的中间结果P_6。
同时,在卷积核第七次深度方向平移相应步长情况下,将处理核1在时间片8获得的中间结果P_7以及depth=7层的没有参与处理核1的卷积运算的输入数据一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核2。
同时,卷积核第八次深度方向平移相应步长,计算芯片将输入数据中depth=8 层的平面数据块由DDR加载到共享空间104的对应存储区域,处理核1将如图 3示的7个1对应权值与depth=8层的输入数据执行卷积运算,获得中间结果P_8。
在时间片10内,在卷积核第三次深度方向平移相应步长情况下,如图3示的六个4对应的权值分配至处理核4,处理核4将如图3示的六个4对应权值分别与对应的depth=5层没有参与处理核3执行卷积运算的输入数据执行卷积运算,得到的结果与处理核3的中间结果P_3进行相加操作,获得卷积结果的部分值Out_3。
同一时间片内,在卷积核第四次深度方向平移相应步长情况下,如图3示的六个4对应的权值分配至处理核4,这六个权值对应的depth=6层的输入数据并没有参与处理核3的卷积运算,与处理核3获得的中间结果P_4一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核4。
同时,在卷积核第五次深度方向平移相应步长情况下,处理核3将如图3 示的7个3对应权值分别与对应的depth=6层没有参与处理核2执行卷积运算的输入数据以及depth=7的输入数据执行卷积运算,得到的结果与处理核2的中间结果P_5进行相加操作,获得新的中间结果P_5。
同时,在卷积核第六次深度方向平移相应步长情况下,将处理核2在时间片9获得的中间结果P_6以及depth=7层的没有参与处理核2的卷积运算的输入数据一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核3。
同时,在卷积核第七次深度方向平移相应步长情况下,处理核2将如图3 所示的7个2对应权值分别与对应的depth=7层没有参与处理核1执行卷积运算的输入数据以及depth=8的输入数据执行卷积运算,得到的结果与处理核1的中间结果P_7进行相加操作,获得新的中间结果P_7。
同时,在卷积核第八次深度方向平移相应步长情况下,将处理核1在时间片9获得的中间结果P_8以及depth=8层的没有参与处理核1的卷积运算的输入数据一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核2。
同时,卷积核第九次深度方向平移相应步长,计算芯片将输入数据中depth=9 层的平面数据块由DDR加载到共享空间104的对应存储区域,处理核1将如图 3示的7个1对应权值与depth=9层的输入数据执行卷积运算,获得中间结果P_9。
在时间片11内,在卷积核第四次深度方向平移相应步长情况下,如图3示的六个4对应的权值分配至处理核4,处理核4将如图3示的六个4对应权值分别与对应的depth=6层没有参与处理核3执行卷积运算的输入数据执行卷积运算,得到的结果与处理核3的中间结果P_4进行相加操作,获得卷积结果的部分值Out_4。
同一时间片内,在卷积核第五次深度方向平移相应步长情况下,如图3示的六个4对应的权值分配至处理核4,这六个权值对应的depth=7层的输入数据并没有参与处理核3的卷积运算,与处理核3获得的中间结果P_5一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核4。
同时,在卷积核第六次深度方向平移相应步长情况下,处理核3将如图3 示的7个3对应权值分别与对应的depth=7层没有参与处理核2执行卷积运算的输入数据以及depth=8的输入数据执行卷积运算,得到的结果与处理核2的中间结果P_6进行相加操作,获得新的中间结果P_6。
同时,在卷积核第七次深度方向平移相应步长情况下,将处理核2在时间片10获得的中间结果P_7以及depth=8层的没有参与处理核2的卷积运算的输入数据一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核3。
同时,在卷积核第八次深度方向平移相应步长情况下,处理核2将如图3 所示的7个2对应权值分别与对应的depth=8层没有参与处理核1执行卷积运算的输入数据以及depth=9的输入数据执行卷积运算,得到的结果与处理核1的中间结果P_8进行相加操作,获得新的中间结果P_8。
同时,在卷积核第九次深度方向平移相应步长情况下,将处理核1在时间片10获得的中间结果P_9以及depth=9层的没有参与处理核1的卷积运算的输入数据一并存入共享空间104的对应存储区域,再由共享空间104传输至处理核2。
同时,卷积核第十次深度方向平移相应步长,计算芯片将输入数据中 depth=10层的平面数据块由DDR加载到共享空间104的对应存储区域,处理核 1将如图3示的7个1对应权值与depth=10层的输入数据执行卷积运算,获得中间结果P_10。
以此类推这样,以cluster为单位,同一cluster内每个处理核102的输出数据为下一个处理核执行conv2D指令的输入数据,使得同一cluster内每个处理核执行conv2D指令形成流水化。在同一时间拍,每个处理核102处理的不同流水的输入数据,每个处理核102同时执行conv2D指令,卷积核在输入数据的深度
表1
方向平移一次,获得对应卷积结果部分值,所有卷积结果部分值构成最终conv3D运算的结果,实现conv3D运算操作。
如上表1,k表示卷积核在输入数据的深度方向上滑动的次数,也表示当前处理核参与卷积运算的输入数据所处的层数。P_k表示卷积核在输入数据的深度方向滑动后对应流水线上处理核获得的中间结果。Core_n->SM、SM->Core_ (n+1)表示将处理核n的运算结果经SM转存至处理核n+1,以供处理核n+1 运算使用。上述表1中,每个处理核下的一个小方格实际表示处理核根据分配的卷积权值以及对应的输入数据进行卷积运算,并结合上一时间片的上一处理核获得的中间结果得到该处理核的中间结果。例如core_1下记录有1(P_1)的小方格,具体表示输入数据中depth=1的平面数据块(即输入数据中深度为1的平面数据块)作为core_1的输入数据,与core_1的卷积权值进行卷积运算,得到core_1的中间结果,记录为P_1。
需要说明的是,上表中每行对应一个时间片。表格中每行信息表示在该时间片计算芯片同时执行的操作。
上述表格可知,从时间片1~时间片7获得卷积结果部分值Out_0,从时间片2~时间片8获得卷积结果部分值Out_1,通过排流水的方式,使得时间片1~时间片8得到两个卷积结果部分值。可以看出,处理核间的流水操作,在同一时刻m个处理核及存储空间104(SM)均在运行,能充分利用一个计算簇cluster 的全部资源。通过存储空间104能进行核间数据的传输,及暂存输入数据块。相比于现有技术而言,能将输入数据量将至原来的且处理核计算的中间数据不用存储至DDR,避免出现IO瓶颈、IO访存量较大、影响计算效率等问题。
在本技术方案中,共享空间104起中转的作用,最大化发挥了存储空间的共享属性,相当于彻底打通了m个处理核102之间的连接,使得每个处理核102 无需再等待所需计算的数据,有利于提升处理核102的计算效率,整体提升计算芯片的计算性能。
基于前述方法实施例,下面阐述本发明适用的计算装置及计算设备。请参见图11是本发明实施例提供的一种计算芯片的结构示意图。如图11所示的计算芯片100中部署有至少一个计算簇cluster,该计算簇中包括m个处理核。该计算装置100包括获取单元102、权值分配单元104、输入数据确定单元106及卷积单元108。其中,
获取单元102用于获取卷积数据块;
权值分配单元104用于计算芯片对卷积核进行拆分,将拆分结果对应的卷积权值分配至m个处理核,确定所述处理核每次执行conv2D指令对应的卷积权值;
输入数据确定单元106,用于计算芯片根据所述卷积核沿整个输入数据的深度方向滑动情况以及所述卷积核的拆分结果,确定所述处理核每次执行conv2D 指令对应的输入数据;
卷积单元108用于每个处理核执行conv2D指令,获得对应的中间结果,计算芯片根据每个处理核的中间结果获得卷积结果。
在一些实施方式中,卷积权值分配单元104具体用于将所述卷积核平均分配至所述m个处理核,得到所述m个处理核的卷积权值;其中,若所述卷积数据块的尺寸为A1×B1×C1,则每个所述处理核的卷积权值的数量为 A1为所述卷积数据块的高度,B1为所述卷积数据块的宽度,C1为所述卷积数据块的深度。
在实际应用中,本发明实施例中的装置涉及的各模块或单元具体可通过软件程序或硬件实现。当由软件程序实现时,装置涉及的各模块或单元均为软件模块或软件单元,当由硬件实现时,装置涉及的各模块或单元可以通过专用集成电路(application-specificintegrated circuit,ASIC)实现,或可编程逻辑器件(programmable logic device,PLD)实现,上述PLD可以是复杂程序逻辑器件 (complex programmable logical device,CPLD),现场可编程门阵列 (field-programmable gate array,FPGA),通用阵列逻辑(generic array logic, GAL)或其任意组合,本发明不做限定。
需要说明的,图11仅仅是本发明实施例的一种可能的实现方式,实际应用中,计算装置中还可以包括更多或更少的部件,这里不作限制。关于本发明实施例中未示出或未描述的内容,可参见前述方法实施例中的相关阐述,这里不再赘述。
请参见图12,是本发明实施例提供的一种计算设备的结构示意图。如图12 所示的计算设备600包括一个或多个处理器601、通信接口602和存储器603,处理器601、通信接口602和存储器603可通过总线方式连接,也可通过无线传输等其他手段实现通信。本发明实施例以通过总线604连接为例其中,该存储器603用于存储指令,该处理器601用于执行该存储器603存储的指令。该存储器603存储程序代码,且处理器601可以调用存储器603中存储的程序代码执行如下操作:
获取卷积核;
对卷积核进行拆分,将拆分结果对应的卷积权值分配至m个处理核,确定所述处理核每次执行conv2D指令对应的卷积权值;
根据所述卷积核沿整个输入数据的深度方向滑动情况以及所述卷积核的拆分结果,确定所述处理核每次执行conv2D指令对应的输入数据;
每个处理核执行conv2D指令,获得对应的中间结果,计算芯片根据每个处理核的中间结果获得卷积结果。
在一些实施方式中,所述处理器601具体用于执行如下操作:将所述卷积核平均分配至所述m个处理核,得到所述m个处理核的卷积权值;其中,若所述卷积数据块的尺寸为A1×B1×C1,则每个所述处理核的卷积权值的数量为A1为所述卷积数据块的高度,B1为所述卷积数据块的宽度,C1为所述卷积数据块的深度。
关于本申请实施例中未示出或未描述的内容,具体可参见前述图1-图9任一个实施例中的相关阐述,这里不再赘述。
应当理解,在本申请实施例中,所称处理器601可以是中央处理单元 (CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array, FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
通信接口602可以为有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他单元或装置设备进行通信。例如,本申请实施例中通信接口602具体可用于获取静态指令块或动态指令块等。
存储器603可以包括易失性存储器(Volatile Memory),例如随机存取存储器(Random Access Memory,RAM);存储器也可以包括非易失性存储器 (Non-VolatileMemory),例如只读存储器(Read-Only Memory,ROM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);存储器还可以包括上述种类的存储器的组合。存储器可用于存储一组程序代码,以便于处理器调用存储器中存储的程序代码以实现本发明实施例中涉及的上述各功能模块的功能。
需要说明的,图12仅仅是本发明实施例的一种可能的实现方式,实际应用中,计算设备还可以包括更多或更少的部件,这里不作限制。关于本发明实施例中未示出或未描述的内容,可参见前述方法实施例中的相关阐述,这里不再赘述。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在处理器上运行时,图2所示的方法流程得以实现。
本发明实施例还提供一种计算机程序产品,当所述计算机程序产品在处理器上运行时,图2实施例中所示的方法流程得以实现。
所述计算机可读存储介质可以是前述任一实施例所述的计算设备的内部存储单元,例如计算设备的硬盘或内存。所述计算机可读存储介质也可以是所述计算设备的外部存储设备,例如所述计算设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述计算机可读存储介质还可以既包括所述客户端的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述计算设备所需的其他程序和数据。所述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的终端设备和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种数据处理方法,其特征在于,应用于部署有至少一个计算簇cluster的计算芯片中,所述计算簇包括m个处理核,所述方法包括:
计算芯片获取卷积核;
计算芯片对卷积核进行拆分,将拆分结果对应的卷积权值分配至m个处理核,确定所述处理核每次执行conv2D指令对应的卷积权值;
计算芯片根据所述卷积核沿整个输入数据的深度方向滑动情况以及所述卷积核的拆分结果,确定所述处理核每次执行conv2D指令对应的输入数据;
每个处理核执行conv2D指令,获得对应的中间结果,计算芯片根据每个处理核的中间结果获得卷积结果。
3.如权利要求1所述的方法,其特征在于,所述每个处理核执行conv2D指令,获得对应的中间结果的步骤包括:
对于所述计算簇中第一个处理核来说,当前时间片,每个处理核利用对应的输入数据和卷积权值执行conv2D指令,获得对应的中间结果;其中,同一流水线下,所述卷积核在整个输入数据的深度方向滑动情况一致。
4.如权利要求3所述的方法,其特征在于,所述每个处理核执行conv2D指令,获得对应的中间结果的步骤还包括:
除所述计算簇中第一个处理核之外的其他处理核来说,当前时间片,每个处理核利用对应的输入数据和卷积权值执行conv2D指令,并将同一流水线的上一处理核获得的卷积中间结果相加,获得对应的中间结果;其中,同一流水线下,所述卷积核在整个输入数据的深度方向滑动情况一致。
5.如权利要求3或4所述的方法,其特征在于,所述每个处理核执行conv2D指令,获得对应的中间结果的步骤还包括:
在同一时间片的下一流水线,计算芯片将当前处理核获得的卷积中间结果以及当前处理核的没有参与卷积运算的输入数据一并存入共享空间的对应存储区域,再由共享空间传输至下一处理核。
6.如权利要求5或所述的方法,其特征在于,所述每个处理核执行conv2D指令,获得对应的中间结果的步骤还包括:
在同一时间片的上一流水线,计算芯片将上一处理核获得的卷积中间结果以及上一处理核的没有参与卷积运算的输入数据一并存入共享空间的对应存储区域,再由共享空间传输至当前处理核。
7.一种计算装置,其特征在于,所述计算装置部署有至少一个计算簇cluster,所述计算簇包括m个处理核,所述装置包括获取单元、权值分配单元、输入数据确定单元及卷积单元,其中,
所述获取单元,用于获取卷积数据块;
所述权值分配单元,用于计算芯片对卷积核进行拆分,将拆分结果对应的卷积权值分配至m个处理核,确定所述处理核每次执行conv2D指令对应的卷积权值;
所述输入数据确定单元,用于计算芯片根据所述卷积核沿整个输入数据的深度方向滑动情况以及所述卷积核的拆分结果,确定所述处理核每次执行conv2D指令对应的输入数据;
所述卷积单元,用于每个处理核执行conv2D指令,获得对应的中间结果,计算芯片根据每个处理核的中间结果获得卷积结果。
8.一种计算芯片,其特征在于,所述计算芯片部署有包括m个处理核的计算簇cluster,所述计算芯片用于执行如上权利要求1-6中任一项所述的数据处理方法。
9.一种计算设备,其特征在于,包括处理器、存储器以及总线,所述处理器和所述存储器通过所述总线连接,所述存储器用于存储指令,所述处理器用于调用所述存储器中存储的指令,用于执行如上权利要求1-6中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010516159.4A CN111767246B (zh) | 2020-06-09 | 2020-06-09 | 数据处理方法、相关设备及计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010516159.4A CN111767246B (zh) | 2020-06-09 | 2020-06-09 | 数据处理方法、相关设备及计算机可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111767246A true CN111767246A (zh) | 2020-10-13 |
CN111767246B CN111767246B (zh) | 2024-03-05 |
Family
ID=72720734
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010516159.4A Active CN111767246B (zh) | 2020-06-09 | 2020-06-09 | 数据处理方法、相关设备及计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111767246B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113837922A (zh) * | 2021-09-26 | 2021-12-24 | 安徽寒武纪信息科技有限公司 | 计算装置、数据处理方法及相关产品 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160179434A1 (en) * | 2014-12-19 | 2016-06-23 | Intel Corporation | Storage device and method for performing convolution operations |
CN105930902A (zh) * | 2016-04-18 | 2016-09-07 | 中国科学院计算技术研究所 | 一种神经网络的处理方法、系统 |
US20170357894A1 (en) * | 2016-06-10 | 2017-12-14 | Apple Inc. | Data packing for convolution of artificial neural networks |
CN108304923A (zh) * | 2017-12-06 | 2018-07-20 | 腾讯科技(深圳)有限公司 | 卷积运算处理方法及相关产品 |
US20180307973A1 (en) * | 2017-04-19 | 2018-10-25 | Beijing Deephi Intelligence Technology Co., Ltd. | Device for implementing artificial neural network with flexible buffer pool structure |
US20180373981A1 (en) * | 2017-06-21 | 2018-12-27 | TuSimple | Method and device for optimizing neural network |
CN109886400A (zh) * | 2019-02-19 | 2019-06-14 | 合肥工业大学 | 基于卷积核拆分的卷积神经网络硬件加速器系统及其计算方法 |
US20190187963A1 (en) * | 2017-12-19 | 2019-06-20 | Canon Kabushiki Kaisha | Memory access optimisation using per-layer computational mapping and memory allocation for cnn application |
CN109934339A (zh) * | 2019-03-06 | 2019-06-25 | 东南大学 | 一种基于一维脉动阵列的通用卷积神经网络加速器 |
CN110147249A (zh) * | 2018-02-12 | 2019-08-20 | 上海寒武纪信息科技有限公司 | 一种网络模型的计算方法及装置 |
CN110674936A (zh) * | 2019-09-24 | 2020-01-10 | 上海寒武纪信息科技有限公司 | 一种神经网络处理方法、装置、计算机设备及存储介质 |
WO2020029181A1 (zh) * | 2018-08-09 | 2020-02-13 | 深圳鲲云信息科技有限公司 | 三维卷积神经网络计算装置及相关产品 |
CN113850377A (zh) * | 2021-09-26 | 2021-12-28 | 安徽寒武纪信息科技有限公司 | 数据处理装置、数据处理方法及相关产品 |
-
2020
- 2020-06-09 CN CN202010516159.4A patent/CN111767246B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160179434A1 (en) * | 2014-12-19 | 2016-06-23 | Intel Corporation | Storage device and method for performing convolution operations |
CN105930902A (zh) * | 2016-04-18 | 2016-09-07 | 中国科学院计算技术研究所 | 一种神经网络的处理方法、系统 |
US20170357894A1 (en) * | 2016-06-10 | 2017-12-14 | Apple Inc. | Data packing for convolution of artificial neural networks |
US20180307973A1 (en) * | 2017-04-19 | 2018-10-25 | Beijing Deephi Intelligence Technology Co., Ltd. | Device for implementing artificial neural network with flexible buffer pool structure |
US20180373981A1 (en) * | 2017-06-21 | 2018-12-27 | TuSimple | Method and device for optimizing neural network |
CN108304923A (zh) * | 2017-12-06 | 2018-07-20 | 腾讯科技(深圳)有限公司 | 卷积运算处理方法及相关产品 |
US20190187963A1 (en) * | 2017-12-19 | 2019-06-20 | Canon Kabushiki Kaisha | Memory access optimisation using per-layer computational mapping and memory allocation for cnn application |
CN110147249A (zh) * | 2018-02-12 | 2019-08-20 | 上海寒武纪信息科技有限公司 | 一种网络模型的计算方法及装置 |
WO2020029181A1 (zh) * | 2018-08-09 | 2020-02-13 | 深圳鲲云信息科技有限公司 | 三维卷积神经网络计算装置及相关产品 |
CN109886400A (zh) * | 2019-02-19 | 2019-06-14 | 合肥工业大学 | 基于卷积核拆分的卷积神经网络硬件加速器系统及其计算方法 |
CN109934339A (zh) * | 2019-03-06 | 2019-06-25 | 东南大学 | 一种基于一维脉动阵列的通用卷积神经网络加速器 |
CN110674936A (zh) * | 2019-09-24 | 2020-01-10 | 上海寒武纪信息科技有限公司 | 一种神经网络处理方法、装置、计算机设备及存储介质 |
CN113850377A (zh) * | 2021-09-26 | 2021-12-28 | 安徽寒武纪信息科技有限公司 | 数据处理装置、数据处理方法及相关产品 |
Non-Patent Citations (2)
Title |
---|
杨一晨;梁峰;张国和;何平;吴斌;高震霆;: "一种基于可编程逻辑器件的卷积神经网络协处理器设计", 西安交通大学学报, no. 07, pages 153 - 159 * |
赵博雅: "基于卷积神经网络的硬件加速器设计及实现研究", 中国优秀博士论文电子期刊 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113837922A (zh) * | 2021-09-26 | 2021-12-24 | 安徽寒武纪信息科技有限公司 | 计算装置、数据处理方法及相关产品 |
WO2023045446A1 (zh) * | 2021-09-26 | 2023-03-30 | 寒武纪(西安)集成电路有限公司 | 计算装置、数据处理方法及相关产品 |
Also Published As
Publication number | Publication date |
---|---|
CN111767246B (zh) | 2024-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112840356B (zh) | 运算加速器、处理方法及相关设备 | |
CN106056529B (zh) | 一种对用于图片识别的卷积神经网络训练的方法与设备 | |
EP3093757B1 (en) | Multi-dimensional sliding window operation for a vector processor | |
CN111158874A (zh) | 数据处理方法和装置、电子设备及存储介质 | |
CN111767243A (zh) | 数据处理方法、相关设备及计算机可读介质 | |
CN112686379A (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
CN111767246B (zh) | 数据处理方法、相关设备及计算机可读介质 | |
CN109416743B (zh) | 一种用于识别人为动作的三维卷积装置 | |
CN106227506A (zh) | 一种内存压缩系统中的多通道并行压缩解压系统及方法 | |
CN113596581B (zh) | 一种图像格式转换方法、装置、计算机设备和存储介质 | |
US11544892B2 (en) | Decoder unit for texture decompression | |
CN113837922A (zh) | 计算装置、数据处理方法及相关产品 | |
CN117271136A (zh) | 数据处理方法、装置、设备和存储介质 | |
US11868875B1 (en) | Data selection circuit | |
CN109375952B (zh) | 用于存储数据的方法和装置 | |
CN111882482A (zh) | 图形分块数据读写方法、装置、设备及存储介质 | |
JP2016099786A (ja) | 画像処理装置、画像処理方法及びプログラム | |
CN117851742B (zh) | 数据存储方法、数据处理方法、数据存储器、数据处理器 | |
US20230376562A1 (en) | Integrated circuit apparatus for matrix multiplication operation, computing device, system, and method | |
US20230140239A1 (en) | Method and apparatus with data loading | |
CN117437114A (zh) | 图像数据处理方法、装置、电子设备及介质 | |
CN113436347A (zh) | 一种三维图像压缩方法 | |
CN112445524A (zh) | 数据处理方法、相关设备及计算机可读介质 | |
CN117873707A (zh) | 算力资源调度方法、装置、计算机设备和存储介质 | |
US20180046466A1 (en) | Method and system for the loading of an operating system on a computing device |
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 |