CN113191491B - 多维度并行的人工智能处理器架构 - Google Patents
多维度并行的人工智能处理器架构 Download PDFInfo
- Publication number
- CN113191491B CN113191491B CN202110281878.7A CN202110281878A CN113191491B CN 113191491 B CN113191491 B CN 113191491B CN 202110281878 A CN202110281878 A CN 202110281878A CN 113191491 B CN113191491 B CN 113191491B
- Authority
- CN
- China
- Prior art keywords
- core
- slice
- tensor
- block
- 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
Links
Images
Classifications
-
- 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
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Image Processing (AREA)
Abstract
本发明提供了一种多维度并行的人工智能处理器架构,包括用于多维度数据并行处理的计算核心阵列,所述的计算核心阵列连接有控制与线程调度核心及Tensor缓存控制器,所述的计算核心阵列包括多个至少在两个维度上阵列分布的计算模块,控制与线程调度核心用于控制计算核心阵列上线程的调度与切换,Tensor缓存控制器连接于主存,用于计算核心阵列上计算模块与主存之间的数据交换。采用多维度并行开发的方式解决卷积网络层大计算量的问题;解决计算问题的同时解决池化、全连接层等计算/访存比较低,需优化访存带宽的问题。
Description
技术领域
本发明属于芯片设计技术领域,尤其是涉及一种多维度并行的人工智能处理器架构。
背景技术
矩阵乘、图像插值以及卷积网络等算法中,算法的运算过程具有较大的计算量,尤其是卷积网络算法,例如用于图片分类的AlexNet、GoogleNet、ResNet和VGG网络,用于目标识别的R-CNN、YOLO、YOLO2和SSD等网络,生成网络GAN和VAX等网络中,卷积层中的卷积运算是一种很耗费能效数据,计算量很大的运算,需要采用一定的手段提高运算处理效率以提高整个算法的速度。并且,数据在有限带宽的传输中也会造成计算过程的瓶颈,此外,池化层、全连接层等计算/访存比较低,需优化访存带宽的使用。
现有技术中,人们提出了一种多核异构处理器,在异构方式下一般是某些核心用于管理调度,另外一些核心用于特定的性能加速,处理器之间松耦合,通过共享总线、交叉开关互联和片上网络互联,采用off-load的工作模式,并未考虑访存带宽问题。无法从本质上解决卷积运算过程中由于有限带宽的传输对计算过程造成瓶颈的问题,没有解决池化、全连接层等计算/访存比较低,需优化访存带宽的问题。
发明内容
本发明的目的是针对上述问题,提供一种多维度并行的人工智能处理器架构。
一种多维度并行的人工智能处理器架构,包括用于多维度数据并行处理的计算核心阵列,所述的计算核心阵列连接有控制与线程调度核心及Tensor缓存控制器,所述的计算核心阵列包括多个至少在两个维度上阵列分布的计算模块,控制与线程调度核心用于控制计算核心阵列上线程的调度与切换,Tensor缓存控制器连接于主存,用于计算核心阵列上计算模块与主存之间的数据交换。
在上述的多维度并行的人工智能处理器架构中,每个计算模块包括一个计算核心及附接于计算核心的Tensor缓存,且每个计算核心具有用于访存本计算核心对应的Tensor缓存的访存部件以使每个Tensor缓存与计算核心之间具有独立的访存带宽;
阵列分布的计算核心之间通过核间通信模块进行计算核心之间的数据交换。
在上述的多维度并行的人工智能处理器架构中,所述的核间通信模块包括垂直通信网络和水平通信网络,所述的水平通信网络用于数据的水平循环移动和/或水平广播,所述的垂直通信网络用于数据的垂直循环移动和/或垂直广播。
在上述的多维度并行的人工智能处理器架构中,每个Tensor缓存均包括构成二维阵列的多个Tensor存储体,每个Tensor存储体保存一个对应的Tensor,且每个Tensor存储体具有用于表示当前Tensor存储体所保存的Tensor的独立标签。
在上述的多维度并行的人工智能处理器架构中,每个Tensor存储体在(x,y,z)三个维度上进行数据索引,其中x维度和y维度分别为Tensor缓存中Tensor存储体所构成二维阵列的x维度和y维度,z维度上的地址保存在Tensor存储体的索引中。
在上述的多维度并行的人工智能处理器架构中,每个Tensor缓存为一个Tensor缓存片,每个Tensor缓存片由一个Bolck块在二维空间上被切分而得,每个Block块由Tensor高速缓存在第三维空间上被切分而得,且由Block块的三个维度构成所述Tensor存储体的z维度。
在上述的多维度并行的人工智能处理器架构中,每个计算核心均包括分支部件、标量部件、向量部件、访存部件以及与标量部件对应的标量计算器和与向量部件对应的向量寄存器,所述的分支部件用于控制程序流,所述的标量部件用于执行标量计算,所述的向量部件用于对数组进行并行计算,所述的访存部件用于访存Tensor缓存及用于填充标量寄存器和向量寄存器,所述的标量寄存器用于向标量部件供数,所述的向量寄存器用于向向量部件供数。
在上述的多维度并行的人工智能处理器架构中,Tensor缓存与主存中的关联矩阵相关联,并利用关联关系进行Tensor缓存与主存之间的数据交换。
在上述的多维度并行的人工智能处理器架构中,所述的关联矩阵被定义为:
matrix[i][j][k];0≤i<N1,0≤j<N2,0≤K<N3
N1、N2和N3分别为关联矩阵在三个维度上的最大值;
Tensor缓存的Tensor结构变量tensor被定义为
tensor{BLOCK.x,BLOCK.y,BLOCK.z}{SLICE.x,SLICE.y}{CORE.x,CORE.y}
其中,{BLOCK.x,BLOCK.y,BLOCK.z}对应Tensor存储体中物理维度的z维度;
{SLICE.x,SLICE.y}对应于计算核心阵列(2)中计算核心的二维阵列;
{CORE.x,CORE.y}对应于Tensor存储体中物理维度的x维度和y维度;
0≤SLICE.x<SLICE.X;0≤SLICE.y<SLICE.Y,
0≤CORE.x<CORE.X,0≤CORE.y<CORE.Y,SLICE.X和SLICE.Y分别为计算核心阵列的行数和列数,CORE.X和CORE.Y分别为Tensor缓存中每个Tensor存储体x和y维度上的最大值。
在上述的多维度并行的人工智能处理器架构中,所述的关联关系包括以下方式的任意一种或多种的组合:
1)利用Tensor的BLOCK前两维、SLICE维和CORE维来对应关联矩阵的低二维j和k,Block的最后一维对应关联矩阵的高维i:
i=BLOCK.z
j=BLOCK.x×SLICE.X×CORE.X+SLICE.x×CORE.X+CORE.x+V_OFFSET
k=BLOCK.y×SLICE.Y×CORE.Y+SLICE.y×CORE.Y+CORE.y+H_OFFSET
2)利用Tensor的BLOCK维和SLICE维来对应关联矩阵的低二维j和k,CORE维对应关联矩阵的高维i:
i=BLOCK.z×CORE.X×CORE.Y+CORE.y×CORE.Y+CORE.x
j=BLOCK.x×SLICE.X+SLICE.x+V_OFFSET
k=BLOCK.y×SLICE.Y+SLICE.y+H_OFFSET
3)将CORE维拆分分配给不同的维度:
i=BLOCK.z×CORE.Y+CORE.y
j=BLOCK.x×SLICE.X×CORE.X+SLICE.x×CORE.X+CORE.x+V_OFFSET
k=BLOCK.y×SLICE.Y+SLICE.y+H_OFFSET
或
i=BLOCK.z×CORE.X+CORE.x
j=BLOCK.x×SLICE.X+SLICE.x+V_OFFSET
k=BLOCK.y×SLICE.Y×CORE.Y+SLICE.y×CORE.Y+CORE.y+H_OFFSET
其中,{V_OFFSET,H_OFFSET}为关联矩阵与tensor之间的顶点偏移关系。
本发明的优点在于:
1、采用多维度并行开发的方式解决卷积网络层大计算量的问题;
2、解决计算问题的同时解决池化、全连接层等计算/访存比较低,需优化访存带宽的问题;
3、在不同配置下能够高效卷积网络层、池化层、全连接层、非线性层等深度学习网络层的计算,可以高效低功耗的实现不同规模、不同拓扑、不同结构的深度学习网络的前向推导和网络参数的学习训练;
4、使用不同的映射关系能够适用于矩阵乘、图像插值、卷积网络等不同算法。
附图说明
图1为本发明多维度并行的人工智能处理器架构的架构示意图;
图2为本发明多维度并行的人工智能处理器架构中计算核心阵列的结构示意图;
图3是本发明多维度并行的人工智能处理器架构中计算核心的数据通路示意图;
图4是本发明多维度并行的人工智能处理器架构中Tensor缓存的结构示意图。
附图标记:控制与线程调度核心1;计算核心阵列2;片上高速缓存4;主存5;Tensor缓存控制器7;访存总线8。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步详细的说明。
如图1所示,本实施例公开了一种多维度并行的人工智能处理器架构,包括用于在优化带宽的同时进行多维度数据并行处理的计算核心阵列2,计算核心阵列2连接有控制与线程调度核心1及Tensor缓存控制器7,控制与线程调度核心1负责计算核心阵列2上线程的调度与切换,计算核心阵列2包括多个至少在两个维度上阵列分布的计算模块,如二维阵列,三维阵列、四维阵列等,本实施例以二维阵列为例,用于负责主要的计算任务,Tensor缓存控制器7连接于主存5,Tensor缓存控制器7负责计算核心阵列2上计算模块与主存5之间的数据交换。此外,还可以设置片上高速缓存4和DMA,Tensor缓存控制器7同时负责计算核心阵列2上计算模块与片上高速缓存4之间的数据交换。
具体地,如图2所示,每个计算模块包括一个计算核心及附接于计算核心的一个、两个或多个Tensor缓存,优选一个计算核心附接一个Tensor缓存。因此,计算核心和Tensor缓存也在二维平面上阵列分布。且每个计算核心具有用于访存本计算核心对应的Tensor缓存的访存部件以使每个Tensor缓存与计算核心之间具有独立的访存带宽,从而实现优化带宽的目的,解决有限带宽的传输会造成计算过程中瓶颈的问题。
进一步地,阵列分布的计算核心之间通过核间通信模块实现计算核心之间的数据交换。
具体地,核间通信模块包括垂直通信网络和水平通信网络,水平通信网络用于数据的水平循环移动和/或水平广播,垂直通信网络用于数据的垂直循环移动和/或垂直广播。
进一步地,计算核心的数据通路如图3所示,每个计算核心均包括分支部件、标量部件、向量部件、访存部件以及与标量部件对应的标量计算器和与向量部件对应的向量寄存器,分支部件连接于控制与线程调度核心1,用于控制程序流,以实现跳转、循环等操作;标量部件连接于控制与线程调度核心,用于执行标量计算;向量部件连接于控制与线程调度核心,用于对Tensor缓存中CORE维上数组的并行计算,CORE维的概念在后面阐述;访存部件连接于控制与线程调度核心,用于访存Tensor缓存及填充标量寄存器和向量寄存器;标量寄存器用于向标量部件供数;向量寄存器用于向向量部件供数。
进一步地,如图4所示,每个Tensor缓存均包括2个、4个或更多个Tensor存储体,每个Tensor存储体保存一个对应的Tensor,且每个Tensor存储体具有用于表示当前Tensor存储体所保存的Tensor的独立标签。独立标签包括表示当前Tensor存储体所保存的Tensor标号和对应数据的有效标志位。
每个Tensor存储体在(x,y,z)三个维度上进行数据索引,其中x维度和y维度上连续编址,分别为每个Tensor缓存中Tensor存储体构成的二维阵列上的x维度和y维度。z维度上以缓存的方式保存数据,并不一定保存连续编址,z维度上的地址保存在Tensor存储体的索引中,这也是Tensor缓存名字的由来,本实施例中,将z维度编码成三个维度,具体后面阐述。
进一步地,每个Tensor缓存为一个Tensor缓存片,每个Tensor缓存片由一个Bolck块在二维空间上被切分而得,每个Block块由Tensor高速缓存(高速缓存存储器)在第三维空间上被切分而得,这样,使每个Tensor存储体均为三维形式的存储体,能够有效避免访存冲突,且由Block块的三个维度构成前述Tensor存储体的z维度,而Tensor缓存片在一个Bolck块上的阵列对应于计算核心的二维阵列。
且在计算核心阵列中,Tensor存储体统一编址,这样Tensor缓存中Tensor存储体的地址编址为如下方式:
TensorTag:{BLOCK.x,BLOCK.y,BLOCK.z}:{SLICE.x,SLICE.y}:{CORE.x,CORE.y}
其中,TensorTag用来唯一标志一个Tensor;
{BLOCK.x,BLOCK.y,BLOCK.z}对应Tensor存储体中物理维度的z维度;
{SLICE.x,SLICE.y}对应于计算核心阵列2中计算核心的二维阵列;
{CORE.x,CORE.y}对应于Tensor存储体中物理维度的x维度和y维度。这样,整个Tensor高速缓存中数据的地址共分为3个分支7个维度。
进一步地,Tensor缓存与主存5中的关联矩阵相关联,关联关系保存在主存5中,每个应用关联矩阵可以为一个,也可以有多个,内存中可以存储只针对一种算法的关联关系,也可以同时存储针对不同情况关联矩阵与Tenor的关联关系,在面对不同的计算需要,使用相应的关联矩阵以及相应的关联关系即可。也有些不同的算法,使用的是相同的关联矩阵,却具有不同的关联关系。
并利用关联关系进行Tensor缓存与主存5之间的数据交换,以实现Tensor高速缓存的访问和数据更新。如通过Tensor缓存控制器7将主存5中关联矩阵对应的数据加载到Tensor缓存中,将Tensor缓存中的数据写入到主存5中的关联矩阵处,执行关联矩阵与Tensor之间的相互映射关系。在投入使用时,Tensor缓存控制器和计算核心的访存部件首先将该关联关系加载到Tensor寄存器中,并通过计算核心的访存部件将Tensor缓存中的数据加载到Tensor寄存器中或将Tensor寄存器中的数据保存到Tensor缓存中。
计算核心中访存部件提供专门的Tensor访问指令来进行Tensor访问。两者之间的关联关系在下面阐述。定义一个关联矩阵和一个Tensor结构变量tensor:
matrix[i][j][k];0≤i<N1,0≤j<N2,0≤K<N3
N1、N2和N3分别为关联矩阵在三个维度上的最大值;
tensor{BLOCK.x,BLOCK.y,BLOCK.z}{SLICE.x,SLICE.y}{CORE.x,CORE.y}
其中,{BLOCK.x,BLOCK.y,BLOCK.z}对应Tensor存储体中物理维度的z维度;
{SLICE.x,SLICE.y}对应于计算核心阵列(2)中计算核心的二维阵列;
{CORE.x,CORE.y}对应于Tensor存储体中物理维度的x维度和y维度;
0≤SLICE.x<SLICE.X;0≤SLICE.y<SLICE.Y,
0≤CORE.x<CORE.X,0≤CORE.y<CORE.Y,SLICE.X和SLICE.Y分别为计算核心阵列2的行数和列数,CORE.X和CORE.Y分别为Tensor缓存中每个Tensor存储体x和y维度上的最大值。
以及两者之间的顶点偏移关系{V_OFFSET,H_OFFSET},为矩阵左上顶点相对于Tensor左上顶点之间的距离,该值可正可负,这样定义的目的主要是为了矩阵边界点处理的方便。
具体地,通过如下的几种形式将关联矩阵中数据的三维坐标与Tensor的6维坐标相关联:
1)利用Tensor的BLOCK前两维、SLICE维和CORE维来对应关联矩阵的低二维j和k,Block的最后一维对应关联矩阵的高维i,这样的映射适用于于矩阵乘和图像插值等算法:
i=BLOCK.z
j=BLOCK.x×SLICE.X×CORE.X+SLICE.x×CORE.X+CORE.x+V_OFFSET
k=BLOCK.y×SLICE.Y×CORE.Y+SLICE.y×CORE.Y+CORE.y+H_OFFSET
2)利用Tensor的BLOCK维和SLICE维来对应关联矩阵的低二维j和k,CORE维对应关联矩阵的高维i,这样的映射适用于卷积网络等算法:
i=BLOCK.z×CORE.X×CORE.Y+CORE.y×CORE.Y+CORE.x
j=BLOCK.x×SLICE.X+SLICE.x+V_OFFSET
k=BLOCK.y×SLICE.Y+SLICE.y+H_OFFSET
3)将CORE维拆分分配给不同的维度,这样的映射适用于低两维上长宽不相同的矩阵算法:
i=BLOCK.z×CORE.Y+CORE.y
j=BLOCK.x×SLICE.X×CORE.X+SLICE.x×CORE.X+CORE.x+V_OFFSET
k=BLOCK.y×SLICE.Y+SLICE.y+H_OFFSET
或
i=BLOCK.z×CORE.X+CORE.x
j=BLOCK.x×SLICE.X+SLICE.x+V_OFFSET
k=BLOCK.y×SLICE.Y×CORE.Y+SLICE.y×CORE.Y+CORE.y+H_OFFSET计算核心阵列大小、每个计算核心的向量长度和Tensor缓存大小的选择受限于工艺条件下的面积约束和功耗约束等条件。随着工艺的改进,可进一步扩展计算核心阵列的大小和每个核心的向量长度。
上述人工智能处理器架构中,每个计算核心中的向量部件用于处理Tensor中CORE维上的并行性,不同计算核心用于处理SlICE维上的并行性。在实际使用时,随着工艺的改进或者在面积开销和功耗允许的情况下,也可以在更高维空间上对计算核心阵列2进行扩展,即将计算核心的维度增加一个或两个维度,用于处理BLOCk前两维的并行性,计算核心之间的互联网络也增加一维或两维。这样在进行算法并行时,可在更多的维度上进行并行。
下面利用卷积网络算法对本方案的并行计算进行可行性分析:
1.1卷积层
在所有算法中,卷积网络层的计算在所有计算中占据绝对的比重。因此,从优化的角度应该首先考虑卷积网络层计算的优化。
卷积层相关的计算主要包括如下参数:
·输入图像的大小:Height×Width
·输入通道数:InputChannel
·卷积核大小:ConvHeight×ConvWidth
·输出通道数:OutputChannel
原始的输入图像数据可以表示为:
RawInputImage[InputChannel][Height][Width],
输出图像数据表示为:
RawOutputImage[OutputChannel][Height][Width]
(假设输出图像的尺寸与输入图像相同),卷积核数据表示为:RawConvolveKernel[OutputChannel][InputChannel][ConvHeight][ConvWidth](具有相同大小的卷积核归为一起)。
输入图像、输出图像和卷积核对应的偏导数分别表示为:
ThetaRawInputImage[InputChannel][Height][Width]
ThetaRawOutputImage[OutputChannel][Height][Width]
ThetaRawConvolveKernel[OutputChannel][InputChannel][ConvHeight][ConvWidth]
卷积层的前向计算公式为:
卷积层的反向训练计算公式为:
卷积层参数的反向训练公式为:
从式(2-1)、(2-2)和(2-3)可以看出,卷积计算在如下三个维度存在并行性:
(1)同一输入图像上同一输入通道上不同的数据点的卷积可以并行计算,并行度为Height×Width;
(2)不同输入通道之间的卷积可以并行计算,并行度为I n p u t C h a;
(3)不同输出通道之间的卷积可以并行计算,并行度为O u t p u t C h;
(4)总的并行度为OutputChannel×InputChannel×Height×Width
根据卷积核的大小,可以对边界进行补零(zeroPadding)以使得输出图像和输入图像的大小相同。
1.2非线性层
非线性层相关参数:
·训练的批次大小:BatchSize
·输入/输出通道数:NoLinearChannel
·输入/输出尺寸:NoLinearLength=NoLinearHeight×NoLinearWidth
非线性层的输入可以表示为
InputImageNoLinear[BatchSize][NoLinearHeight][NoLinearWidth]、输出可以表示为OutputImageNoLinear[BatchSize][NoLinearHeight][NoLinearWidth]。
M和N矩阵用于保存池化的坐标。其对应的偏导数表示为
ThetaInputImageNoLinear[BatchSize][NoLinearHeight][NoLinearWidth]和ThetaOutputImageNoLinear[BatchSize][NoLinearHeight][NoLinearWidth]。
非线性层的前向计算的计算公式如下:
非线性层的反向训练计算公式为:
从式(2-4)和式(2-5)可以看出,非线性层的计算在如下两个维度存在并行性:
(1)所有同帧输出数据可以并行计算,并行度为NoLinearLength;
(2)同一训练子集中的所有帧可以并行计算,并行度为BatchSize。
1.3池化层
池化层相关参数:
·训练的批次大小:BatchSize
·输入/输出通道数:PoolingChannel
·输入尺寸:
PoolingImageLength=PoolingImageHeight×PoolingImageWidth
·池化窗口的尺寸:PoolingSize=PoolingHeight×PoolingWidth
池化层的输入可以表示为
InputImagePooling[BatchSize][PoolingImageHeight][PoolingImageWidth]、输出可以表示为
OutputImagePooling[BatchSize][PoolingImageHeight/PoolingHeight][PoolingImageWidth/PoolingWidth]、M[BatchSize][PoolingImageHeight/PoolingHeight][PoolingImageWidth/PoolingWidth]和N[BatchSize][PoolingImageHeight/PoolingHeight][PoolingImageWidth/PoolingWidth]。
M和N矩阵用于保存池化的坐标。其对应的偏导数表示为
ThetaInputImagePooling[BatchSize][PoolingImageHeight][PoolingImageWidth]和ThetaOutputImagePooling[BatchSize][PoolingImageHeight/PoolingHeight][PoolingImageWidth/PoolingWidth]。
池化层的前向计算的计算公式(含下采样)如下:
池化层的反向训练计算公式为(含上采样):
从式(2-6)和式(2-7)可以看出,非线性层的计算在如下两个维度存在并行性:
(1)所有同帧输出数据可以并行计算,并行度为
(PoolingImageHeight/PoolingHeigth)×(PoolingImageWidth/PoolingWidth)
(2)同一训练子集中的所有帧可以并行计算,并行度为BatchSize。
1.4全连接层
全连接层相关参数:
·训练的批次大小:BatchSize
·输入尺寸:LinearInputLength
·输出尺寸:LinearOutputLength
全连接层的输入可以表示为:InputLinear[BatchSize][LinearInputLength],输出可以表示为:OutputLinear[BatchSize][LinearOutputLength],权重矩阵表示为:WeightMatrix[LinearInputLength][LinearOutputLength]。
其相对于代价函数的偏导数分别表示为:ThetaInputLinear[InputLength]、ThetaOutputLinear[BatchSize][LinearOutputLength]、ThetaWeightMatrix[LinearInputLength][LinearOutputLength]。
前向计算过程的计算公式为:
全连接层的反向训练计算公式为:
全连接层参数的反向训练计算公式为:
从式(2-8)、(2-9)和(2-10)可以看出
(1)同帧输出数据的所有列可以并行计算,并行度为InputLength;
同一训练子集中的所有帧可以并行计算,并行度为BatchSize。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
尽管本文较多地使用了控制与线程调度核心1;计算核心阵列2;Tensor缓存控制器7;片上高速缓存4;主存5;内存6;Tensor缓存控制器7;访存总线8等术语,但并不排除使用其它术语的可能性。使用这些术语仅仅是为了更方便地描述和解释本发明的本质;把它们解释成任何一种附加的限制都是与本发明精神相违背的。
Claims (7)
1.一种多维度并行的人工智能处理器架构,其特征在于,包括用于多维度数据并行处理的计算核心阵列(2),所述的计算核心阵列(2)连接有控制与线程调度核心(1)及Tensor缓存控制器(7),所述的计算核心阵列(2)包括多个至少在两个维度上阵列分布的计算模块,控制与线程调度核心(1)用于控制计算核心阵列(2)上线程的调度与切换,Tensor缓存控制器(7)连接于主存(5),用于计算核心阵列(2)上计算模块与主存(5)之间的数据交换;
每个计算模块包括一个计算核心及附接于计算核心的Tensor缓存,Tensor缓存与主存(5)中的关联矩阵相关联,并利用关联关系进行Tensor缓存与主存(5)之间的数据交换,且所述的关联矩阵被定义为:
matrix[i][j][k];0≤i<N1,0≤j<N2,0≤K<N3
N1、N2和N3分别为关联矩阵在三个维度上的最大值;
Tensor缓存的Tensor结构变量tensor被定义为
tensor{BLOCK.x,BLOCK.y,BLOCK.z}{SLICE.x,SLICE.y}{CORE.x,CORE.y}
其中,{BLOCK.x,BLOCK.y,BLOCK.z}对应Tensor存储体中物理维度的z维度;
{SLICE.x,SLICE.y}对应于计算核心阵列(2)中计算核心的二维阵列;
{CORE.x,CORE.y}对应于Tensor存储体中物理维度的x维度和y维度;
0≤SLICE.x<SLICE.X;0≤SLICE.y<SLICE.Y,
0≤CORE.x<CORE.X,0≤CORE.y<CORE.Y,SLICE.X和SLICE.Y分别为计算核心阵列(2)的行数和列数,CORE.X和CORE.Y分别为Tensor缓存中每个Tensor存储体x和y维度上的最大值;
所述的关联关系包括以下方式的任意一种或多种的组合:
1)利用Tensor的BLOCK前两维、SLICE维和CORE维来对应关联矩阵的低二维j和k,Block的最后一维对应关联矩阵的高维i:
i=BLOCK.z
j=BLOCK.x×SLICE.X×CORE.X+SLICE.x×CORE.X+CORE.x+V_OFFSET
k=BLOCK.y×SLICE.Y×CORE.Y+SLICE.y×CORE.Y+CORE.y+H_OFFSET
2)利用Tensor的BLOCK维和SLICE维来对应关联矩阵的低二维j和k,CORE维对应关联矩阵的高维i:
i=BLOCK.z×CORE.X×CORE.Y+CORE.y×CORE.Y+CORE.x
j=BLOCK.x×SLICE.X+SLICE.x+V_OFFSET
k=BLOCK.y×SLICE.Y+SLICE.y+H_OFFSET
3)将CORE维拆分分配给不同的维度:
i=BLOCK.z×CORE.Y+CORE.y
j=BLOCK.x×SLICE.X×CORE.X+SLICE.x×CORE.X+CORE.x+V_OFFSET
k=BLOCK.y×SLICE.Y+SLICE.y+H_OFFSET
或
i=BLOCK.z×CORE.X+CORE.x
j=BLOCK.x×SLICE.X+SLICE.x+V_OFFSET
k=BLOCK.y×SLICE.Y×CORE.Y+SLICE.y×CORE.Y+CORE.y+H_OFFSET
其中,{V_OFFSET,H_OFFSET}为关联矩阵与tensor之间的顶点偏移关系。
2.根据权利要求1所述的多维度并行的人工智能处理器架构,其特征在于,每个计算核心具有用于访存本计算核心对应的Tensor缓存的访存部件以使每个Tensor缓存与计算核心之间具有独立的访存带宽;
阵列分布的计算核心之间通过核间通信模块进行计算核心之间的数据交换。
3.根据权利要求2所述的多维度并行的人工智能处理器架构,其特征在于,所述的核间通信模块包括垂直通信网络和水平通信网络,所述的水平通信网络用于数据的水平循环移动,或水平广播,或水平循环移动和水平广播,所述的垂直通信网络用于数据的垂直循环移动,或垂直广播,或垂直循环移动和垂直广播。
4.根据权利要求3所述的多维度并行的人工智能处理器架构,其特征在于,每个Tensor缓存均包括构成二维阵列的多个Tensor存储体,每个Tensor存储体保存一个对应的Tensor,且每个Tensor存储体具有用于表示当前Tensor存储体所保存的Tensor的独立标签。
5.根据权利要求4所述的多维度并行的人工智能处理器架构,其特征在于,每个Tensor存储体在(x,y,z)三个维度上进行数据索引,其中x维度和y维度分别为Tensor缓存中Tensor存储体所构成二维阵列的x维度和y维度,z维度上的地址保存在Tensor存储体的索引中。
6.根据权利要求5所述的多维度并行的人工智能处理器架构,其特征在于,每个Tensor缓存为一个Tensor缓存片,每个Tensor缓存片由一个Bolck块在二维空间上被切分而得,每个Block块由Tensor高速缓存在第三维空间上被切分而得,且由Block块的三个维度构成所述Tensor存储体的z维度。
7.根据权利要求6所述的多维度并行的人工智能处理器架构,其特征在于,每个计算核心均包括分支部件、标量部件、向量部件、访存部件以及与标量部件对应的标量计算器和与向量部件对应的向量寄存器,所述的分支部件用于控制程序流,所述的标量部件用于执行标量计算,所述的向量部件用于对数组进行并行计算,所述的访存部件用于访存Tensor缓存及用于填充标量寄存器和向量寄存器,所述的标量寄存器用于向标量部件供数,所述的向量寄存器用于向向量部件供数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110281878.7A CN113191491B (zh) | 2021-03-16 | 2021-03-16 | 多维度并行的人工智能处理器架构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110281878.7A CN113191491B (zh) | 2021-03-16 | 2021-03-16 | 多维度并行的人工智能处理器架构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113191491A CN113191491A (zh) | 2021-07-30 |
CN113191491B true CN113191491B (zh) | 2022-08-09 |
Family
ID=76973318
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110281878.7A Active CN113191491B (zh) | 2021-03-16 | 2021-03-16 | 多维度并行的人工智能处理器架构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113191491B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115756613B (zh) * | 2022-11-29 | 2023-08-29 | 中国科学院空天信息创新研究院 | 基于向量化处理的sinc插值方法、装置及SAR雷达 |
CN117667787B (zh) * | 2024-01-30 | 2024-05-03 | 北京壁仞科技开发有限公司 | 运算装置及其操作方法和机器可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112116084A (zh) * | 2020-09-15 | 2020-12-22 | 中国科学技术大学 | 可重构平台上固化全网络层的卷积神经网络硬件加速器 |
CN112381220A (zh) * | 2020-12-08 | 2021-02-19 | 厦门壹普智慧科技有限公司 | 一种神经网络张量处理器 |
CN112446471A (zh) * | 2019-08-28 | 2021-03-05 | 无锡江南计算技术研究所 | 基于异构众核处理器的卷积加速方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102446159B (zh) * | 2010-10-12 | 2013-09-18 | 无锡江南计算技术研究所 | 多核处理器的数据管理方法及装置 |
CN108647773B (zh) * | 2018-04-20 | 2021-07-23 | 复旦大学 | 一种可重构卷积神经网络的硬件互连系统 |
US10956315B2 (en) * | 2018-07-24 | 2021-03-23 | Micron Technology, Inc. | Memory devices and methods which may facilitate tensor memory access |
US11068394B2 (en) * | 2018-10-29 | 2021-07-20 | Electronics And Telecommunications Research Institute | Neural network system including data moving controller |
CN112463709A (zh) * | 2019-09-09 | 2021-03-09 | 上海登临科技有限公司 | 可配置的异构人工智能处理器 |
CN111414994B (zh) * | 2020-03-03 | 2022-07-12 | 哈尔滨工业大学 | 一种基于FPGA的Yolov3网络计算加速系统及其加速方法 |
-
2021
- 2021-03-16 CN CN202110281878.7A patent/CN113191491B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112446471A (zh) * | 2019-08-28 | 2021-03-05 | 无锡江南计算技术研究所 | 基于异构众核处理器的卷积加速方法 |
CN112116084A (zh) * | 2020-09-15 | 2020-12-22 | 中国科学技术大学 | 可重构平台上固化全网络层的卷积神经网络硬件加速器 |
CN112381220A (zh) * | 2020-12-08 | 2021-02-19 | 厦门壹普智慧科技有限公司 | 一种神经网络张量处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN113191491A (zh) | 2021-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230153621A1 (en) | Arithmetic unit for deep learning acceleration | |
US11775313B2 (en) | Hardware accelerator for convolutional neural networks and method of operation thereof | |
US11409535B2 (en) | Processing device and related products | |
CN103617150B (zh) | 一种基于gpu的大规模电力系统潮流并行计算的系统及其方法 | |
US20210201124A1 (en) | Systems and methods for neural network convolutional layer matrix multiplication using cache memory | |
KR20200143686A (ko) | 연산을 가속하기 위한 가속기 및 시스템 | |
CN111897579B (zh) | 图像数据处理方法、装置、计算机设备和存储介质 | |
CN104391820B (zh) | 基于fpga的通用浮点矩阵处理器硬件结构 | |
CN113191491B (zh) | 多维度并行的人工智能处理器架构 | |
CN106940815A (zh) | 一种可编程卷积神经网络协处理器ip核 | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
CN109993297A (zh) | 一种负载均衡的稀疏卷积神经网络加速器及其加速方法 | |
CN110516801A (zh) | 一种高吞吐率的动态可重构卷积神经网络加速器架构 | |
CN112840356A (zh) | 运算加速器、处理方法及相关设备 | |
CN111931918B (zh) | 神经网络加速器 | |
CN110222818B (zh) | 一种用于卷积神经网络数据存储的多bank行列交织读写方法 | |
CN108170640B (zh) | 神经网络运算装置及应用其进行运算的方法 | |
KR20210074992A (ko) | 내적 아키텍처 상 2차원 컨볼루션 레이어 맵핑 가속화 | |
CN106846235A (zh) | 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统 | |
CN110705702A (zh) | 一种动态可扩展的卷积神经网络加速器 | |
US11763131B1 (en) | Systems and methods for reducing power consumption of convolution operations for artificial neural networks | |
CN113010213B (zh) | 基于阻变忆阻器的精简指令集存算一体神经网络协处理器 | |
KR20220038579A (ko) | 데이터 처리 | |
Huang et al. | IECA: An in-execution configuration CNN accelerator with 30.55 GOPS/mm² area efficiency | |
EP4064134B1 (en) | Neural network processing method, device and system |
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 |