CN113159285B - 神经网络加速器 - Google Patents
神经网络加速器 Download PDFInfo
- Publication number
- CN113159285B CN113159285B CN202110401500.6A CN202110401500A CN113159285B CN 113159285 B CN113159285 B CN 113159285B CN 202110401500 A CN202110401500 A CN 202110401500A CN 113159285 B CN113159285 B CN 113159285B
- Authority
- CN
- China
- Prior art keywords
- neural network
- tensor
- pes
- sequence
- group
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 175
- 238000012545 processing Methods 0.000 claims description 174
- 238000004364 calculation method Methods 0.000 claims description 80
- 230000008859 change Effects 0.000 claims description 40
- 238000000034 method Methods 0.000 claims description 31
- 230000008569 process Effects 0.000 claims description 23
- 230000002567 autonomic effect Effects 0.000 claims description 17
- 230000009977 dual effect Effects 0.000 claims description 16
- 238000011176 pooling Methods 0.000 claims description 6
- 238000013473 artificial intelligence Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 20
- 230000007246 mechanism Effects 0.000 description 12
- 238000000638 solvent extraction Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 210000002569 neuron Anatomy 0.000 description 9
- 230000004913 activation Effects 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 5
- 238000013527 convolutional neural network Methods 0.000 description 4
- 238000005111 flow chemistry technique Methods 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 210000004556 brain Anatomy 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000012935 Averaging Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 230000007480 spreading Effects 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 241000282412 Homo Species 0.000 description 1
- 241001465754 Metazoa Species 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000019771 cognition Effects 0.000 description 1
- 238000003066 decision tree Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 230000007830 nerve conduction Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000012421 spiking Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012706 support-vector machine Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Complex Calculations (AREA)
Abstract
本申请涉及人工智能领域下的一种神经网络加速器。该神经网络加速器包括:多个PE,其中,所述多个PE分成多个组,所述多个组的每一个组对应输入张量的一部分,与该组对应的输入张量的一部分在神经网络算子下的运算按照与该组对应的状态展开方式展开成多种状态,该组所包括的PE与所述多种状态一一对应并执行所述神经网络算子在对应状态下的运算。
Description
技术领域
本申请涉及人工智能领域,具体涉及一种神经网络加速器。
背景技术
人工智能(Artificial Intelligence,AI)研究人类智能的本质并构建能以人类智能相似的方式作出反应的智能机器。人工智能应用领域的研究包括机器人、语音识别、自然语言处理、图像识别、决策推理、人机交互和专家***等。机器学习(Machine Learning,ML)研究人工智能***如何模拟或实现人类的学习行为,获取新的知识或既能,重新组织已有知识结构以及改善自身能力。机器学习通过各种算法从大量样本、数据或者经验中学习规律,从而对新的样本做出识别或者对事件做出决策和预测。机器学习算法的例子包括决策树学习、贝叶斯分类、支持向量机、聚类算法等。深度学习(Deep Learning,DL)参考了人类大脑的天然深层结构和按深度分级的认知过程,研究如何将大量数据输入复杂模型中,并“训练”模型来学习如何抓取特征。
神经网络(Neural Network,NN)可以分成人工神经网络(Artificial NeuralNetwork,ANN)和脉冲神经网络(Spiking Neural Network,SNN)。SNN模仿生物神经工作机制的脉冲神经元模型,计算过程中采用脉冲编码的信息。目前获得广泛应用的是ANN,本文中所提及的神经网络NN,除非特别说明否则应理解成人工神经网络ANN。ANN指的是受到大脑神经元结构及神经传导原理的启发而建立的算法数学模型,具有模仿动物神经网络行为特征进行信息处理的网络结构。神经网络包括大量相互联接的节点或者称神经元,这些节点或称神经元受到大脑神经元结构启发,有时也称作人工神经元或者感知器。浅层神经网络(Shallow Neural Network)只包括输入层和输出层,输入层负责接收输入信号,输出层负责输出神经网络的计算结果。输入信号经过线性组合后,被施加激活函数(ActivationFunction)进行变换得到输出层的结果。深度学习中用到的复杂模型主要是多层神经网络,有时也称作深度神经网络(Deep Neural Network,DNN)。多层神经网络除了输入层和输出层还包括隐藏层,每个隐藏层包括任意数量的神经元,这些神经元在网络结构中作为节点与前一层的节点连接,每个神经元可以看做线性组合器并给每个连接的输入值分配权重进行加权线性组合。激活函数是对输入信号进行加权线性组合之后的非线性映射,在多层神经网络中可以理解为上一层神经元的输出与下一层神经元的输入之间的函数关系。每个隐藏层可以有不同的激活函数。常见的激活函数有ReLU、Sigmoid、Tanh等。神经网络通过网状结构将每一层的信息传递给下一层。正向传播是从输入层到输出层逐层计算的过程,在正向传播过程中反复进行加权线性组合和通过激活函数进行变换,最后计算损失函数(LossFunction)用于衡量模型预测值和真实值之间的偏离程度。反向传播是从输出层向隐藏层反向传播直至输入层,在反向传播过程中根据实际输出和期望输出之间的误差进行神经网络参数的修正。DNN按照基本层的组成可以分为卷积神经网络(Convolutional NeuralNetwork,CNN)、全连接神经网络(Fully Connected Neural Network,FCN)和循环神经网络(Recurrent Neural Network,RNN)。CNN由卷积层、池化层和全连接层组成。FCN由多个全连接层组成。RNN由全连接层组成但层与层之间具有反馈路径和门控操作,也叫递归层。不同类型的神经网络基本层具有不同的计算特点,其中卷积层的计算占比很高且各卷积层的计算量很大,需要处理的输入数据往往为三维张量或者更高维张量。另外各卷积层的计算参数如卷积核大小和输入输出特征图尺寸等也变化多样。
传统的用于神经网络计算的平台分为通用处理器、专用集成电路(Application-Specific Integrated Circuit,ASIC)和可重构处理器。通用处理器基于冯诺依曼体系结构,包括适用于大规模并行运算的图形处理器(Graphics Processing Unit,GPU),但是控制流驱动和存储运算分离的计算架构制约了通用处理器用于神经网络计算的性能。ASIC针对特定类型的计算任务采用专用硬件电路实现,但是难以根据神经网络结构和目标的变化来改变计算架构。可重构处理器包括现场可编程逻辑门阵列(Field Programmable GateArray,FPGA)和可重构计算(Coarse-grained Reconfigurable Architecture,CGRA)。FPGA提供细粒度的可编程硬件逻辑计算和存储单元,根据算法需求以静态全局重构的方式定制化设计处理器计算通路结构,但是可编程粒度太细且细粒度数据项之间的互联配置关系复杂,从而导致能耗大重构时间长。CGRA让功能配置好的硬件资源互连形成可配置的计算部分,通过配置信息来使计算部分重构为不同的计算通路,从而实现对硬件结构的动态配置并简化互连配置,但是未使用的数据通路造成资源浪费也没有很好地针对占比高的卷积层的计算进行优化。
现有技术中,针对神经网络计算的特点,提出了几种定制化神经网络加速器的计算架构以便有效地在硬件上执行神经网络模型。其中一种为基于控制流的时域计算架构,其基于神经网路算法定制指令集的指令流对计算资源和存储资源进行集中控制,每一步操作都需要精确指令控制,因此性能受限能效低。另一种是基于数据流的空域计算架构。例如基于行固定(Row Stationary,RS)的数据流在二维空域计算阵列中通过同列的多个计算单元(Processing Element,PE)完成一次二维卷积计算,如将3x 3的卷积核分成3行分别映射到同一列的3个PE中,与每个PE的输入特征数据行相乘,每个PE得到的乘积与下一行传来的部分和累加后再传给上一行进行累加直到完成本次二维卷积计算。再例如采用脉动阵列(Systolic Array)的二维矩阵乘法阵列通过脉动数据流,在每一串算术逻辑单元(Arithmetic Logic Unit,ALU)中安排第一个ALU初次读取输入数据,输入数据在前一个ALU使用完后按周期自动流入同一行的下一个ALU,计算得到的部分和按同样的方式流入同一列的下一个ALU,同一串的ALU中的最后一个ALU将部分和写入累加器。但是,基于数据流的空域计算架构缺少灵活性而应用受限,并且基于矩阵乘法的空间映射导致读取的输入数据是列向量或者行向量,数据吞吐效率受限,无法很好处理三维或者更高维的张量。
为此,需要针对上述神经网络计算的特点,比如卷积层的计算占比高、卷积层计算参数多变、输入数据为三维张量或更高维张量、不同类型的神经网络基本层具有不同的计算特点等,同时还需要考虑数据吞吐效率和资源利用效率等,提供一种神经网络加速器。
发明内容
本申请实施例提供了一种神经网络加速器,该神经网络加速器不仅针对神经网络计算的特点如卷积层的计算占比高、卷积层计算参数多变、输入数据为三维张量或更高维张量、不同类型的神经网络基本层具有不同的计算特点等,而且还具有较好的数据吞吐效率和资源利用效率。
第一方面,本申请实施例提供了一种神经网络加速器。所述神经网络加速器包括:多个PE,其中,所述多个PE分成多个组,所述多个组的每一个组对应输入张量的一部分,与该组对应的输入张量的一部分在神经网络算子下的运算按照与该组对应的状态展开方式展开成多种状态,该组所包括的PE与所述多种状态一一对应并执行所述神经网络算子在对应状态下的运算。
第一方面所描述的技术方案,通过将输入张量的不同部分按照不同状态展开方式展开成多种状态并通过多个PE执行所述神经网络算子在对应状态下的运算,实现了针对不同的神经网络计算需求的高效并行计算。
根据第一方面,在一种可能的实现方式中,所述神经网络算子包括与卷积核张量进行卷积运算,所述输入张量根据所述卷积核张量在第一滑动方向上的维度而确定多个块,所述多个块与所述多个组一一对应,所述多个块的每一个块在所述神经网络算子下的运算根据所述卷积核张量在所述第一滑动方向上的维度和第一滑动步长而展开成与该块对应的该组所包括的PE所对应的多种状态。如此,通过针对卷积层的计算而确定多个块并针对每个块展开成多种状态,实现了高效并行处理卷积层的计算。
根据第一方面,在一种可能的实现方式中,所述多个块的每一个块在所述神经网络算子下的运算被展开而得到的多种状态各自对应所述卷积核张量在该块中按照所述第一滑动步长在所述第一滑动方向上逐次滑动时所覆盖的所述输入张量的各个输入子张量,所述多个组的每一个组所包括的PE执行所述神经网络算子在对应状态下的运算,包括:执行与所述对应状态对应的输入子张量和所述卷积核张量之间的卷积运算。如此,实现了高效并行处理卷积层的计算。
根据第一方面,在一种可能的实现方式中,所述多个块彼此之间互不重叠,所述多个块中的每一个块在所述第一滑动方向上的维度与所述卷积核张量在所述第一滑动方向上的维度相同。如此,实现了根据卷积核张量的尺寸确定多个块并针对每个块展开成多种状态,实现了高效并行处理卷积层的计算。
根据第一方面,在一种可能的实现方式中,所述多个PE组成PE序列,所述多个组在所述PE序列上分布且彼此互不重叠,所述PE序列的每一个PE将包括该PE所在的组和该PE在该PE所在的组内的次序的跟踪逻辑TL传递给在所述PE序列中紧邻在前的PE。如此,通过TL的传递机制实现了PE序列的自律模式。
根据第一方面,在一种可能的实现方式中,所述PE序列的每一个PE根据所接收的TL确定该PE所在的组和该PE在该PE所在的组内的次序,从而执行所述神经网络算子在对应状态下的运算。如此,通过基于TL传递机制的PE序列的自律模式实现了无需外部控制介入地执行对应状态下的运算。
根据第一方面,在一种可能的实现方式中,所述神经网络算子的计算参数的变化被反馈给所述PE序列的最后一个PE并用于改变所述最后一个PE所传递的TL。如此,通过基于TL传递机制的PE序列的自律模式实现了无需外部控制介入地执行对应状态下的运算。
根据第一方面,在一种可能的实现方式中,所述神经网络算子的计算参数的变化被反馈给所述PE序列的至少两个PE并用于改变所述至少两个PE所传递的TL,所述至少两个PE包括所述PE序列的最后一个PE。如此,通过基于TL传递机制的PE序列的自律模式实现了无需外部控制介入地执行对应状态下的运算。
根据第一方面,在一种可能的实现方式中,所述多个PE组成PE序列,所述多个组在所述PE序列上分布且彼此互不重叠,所述PE序列的每一个PE从同一组合逻辑读取各自的TL,所述PE序列的每一个PE根据各自的PE确定该PE所在的组和该PE在该PE所在的组内的次序以及该PE的输出对象从而执行所述神经网络算子在对应状态下的运算,所述组合逻辑根据所述PE序列的每一个PE的TL确定。如此,通过组合逻辑实现了PE序列的自律模式并通过PE序列的自律模式实现了无需外部控制介入地执行对应状态下的运算。
根据第一方面,在一种可能的实现方式中,所述神经网络算子的计算参数的变化被反馈给所述PE序列的至少一个PE并用于改变所述至少一个PE的TL从而改变所述组合逻辑。如此,通过基于组合逻辑的PE序列的自律模式实现了全局更新TL。
根据第一方面,在一种可能的实现方式中,所述神经网络算子的计算参数的变化包括,所述输入张量的尺寸,所述卷积核张量的尺寸或者所述第一滑动步长的变化。如此,实现了适应变化多样的神经网络算子的计算参数的灵活性。
根据第一方面,在一种可能的实现方式中,所述神经网络算子包括池化层计算、全连接层计算或者卷积层计算。如此,实现了适应不同类型的神经网络算子的灵活性。
第二方面,本申请实施例提供了一种神经网络加速器。所述神经网络加速器包括:多个流处理单元,其中,所述多个流处理单元的每一个流处理单元包括多个PE,所述多个PE分成多个组,所述多个组的每一个组对应输入张量的一部分,与该组对应的输入张量的一部分在神经网络算子下的运算按照与该组对应的状态展开方式展开成多种状态,该组所包括的PE与所述多种状态一一对应并执行所述神经网络算子在对应状态下的运算。
第二方面所描述的技术方案,通过将输入张量的不同部分按照不同状态展开方式展开成多种状态并通过多个PE执行所述神经网络算子在对应状态下的运算,实现了针对不同的神经网络计算需求的高效并行计算。
根据第二方面,在一种可能的实现方式中,所述多个流处理单元的每一个流处理单元的多个PE组成PE序列,所述多个组在所述PE序列上分布且彼此互不重叠,所述PE序列的每一个PE将包括该PE所在的组和该PE在该PE所在的组内的次序的跟踪逻辑TL传递给在所述PE序列中紧邻在前的PE,所述PE序列的每一个PE根据所接收的TL确定该PE所在的组和该PE在该PE所在的组内的次序从而执行所述神经网络算子在对应状态下的运算。如此,通过TL的传递机制实现了PE序列的自律模式,并通过基于TL传递机制的PE序列的自律模式实现了无需外部控制介入地执行对应状态下的运算。
根据第二方面,在一种可能的实现方式中,所述神经网络加速器还包括:自律模式反馈器,其中,所述自律模式反馈器用于将所述神经网络算子的计算参数的变化反馈给所述多个流处理单元的至少一个流处理单元的多个PE所组成的PE序列的最后一个PE并用于改变该最后一个PE所传递的TL。如此,通过基于TL传递机制的PE序列的自律模式实现了无需外部控制介入地执行对应状态下的运算。
根据第二方面,在一种可能的实现方式中,所述多个流处理单元的每一个流处理单元的多个PE组成PE序列,所述多个组在所述PE序列上分布且彼此互不重叠,所述PE序列的每一个PE从同一组合逻辑读取各自的TL,所述PE序列的每一个PE根据各自的PE确定该PE所在的组和该PE在该PE所在的组内的次序以及该PE的输出对象从而执行所述神经网络算子在对应状态下的运算,所述组合逻辑根据所述PE序列的每一个PE的TL确定。如此,通过组合逻辑实现了PE序列的自律模式并通过PE序列的自律模式实现了无需外部控制介入地执行对应状态下的运算。
根据第二方面,在一种可能的实现方式中,所述神经网络加速器还包括:自律模式反馈器,其中,所述自律模式反馈器用于将所述神经网络算子的计算参数的变化反馈给所述多个流处理单元的至少一个流处理单元的多个PE所组成的PE序列的至少一个PE并用于改变该至少一个PE的TL从而改变与该至少一个PE对应的组合逻辑。如此,通过基于组合逻辑的PE序列的自律模式实现了全局更新TL。
根据第二方面,在一种可能的实现方式中,所述多个流处理单元中至少两个流处理单元处于对偶复用模式并用于并行处理同一输入张量的一部分被对等分割得到的多个输入子张量。如此,通过对偶复用提高了并行处理效率。
第三方面,本申请实施例提供了一种计算机***。所述计算机***包括根据第一方面或者第二方面中任一项所述的神经网络加速器,通用处理器和主存储器。
第三方面所描述的技术方案,通过将输入张量的不同部分按照不同状态展开方式展开成多种状态并通过多个PE执行所述神经网络算子在对应状态下的运算,实现了针对不同的神经网络计算需求的高效并行计算。
附图说明
为了说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1示出了本申请实施例提供的输入张量和卷积核张量进行卷积运算的状态展开示意图。
图2示出了本申请实施例提供的流处理单元对图1所示的卷积运算的展开后状态进行运算的示意图。
图3示出了本申请实施例提供的流处理单元对基于另一种卷积核张量的卷积运算的展开后状态进行运算的示意图。
图4示出了本申请实施例提供的图3所示流处理单元的自律模式的示意图。
图5示出了本申请实施例提供的多个流处理单元通过对偶复用方式进行卷积运算的示意图。
图6示出了本申请实施例提供的多个流处理单元执行图1所示的卷积运算的示意图。
图7示出了本申请实施例提供的多个流处理单元对输入张量的不同部分按照不同状态展开方式执行对应自律模式下运算的示意图。
图8示出了本申请实施例提供的神经网络加速器的框图。
图9示出了本申请实施例提供的包括图8所示的神经网络加速器的计算机***的框图。
具体实施方式
本申请实施例提供了一种神经网络加速器。该神经网络加速器不仅针对神经网络计算的特点如卷积层的计算占比高、卷积层计算参数多变、输入数据为三维张量或更高维张量、不同类型的神经网络基本层具有不同的计算特点等,而且还具有较好的数据吞吐效率和资源利用效率。该神经网络加速器包括:多个PE,其中,所述多个PE分成多个组,所述多个组的每一个组对应输入张量的一部分,与该组对应的输入张量的一部分在神经网络算子下的运算按照与该组对应的状态展开方式展开成多种状态,该组所包括的PE与所述多种状态一一对应并执行所述神经网络算子在对应状态下的运算。如此,通过将输入张量的不同部分按照不同状态展开方式展开成多种状态并通过多个PE执行所述神经网络算子在对应状态下的运算,实现了针对不同的神经网络计算需求的高效并行计算。
本申请实施例可用于以下应用场景,包括但是不限于,计算机视觉应用领域的各种场景例如人脸识别、图像分类、目标检测、语义分割等,或者是部署到边缘设备上(例如移动电话、可穿戴设备、计算节点等)的基于神经网络模型的处理***,或者用于语音信号处理、自然语言处理、推荐***的应用场景,或者任何需要针对神经网络计算的特点而用到神经网络加速器的应用场景。
本申请实施例可以依据具体应用环境进行调整和改进,此处不做具体限定。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请的实施例进行描述。
请参阅图1,图1示出了本申请实施例提供的输入张量和卷积核张量进行卷积运算的状态展开示意图。卷积层的运算一般利用多个三维卷积核从三维特征图中提取特征。因为大于三维的张量可以展开成三维张量的形式,所以比三维张量更高维度的张量数据之间的卷积运算可以展开成图1所示的三维输入张量A与三维卷积核张量B之间进行卷积运算的形式。应当理解的是,本申请实施例提供的神经网络加速器可以用于处理三维张量数据或者更高维度的张量数据,也可以用于处理多个输入张量数据和多个卷积核张量之间的卷积运算。如图1所示,输入张量A的尺寸为W x H x C,卷积核张量B的尺寸为KW x KH x KC。为了便于叙述,定义W为输入张量A在水平方向的维度或者叫做宽度或者列数,定义H为输入张量A在垂直方向的维度或者叫做高度或者行数,定义C为输入张量A的深度或者叫做通道数。应当理解的是,水平方向和垂直方向以及深度之间是相对的几何概念,不应理解为限制性。对应地,定义KW为卷积核张量B在水平方向的维度或者叫做宽度或者列数,定义KH为卷积核张量B在垂直方向的维度或者叫做高度或者行数,定义KC为卷积核张量B的深度或者叫做通道数。一般情况下,输入张量A的深度C与卷积核张量B的深度KC相同,也可以理解成具有相同的通道数。当输入张量A的深度C与卷积核张量B的深度KC不相同,一般是C大于KC,可以按照深度方向切割输入张量A从而与KC一致。为便于叙述,假设图1中的输入张量A的深度C与卷积核张量B的深度KC相同。应当理解的是,本申请实施例提供的神经网络加速器可以用于处理任意深度的三维输入张量数据。
请继续参阅图1,输入张量A与卷积核张量B的卷积运算的具体过程为:卷积核张量B在输入张量A上从某个初始位置开始以特定步长按照特定方式滑动,在初始位置以及在每次滑动后卷积核张量B与输入张量A中的一部分重叠并且与所重叠的这部分所构成的输入张量A的子张量进行卷积运算(重叠的部分所构成的子张量尺寸为KW x KH x KC),得到二维输出张量。当有多个卷积核张量B参与卷积运算,每个卷积核张量B产生的二维输出张量一起构成三维输出张量。其中,卷积核张量B的滑动可以分成沿着水平方向滑动或者称作沿着输入张量A的维度W滑动,以及沿着垂直方向滑动或者称作沿着输入张量A的维度H滑动。卷积核张量B的滑动可以按照先在水平方向上从左到右再在垂直方向上从上到下的方式,或者按照先在垂直方向上从上到下再在水平方向上从左到右的方式,或者其他任意可能的组合,只要卷积核张量B遍历整个输入张量A中并与各个重叠的部分所构成的子张量进行卷积运算。假设卷积核张量B滑动到某个位置后卷积核张量B的一部分超出了输入张量A的边界,可以通过拓展输入张量A的方式例如添加数值为0的元素从而满足卷积运算的要求。为便于叙述,图1中设卷积核张量B以图1中所示的A1为初始位置,按照先从左到右再从上到下的方式进行滑动。应当理解的是,水平方向和垂直方向仅仅是相对的几何概念,图1所示的卷积核张量B进行滑动的特定方式也只是示例性并非限制性。本申请实施例提供的神经网络加速器可以用于两个三维张量之间卷积运算的任意可能具体实现方式。
请继续参阅图1,输入张量A从左至右有四个块A1、A2、A3和A4,每个块的尺寸与卷积核张量B一致,也即为KW x KH x KC。也就是说,从初始位置A1开始,输入张量A按照卷积核张量B的尺寸可以划分成多个互不重叠的块A1、A2、A3和A4。应当理解的是,输入张量A可以划分成更多或者更少的块,或者采用其它划分方式。假设卷积核张量B从初始位置开始先按照第一滑动方向和第一滑动步长进行滑动直至在滑动后完全移出输入张量A的边界,则输入张量A从初始位置开始可以根据输入张量A在第一滑动方向上的维度与卷积核张量B在第一滑动方向上的维度的比较而划分成多个互不重叠的块,每个块的尺寸与卷积核张量B一致;卷积核张量B从初始位置开始按照第二滑动方向和第二滑动步长进行多次平移,并且在每次平移后重复地以所在位置为新的初始位置开始按照第一滑动方向和第一滑动步长进行滑动直至在滑动后完全移出输入张量A的边界(输入张量A也重复地划分成多个互不重叠的块),如此重复直至在平移后完全移出输入张量A的边界。应当理解的是,第一滑动方向和第二滑动方向是相对概念,指的是三维输入张量A的三个维度中的任意两个,在图1中设第一滑动方向为从左至右沿着维度W(对应卷积核张量B的维度KW),第一滑动步长为SX,第二滑动方向为从上到下沿着维度H(对应卷积核张量B的维度KH),第二滑动步长为SY(未示出)。图1中示意性示出了一种可能的实施方式的卷积核张量B的滑动和输入张量A的块划分。其中,卷积核张量B从初始位置A1开始,先按照从左到右方向和步长SX进行滑动,输入张量A从A1开始根据输入张量A的维度W和卷积核张量B的维度KW的比较而划分成多个互不重叠的块A1、A2、A3和A4。这意味着W是KW的四倍大小。根据W和KW的比较,输入张量A从初始位置A1开始可以划分成任意数量的块。下面进一步描述卷积核张量B从初始位置A1开始从左向右滑动的过程。如图1中所示,卷积核张量B在块A1中从左向右的滑动(按照第一滑动方向和第一滑动步长SX的滑动)可以细分成四种状态W1、W2、W3和W4。其中,块A1关联状态W1对应卷积核张量B在块A1中没有进行滑动时的状态;块A1关联状态W2对应卷积核张量B在块A1中进行了一次第一滑动方向的滑动时的状态;块A1关联状态W3对应卷积核张量B在块A1中进行了两次第一滑动方向的滑动时的状态;块A1关联状态W4对应卷积核张量B在块A1中进行了三次第一滑动方向的滑动时的状态。图1中用带竖线条的图案表示卷积核张量B在块A1关联状态W1、W2、W3和W4中各自所选中的输入张量A的部分。在状态W1时,卷积核张量B没有进行滑动,与块A1完全重叠;在状态W2时,卷积核张量B相对于W1时的位置向右平移了SX,卷积核张量B的一部分与块A1重叠另一部分与块A2重叠;在状态W3时,卷积核张量B相对于W2时的位置向右平移了SX,卷积核张量B的一部分与块A1重叠另一部分与块A2重叠;在状态W4时,卷积核张量B相对于W3时的位置向右平移了SX,卷积核张量B的一部分与块A1重叠另一部分与块A2重叠。根据块A1在第一滑动方向上的维度也即卷积核张量B在第一滑动方向上的维度(图1中为KW)和第一滑动步长(图1中为SX)之间的比较,可以确定卷积核张量B需要进行多少次第一滑动方向的滑动才会从与块A1完全重叠的状态到与块A1没有任何重叠的状态。也就是说,根据KW和SX的比较,可以确定卷积核张量B在块A1中按照第一滑动方向的滑动可以展开成多少种状态。图1中设KW为SX的四倍,因此卷积核张量B经过四次从左到右的滑动就完全移出块A1,也就是可以展开成四种状态。类似地,卷积核张量B在块A2中的滑动,也可以展开成块A2关联状态W1、W2、W3和W4。图1中以带横线条的图案表示卷积核张量B在块A2关联状态W1、W2、W3和W4中各自所选中的输入张量A的部分。可以看出,随着卷积核张量B从块A1移动到与块A1相邻的块A2,块A2关联状态W1紧跟着块A1关联状态W4。给定卷积核张量B的尺寸和第一滑动方向上的步长,可以将输入张量A划分成多个互不重叠的块,并且将卷积核张量B在第一滑动方向上滑动的过程展开成与这些块中的每一个块关联的多种状态。并且,在第一滑动方向上相邻的两个块之间有连续性,在后的块关联的多种状态中第一个紧跟着在前的块关联的多种状态中的最后一个。
卷积核张量B也可以从不同的初始位置开始从左向右滑动,相应地对输入张量A的块划分以及每个块的状态展开与图1中所示的实施例相似。输入张量A与卷积核张量B的卷积运算需要卷积核张量B按照特定的滑动方式以及特定的步长遍历整个输入张量A中并与各个重叠的部分所构成的子张量进行卷积运算。图1中示出的块A1关联状态W1、W2、W3和W4表示了与卷积核张量B重叠的部分所构成的子张量,通过计算卷积核张量B在这些状态下与这些状态对应的输入张量A的部分所构成的子张量之间的卷积运算,得出二维输出张量。如此,输入张量A与卷积核张量B的卷积运算可以按照图1所示的方式展开:设初始位置为A1,根据输入张量A在第一滑动方向上的维度W和卷积核张量B在第一滑动方向上的维度KW,将输入张量A划分成多个互不重叠的块(A1、A2、A3、A4),并且根据卷积核张量B在第一滑动方向上的维度KW和第一滑动方向上的步长SX获得多个块中的每一个块关联的多种状态(W1、W2、W3、W4),以及在每一个状态计算卷积核张量B和对应的子张量之间的卷积;根据卷积核张量B在第二滑动方向上的步长SY,将初始位置A1按照第二滑动方向平移SY得到新的初始位置,从新的初始位置开始重复上面的块划分和状态展开过程并计算卷积核张量B与对应的子张量之间的卷积。应当理解的是,对于给定的卷积核张量B,任意的输入张量数据都可以按照上述方式进行块划分及状态展开,并且每个块关联的多种状态是按照同样的规律重复,也就是各个块关联的多种状态之间存在一一对应关系。例如,块A1关联状态W1对应块A2关联状态W1,二者都意味着卷积核张量B与各自的块完全重叠;块A1关联状态W2对应块A2关联状态W2,二者都意味着卷积核张量B从各自对应的状态W1进行了一次第一滑动方向的滑动操作。依次类推,因为状态展开是根据卷积核张量B的滑动过程而设定,所以不同的块各自关联的多种状态存在一一对应关系。另外,每个块关联的多种状态有自律式的特征,也即通过某个状态可以推测出之前和之后的状态。例如,可以根据块A1关联的状态W2推测出在W2之前的状态W1和在W2之后的状态W3。图1所示的块划分和状态展开的方式还可以用于卷积层的计算以外的神经网络算子,例如池化层和全连接层,下面的具体实施例会详细叙述。
请参阅图2,图2示出了本申请实施例提供的流处理单元对图1所示的卷积运算的展开后状态进行运算的示意图。应当理解的是,图2所示的流处理单元200(StreamProcessing Unit,SPU)由多个具备处理流数据能力的处理器组成,每个处理器“流水”式地接收输入流数据并提供输出流数据。如图2所示,流处理单元200包括8个PE分别为PE1、PE2、PE3、PE4、PE5、PE6、PE7和PE8。这8个PE共享同一个卷积核张量B,从输入子张量串入并出寄存器210分别获得输入子张量,并对所获得的输入子张量和共享的卷积核张量B进行卷积运算。其中,PE1、PE2、PE3和PE4分别对应图1所示的块A1关联状态W1、W2、W3和W4,从输入子张量串入并出寄存器210中分别获得与块A1关联状态W1、W2、W3和W4各自对应的输入张量A的子张量。例如,PE1获得图1中用带竖线的图案表示的块A1关联状态W1所对应的输入张量A的部分所构成的子张量。PE1、PE2、PE3和PE4各自输出的结果整合后得到块A1关联中间结果。类似地,PE5、PE6、PE7和PE8分别对应图1所示的块A2关联状态W1、W2、W3和W4,从输入子张量串入并出寄存器210中分别获得与块A2关联状态W1、W2、W3和W4各自对应的输入张量A的子张量。PE5、PE6、PE7和PE8各自输出的结果整合后得到块A2关联中间结果。输入子张量串入并出寄存器210采用先进先出的存储器机制,依次接收多个尺寸为1x KH x KC的子张量,然后将KW个尺寸为1x KH x KC的子张量同时输出给对应的PE。例如,块A1关联状态W1对应的输入张量A的子张量是与卷积核B相同的尺寸也即KW x KH x KC。输入子张量串入并出寄存器210按照从左到右的次序接收构成块A1的KW个1x KH x KC的子张量,并以先进先出的方式存储,然后将这些KW个1x KH x KC的子张量并行输出给PE1。输入子张量串入并出寄存器210继续按照从左到右的次序接收构成块A2的KW个1x KH x KC的子张量,并以先进先出的方式存储,将与块A1关联状态W2对应的KW个1x KH x KC的子张量并行输出给PE2。应当理解的是,输入子张量串入并出寄存器210以并行输出的方式将KW个1x KH x KC的子张量一次性输出给对应的PE,同时以串行的方式接收新的1x KH x KC的子张量,从而有利于提高数据流水效率和提升数据吞吐率,这一点下面详细叙述。因为状态展开是根据卷积核张量B的滑动过程而设定,因此各个PE为进行对应状态的卷积运算所需要的子张量也是根据卷积核张量B的滑动过程而逐个进入输入子张量串入并出寄存器210。例如,PE2计算块A1关联状态W2所需的子张量在PE1计算块A1关联状态W1所需的子张量之后进入输入子张量串入并出寄存器210。如此,输入子张量串入并出寄存器210接收子张量的次序与卷积核张量B的滑动过程一致,如果将卷积核张量看做滤波器,而卷积核张量的滑动过程相当于向该滤波器输入新的子张量,则该滤波器接收新的子张量的次序就是输入子张量串入并出寄存器210接收子张量的次序。因为输入子张量串入并出寄存器210采用先进先出的存储机制,该滤波器输入的子张量中先进去也先移出,这样数据在输入子张量串入并出寄存器210内部的流向与各个PE为进行对应状态的卷积运算所需要的子张量是一致的,从而有利于提高数据流水效率和提升数据吞吐率。应当理解的是,图2所示的通过输入子张量串入并出寄存器210来提供对应子张量给各个PE只是示例性。在另一些示例性实施例中,可以通过其它方式实现提供对应子张量给各个PE。例如,可以将输入张量A整个或者部分地映射到缓存中,再从中提取对应的部分输出到各个PE。
请继续参阅图2,流处理单元200所包括的PE个数可以是任意数量,图2所示的8个PE仅为示例性。其中,流处理单元200所包括的PE可以接受相同的卷积核张量B也可以接受不同的卷积核张量。流处理单元200所包括的PE按照一定的次序排列,编号为PE 1、PE 2、PE3…PE N,其中,N表示流处理单元200所包括的PE个数。如此,流处理单元200可以看做一个PE序列(PE 1、PE 2、PE 3…PE N),在该PE序列中的每个PE接收相应的输入子张量和卷积核张量并进行卷积运算。该PE序列参考图1所示的块划分和状态展开方式,分成多个组,每个组包括固定数量的PE。图1示出了将输入张量A划分成多个互不重叠的块,并且将卷积核张量B在第一滑动方向上滑动的过程展开成与这些块中的每一个块关联的多种状态。图2的流处理单元200所对应的PE序列可以划分成多个互不重叠的组,多个组与多个块一一对应,并且每个组包括多个PE,多个PE与多种状态一一对应。例如,图2所示的流处理单元200的PE序列分成第一组和第二组。第一组对应块A1,第一组包括PE1、PE2、PE3和PE4各自对应的块A1关联状态W1、W2、W3和W4。第一组所包括的PE1、PE2、PE3和PE4各自输出的结果整合后得到块A1关联中间结果。第二组对应块A2,第二组包括PE5、PE6、PE7和PE8各自对应的块A2关联状态W1、W2、W3和W4。第二组所包括的PE5、PE6、PE7和PE8各自输出的结果整合后得到块A2关联中间结果。如此,图1所示的块划分和状态展开方式映射到了图2所示的流处理单元200的PE序列上。并且,图1所示的块划分和状态展开方式而产生的多个块以及每个块关联的多种状态之间的关联性和特征也被PE序列的多个组和每个组内多个PE继承。具体地,每个块关联的多种状态是按照同样的规律重复,也就是各个块关联的多种状态之间存在一一对应关系,例如块A1关联状态W1对应块A2关联状态W1。类似地,每个组内的多个PE的工作状态也是按照同样的规律重复,也就是各个组内的多个PE之间存在一一对应关系,例如PE1对应PE5。每个块关联的多种状态有自律式的特征,也即通过某个状态可以推测出之前和之后的状态。例如,可以根据块A1关联的状态W2推测出在W2之前的状态W1和在W2之后的状态W3。类似地,流处理单元200的PE序列的多个组中每个组内的各个PE也存在自律式的特征。可以通过某个PE的工作状态推测出在同一PE序列中排序靠前和排序靠后的PE的工作状态。例如,可以根据PE2的工作状态推测出PE1和PE3的工作状态。这一点有利于进行自律式的控制机制设计,下面会详细叙述。
请继续参阅图2,流处理单元200通过各个组来分别输出不同块关联中间结果,而每个组内通过多个PE并行处理同一块关联的多种状态。每个PE输出的对应状态的卷积运算结果是图1所示的输入张量A与卷积核张量B进行卷积运算所得到的其中一个二维输出张量,而每个组输出的块关联中间结果是将与对应块关联的二维输出张量整合后得到的三维输出子张量。例如,第一组PE1、PE2、PE3和PE4各自输出的是块A1关联状态W1、W2、W3和W4下的二维输出张量,而块A1关联中间结果是这些二维输出张量整合后的三维输出子张量。通过将输入张量A划分成多个块,可以通过图2所示的流处理单元200高速并行输出对应的三维输出子张量。输入张量A与卷积核张量B进行卷积运算的具体过程包括:卷积核张量B从初始位置开始按照第二滑动方向和第二滑动步长进行多次平移,并且在每次平移后重复地以所在位置为新的初始位置开始按照第一滑动方向和第一滑动步长进行滑动直至在滑动后完全移出输入张量A的边界(输入张量A也重复地划分成多个互不重叠的块)。因此,可以用多个流处理单元200,每个流处理单元200各自处理卷积核张量B从不同的初始位置开始按照第一滑动方向和第一滑动步长进行滑动直至在滑动后完全移出输入张量A的边界而产生的卷积运算。图1所示的块划分和状态展开方式包括:根据输入张量A在第一滑动方向上的维度W和卷积核张量B在第一滑动方向上的维度KW,将输入张量A划分成多个互不重叠的块(A1、A2、A3、A4),并且根据卷积核张量B在第一滑动方向上的维度KW和第一滑动方向上的步长SX获得多个块中的每一个块关联的多种状态(W1、W2、W3、W4),以及在每一个状态计算卷积核张量B和对应的子张量之间的卷积。因为流处理单元200的PE序列的分组方式与输入张量A的块划分和状态展开方式对应,因此流处理单元200的PE序列根据输入张量A在第一滑动方向上的维度W和卷积核张量B在第一滑动方向上的维度KW划分成多个互不重叠的组,每个组中所包括的PE个数根据卷积核张量B在第一滑动方向上的维度KW和第一滑动方向上的步长SX确定。以图1为例,W是KW的四倍,因此流处理单元200的PE序列分成4个组分别对应A1、A2、A3和A4。KW是SX的四倍,因此流处理单元200的PE序列的每个组包括四个PE。如此,图1所示的块划分和状态展开方式映射到了流处理单元200的PE序列的分组方式上。应当理解的是,通过流处理单元200可以高效并行处理流数据,从而结合输入子张量串入并出寄存器210提高数据吞吐效率和流水效率。另外,同一组的多个PE并行处理同一块关联的多种状态,不同组对应不同块。因此,不同组可以看做不同的流水,也即同一个流处理单元200内可以有多个组分别对应不同的流水,从而有利于提高吞吐效率。
请参阅图3,图3示出了本申请实施例提供的流处理单元对基于另一种卷积核张量的卷积运算的展开后状态进行运算的示意图。如图3所示,流处理单元300包括8个PE分别为PE1、PE2、PE3、PE4、PE5、PE6、PE7和PE8。这8个PE共享同一个卷积核张量B2,从输入子张量串入并出寄存器310分别获得输入子张量,并对所获得的输入子张量和共享的卷积核张量B2进行卷积运算。其中,输入子张量串入并出寄存器310与图2所示的输入子张量串入并出寄存器210的细节一致,在此不再赘述。因为卷积核张量B2的尺寸与图1和图2所示的卷积核张量B不同,因此导致流处理单元300的PE序列的分组方式不同于流处理单元200的PE序列的分组方式。流处理单元300的PE序列的第一组对应块A1,第一组包括PE1、PE2和PE3各自对应的块A1关联状态W1、W2和W3;第二组对应块A2,第一组包括PE4、PE5和PE6各自对应的块A2关联状态W1、W2和W3。可以看出,图3所示的流处理单元300的PE4用于计算块A2关联状态W1,而在图2所示的流处理单元200中的PE4用于计算块A1关联状态W4。因此,根据卷积核张量的尺寸变化,可以导致块划分和状态展开方式的不同,进而使得流处理单元的PE序列的分组方式也改变,从而让PE序列中具有相同次序的PE在不同的卷积核张量下需要处理同一块关联的不同状态或者不同块关联的状态。应当理解的是,任何导致块划分和状态展开方式改变的因素,都会引起流处理单元的PE序列的分组方式的改变,因为块划分和状态展开方式映射到了流处理单元的PE序列的分组方式上。例如,假设卷积核张量B2与图1所示的卷积核张量B尺寸一致,但是输入张量在第一滑动方向上的维度W发生了变化,也会导致流处理单元的PE序列的分组方式改变。在实际应用中,各卷积层的计算参数如卷积核大小和输入输出特征图尺寸等变化多样,因此需要流处理单元的PE序列的分组方式也能相应地做出调整,从而将计算参数发生变化后的块划分和状态展开方式映射到PE序列的分组方式上,这一点可以通过PE的自律模式实现,下面详细叙述。
图4示出了本申请实施例提供的图3所示流处理单元的自律模式的示意图。图4中所示的流处理单元400和输入子张量串入并出寄存器410与图3所示的流处理单元300和输入子张量串入并出寄存器310的细节基本一致,在此不再赘述。流处理单元400的PE序列中的每个PE具有跟踪逻辑(Trace Logic,TL)。每个PE将自身的TL传递给在PE序列中排序靠前的PE,例如PE5的TL传递给PE4。TL的作用是用来告知自身的工作状态。TL的传递可以与PE从输入子张量串入并出寄存器410接收输入子张量同步进行,也可以提前或者在后进行。每个PE接收到从PE序列中排序靠后的PE传递过来的TL后,可以据此推测出该PE的合适工作状态。这是因为图1所示的块划分和状态展开方式而产生的多个块以及每个块关联的多种状态之间的关联性和特征也被PE序列的多个组和每个组内多个PE继承。具体地,每个组内的多个PE的工作状态按照同样的规律重复,也就是各个组内的多个PE之间存在一一对应关系。每个块关联的多种状态有自律式的特征,也即通过某个状态可以推测出之前和之后的状态。例如,可以根据块A1关联的状态W2推测出在W2之前的状态W1和在W2之后的状态W3。类似地,流处理单元的PE序列的多个组中每个组内的各个PE也存在自律式的特征。可以通过某个PE的工作状态推测出在同一PE序列中排序靠前和排序靠后的PE的工作状态。例如,可以根据PE5的工作状态推测出PE4的工作状态。因此,通过将表征PE5的工作状态的TL从PE5传递给PE4,PE4可以据此判断工作状态是图3和图4所示的块A2关联中间结果W1,而不是图2所示的块A1关联中间结果W4。下面结合表1来说明。
表1
表1示出了不同的PE分组方式下,每个PE所在的第几组中第几个。前面提到图1所示的块划分和状态展开方式而产生的多个块以及每个块关联的多种状态之间的关联性和特征也被PE序列的多个组和每个组内多个PE继承,因此每个PE所对应的第几组第几个的信息也就对应块划分和状态展开方式下该PE的工作状态也即对应的块和该块关联的状态。例如,当按照图1所示的块划分和状态展开方式,PE分组方式是每组4个PE,也就是图2所示的分组方式,这时PE4是第1组第4个,对应块A1关联状态W4。当按照图3所示的PE分组方式也即每组3个PE,PE4是第2组第1个,对应块A2关联状态W1。因此设PE所在的是第i组第j个,则该PE对应的是块A(i)关联状态W(j)。如此,通过每个PE将自身的TL传递给在PE序列中排序靠前的PE,可以利用每个块关联的多种状态所具有的自律式的特征,从而形成流处理单元400的自律模式。如此,当各卷积层的计算参数如卷积核大小和输入输出特征图尺寸等发生改变,从而导致流处理单元的PE序列的分组方式需要相应地做出调整,通过流处理单元400所示的自律模式,让每个PE将自身的TL传递给在PE序列中排序靠前的PE,进而让每个PE可以据此判断自身合适的工作状态,从而将计算参数发生变化后的块划分和状态展开方式映射到PE序列的分组方式上。应当理解的是,因为TL的传递发生在同一个流处理单元的各个PE之间,不需要通过外部控制也不需要获取外部数据,也就是说流处理单元400的各个PE实现了自律式的控制,即仅通过这些PE之间的TL传递就可以让每个PE判断出该PE的工作状态也即对应的块和该块关联的状态。具体应用中,当任何导致块划分和状态展开方式改变的事件发生,例如卷积核张量的尺寸改变,需要让流处理单元400的自律模式将这一信息加入到PE之间的TL传递,也即让TL包含这一信息。这一点可以通过在流处理单元400中设置一个反馈点的方式实现,也就是选中一个PE,让该PE的TL可以包含导致块划分和状态展开方式改变的事件发生这一信息,而该PE的TL通过流处理单元400的自律模式可以将这一信息逐个传递给排序在该PE之前的各个PE。因此,可以设置流处理单元400的排序最后一个的PE作为反馈点,也可以设置流处理单元400中的若干个间隔的PE作为反馈点,从而将导致块划分和状态展开方式改变的事件发生这一信息加入到PE之间的TL传递。例如,当卷积核张量改变导致PE分组方式从图2所示的每组4个PE变成图3所示的每组3个PE,可以通过反馈点PE5引入这一信息,将PE5的TL从表1中所示的“第2组第1个”变更为“第2组第2个”。如此,PE4接收到PE5的TL后,也会相应地将工作状态从“第1组第4个”变更为“第2组第1个”。仅需要通过流处理单元400的PE序列的最后一个PE作为反馈点,就可以实现整个PE序列的状态更新,而且通过PE的自律模式而节省了外部控制所需的资源。并且,通过引入多个反馈点还可以加快整个PE序列的状态更新,例如按照PE序列的次序每隔10个PE就选择一个PE作为反馈点,通过让多个反馈点的TL各自向序列靠前的方向传递可以加快整个PE序列的状态更新。如此,流处理单元400通过自律模式实现了根据各卷积层的计算参数如卷积核大小和输入输出特征图尺寸等的变化而调整流处理单元的PE序列的分组方式,有利于满足神经网络计算的需求。
在一些示例性实施例中,流处理单元400的自律模式包括用于全局更新TL的组合逻辑。该组合逻辑根据流处理单元400的各个PE的各自TL而确定。每个PE从该组合逻辑读取自身的TL也将自身的TL写入该组合逻辑。当作为反馈点的PE的TL发生变化时,作为反馈点的PE将变化后TL写入该组合逻辑,从而得到变化后的组合逻辑。当其它PE从变化后的组合逻辑读取TL,则得到各自对应的变化后TL,从而实现了全局更新所有PE的TL。
应当理解的是,各个PE的TL的作用是用来告知PE自身的工作状态,从而让其它PE可以通过反馈点往前传递的方式更新或者通过组合逻辑进行全局同步更新TL。更新后的TL不仅可以告诉该PE合适的工作状态,如该PE应在第几组第几次序也就是PE序列的分组方式,还可以用于告诉该PE应该如何与其它PE连线。例如,图4中的PE 4的TL不仅告诉PE 4应该处于“第2组第1个”的工作状态,还可以告诉PE 4将计算结果传递给用于整合块A2关联中间结果的PE,而不是图2所示的用于整合块A1关联中间结果的PE。如此,通过图4所示的流处理单元400的自律模式以及TL传递或全局更新机制,实现了根据各卷积层的计算参数的变化而调整流处理单元的PE序列的分组方式以及调整PE之间的连线关系。
请参阅图5,图5示出了本申请实施例提供的多个流处理单元通过对偶复用方式进行卷积运算的示意图。如图5所示,流处理单元500和流处理单元502各包括6个PE。为便于区别,将流处理单元500的6个PE标记为PE 1a、PE 2a、PE 3a、PE 4a、PE 5a和PE 6a,流处理单元502的6个PE标记为PE 1b、PE 2b、PE 3b、PE 4b、PE 5b和PE 6b。流处理单元500和流处理单元502都从输入子张量串入并出寄存器510获得输入子张量。其中,图5所示的输入子张量串入并出寄存器510的细节与图3所示的输入子张量串入并出寄存器310一致,在此不再赘述。图2至图4的具体实施例均通过同一个流处理单元内的多个PE并行处理同一块关联的多种状态,也就是多个PE各自计算对应状态下的输入子张量和卷积核张量B之间的卷积。例如,图4所示的PE1对应块A1关联状态W1下的输入子张量也即在图1中由块A1关联状态W1所标识的输入张量A的部分。可以看出,通过将图1所示的块划分和状态展开方式映射到了流处理单元的PE序列的分组方式上,可以确定流处理单元的每个PE在哪个组以及在该组中的次序,还可以确定每个PE对应的块和该块关联的状态,从而可以确定通过该PE进行卷积运算的输入子张量。因此,可以通过对偶复用的方式,将该输入子张量等分地分割成两部分,每部分分别跟同样等分分割后的卷积核子张量做卷积,从而提高卷积运算效率,下面详细叙述。
请继续参阅图5,流处理单元500和流处理单元502各自包括PE序列,并且各自的结构与图2至图4所示的流处理单元相似。不同之处在于,流处理单元500的PE 1a与流处理单元502的PE 1b为对偶复用关系。具体地,PE 1a接收卷积核子张量B-a,从输入子张量串入并出寄存器510获得与块A1关联状态W1的子状态W-a对应的输入子张量,并进行卷积运算;PE1b接收卷积核子张量B-b,从输入子张量串入并出寄存器510获得与块A1关联状态W1的子状态W-b对应的输入子张量,并进行卷积运算。PE 1a和PE 1b的输出结果整合后为W1对应的输入张量A的部分与卷积核张量B的卷积运算结果。这里,将W1对应的输入张量A的部分对等地分割成两部分,得到成对的子状态W1-a和W1-b。子状态W1-a可以是沿着图1所示的维度H方向将A1在中间点分割得到的上半部分,而子状态则是下班部分。类似地,卷积核张量B也可以沿着图1所以的维度KH方向在中间点分割,上半部分作为卷积核子张量B-a,下半部分作为卷积核子张量B-b。只要与状态W1对应的输入张量A的部分的分割方式与卷积核张量B的分割方式一致,则分割得到输入子张量与卷积核子张量一一对应并且原来与状态W1对应的输入张量A的部分和卷积核张量B之间的卷积运算可以拆分成这些输入子张量与对应的卷积核子张量各自进行卷积运算的组合。如此,图3和图4所示的块A1关联状态W1、W2和W3被拆分成图5所示的成对的(W1-a,W1-b),(W2-a,W2-b)和(W2-a,W2-b),通过对应的成对的PE(PE1a,PE 1b),(PE 2a,PE 2b)和(PE 3a,PE 3b)执行。
块A2关联状态W1、W2和W3也被拆分成图5所示的成对的(W1-a,W1-b),(W2-a,W2-b)和(W2-a,W2-b),通过对应的成对的PE(PE 4a,PE 4b),(PE 5a,PE 5b)和(PE 6a,PE 6b)执行。如此,通过对偶复用方式的流处理单元500和流处理单元502,可以提高并行处理卷积运算的效率。
应当理解的是,用于对偶复用方式的多个流处理单元可以包括任意偶数次数的流处理单元,例如通过4个、6个或者8个流处理单元并行处理同一个块的子状态和输入子张量的卷积运算。在一种可能的实施方式中,用于对偶复用方式的多个流处理单元的总数是2的幂级数形式,如2、4、8、16、32,依次类推。这样便于进行更多更细的拆分以便平衡各个流处理单元所负责的计算需求。结合图4和图5,图4所示的流处理单元400的自律模式也适用于流处理单元500或者流处理单元502。用于对偶复用方式的多个流处理单元因为是针对同一种块划分和状态展开方式,因此当块划分和状态展开方式发生变化,而导致PE序列的分组改变,需要通过各个流处理单元的自律模式同步进行调整。因此,用于反馈点的PE可以是用于对偶复用方式的多个流处理单元各自的PE序列中位于同一次序的PE,从而有利于实现同步更新。例如,流处理单元500的PE 3a和流处理单元502的PE 3b被选为各自PE序列的反馈点,通过各自的TL向前传递,实现各自PE序列的状态更新,从而通过PE的自律模式而节省了外部控制所需的资源。
请参阅图6,图6示出了本申请实施例提供的多个流处理单元执行图1所示的卷积运算的示意图。其中,图1所示的卷积运算具体包括:卷积核张量B从初始位置开始先按照第一滑动方向(维度W)和第一滑动步长SX进行滑动直至在滑动后完全移出输入张量A的边界,则输入张量A从初始位置开始可以根据输入张量A在第一滑动方向上的维度与卷积核张量B在第一滑动方向上的维度的比较而划分成多个互不重叠的块(第一分组A1、A2、A3、A4),每个块的尺寸与卷积核张量B一致;卷积核张量B从初始位置开始按照第二滑动方向(维度H)和第二滑动步长SY进行多次平移,并且在每次平移后重复地以所在位置为新的初始位置开始按照第一滑动方向和第一滑动步长进行滑动直至在滑动后完全移出输入张量A的边界,在此过程中输入张量A也重复地划分成多个互不重叠的块:第二分组A1、A2、A3、A4;第三分组A1、A2、A3、A4;第四分组A1、A2、A3、A4。如此重复直至在平移后完全移出输入张量A的边界。如图6所示,这些分组A1、A2、A3、A4分别通过输入子张量串入并出寄存器传输给不同的流处理单元,并得到不同的输出张量第一分组。图6中所示的各个流处理单元具有与图4所示的流处理单元400类似的结构,包括流处理单元400的自律机制。因此,图6所示的各个流处理单元可以适应不同的卷积核张量或者其它计算参数变化。其中,每个流处理单元对各自对应的分组A1、A2、A3、A4进行卷积运算参考图2至图4所示的流处理单元,也就是将对应的分组A1、A2、A3、A4的块划分和状态展开方式映射到该PE序列的分组方式上。因为各个分组A1、A2、A3、A4是根据卷积核张量B的特定滑动方式而定,随着卷积核张量B的改变和滑动步长的变化,不同分组可以有不同的块划分和状态展开方式。例如,第一分组A1、A2、A3、A4可以对应图2所示的块划分和状态展开方式,而对应的第一PE序列采用图2所示的PE序列分组方式每组有4个PE;第二分组A1、A2、A3、A4可以对应图3所示的块划分和状态展开方式,而对应的第二PE序列采用图3所示的PE序列分组方式每组有3个PE。应当理解的是,图1和图6所示的每个分组有A1、A2、A3、A4四个块,仅为示例性,本申请实施例提供的多个流处理单元可以用于任意维度的输入张量和任意维度的卷积核张量之间的卷积运算,并且可以根据实际情况划分成任意数量的分组,每个分组有任意数量的块,再讲同个分组的各个块输入到同一流处理单元,得到对应的输出张量分组。
请继续参阅图6,图6所示的通过多个流处理单元并行处理多组块的方式适用于以任意特定方式和特定步长在输入张量A中滑动卷积核张量B的情况。根据实际需求,可以设定相对意义上的第一滑动方向和第二滑动方向以实现最佳效果,例如可以将输入张量A的深度C设为第一滑动方向而输入张量的高度H设为第二滑动方向,这些可以根据实际情况而定,在此不再一一赘述。在确定了第一滑动方向和第二滑动方向后,输入张量A与卷积核张量B的卷积运算可以以下方式展开:确定初始位置如图6中的A1;执行块划分操作:根据输入张量A在第一滑动方向上的维度和卷积核张量B在第一滑动方向上的维度,将输入张量A划分成多个互不重叠的块,每个块的尺寸与卷积核张量B一致;执行状态展开操作:根据卷积核张量B在第一滑动方向上的维度和第一滑动方向上的步长获得多个块中的每一个块关联的多种状态,以及在每一个状态计算卷积核张量B和对应的子张量之间的卷积;按照卷积核张量B在第二滑动方向上的步长,从初始位置A1开始按照第二滑动方向平移直到卷积核张量B完全移出输入张量A,在每次平移后得到新的初始位置并从新的初始位置开始重复上面的块划分操作和状态展开操作以及计算卷积核张量B与对应的子张量之间的卷积。因此,输入张量A的分组块的组个数由卷积核张量B在第二滑动方向上的步长和输入张量A在第二滑动方向上的维度确定,进行块划分操作得到的每个组内的块个数由输入张量A在第一滑动方向上的维度和卷积核张量B在第一滑动方向上的维度确定,进行状态展开操作得到的每个块关联的多个状态的状态个数由卷积核张量B在第一滑动方向上的维度和第一滑动方向上的步长确定。如此,只要确定了输入张量A在第一滑动方向上的维度和在第二滑动方向上的维度,卷积核张量B在在第一滑动方向上的维度、第一滑动方向上的步长和第二滑动方向上的步长,就可以确定输入张量A分成多少分组,每个分组有多少块,每个块有多少状态。另外,当卷积核张量B的尺寸或者滑动方式或者输入张量A发生了变化,这种变化也可以通过流处理单元的自律模式而体现在PE序列的分组中,因此这种变化可以体现为卷积层计算的计算参数发生变化后的块划分和状态展开方式并且映射到PE序列的分组方式上。如此,图6所示的多个流处理单元不仅实现了根据各卷积层的计算参数如卷积核大小和输入输出特征图尺寸等的变化而调整特定流处理单元的PE序列的分组方式,有利于满足神经网络计算的需求,而且各个流处理单元可以对应不同的计算参数从而有利于高效并行处理神经网络计算。
结合图5和图6,为了提高并行处理速度,可以通过偶数次数的流处理单元来并行处理同一分组的卷积层的计算。例如,第一流处理单元可以替换成两个PE序列为第一PE序列a和第二PE序列b,通过图5所示的对偶复用方式加快卷积层的计算。具体地,第一分组A1、A2、A3和A4各自对等地分割成上下两部分,通过第一PE序列a处理上半部分而第二PE序列b处理下半部分。另外,对偶复用还可以发生在不同分组的流处理单元之间。例如,图6中所示的第二分组的A1与第一分组的A1之间有重叠部分,该重叠部分在某些情况下可以通过复用的方式来提高效率。假设图6所示的卷积核张量B的维度KH是步长SY的两倍,这意味着第一分组A1的下半部分正好是第二分组A1的上半部分。这时,第一分组A1可以分割成上下两部分第一分组A1-a和第一分组A1-b,通过两个PE序列分别处理第一分组A1-a和第一分组A1-b。第二分组A1也分割成上下两部分第二分组A1-a和第二分组A1-b。因为第一分组A1的下半部分第一分组A1-b正好是第二分组A1的上半部分第二分组A1-a,所以第二分组A1的计算可以复用用于第一分组A1-b的PE序列,也就是第一分组A1和第二分组A1一起只需要三个PE序列,而不是四个PE序列。
请参阅图7,图7示出了本申请实施例提供的多个流处理单元对输入张量的不同部分按照不同状态展开方式执行对应自律模式下运算的示意图。如图7所示,输入张量首先被分成多组,图7中示意性示出了分成第一组和第二组。每个组又分成多个块,图7中示意性示出了第一组和第二组各自被分成三个块,总计六个块。六个块中每个块按照各自方式进行状态展开,并输送给对应的自律式流处理单元进行运算。图7所示的自律式流处理单元与图2至图5所示的流处理单元具有相似结构,在此不再赘述。图7所示的对输入张量的不同部分按照不同状态展开方式执行对应自律模式下运算不仅可以适用于图1至图5所示的卷积层的计算,也可以适用于其它类型的神经网路计算。针对卷积层的计算,如果卷积核张量和步长均保持固定,则可以认为第一状态展开到第六状态展开按照同一种方式,例如图1所示的块划分和状态展开方式;如果卷积核张量或者步长改变,则可以在不同分组内按照不同的方式进行状态展开,例如第一分组对应图1所示的块划分和状态展开方式,第二分组对应图3所示的块划分和状态展开方式。池化层的计算可以看做卷积层的计算加上下采样或者求均值计算的结合。全连接层的计算可以看做特殊的卷积层的计算,也即卷积核尺寸与输入特征图尺寸相同。其它类型的神经网络计算,只要能按照输入张量的不同部分按照不同状态展开方式执行,就可以参考图7所示的方式进行细分后由多个自律式流处理单元并行处理,从而提高效率。
结合图5、图6和图7,为了提高并行处理速度,图7所示的多个流处理单元每一个流处理单元对输入张量的相应部分按照对应状态展开方式执行对应自律模式下运算。假设该对应自律模式下运算可以通过图5所示的对偶复用方式进一步细分,可以通过偶数次数的流处理单元来并行处理该对应自律模式下运算,例如图5所示的输入子张量和卷积核张量之间的卷积运算可以通过两个流处理单元并行执行以提高效率。图6示出了卷积运算可以当成输入张量A的输入子张量与卷积核张量之间的卷积运算,而划分输入张量A得到输入子张量的特定方式,例如图1和图6所示的块划分和状态展开方式,可以映射到不同流处理单元的不同PE上。根据卷积层计算的计算参数,可以确定能复用的PE。例如,图6所示的不同分组的块之间可以共用同一个流处理单元来实现对偶复用方式下的复用PE。通过将输入张量划分成不同的分组,每个组又分成不同块,不同块按照特定状态展开方式展开,由此得到的展开后状态可能使用复用PE,从而节省计算资源。
请参阅图8,图8示出了本申请实施例提供的神经网络加速器的框图。如图8所示,神经网络加速器800包括自律式计算阵列802,自律式计算阵列802包括多个流处理单元和多个辅助PE。多个流处理单元的每一个流处理单元与图2至图5所示的流处理单元具有相似结构,在此不再赘述。每个流处理单元与对应的输入子张量串入并出寄存器连接。图8所示的输入子张量串入并出寄存器与图2至图5所示的输入子张量串入并出寄存器的细节基本一致,在此不再赘述。多个流处理单元的每一个流处理单元的PE通过对应的输入子张量串入并出寄存器获得输入子张量并与所接收的卷积核张量进行卷积运算。当自律式计算阵列802用于其他类型的神经网络运算时,可以参考图6所示的多个流处理单元对输入张量的不同部分按照不同状态展开方式执行对应自律模式下运算的方式,由图8所示的多个流处理单元分别接收输入张量的不同部分并执行对应运算。应当理解的是,自律式计算阵列802的多个流处理单元中的每个PE都具有图4所示的流处理单元400的自律模式,因此节省了外部控制所需的资源。
请继续参阅图8,神经网络加速器800还包括输入张量缓存器804、输入张量组块划分模块806、卷积核张量缓存器810、自律模式反馈器820和神经网络算子分析模块830。其中,卷积核张量缓存器810用于从外部接收卷积核张量并分配给对应的PE。输入张量缓存器804用于从外部接收输入张量并传输给输入张量组块划分模块806,输入张量组块划分模块806用于参考图6所示的方式将输入张量分成不同组,每个组分成不同块,再将各个块关联的多种状态所对应的输入子张量通过对应的输入子张量串入并出寄存器传递给对应流处理单元的相应PE。输入张量组块划分模块806与卷积核张量缓存器810通信地连接从而获得卷积核张量的尺寸等信息以便进行块划分及状态展开。应当理解的是,神经网络加速器800可以通过其它方式实现提供对应子张量给各个PE。例如,可以将输入张量整个或者部分地映射到缓存中,再从中提取对应的部分输出到各个PE。自律模式反馈器820与各个流处理单元中作为反馈点的PE连接,例如按照各个流处理单元的PE序列的次序每隔10个PE就选择一个PE作为反馈点。当神经网络的计算需求发生变化而导致块划分和状态展开方式改变,自律模式反馈器820将这一信息传递给作为反馈点的PE,再通过让多个反馈点的TL各自向PE序列靠前的方向传递从而加快整个PE序列的状态更新。神经网络算子分析模块830与输入张量组块划分模块806和自律模式反馈器820通信地连接。神经网络算子分析模块830按照图6所示的方式,针对不同类型的神经网络计算进行分析,并对输入张量的不同部分按照不同状态展开方式,据此确定自律式计算阵列802的各个流处理单元所对应的分组、块及状态展开模式。也就是说,神经网络算子分析模块830负责实现对输入张量的不同部分按照不同状态展开方式执行对应自律模式下运算的算法。神经网络算子分析模块830还用于控制输入张量组块划分模块806以便进行适当的分组和分块及状态展开操作,还用于控制自律模式反馈器820以便将有关信息传递给作为反馈点的PE。辅助PE用于配合各个流处理单元以便实现多样化的神经网络计算,例如通过流处理单元实现卷积层的计算而通过辅助PE实现下采样或者求均值计算,从而实现池化层的计算。
结合图1至图8,神经网络加速器800通过输入张量组块划分模块806将输入张量的不同部分按照不同状态展开方式并输送到对应流处理单元执行对应自律模式下运算,通过自律式计算阵列802和自律模式反馈器820实现了在不利用外部控制的前提下根据各卷积层的计算参数如卷积核大小和输入输出特征图尺寸等的变化而调整特定流处理单元的PE序列的分组方式,通过流处理单元和辅助PE的结合实现了高效处理占比高的卷积层的计算同时也能应对不同类型的神经网络算子,并且可以适用于任意维度的输入张量和任意维度的卷积核张量。应当理解的是,神经网络加速器800所示的流处理单元的个数以及辅助PE的个数仅为示例性,神经网络加速器800可以包括任意数量的流处理单元和任意数量的辅助PE。图1至图8所示的输入张量和卷积核张量都是三维形式,神经网络加速器800也可以适用于任意维度的输入张量和任意维度的卷积核张量。
请参阅图9,图9示出了本申请实施例提供的包括图8所示的神经网络加速器的计算机***的框图。如图9所示,计算机***900包括通用处理器902,主存储器904,总线接口906,三个神经网络加速器910、920和930。其中,神经网络加速器910、920和930都具有图8所示的神经网络加速器800的相似结构,在此不再赘述。通用处理器902是传统的处理器,神经网络加速器910、920和930用于提供针对神经网络计算需求的高效高速计算。通用处理器902根据实际需求调用一个或者多个神经网络加速器,可以让多个神经网络加速器处理同一个任务或者不同任务,从而提高整体的利用率。一个或者多个神经网络加速器还可以作为虚拟化或者云服务提供给第三方。应当理解的是,图9所示的神经网络加速器的数量仅为示例性,计算机***900可以有任意数量的神经网络加速器。
以上是本申请实施例的实施方式,应当指出,本申请具体实施例描述的方法中的步骤可以根据实际需要进行顺序调整、合并和删减。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。可以理解的是,本申请实施例以及附图所示的结构并不构成对有关装置或***的具体限定。在本申请另一些实施例中,有关装置或***可以包括比具体实施例和附图更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。本领域技术人员将理解,在不脱离本申请具体实施例的精神和范围的情况下,可以对具体实施例记载的方法和设备的布置,操作和细节进行各种修改或变化;在不脱离本申请实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本申请的保护范围。
Claims (17)
1.一种神经网络加速器,其特征在于,所述神经网络加速器包括:
多个PE,其中,所述多个PE分成多个组,所述多个组的每一个组对应输入张量的一部分,与该组对应的输入张量的一部分在神经网络算子下的运算按照与该组对应的状态展开方式展开成多种状态,该组所包括的PE与所述多种状态一一对应并执行所述神经网络算子在对应状态下的运算,
所述神经网络算子包括与卷积核张量进行卷积运算,所述输入张量根据所述卷积核张量在第一滑动方向上的维度而确定多个块,所述多个块与所述多个组一一对应,所述多个块的每一个块在所述神经网络算子下的运算根据所述卷积核张量在所述第一滑动方向上的维度和第一滑动步长而展开成与该块对应的该组所包括的PE所对应的多种状态,
所述多个块的每一个块在所述神经网络算子下的运算被展开而得到的多种状态各自对应所述卷积核张量在该块中按照所述第一滑动步长在所述第一滑动方向上逐次滑动时所覆盖的所述输入张量的各个输入子张量,所述多个组的每一个组所包括的PE执行所述神经网络算子在对应状态下的运算,包括:执行与所述对应状态对应的输入子张量和所述卷积核张量之间的卷积运算。
2.根据权利要求1所述的神经网络加速器,其特征在于,所述多个块彼此之间互不重叠,所述多个块中的每一个块在所述第一滑动方向上的维度与所述卷积核张量在所述第一滑动方向上的维度相同。
3.根据权利要求1所述的神经网络加速器,其特征在于,所述多个PE组成PE序列,所述多个组在所述PE序列上分布且彼此互不重叠,所述PE序列的每一个PE将包括该PE所在的组和该PE在该PE所在的组内的次序的跟踪逻辑TL传递给在所述PE序列中紧邻在前的PE。
4.根据权利要求3所述的神经网络加速器,其特征在于,所述PE序列的每一个PE根据所接收的TL确定该PE所在的组和该PE在该PE所在的组内的次序,从而执行所述神经网络算子在对应状态下的运算。
5.根据权利要求3所述的神经网络加速器,其特征在于,所述神经网络算子的计算参数的变化被反馈给所述PE序列的最后一个PE并用于改变所述最后一个PE所传递的TL。
6.根据权利要求3所述的神经网络加速器,其特征在于,所述神经网络算子的计算参数的变化被反馈给所述PE序列的至少两个PE并用于改变所述至少两个PE所传递的TL,所述至少两个PE包括所述PE序列的最后一个PE。
7.根据权利要求1所述的神经网络加速器,其特征在于,所述多个PE组成PE序列,所述多个组在所述PE序列上分布且彼此互不重叠,所述PE序列的每一个PE从同一组合逻辑读取各自的TL,所述PE序列的每一个PE根据各自的PE确定该PE所在的组和该PE在该PE所在的组内的次序以及该PE的输出对象从而执行所述神经网络算子在对应状态下的运算,所述组合逻辑根据所述PE序列的每一个PE的TL确定。
8.根据权利要求7所述的神经网络加速器,其特征在于,所述神经网络算子的计算参数的变化被反馈给所述PE序列的至少一个PE并用于改变所述至少一个PE的TL从而改变所述组合逻辑。
9.根据权利要求5、6或者8中任一项所述的神经网络加速器,其特征在于,所述神经网络算子的计算参数的变化包括,所述输入张量的尺寸,所述卷积核张量的尺寸或者所述第一滑动步长的变化。
10.根据权利要求1所述的神经网络加速器,其特征在于,所述神经网络算子包括池化层计算、全连接层计算或者卷积层计算。
11.一种神经网络加速器,其特征在于,所述神经网络加速器包括:
多个流处理单元,其中,所述多个流处理单元的每一个流处理单元包括多个PE,所述多个PE分成多个组,所述多个组的每一个组对应输入张量的一部分,与该组对应的输入张量的一部分在神经网络算子下的运算按照与该组对应的状态展开方式展开成多种状态,该组所包括的PE与所述多种状态一一对应并执行所述神经网络算子在对应状态下的运算,
所述神经网络算子包括与卷积核张量进行卷积运算,所述输入张量根据所述卷积核张量在第一滑动方向上的维度而确定多个块,所述多个块与所述多个组一一对应,所述多个块的每一个块在所述神经网络算子下的运算根据所述卷积核张量在所述第一滑动方向上的维度和第一滑动步长而展开成与该块对应的该组所包括的PE所对应的多种状态,
所述多个块的每一个块在所述神经网络算子下的运算被展开而得到的多种状态各自对应所述卷积核张量在该块中按照所述第一滑动步长在所述第一滑动方向上逐次滑动时所覆盖的所述输入张量的各个输入子张量,所述多个组的每一个组所包括的PE执行所述神经网络算子在对应状态下的运算,包括:执行与所述对应状态对应的输入子张量和所述卷积核张量之间的卷积运算。
12.根据权利要求11所述的神经网络加速器,其特征在于,所述多个流处理单元的每一个流处理单元的多个PE组成PE序列,所述多个组在所述PE序列上分布且彼此互不重叠,所述PE序列的每一个PE将包括该PE所在的组和该PE在该PE所在的组内的次序的跟踪逻辑TL传递给在所述PE序列中紧邻在前的PE,所述PE序列的每一个PE根据所接收的TL确定该PE所在的组和该PE在该PE所在的组内的次序从而执行所述神经网络算子在对应状态下的运算。
13.根据权利要求12所述的神经网络加速器,其特征在于,所述神经网络加速器还包括:
自律模式反馈器,其中,所述自律模式反馈器用于将所述神经网络算子的计算参数的变化反馈给所述多个流处理单元的至少一个流处理单元的多个PE所组成的PE序列的最后一个PE并用于改变该最后一个PE所传递的TL。
14.根据权利要求11所述的神经网络加速器,其特征在于,所述多个流处理单元的每一个流处理单元的多个PE组成PE序列,所述多个组在所述PE序列上分布且彼此互不重叠,所述PE序列的每一个PE从同一组合逻辑读取各自的TL,所述PE序列的每一个PE根据各自的PE确定该PE所在的组和该PE在该PE所在的组内的次序以及该PE的输出对象从而执行所述神经网络算子在对应状态下的运算,所述组合逻辑根据所述PE序列的每一个PE的TL确定。
15.根据权利要求14所述的神经网络加速器,其特征在于,所述神经网络加速器还包括:
自律模式反馈器,其中,所述自律模式反馈器用于将所述神经网络算子的计算参数的变化反馈给所述多个流处理单元的至少一个流处理单元的多个PE所组成的PE序列的至少一个PE并用于改变该至少一个PE的TL从而改变与该至少一个PE对应的组合逻辑。
16.根据权利要求11所述的神经网络加速器,其特征在于,所述多个流处理单元中至少两个流处理单元处于对偶复用模式并用于并行处理同一输入张量的一部分被对等分割得到的多个输入子张量。
17.一种计算机***,其特征在于,所述计算机***包括根据权利要求1至8、10至16中任一项所述的神经网络加速器,通用处理器和主存储器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110401500.6A CN113159285B (zh) | 2021-04-14 | 2021-04-14 | 神经网络加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110401500.6A CN113159285B (zh) | 2021-04-14 | 2021-04-14 | 神经网络加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113159285A CN113159285A (zh) | 2021-07-23 |
CN113159285B true CN113159285B (zh) | 2023-09-05 |
Family
ID=76890425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110401500.6A Active CN113159285B (zh) | 2021-04-14 | 2021-04-14 | 神经网络加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113159285B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116187391A (zh) * | 2021-11-24 | 2023-05-30 | 华为技术有限公司 | 神经网络模型的处理方法及装置 |
CN114218152B (zh) * | 2021-12-06 | 2023-08-15 | 海飞科(南京)信息技术有限公司 | 流处理方法、处理电路和电子设备 |
CN114331806A (zh) * | 2022-03-17 | 2022-04-12 | 南京砺算科技有限公司 | 图形处理器及图形处理方法 |
CN114781632A (zh) * | 2022-05-20 | 2022-07-22 | 重庆科技学院 | 基于动态可重构脉动张量运算引擎的深度神经网络加速器 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110033086A (zh) * | 2019-04-15 | 2019-07-19 | 北京异构智能科技有限公司 | 用于神经网络卷积运算的硬件加速器 |
CN110046705A (zh) * | 2019-04-15 | 2019-07-23 | 北京异构智能科技有限公司 | 用于卷积神经网络的装置 |
CN110059805A (zh) * | 2019-04-15 | 2019-07-26 | 北京异构智能科技有限公司 | 用于二值阵列张量处理器的方法 |
CN111667051A (zh) * | 2020-05-27 | 2020-09-15 | 上海赛昉科技有限公司 | 适用边缘设备的神经网络加速器及神经网络加速计算方法 |
CN111931918A (zh) * | 2020-09-24 | 2020-11-13 | 深圳佑驾创新科技有限公司 | 神经网络加速器 |
CN112596872A (zh) * | 2020-12-15 | 2021-04-02 | 北京灵汐科技有限公司 | 任务调度、预处理、处理方法及设备、处理单元、介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190332925A1 (en) * | 2018-04-30 | 2019-10-31 | International Business Machines Corporation | Neural hardware accelerator for parallel and distributed tensor computations |
-
2021
- 2021-04-14 CN CN202110401500.6A patent/CN113159285B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110033086A (zh) * | 2019-04-15 | 2019-07-19 | 北京异构智能科技有限公司 | 用于神经网络卷积运算的硬件加速器 |
CN110046705A (zh) * | 2019-04-15 | 2019-07-23 | 北京异构智能科技有限公司 | 用于卷积神经网络的装置 |
CN110059805A (zh) * | 2019-04-15 | 2019-07-26 | 北京异构智能科技有限公司 | 用于二值阵列张量处理器的方法 |
CN111667051A (zh) * | 2020-05-27 | 2020-09-15 | 上海赛昉科技有限公司 | 适用边缘设备的神经网络加速器及神经网络加速计算方法 |
CN111931918A (zh) * | 2020-09-24 | 2020-11-13 | 深圳佑驾创新科技有限公司 | 神经网络加速器 |
CN112596872A (zh) * | 2020-12-15 | 2021-04-02 | 北京灵汐科技有限公司 | 任务调度、预处理、处理方法及设备、处理单元、介质 |
Non-Patent Citations (1)
Title |
---|
基于GPU 加速的结构张量引导的PDE滤波算法;赵杨;《信息通信》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113159285A (zh) | 2021-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113159285B (zh) | 神经网络加速器 | |
CN107578098B (zh) | 基于脉动阵列的神经网络处理器 | |
WO2021190127A1 (zh) | 一种数据处理方法和数据处理设备 | |
US5544336A (en) | Parallel data processing system which efficiently performs matrix and neurocomputer operations, in a negligible data transmission time | |
US5506998A (en) | Parallel data processing system using a plurality of processing elements to process data and a plurality of trays connected to some of the processing elements to store and transfer data | |
KR20150016089A (ko) | 신경망 컴퓨팅 장치 및 시스템과 그 방법 | |
EP0421639B1 (en) | Parallel data processing system | |
Kung | Computational models for parallel computers | |
CN104145281A (zh) | 神经网络计算装置和***及其方法 | |
US20210312320A1 (en) | Machine learning network implemented by statically scheduled instructions, with compiler | |
US20200311183A1 (en) | Matrix multiplication engine using pipelining | |
Iakymchuk et al. | Fast spiking neural network architecture for low-cost FPGA devices | |
CN111047045A (zh) | 机器学习运算的分配***及方法 | |
US20230195836A1 (en) | One-dimensional computational unit for an integrated circuit | |
US11687831B1 (en) | Method, product, and apparatus for a multidimensional processing array for hardware acceleration of convolutional neural network inference | |
CN111178492A (zh) | 计算装置及相关产品、执行人工神经网络模型的计算方法 | |
Wah et al. | Efficient mapping of neural networks on multicomputers | |
CN114902242A (zh) | 用于加速神经网络卷积和训练的***和方法 | |
Shams et al. | Parallel implementations of neural networks | |
Li et al. | Fpga-based object detection acceleration architecture design | |
JP2825133B2 (ja) | 並列データ処理方式 | |
Novokhodko et al. | A parallel implementation of the batch backpropagation training of neural networks | |
Paul et al. | Back-propagation algorithm achieving 5 gops on the virtex-e | |
Maria et al. | 1d and 2d systolic implementations for radial basis function networks | |
Kumar et al. | Algorithmic mapping of neural network models onto parallel SIMD machines |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231016 Address after: Room 1401, No.1 Yinfeng 1st Street, Nansha Street, Nansha District, Guangzhou City, Guangdong Province, 510000 Patentee after: Guangzhou International Artificial Intelligence Industry Research Institute Co.,Ltd. Address before: Room 908, 8 Jingang Avenue, Nansha District, Guangzhou, Guangdong 511400 Patentee before: Guangzhou Fangxin Technology Co.,Ltd. |
|
TR01 | Transfer of patent right |