CN111160542B - 集成电路芯片装置及相关产品 - Google Patents
集成电路芯片装置及相关产品 Download PDFInfo
- Publication number
- CN111160542B CN111160542B CN201911401046.3A CN201911401046A CN111160542B CN 111160542 B CN111160542 B CN 111160542B CN 201911401046 A CN201911401046 A CN 201911401046A CN 111160542 B CN111160542 B CN 111160542B
- Authority
- CN
- China
- Prior art keywords
- processing circuit
- data
- basic
- basic processing
- circuit
- 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
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
-
- 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)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Image Processing (AREA)
- Advance Control (AREA)
Abstract
本披露提供一种集成电路芯片装置及相关产品,所述集成电路芯片装置包括:主处理电路以及多个基础处理电路;所述主处理电路或多个基础处理电路中至少一个电路包括:数据类型运算电路;所述数据类型运算电路,用于执行浮点类型数据与定点类型数据之间的转换;所述多个基础处理电路呈阵列分布;每个基础处理电路与相邻的其他基础处理电路连接,所述主处理电路连接第1行的n个基础处理电路、第m行的n个基础处理电路以及第1列的m个基础处理电路。本披露提供的技术方案具有计算量小,功耗低的优点。
Description
技术领域
本披露涉及神经网络领域,尤其涉及一种集成电路芯片装置及相关产品。
背景技术
人工神经网络(Artificial Neural Network,即ANN),是20世纪80年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。现有的神经网络的运算基于CPU(Central Processing Unit,中央处理器)或GPU(英文:Graphics Processing Unit,图形处理器)来实现神经网络的运算,此种运算的计算量大,功耗高。
发明内容
本披露实施例提供了一种集成电路芯片装置及相关产品,可提升计算装置的处理速度,提高效率。
第一方面,提供一种集成电路芯片装置,所述集成电路芯片装置包括:主处理电路以及多个基础处理电路;所述主处理电路或多个基础处理电路中至少一个电路包括:数据类型运算电路;所述数据类型运算电路,用于执行浮点类型数据与定点类型数据之间的转换;
所述多个基础处理电路呈阵列分布;每个基础处理电路与相邻的其他基础处理电路连接,所述主处理电路连接第1行的n个基础处理电路、第m行的n个基础处理电路以及第1列的m个基础处理电路;
所述主处理电路,用于执行神经网络运算中的各个连续的运算以及和与其相连的所述基础处理电路传输数据;
所述多个基础处理电路,用于依据传输的数据以并行方式执行神经网络中的运算,并将运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路。
第二方面,提供一种神经网络运算装置,所述神经网络运算装置包括一个或多个第一方面提供的集成电路芯片装置。
第三方面,提供一种组合处理装置,所述组合处理装置包括:第二方面提供的神经网络运算装置、通用互联接口和通用处理装置;
所述神经网络运算装置通过所述通用互联接口与所述通用处理装置连接。
第四方面,提供一种芯片,所述芯片集成第一方面的装置、第二方面的装置或第三方面的装置。
第五方面,提供一种电子设备,所述电子设备包括第四方面的芯片。
第六方面,提供一种神经网络的运算方法,所述方法应用在集成电路芯片装置内,所述集成电路芯片装置包括:第一方面所述的集成电路芯片装置,所述集成电路芯片装置用于执行神经网络的运算。
可以看出,通过本披露实施例,提供数据转换运算电路将数据块的类型进行转换后运算,节省了传输资源以及计算资源,所以其具有功耗低,计算量小的优点。
附图说明
图1a是一种集成电路芯片装置结构示意图。
图1b是另一种集成电路芯片装置结构示意图。
图1c是一种基础处理电路的结构示意图。
图1d是一种主处理电路的结构示意图。
图1e为一种定点数据类型的示意结构图。
图2a是一种基础处理电路的使用方法示意图。
图2b是一种主处理电路传输数据示意图。
图2c是矩阵乘以向量的示意图。
图2d是一种集成电路芯片装置结构示意图。
图2e是又一种集成电路芯片装置结构示意图。
图2f是矩阵乘以矩阵的示意图。
图3a为卷积输入数据示意图。
图3b为卷积核示意图。
图3c为输入数据的一个三维数据块的运算窗口示意图。
图3d为输入数据的一个三维数据块的另一运算窗口示意图。
图3e为输入数据的一个三维数据块的又一运算窗口示意图.
图4a为神经网络正向运算示意图。
图4b为神经网络反向运算示意图。
具体实施方式
为了使本技术领域的人员更好地理解本披露方案,下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
在第一方面提供的装置中,所述主处理电路,用于获取待计算的数据块以及运算指令,通过所述数据类型运算电路将所述待计算的数据块转换成定点类型的数据块,依据该运算指令对所述定点类型的待计算的数据块划分成分发数据块以及广播数据块;对所述分发数据块进行拆分处理得到多个基本数据块,将所述多个基本数据块分发至与其连接的基础处理电路,将所述广播数据块广播至与其连接的基础处理电路;
所述基础处理电路,用于对所述基本数据块与所述广播数据块以定点数据类型执行内积运算得到运算结果,将所述运算结果发送至所述主处理电路;
或将所述基本数据块与所述广播数据块转发给其他基础处理电路以定点数据类型执行内积运算得到运算结果,将所述运算结果发送至所述主处理电路;
所述主处理电路,用于通过所述数据类型运算电路将对所述运算结果转换成浮点类型数据,将浮点类型数据处理得到所述待计算的数据块以及运算指令的指令结果。
在第一方面提供的装置中,所述主处理电路,具体用于将所述广播数据块通过一次广播发送至与其连接的所述基础处理电路。
在第一方面提供的装置中,所述基础处理电路,具体用于将所述基本数据块与所述广播数据块以定点数据类型执行内积处理得到内积处理结果,将所述内积处理结果累加得到运算结果,将所述运算结果发送至所述主处理电路。
在第一方面提供的装置中,所述主处理电路,用于在如所述运算结果为内积处理的结果时,对所述运算结果累加后得到累加结果,将该累加结果排列得到所述待计算的数据块以及运算指令的指令结果。
在第一方面提供的装置中,所述主处理电路,具体用于将所述广播数据块分成多个部分广播数据块,将所述多个部分广播数据块通过多次广播至所述基础处理电路;所述多个部分广播数据块组合形成所述广播数据块。
在第一方面提供的装置中,所述基础处理电路,具体用于将所述部分广播数据块与所述基本数据块以定点数据类型执行一次内积处理后得到内积处理结果,将所述内积处理结果累加得到部分运算结果,将所述部分运算结果发送至所述主处理电路。
在第一方面提供的装置中,所述基础处理电路,具体用于复用n次该部分广播数据块执行该部分广播数据块与该n个基本数据块内积运算得到n个部分处理结果,将n个部分处理结果分别累加后得到n个部分运算结果,将所述n个部分运算结果发送至主处理电路,所述n为大于等于2的整数。
在第一方面提供的装置中,所述主处理电路包括:主寄存器或主片上缓存电路;
所述基础处理电路包括:基本寄存器或基本片上缓存电路。
在第一方面提供的装置中,所述主处理电路包括:向量运算器电路、算数逻辑单元电路、累加器电路、矩阵转置电路、直接内存存取电路、数据类型运算电路或数据重排电路中的一种或任意组合。
在第一方面提供的装置中,所述主处理电路,用于获取待计算的数据块以及运算指令,依据该运算指令对所述待计算的数据块划分成分发数据块以及广播数据块;对所述分发数据块进行拆分处理得到多个基本数据块,将所述多个基本数据块分发至与其连接的基础处理电路,将所述广播数据块广播至与其连接的基础处理电路;
所述基础处理电路,用于对所述基本数据块与所述广播数据块转换成定点类型的数据块,依据定点类型的数据块执行内积运算得到运算结果,将所述运算结果转换成浮点数据后发送至所述主处理电路;
或对所述基本数据块与所述广播数据块转换成定点类型的数据块,将定点类型的数据块转发给其他基础处理电路执行内积运算得到运算结果,将所述运算结果转换成浮点数据后发送至所述主处理电路;
所述主处理电路,用于对所述运算结果处理得到所述待计算的数据块以及运算指令的指令结果。
在第一方面提供的装置中,所述数据为:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合。
在第一方面提供的装置中,如所述运算指令为乘法指令,所述主处理电路确定乘数数据块为广播数据块,被乘数数据块为分发数据块;
或如所述运算指令为卷积指令,所述主处理电路确定卷积输入数据块为广播数据块,卷积核为分发数据块。
在第六方面提供的方法中,所述神经网络的运算包括:卷积运算、矩阵乘矩阵运算、矩阵乘向量运算、偏执运算、全连接运算、GEMM运算、GEMV运算、激活运算中的一种或任意组合。
参阅图1a,图1a为本披露提供的一种集成电路芯片装置,该集成电路芯片装置包括:主处理电路和多个基础处理电路,所述多个基础处理电路呈阵列排布(m*n阵列),其中,m、n的取值范围为大于等于1的整数且m、n中至少有一个值大于等于2。对于m*n阵列分布的多个基础处理电路,每个基础处理电路与相邻的基础处理电路连接,所述主处理电路连接多个基础处理电路的k个基础处理电路,所述k个基础处理电路可以为:第1行的n个基础处理电路、第m行的n个基础处理电路以及第1列的m个基础处理电路。如图1a所示的集成电路芯片装置,主处理电路和/或多个基础处理电路可以包括数据类型转换运算电路,具体的多个基础处理电路中可以有部分基础处理电路包括数据类型转换电路,例如,在一个可选的技术方案中,可以将k个基础处理电路配置数据类型转换电路,这样n个基础处理电路可以分别负责对本列的m个基础处理电路的数据进行数据类型转换步骤。此设置能够提高运算效率,降低功耗,因为对于第1行的n个基础处理电路来说,由于其最先接收到主处理电路发送的数据,那么将该接收到的数据转换成定点类型的数据可以减少后续基础处理电路的计算量以及与后续基础处理电路的数据传输的量,同理,对于第一列的m个基础处理电路配置数据类型转换电路也具有计算量小和功耗低的优点。另外,依据该结构,主处理电路可以采用动态的数据发送策略,例如,主处理电路向第1列的m个基础处理电路广播数据,主处理电路向第1行的n个基础处理电路发送分发数据,此优点是,通过不同的数据输入口传递不同的数据到基础处理电路内,这样基础处理电路可以不区分该接收到的数据是何种数据,只需要确定该数据从哪个接收端口接收即可以获知其属于何种数据。
所述主处理电路,用于执行神经网络运算中的各个连续的运算以及和与其相连的所述基础处理电路传输数据;上述连续的运算但不限于:累加运算、ALU运算、激活运算等等运算。
所述多个基础处理电路,用于依据传输的数据以并行方式执行神经网络中的运算,并将运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路。上述并行方式执行神经网络中的运算包括但不限于:内积运算、矩阵或向量乘法运算等等。
主处理电路可以包括:数据发送电路、数据接收电路或接口,该数据发送电路可以集成数据分发电路以及数据广播电路,当然在实际应用中,数据分发电路以及数据广播电路也可以分别设置。对于广播数据,即需要发送给每个基础处理电路的数据。对于分发数据,即需要有选择的发送给部分基础处理电路的数据,具体的,如卷积运算,卷积运算的卷积输入数据需要发送给所有的基础处理电路,所有其为广播数据,卷积核需要有选择的发送给部分基础数据块,所以卷积核为分发数据。分发数据具体的选择发送给那个基础处理电路的方式可以由主处理电路依据负载以及其他分配方式进行具体的确定。对于广播发送方式,即将广播数据以广播形式发送至每个基础处理电路。(在实际应用中,通过一次广播的方式将广播数据发送至每个基础处理电路,也可以通过多次广播的方式将广播数据发送至每个基础处理电路,本披露具体实施方式并不限制上述广播的次数),对于分发发送方式,即将分发数据有选择的发送给部分基础处理电路。
主处理电路(如图1d所示)可以包括寄存器和/或片上缓存电路,该主处理电路还可以包括:控制电路、向量运算器电路、ALU(arithmetic and logic unit,算数逻辑单元)电路、累加器电路、DMA(Direct Memory Access,直接内存存取)电路等电路,当然在实际应用中,上述主处理电路还可以添加,转换电路(例如矩阵转置电路)、数据重排电路或激活电路等等其他的电路。
每个基础处理电路可以包括基础寄存器和/或基础片上缓存电路;每个基础处理电路还可以包括:内积运算器电路、向量运算器电路、累加器电路等中一个或任意组合。上述内积运算器电路、向量运算器电路、累加器电路都可以是集成电路,上述内积运算器电路、向量运算器电路、累加器电路也可以为单独设置的电路。
可选的,对于第m行n个基础处理电路的累加器电路可以执行内积运算的累加运算,因为对于第m行基础处理电路来说,其能够接收到本列所有的基础处理电路的乘积结果,而将内积运算的累加运算通过第m行的n个基础处理电路执行内积运算的累加运算,这样能够对计算资源进行有效的分配,具有节省功耗的优点。此技术方案尤其对于m数量较大时更为适用。
对于数据类型转换可以由主处理电路来分配执行的电路,具体的,可以通过显示或隐式的方式来分配执行的电路,对于显示方式,主处理电路可以配置一个特殊指示或指令,当基础处理电路接收到该特殊指示或指令时,确定执行数据类型转换,如基础处理电路未接收到特殊指示或指令时,确定不执行数据类型转换。又如,可以以暗示的方式来执行,例如,基础处理电路接收到数据类型为浮点类型的数据且确定需要执行内积运算时,将该数据类型转换成定点类型的数据。对于显示配置的方式,特殊指令或指示可以配置一个递减序列,该递减序列的每经过一个基础处理电路,数值减1,基础处理电路读取该递减序列的值,如该值大于零,则执行数据类型转换,如该值等于或小于零,则不执行数据类型转换。此设置是依据阵列分配的基础处理电路所配置的,例如对于第i列的m个基础处理电路来说,主处理电路需要前面5个基础处理电路执行数据类型转换,则主处理电路下发一个特殊指令,该特殊指令包含有递减序列,该递减序列的初始值可以为5,则每经过一个基础处理电路,递减序列的值即减1,到第5个基础处理电路时,该递减序列的值为1,到第6个基础处理电路时,该递减序列为0,此时第6个基础处理电路将不在执行该数据类型转换,此种方式可以使得主处理电路可以动态的配置数据类型转换的执行主体以及执行次数。
本披露一个实施例提供一种集成电路芯片装置,包括一个主处理电路(也可以称为主单元)和多个基础处理电路(也可以称为基础单元);实施例的结构如图1b所示;其中,虚线框中是所述神经网络运算装置的内部结构;灰色填充的箭头表示主处理电路和基础处理电路阵列之间的数据传输通路,空心箭头表示基础处理电路阵列中各个基础处理电路(相邻基础处理电路)之间的数据传输通路。其中,基础处理电路阵列的长宽长度可以不同,即m、n的取值可以不同,当然也可以相同,本披露并不限制上述取值的具体值。
基础处理电路的电路结构如图1c所示;图中虚线框表示基础处理电路的边界,与虚线框交叉的粗箭头表示数据输入输出通道(指向虚线框内是输入通道,指出虚线框是输出通道);虚线框中的矩形框表示存储单元电路(寄存器和/或片上缓存),包括输入数据1,输入数据2,乘法或内积结果,累加数据;菱形框表示运算器电路,包括乘法或内积运算器,加法器。
本实施例中,所述神经网络运算装置包括一个主处理电路和16个基础处理电路(16个基础处理电路仅仅为了举例说明,在实际应用中,可以采用其他的数值);
本实施例中,基础处理电路有两个数据输入接口,两个数据输出接口;在本例的后续描述中,将横向的输入接口(图1b中指向本单元的横向箭头)称作输入0,竖向的输入接口(图1b中指向本单元的竖向箭头)称作输入1;将每一个横向的数据输出接口(图1b中从本单元指出的横向箭头)称作输出0,竖向的数据输出接口(图1b中从本单元指出的竖向箭头)称作输出1。
每一个基础处理电路的数据输入接口和数据输出接口可以分别连接不同的单元,包括主处理电路与其他基础处理电路;
本例中,基础处理电路0,4,8,12(编号见图1b)这四个基础处理电路的输入0与主处理电路的数据输出接口连接;
本例中,基础处理电路0,1,2,3这四个基础处理电路的输入1与主处理电路的数据输出接口连接;
本例中,基础处理电路12,13,14,15这四个基础处理电路的输出1与主处理电路的数据输入接口相连;
本例中,基础处理电路输出接口与其他基础处理电路输入接口相连接的情况见图1b所示,不再一一列举;
具体地,S单元的输出接口S1与P单元的输入接口P1相连接,表示P单元将可以从其P1接口接收到S单元发送到其S1接口的数据。
本实施例包含一个主处理电路,主处理电路与外部装置相连接(即由输入接口也有输出接口),主处理电路的一部分数据输出接口与一部分基础处理电路的数据输入接口相连接;主处理电路的一部分数据输入接口与一部分基础处理电路的数据输出接口相连。
集成电路芯片装置的使用方法
本披露提供的使用方法中所涉及到的数据可以是任意数据类型的数据,例如,可以是任意位宽的浮点数表示的数据也可以是任意位宽的定点数表示的数据。
该定点类型数据的一种结构示意图如图1e所示,如图1e所示,为一种定点类型数据的表达方法,对于计算系统,1个浮点数据的存储位数为32bit,而对于定点数据,尤其是采用如图1e所示的浮点类型的数据进行数据的表示,其1个定点数据的存储位数可以做到16Bit以下,所以对于此转换来说,可以极大的减少计算器之间的传输开销,另外,对于计算器来说,较少比特位的数据存储的空间也较小,即存储开销会较小,计算量也会减少,即计算开销会减少,所以能够减少计算开销以及存储的开销,但是对于数据类型的转换也是需要有部分的开销的,下面简称转换开销,对于计算量大,数据存储量大的数据,转换开销相对于后续的计算开销、存储开销以及传输开销来说几乎可以忽略不计,所以对于计算量大,数据存储量大的数据,本披露采用了将数据类型转换成定点类型的数据的技术方案,反之,对于计算量小,数据存储量小的数据,此时由于本身计算开销、存储开销以及传输开销就比较小,此时如果使用定点数据,由于定点数据的精度会略低于浮点数据,在计算量较小的前提下,需要保证计算的精度,所以这里将定点类型的数据转换成浮点数据,即通过增加较小的开销来提高计算的精度的目的。
需要在基础处理电路中完成的运算,可以使用下述方法进行:
主处理电路先对数据的类型进行转换然后再传输给基础处理电路运算(例如,主处理电路可以将浮点数转换成位宽更低的定点数再传输给基础处理电路,其优点是可以减少传输数据的位宽,减少传输的总比特数量,基础处理电路执行地位宽定点运算的效率也更高,功耗更低)
基础处理电路可以收到数据后先进行数据类型转化然后再进行计算(例如,基础处理电路收到主处理电路传输过来的浮点数,然后转换为定点数进行运算,提高运算效率,降低功耗)。
基础处理电路计算出结果之后可以先进行数据类型转换然后再传输给主处理电路(例如,基础处理电路计算出的浮点数运算结果可以先转换为低位宽的定点数然后再传输给主处理电路,其好处是降低了传输过程的数据位宽,效率更高,而且节约了功耗)。
基础处理电路的使用方法(如图2a);
主处理电路从装置外部接收待计算的输入数据;
可选地,主处理电路利用本单元的各种运算电路,向量运算电路,内积运算器电路、累加器电路等对数据进行运算处理;
主处理电路通过数据输出接口向基础处理电路阵列(把所有基础处理电路的集合称作基础处理电路阵列)发送数据(如图2b所示);
此处的发送数据的方式可以是向一部分基础处理电路直接发送数据,即多次广播方式;
此处发送数据的方式可以向不同的基础处理电路分别发送不同的数据,即分发方式;
基础处理电路阵列对数据进行计算;
基础处理电路接收到输入数据后进行运算;
可选地,基础处理电路接收到数据后将该数据从本单元的数据输出接口传输出去;(传输给其他没有直接从主处理电路接收到数据的基础处理电路。)
可选地,基础处理电路将运算结果从数据输出接口传输出去;(中间计算结果或者最终计算结果)
主处理电路接收到从基础处理电路阵列返回的输出数据;
可选地,主处理电路对从基础处理电路阵列接收到的数据继续进行处理(例如累加或激活操作);
主处理电路处理完毕,将处理结果从数据输出接口传输给装置外部。
使用所述电路装置完成矩阵乘向量运算;
(矩阵乘向量可以是矩阵中的每一行分别与向量进行内积运算,并将这些结果按对应行的顺序摆放成一个向量。)
下面描述计算尺寸是M行L列的矩阵S和长度是L的向量P的乘法的运算,如下图2c所示。
此方法用到所述神经网络计算装置的全部或者一部分基础处理电路,假设用到了K个基础处理电路;
主处理电路将矩阵S的部分或全部行中的数据发送到k个基础处理电路中的每个基础处理电路;
在一种可选的方案中,主处理电路的控制电路将矩阵S中某行的数据每次发送一个数或者一部分数给某个基础处理电路;(例如,对于每次发送一个数,可以为对于某一个基础处理电路,第1次发送第3行第1个数,第2次发送第3行数据中的第2个数,第3次发送第3行的第3个数……,或者对于每次发送一部分数,第1次发送第3行前两个数(即第1、2个数),第二次发送第3行第3和第4个数,第三次发送第3行第5和第6个数……;)
在一种可选的方案中,主处理电路的控制电路将矩阵S中某几行的数据每次各发送一个数者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3,4,5行每行的第1个数,第2次发送第3,4,5行每行的第2个数,第3次发送第3,4,5行每行的第3个数……,或者第1次发送第3,4,5行每行前两个数,第二次发送第3,4,5行每行第3和第4个数,第三次发送第3,4,5行每行第5和第6个数……。)
主处理电路的控制电路将向量P中的数据逐次发送到第0个基础处理电路;
第0个基础处理电路接收到向量P的数据之后,将该数据发送给与其相连接的下一个基础处理电路,即基础处理电路1;
具体的,有些基础处理电路不能直接从主处理电路处获得计算所需的所有的数据,例如,图2d中的基础处理电路1,只有一个数据输入接口与主处理电路相连,所以只能直接从主处理电路获得矩阵S的数据,而向量P的数据就需要依靠基础处理电路0输出给基础处理电路1,同理,基础处理电路1也要收到数据后也要继续把向量P的数据输出给基础处理电路2。
每一个基础处理电路对接收到的数据进行运算,该运算包括但不限于:内积运算、乘法运算、加法运算等等;
在一种可选方案中,基础处理电路每次计算一组或多组两个数据的乘法,然后将结果累加到寄存器和或片上缓存上;
在一种可选方案中,基础处理电路每次计算一组或多组两个向量的内积,然后将结果累加到寄存器和或片上缓存上;
基础处理电路计算出结果后,将结果从数据输出接口传输出去(即传输给与其连接的其他基础处理电路);
在一种可选方案中,该计算结果可以是内积运算的最终结果或中间结果;
基础处理电路接收到来自其他基础处理电路的计算结果之后,将该数据传输给与其相连接的其他基础处理电路或者主处理电路;
主处理电路接收到各个基础处理电路内积运算的结果,将该结果处理得到最终结果(该处理可以为累加运算或激活运算等等)。
采用上述计算装置实现矩阵乘向量方法的实施例:
在一种可选方案中,方法所用到的多个基础处理电路按照如下图2d或者图2e所示的方式排列;
如图2c所示,主处理电路的数据转换运算电路将矩阵S和矩阵P转换成定点类型的数据;主处理单元的控制电路将矩阵S的M行数据分成K组,分别由第i个基础处理电路负责第i组(该组数据中行的集合记为Ai)的运算;
此处对M行数据进行分组的方法是任意不会重复分配的分组方式;
在一种可选方案中,采用如下分配方式:将第j行分给第j%K(%为取余数运算)个基础处理电路;
在一种可选方案中,对于不能平均分组的情况也可以先对一部分行平均分配,对于剩下的行以任意方式分配。
主处理电路的控制电路每次将矩阵S中部分或全部行中的数据依次发送给对应的基础处理电路;
在一种可选方案中,主处理电路的控制电路每次向第i个基础处理电路发送其负责的第i组数据Mi中的一行数据中的一个或多个数据;
在一种可选方案中,主处理电路的控制电路每次向第i个基础处理电路发送其负责的第i组数据Mi中的部分或全部行中的每行的一个或多个数据;
主处理电路的控制电路将向量P中的数据依次向第1个基础处理电路发送;
在一种可选方案中,主处理电路的的控制电路每次可以发送向量P中的一个或多个数据;
第i个基础处理电路接收到向量P的数据之后发送给与其相连的第i+1个基础处理电路;
每个基础处理电路接收到来自矩阵S中某一行或者某几行中的一个或多个数据以及来自向量P的一个或多个数据后,进行运算(包括但不限于乘法或加法);
在一种可选方案中,基础处理电路每次计算一组或多组两个数据的乘法,然后将结果累加到寄存器和或片上缓存上;
在一种可选方案中,基础处理电路每次计算一组或多组两个向量的内积,然后将结果累加到寄存器和或片上缓存上;
在一种可选方案中,基础处理电路接收到的数据也可以是中间结果,保存在寄存器和或片上缓存上;
基础处理电路将本地的计算结果传输给与其相连接的下一个基础处理电路或者主处理电路;
在一种可选方案中,对应于图2d的结构,只有每列的最后一个基础处理电路的输出接口与主处理电路相连接的,这种情况下,只有最后一个基础处理电路可以直接将本地的计算结果传输给主处理电路,其他基础处理电路的计算结果都要传递给自己的下一个基础处理电路,下一个基础处理电路传递给下下个基础处理电路直至全部传输给最后一个基础处理电路,最后一个基础处理电路将本地的计算结果以及接收到的本列的其他基础处理电路的结果执行累加计算得到中间结果,将中间结果发送至主处理电路;当然还可以为最后一个基础处理电路可以将本列的其他基础电路的结果以及本地的处理结果直接发送给主处理电路。
在一种可选方案中,对应于图2e的结构,每一个基础处理电路都有与主处理电路相连接的输出接口,这种情况下,每一个基础处理电路都直接将本地的计算结果传输给主处理电路;
基础处理电路接收到其他基础处理电路传递过来的计算结果之后,传输给与其相连接的下一个基础处理电路或者主处理电路。
主处理电路接收到M个内积运算的结果,作为矩阵乘向量的运算结果。
使用所述电路装置完成矩阵乘矩阵运算;
下面描述计算尺寸是M行L列的矩阵S和尺寸是L行N列的矩阵P的乘法的运算,(矩阵S中的每一行与矩阵P的每一列长度相同,如图2f所示)
本方法使用所述装置如图1b所示的实施例进行说明;
主处理电路的数据转换运算电路将矩阵S和矩阵P转换成定点类型的数据;
主处理电路的控制电路将矩阵S的部分或全部行中的数据发送到通过横向数据输入接口直接与主处理电路相连的那些基础处理电路(例如,图1b中最上方的灰色填充的竖向数据通路);
在一种可选方案中,主处理电路的控制电路将矩阵S中某行的数据每次发送一个数或者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3行第1个数,第2次发送第3行数据中的第2个数,第3次发送第3行的第3个数……,或者第1次发送第3行前两个数,第二次发送第3行第3和第4个数,第三次发送第3行第5和第6个数……;)
在一种可选方案中,主处理电路的控制电路将矩阵S中某几行的数据每次各发送一个数者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3,4,5行每行的第1个数,第2次发送第3,4,5行每行的第2个数,第3次发送第3,4,5行每行的第3个数……,或者第1次发送第3,4,5行每行前两个数,第二次发送第3,4,5行每行第3和第4个数,第三次发送第3,4,5行每行第5和第6个数……;)
主处理电路的控制电路将矩阵P中的部分或全部列中的数据发送到通过竖向数据输入接口直接与主处理电路相连的那些基础处理电路(例如,图1b中基础处理电路阵列左侧的灰色填充的横向数据通路);
在一种可选方案中,主处理电路的控制电路将矩阵P中某列的数据每次发送一个数或者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3列第1个数,第2次发送第3列数据中的第2个数,第3次发送第3列的第3个数……,或者第1次发送第3列前两个数,第二次发送第3列第3和第4个数,第三次发送第3列第5和第6个数……;)
在一种可选方案中,主处理电路的控制电路将矩阵P中某几列的数据每次各发送一个数者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3,4,5列每列的第1个数,第2次发送第3,4,5列每列的第2个数,第3次发送第3,4,5列每列的第3个数……,或者第1次发送第3,4,5列每列前两个数,第二次发送第3,4,5列每列第3和第4个数,第三次发送第3,4,5列每列第5和第6个数……;)
基础处理电路接收到矩阵S的数据之后,将该数据通过其横向的数据输出接口传输给其相连接下一个基础处理电路(例如,图1b中基础处理电路阵列中间的白色填充的横向的数据通路);基础处理电路接收到矩阵P的数据后,将该数据通过其竖向的数据输出接口传输给与其相连接的下一个基础处理电路(例如,图1b中基础处理电路阵列中间的白色填充的竖向的数据通路);
每一个基础处理电路对接收到的数据进行运算;
在一种可选方案中,基础处理电路每次计算一组或多组两个数据的乘法,然后将结果累加到寄存器和或片上缓存上;
在一种可选方案中,基础处理电路每次计算一组或多组两个向量的内积,然后将结果累加到寄存器和或片上缓存上;
基础处理电路计算出结果后,可以将结果从数据输出接口传输出去;
在一种可选方案中,该计算结果可以是内积运算的最终结果或中间结果;
具体地,如果该基础处理电路有直接与主处理电路相连接的输出接口则从该接口传输结果,如果没有,则向着能够直接向主处理电路输出的基础处理电路的方向输出结果(例如,图1b中,最下面一行基础处理电路将其输出结果直接输出给主处理电路,其他基础处理电路从竖向的输出接口向下传输运算结果)。
基础处理电路接收到来自其他基础处理电路的计算结果之后,将该数据传输给与其相连接的其他基础处理电路或者主处理电路;
向着能够直接向主处理电路输出的方向输出结果(例如,图1b中,最下面一行基础处理电路将其输出结果直接输出给主处理电路,其他基础处理电路从竖向的输出接口向下传输运算结果);
主处理电路接收到各个基础处理电路内积运算的结果,即可得到输出结果。
“矩阵乘矩阵”方法的实施例:
方法用到按照如图1b所示方式排列的基础处理电路阵列,假设有h行,w列;
主处理电路的数据转换运算电路将矩阵S和矩阵P转换成定点类型的数据;
主处理电路的控制电路将矩阵S的h行数据分成h组,分别由第i个基础处理电路负责第i组(该组数据中行的集合记为Hi)的运算;
此处对h行数据进行分组的方法是任意不会重复分配的分组方式;
在一种可选方案中,采用如下分配方式:主处理电路的控制电路将第j行分给第j%h个基础处理电路;
在一种可选方案中,对于不能平均分组的情况也可以先对一部分行平均分配,对于剩下的行以任意方式分配。
主处理电路的控制电路将矩阵P的W列数据分成w组,分别由第i个基础处理电路负责第i组(该组数据中行的集合记为Wi)的运算;
此处对W列数据进行分组的方法是任意不会重复分配的分组方式;
在一种可选方案中,采用如下分配方式:主处理电路的控制电路将第j行分给第j%w个基础处理电路;
在一种可选方案中,对于不能平均分组的情况也可以先对一部分列平均分配,对于剩下的列以任意方式分配。
主处理电路的控制电路将矩阵S的部分或全部行中的数据发送到基础处理电路阵列中每行的第一个基础处理电路;
在一种可选方案中,主处理电路的控制电路每次向基础处理电路阵列中第i行的第一个基础处理电路发送其负责的第i组数据Hi中的一行数据中的一个或多个数据;
在一种可选方案中,主处理电路的控制电路每次向基础处理电路阵列中第i行的第一个基础处理电路发送其负责的第i组数据Hi中的部分或全部行中的每行的一个或多个数据;
主处理电路的控制电路将矩阵P的部分或全部列中的数据发送到基础处理电路阵列中每列的第一个基础处理电路;
在一种可选方案中,主处理电路的控制电路每次向基础处理电路阵列中第i列的第一个基础处理电路发送其负责的第i组数据Wi中的一列数据中的一个或多个数据;
在一种可选方案中,主处理电路的控制电路每次向基础处理电路阵列中第i列的第一个基础处理电路发送其负责的第i组数据Ni中的部分或全部列中的每列的一个或多个数据;
基础处理电路接收到矩阵S的数据之后,将该数据通过其横向的数据输出接口传输给其相连接下一个基础处理电路(例如,图1b中基础处理电路阵列中间的白色填充的横向的数据通路);基础处理电路接收到矩阵P的数据后,将该数据通过其竖向的数据输出接口传输给与其相连接的下一个基础处理电路(例如,图1b中基础处理电路阵列中间的白色填充的竖向的数据通路);
每一个基础处理电路对接收到的数据进行运算;
在一种可选方案中,基础处理电路每次计算一组或多组两个数据的乘法,然后将结果累加到寄存器和或片上缓存上;
在一种可选方案中,基础处理电路每次计算一组或多组两个向量的内积,然后将结果累加到寄存器和或片上缓存上;
基础处理电路计算出结果后,可以将结果从数据输出接口传输出去;
在一种可选方案中,该计算结果可以是内积运算的最终结果或中间结果;
具体地,如果该基础处理电路有直接与主处理电路相连接的输出接口则从该接口传输结果,如果没有,则向着能够直接向主处理电路输出的基础处理电路的方向输出结果(例如,最下面一行基础处理电路将其输出结果直接输出给主处理电路,其他基础处理电路从竖向的输出接口向下传输运算结果)。
基础处理电路接收到来自其他基础处理电路的计算结果之后,将该数据传输给与其相连接的其他基础处理电路或者主处理电路;
向着能够直接向主处理电路输出的方向输出结果(例如,最下面一行基础处理电路将其输出结果直接输出给主处理电路,其他基础处理电路从竖向的输出接口向下传输运算结果);
主处理电路接收到各个基础处理电路内积运算的结果,即可得到输出结果。
以上描述中使用的“横向”,“竖向”等词语只是为了表述图1b所示的例子,实际使用只需要区分出每个单元的“横向”“竖向”接口代表两个不同的接口即可。
使用所述电路装置完成全连接运算:
如果全连接层的输入数据是一个向量(即神经网络的输入是单个样本的情况),则以全连接层的权值矩阵作为矩阵S,输入向量作为向量P,按照所述装置的使用矩阵乘以向量方法执行运算;
如果全连接层的输入数据是一个矩阵(即神经网络的输入是多个样本的情况),则以全连接层的权值矩阵作为矩阵S,输入向量作为矩阵P,或者以全连接层的权值矩阵作为矩阵P,输入向量作为矩阵S,按照所述装置的矩阵乘以矩阵执行运算;
使用所述电路装置完成卷积运算:
下面描述卷积运算,下面的图中一个方块表示一个数据,输入数据用图3a表示(N个样本,每个样本有C个通道,每个通道的特征图的高为H,宽为W),权值也即卷积核用图3b表示(有M个卷积核,每个卷积核有C个通道,高和宽分别为KH和KW)。对于输入数据的N个样本,卷积运算的规则都是一样的,下面解释在一个样本上进行卷积运算的过程,在一个样本上,M个卷积核中的每一个都要进行同样的运算,每个卷积核运算得到一张平面特征图,M个卷积核最终计算得到M个平面特征图,(对一个样本,卷积的输出是M个特征图),对于一个卷积核,要在一个样本的每一个平面位置进行内积运算,然后沿着H和W方向进行滑动,例如,图3c表示一个卷积核在输入数据的一个样本中右下角的位置进行内积运算的对应图;图3d表示卷积的位置向左滑动一格和图3e表示卷积的位置向上滑动一格。
本方法使用所述装置如图1b所示的实施例进行说明;
主处理电路的数据转换运算电路可以将权值的部分或全部卷积核中的数据转换成定点类型的数据,主处理电路的控制电路将权值的部分或全部卷积核中的数据发送到通过横向数据输入接口直接与主处理电路相连的那些基础处理电路(例如,图1b中最上方的灰色填充的竖向数据通路);
在一种可选方案中,主处理电路的控制电路将权值中某个卷积核的数据每次发送一个数或者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3行第1个数,第2次发送第3行数据中的第2个数,第3次发送第3行的第3个数……,或者第1次发送第3行前两个数,第二次发送第3行第3和第4个数,第三次发送第3行第5和第6个数……;)
在一种可选方案中另一种情况是,主处理电路的控制电路将权值中某几个卷积核的数据每次各发送一个数者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3,4,5行每行的第1个数,第2次发送第3,4,5行每行的第2个数,第3次发送第3,4,5行每行的第3个数……,或者第1次发送第3,4,5行每行前两个数,第二次发送第3,4,5行每行第3和第4个数,第三次发送第3,4,5行每行第5和第6个数……;)
主处理电路的控制电路把输入数据按照卷积的位置进行划分,主处理电路的控制电路将输入数据中的部分或全部卷积位置中的数据发送到通过竖向数据输入接口直接与主处理电路相连的那些基础处理电路(例如,图1b中基础处理电路阵列左侧的灰色填充的横向数据通路);
在一种可选方案中,主处理电路的控制电路将输入数据中某个卷积位置的数据每次发送一个数或者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3列第1个数,第2次发送第3列数据中的第2个数,第3次发送第3列的第3个数……,或者第1次发送第3列前两个数,第二次发送第3列第3和第4个数,第三次发送第3列第5和第6个数……;)
在一种可选方案中另一种情况是,主处理电路的控制电路将输入数据中某几个卷积位置的数据每次各发送一个数或者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3,4,5列每列的第1个数,第2次发送第3,4,5列每列的第2个数,第3次发送第3,4,5列每列的第3个数……,或者第1次发送第3,4,5列每列前两个数,第二次发送第3,4,5列每列第3和第4个数,第三次发送第3,4,5列每列第5和第6个数……;)
基础处理电路接收到权值的数据之后,将该数据通过其横向的数据输出接口传输给其相连接下一个基础处理电路(例如,图1b中基础处理电路阵列中间的白色填充的横向的数据通路);基础处理电路接收到输入数据的数据后,将该数据通过其竖向的数据输出接口传输给与其相连接的下一个基础处理电路(例如,图1b中基础处理电路阵列中间的白色填充的竖向的数据通路);
每一个基础处理电路对接收到的数据进行运算;
在一种可选方案中,基础处理电路每次计算一组或多组两个数据的乘法,然后将结果累加到寄存器和/或片上缓存上;
在一种可选方案中,基础处理电路每次计算一组或多组两个向量的内积,然后将结果累加到寄存器和/或片上缓存上;
基础处理电路计算出结果后,可以将结果从数据输出接口传输出去;
在一种可选方案中,该计算结果可以是内积运算的最终结果或中间结果;
具体地,如果该基础处理电路有直接与主处理电路相连接的输出接口则从该接口传输结果,如果没有,则向着能够直接向主处理电路输出的基础处理电路的方向输出结果(例如,图1b中,最下面一行基础处理电路将其输出结果直接输出给主处理电路,其他基础处理电路从竖向的输出接口向下传输运算结果)。
基础处理电路接收到来自其他基础处理电路的计算结果之后,将该数据传输给与其相连接的其他基础处理电路或者主处理电路;
向着能够直接向主处理电路输出的方向输出结果(例如,最下面一行基础处理电路将其输出结果直接输出给主处理电路,其他基础处理电路从竖向的输出接口向下传输运算结果);
主处理电路接收到各个基础处理电路内积运算的结果,即可得到输出结果。
使用所述电路装置完成加偏置操作的方法;
利用主处理电路的向量运算器电路可以实现两个向量或者两个矩阵相加的功能;
利用主处理电路的向量运算器电路可以实现把一个向量加到一个矩阵的每一行上,或者每一个列上的功能。
在一种可选方案中,所述矩阵可以来自所述装置执行矩阵乘矩阵运算的结果;
在一种可选方案中,所述向量可以来自所述装置执行矩阵乘向量运算的结果;
在一种可选方案中,所述矩阵可以来自所述装置的主处理电路从外部接受的数据。
在一种可选方案中,所述向量可以来自所述装置的主处理电路从外部接受的数据。
包括但不限于以上这些数据来源。
使用所述电路装置完成激活函数运算的方法:
利用主处理电路的激活电路,输入一向量,计算出该向量的激活向量;
在一种可选方案中,主处理电路的激活电路将输入向量中的每一个值通过一个激活函数(激活函数的输入是一个数值,输出也是一个数值),计算出一个数值输出到输出向量的对应位置;
在一种可选方案中,激活函数可以是:y=max(m,x),其中x是输入数值,y是输出数值,m是一个常数;
在一种可选方案中,激活函数可以是:y=tanh(x),其中x是输入数值,y是输出数值;
在一种可选方案中,激活函数可以是:y=sigmoid(x),其中x是输入数值,y是输出数值;
在一种可选方案中,激活函数可以是一个分段线性函数;
在一种可选方案中,激活函数可以是任意输入一个数,输出一个数的函数。
在一种可选方案中,输入向量的来源有(包括但不限于):
所述装置的外部数据来源;
在一种可选方案中,输入数据来自所述装置进行矩阵乘向量的运算结果;
在一种可选方案中,输入数据来自所述装置进行矩阵乘矩阵的运算结果;
所述装置的主处理电路计算结果;
在一种可选方案中,输入数据来自所述装置主处理电路实现加偏置之后的计算结果。
使用所述装置实现BLAS(Basic Linear Algebra Subprograms)的方法;
GEMM计算是指:BLAS库中的矩阵-矩阵乘法的运算。该运算的通常表示形式为:C=alpha*op(S)*op(P)+beta*C,其中,A和B为输入的两个矩阵,C为输出矩阵,alpha和beta为标量,op代表对矩阵S或P的某种操作,此外,还会有一些辅助的整数作为参数来说明矩阵的A和B的宽高;
使用所述装置实现GEMM计算的步骤为:
主处理电路在进行OP操作之前可以将输入矩阵S和矩阵P进行数据类型的转换;
主处理电路的转换电路对输入矩阵S和矩阵P进行各自相应的op操作;
在一种可选方案中,op可以为矩阵的转置操作;利用主处理电路的向量运算功能或者数据重排列功能(前面提到了主处理电路具有数据重排列的电路),实现矩阵转置操作,当然在实际应用中,上述OP也可以直接通过转换电路来实现,例如矩阵转置操作时,直接通过矩阵转置电路来实现OP操作;
在一种可选方案中,某个矩阵的op可以为空,OP操作不进行;
利用矩阵乘矩阵的计算方法完成op(S)与op(P)之间的矩阵乘法计算;
利用主处理电路的算术逻辑电路对op(S)*op(P)的结果中的每一个值进行乘以alpha的操作;
在一种可选方案中,alpha为1的情况下乘以alpha操作不进行;
利用主处理电路的算术逻辑电路实现beta*C的运算;
在一种可选方案中,beta为1的情况下,不进行乘以beta操作;
利用主处理电路的算术逻辑电路,实现矩阵alpha*op(S)*op(P)和beta*C之间对应位置相加的步骤;
在一种可选方案中,beta为0的情况下,不进行相加操作;
GEMV计算是指:BLAS库中的矩阵-向量乘法的运算。该运算的通常表示形式为:C=alpha*op(S)*P+beta*C,其中,S为输入矩阵,P为输入的向量,C为输出向量,alpha和beta为标量,op代表对矩阵S的某种操作;
使用所述装置实现GEMV计算的步骤为:
主处理电路在进行OP操作之前可以将输入矩阵S和矩阵P进行数据类型的转换;
主处理电路的转换电路对输入矩阵S进行相应的op操作;
在一种可选方案中,op可以为矩阵的转置操作;利用主处理电路的矩阵转置电路实现矩阵转置操作;
在一种可选方案中,某个矩阵的op可以为空,op操作不进行;
用矩阵乘向量的计算方法完成矩阵op(S)与向量P之间的矩阵-向量乘法计算;
利用主处理电路的算术逻辑电路对op(S)*P的结果中的每一个值进行乘以alpha的操作;
在一种可选方案中,alpha为1的情况下乘以alpha操作不进行;
利用主处理电路的算术逻辑电路,实现beta*C的运算;
在一种可选方案中,beta为1的情况下,不进行乘以beta操作;
利用主处理电路的算术逻辑电路,实现矩阵alpha*op(S)*P和beta*C之间对应位置相加的步骤;
在一种可选方案中,beta为0的情况下,不进行相加操作;
实现数据类型转换
利用主处理电路的数据类型转换运算电路实现将数据类型的转换;
在一种可选方案中,数据类型转化的形式包括但不限于:浮点数转定点数和定点数转浮点数等;
更新权值的方法:
利用主处理电路的向量运算器电路实现神经网络训练过程中的权值更新功能,具体地,权值更新是指使用权值的梯度来更新权值的方法。
在一种可选方案中,使用主处理电路的向量运算器电路对权值和权值梯度这两个向量进行加减运算得到运算结果,该运算结果即为更新权值。
在一种可选方案中,使用主处理电路的向量运算器电路在权值以及权值梯度乘以或除以一个数得到中间权值和中间权值梯度值,向量运算器电路对中间权值和中间权值梯度值进行加减运算得到运算结果,该运算结果即为更新权值。
在一种可选方案中,可以先使用权值的梯度计算出一组动量,然后再使用动量与权值进行加减计算得到更新后的权值。
实现全连接层的反向运算的方法
全连接层的反向运算可以分成两部分,如下图中,实线箭头表示全连接层的正向计算过程,虚线部分表示全连接层的反向计算过程。
从上图可以看出来,可以使用装置的使用所述装置完成矩阵相乘运算的方法完成全连接层的反向运算;
实现卷积层的反向运算;
卷积层的反向运算可以分成两部分,如下图4a中,实线箭头表示卷积层的正向计算过程,如图4b所示,表示卷积层的反向计算过程。
图4a、图4b所示的卷积层的反向运算,可以使用如图1a所示装置采用如图1b所示的装置完成卷积层的反向运算。在执行正向运算或反向运算实际为神经网络的多个运算,该多个运算包括但不限于:矩阵乘以矩阵、矩阵乘以向量、卷积运算、激活运算等等运算中的一种或任意组合,上述运算的方式可以本披露中的描述,这里不在赘述。
本披露实施例提供了一种神经网络处理器板卡,可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、智能家居、家电、多处理器系统、基于微处理器的系统、机器人、可编程的消费电子设备、网络个人计算机(personal computer,PC)、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
以上所述的具体实施例,对本披露的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本披露的具体实施例而已,并不用于限制本披露,凡在本披露的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本披露的保护范围之内。
Claims (10)
1.一种集成电路芯片装置,其特征在于,所述集成电路芯片装置包括:主处理电路以及多个基础处理电路;所述主处理电路包括:数据类型运算电路;所述数据类型运算电路,用于执行浮点类型数据与定点类型数据之间的转换;
所述多个基础处理电路呈阵列分布;每个基础处理电路与相邻的其他基础处理电路连接,所述主处理电路连接第1行的n个基础处理电路、第m行的n个基础处理电路以及第1列的m个基础处理电路;
所述主处理电路,用于获取输入数据块、卷积核数据块以及卷积指令,通过所述数据类型运算电路将所述输入数据块、所述卷积核数据块转换成定点类型的输入数据块、卷积核数据块,依据该卷积指令对定点类型的输入数据块划分成广播数据块,将定点类型的卷积核数据块划分成分发数据块;对所述分发数据块进行拆分处理得到多个基本数据块,将所述多个基本数据块分发至和与所述主处理电路相连的基础处理电路中的至少一个基础处理电路,将所述广播数据块广播至和与所述主处理电路相连的基础处理电路;
所述多个基础处理电路,用于依据定点类型的广播数据块和定点类型的基本数据块以并行方式执行神经网络中的运算得到运算结果,并将该运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路;
所述主处理电路,用于将所述运算结果处理得到所述卷积指令的指令结果。
2.根据权利要求1的集成电路芯片装置,其特征在于,
所述多个基础处理电路,具体用于将所述广播数据块以及接收到的基本数据块以定点数据类型执行多次内积运算得到定点数据类的多个内积结果,将该多个内积结果进行累加得到累加结果,将累加结果作为运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路;
所述主处理电路,用于通过所述数据类型运算电路将定点数据类的运算结果转换成浮点类型的运算结果,将运算结果进行排序得到所述指令结果。
3.根据权利要求1的集成电路芯片装置,其特征在于,
所述多个基础处理电路,具体用于将所述广播数据块以及接收到的基本数据块以定点数据类型执行内积运算得到定点数据类的内积结果,将该内积结果作为运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路;
所述主处理电路,用于通过所述数据类型运算电路将该内积结果转换成浮点类型的内积结果,将所述内积结果执行累加运算得到累加结果,将该累加结果进行排序得到所述指令结果。
4.根据权利要求1-3任意一项所述的集成电路芯片装置,其特征在于,
所述主处理电路,具体用于将所述广播数据块通过一次广播至与所述主处理电路连接的基础处理电路。
5.根据权利要求1-3任意一项所述的集成电路芯片装置,其特征在于,
所述主处理电路,具体用于将所述广播数据块分成多个部分广播数据块,将所述多个部分广播数据块通过多次广播至与所述主处理电路连接的基础处理电路。
6.根据权利要求5所述的集成电路芯片装置,其特征在于,
所述基础处理电路,具体用于将所述部分广播数据块与所述基本数据块以定点数据类型执行内积处理后得到内积处理结果,将所述内积处理结果累加得到部分运算结果,将所述部分运算结果发送至所述主处理电路。
7.根据权利要求5所述的集成电路芯片装置,其特征在于,
所述基础处理电路,具体复用p次该部分广播数据块执行该部分广播数据块与该p个基本数据块执行内积运算得到p组内积运算结果,所述p组内积运算结果与所述p个基本数据块对应,将p组内积运算结果内每组内积运算结果累加后得到p个部分运算结果,将所述p个部分运算结果发送至主处理电路,所述p为大于等于2的整数。
8.根据权利要求1所述的集成电路芯片装置,其特征在于,
如果所述多个基础处理电路为K个基础处理电路,卷积核的个数M<=K则,主处理电路的控制电路,用于给M个基础处理电路分别分发一个卷积核的权值;
如果卷积核的个数M>K,主处理电路的控制电路,用于给每个基础处理电路分别分发一个或多个卷积核的权值。
9.根据权利要求8所述的集成电路芯片装置,其特征在于,
基础处理电路,用于将卷积核权值Ai保存在所述基础处理电路的寄存器和/或片上缓存,所述Ai为多个卷积核权值的集合。
10.一种神经网络运算装置,其特征在于,所述神经网络运算装置包括一个或多个如权利要求1-9任意一项所述的集成电路芯片装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911401046.3A CN111160542B (zh) | 2017-12-14 | 2017-12-14 | 集成电路芯片装置及相关产品 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711346335.9A CN109961136B (zh) | 2017-12-14 | 2017-12-14 | 集成电路芯片装置及相关产品 |
CN201911401046.3A CN111160542B (zh) | 2017-12-14 | 2017-12-14 | 集成电路芯片装置及相关产品 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711346335.9A Division CN109961136B (zh) | 2017-12-14 | 2017-12-14 | 集成电路芯片装置及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111160542A CN111160542A (zh) | 2020-05-15 |
CN111160542B true CN111160542B (zh) | 2023-08-29 |
Family
ID=67018613
Family Applications (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010040822.8A Active CN111242294B (zh) | 2017-12-14 | 2017-12-14 | 集成电路芯片装置及相关产品 |
CN201711346335.9A Active CN109961136B (zh) | 2017-12-14 | 2017-12-14 | 集成电路芯片装置及相关产品 |
CN201911401046.3A Active CN111160542B (zh) | 2017-12-14 | 2017-12-14 | 集成电路芯片装置及相关产品 |
CN201911401050.XA Active CN110909872B (zh) | 2017-12-14 | 2017-12-14 | 集成电路芯片装置及相关产品 |
CN201911333469.6A Active CN110826712B (zh) | 2017-12-14 | 2017-12-14 | 神经网络处理器板卡及相关产品 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010040822.8A Active CN111242294B (zh) | 2017-12-14 | 2017-12-14 | 集成电路芯片装置及相关产品 |
CN201711346335.9A Active CN109961136B (zh) | 2017-12-14 | 2017-12-14 | 集成电路芯片装置及相关产品 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911401050.XA Active CN110909872B (zh) | 2017-12-14 | 2017-12-14 | 集成电路芯片装置及相关产品 |
CN201911333469.6A Active CN110826712B (zh) | 2017-12-14 | 2017-12-14 | 神经网络处理器板卡及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (5) | CN111242294B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109978154A (zh) * | 2017-12-28 | 2019-07-05 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
CN109978151A (zh) * | 2017-12-27 | 2019-07-05 | 北京中科寒武纪科技有限公司 | 神经网络处理器板卡及相关产品 |
EP3783477B1 (en) | 2017-12-27 | 2021-11-17 | Cambricon Technologies Corporation Limited | Integrated circuit chip device |
CN111738432B (zh) * | 2020-08-10 | 2020-12-29 | 电子科技大学 | 一种支持自适应并行计算的神经网络处理电路 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106485321A (zh) * | 2015-10-08 | 2017-03-08 | 上海兆芯集成电路有限公司 | 具有架构神经网络执行单元的处理器 |
EP3154001A2 (en) * | 2015-10-08 | 2017-04-12 | VIA Alliance Semiconductor Co., Ltd. | Neural network unit with neural memory and array of neural processing units that collectively shift row of data received from neural memory |
US9818136B1 (en) * | 2003-02-05 | 2017-11-14 | Steven M. Hoffberg | System and method for determining contingent relevance |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000124406A (ja) * | 1998-10-16 | 2000-04-28 | Synthesis Corp | 集積回路用データ通信装置ならびに集積回路チップおよびこの集積回路チップを用いた集積回路 |
US7609561B2 (en) * | 2006-01-18 | 2009-10-27 | Apple Inc. | Disabling faulty flash memory dies |
US8006021B1 (en) * | 2008-03-27 | 2011-08-23 | Xilinx, Inc. | Processor local bus bridge for an embedded processor block core in an integrated circuit |
CN102057429B (zh) * | 2009-01-09 | 2015-08-05 | Lsi公司 | 用于自适应目标搜索的系统和方法 |
CN101859172B (zh) * | 2009-04-07 | 2012-02-08 | 上海摩波彼克半导体有限公司 | 集成电路SoC芯片实现功耗降低的电路结构及其方法 |
DE102012220365A1 (de) * | 2011-11-10 | 2013-05-16 | Nvidia Corp. | Aufgabe-Thread-Feld-Granularität-Ausführung-Präemption |
CN102495719B (zh) * | 2011-12-15 | 2014-09-24 | 中国科学院自动化研究所 | 一种向量浮点运算装置及方法 |
US20170293471A1 (en) * | 2014-03-28 | 2017-10-12 | Universidad De Málaga | Arithmetic units and related converters |
CN104572011B (zh) * | 2014-12-22 | 2018-07-31 | 上海交通大学 | 基于fpga的通用矩阵定点乘法器及其计算方法 |
US10489703B2 (en) * | 2015-05-20 | 2019-11-26 | Nec Corporation | Memory efficiency for convolutional neural networks operating on graphics processing units |
CN104915322B (zh) * | 2015-06-09 | 2018-05-01 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法 |
CN104866904B (zh) * | 2015-06-16 | 2019-01-01 | 中电科软件信息服务有限公司 | 一种基于spark的遗传算法优化的BP神经网络并行化方法 |
CN105740946B (zh) * | 2015-07-29 | 2019-02-12 | 上海磁宇信息科技有限公司 | 一种应用细胞阵列计算系统实现神经网络计算的方法 |
US10353860B2 (en) * | 2015-10-08 | 2019-07-16 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with neural processing units dynamically configurable to process multiple data sizes |
CN106570559A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 一种基于神经网络的数据处理方法和装置 |
CN105404925A (zh) * | 2015-11-02 | 2016-03-16 | 上海新储集成电路有限公司 | 一种三维神经网络芯片 |
CN105426344A (zh) * | 2015-11-09 | 2016-03-23 | 南京大学 | 基于Spark的分布式大规模矩阵乘法的矩阵计算方法 |
US9870341B2 (en) * | 2016-03-18 | 2018-01-16 | Qualcomm Incorporated | Memory reduction method for fixed point matrix multiply |
CN109358900B (zh) * | 2016-04-15 | 2020-07-03 | 中科寒武纪科技股份有限公司 | 支持离散数据表示的人工神经网络正向运算装置和方法 |
CN107301454B (zh) * | 2016-04-15 | 2021-01-22 | 中科寒武纪科技股份有限公司 | 支持离散数据表示的人工神经网络反向训练装置和方法 |
CN111860811B (zh) * | 2016-04-27 | 2024-01-16 | 中科寒武纪科技股份有限公司 | 一种用于执行人工神经网络全连接层正向运算的装置和方法 |
CN110188870B (zh) * | 2016-04-27 | 2021-10-12 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络自学习运算的装置和方法 |
CN111310904B (zh) * | 2016-04-29 | 2024-03-08 | 中科寒武纪科技股份有限公司 | 一种用于执行卷积神经网络训练的装置和方法 |
CN111860813B (zh) * | 2016-04-29 | 2024-01-16 | 中科寒武纪科技股份有限公司 | 一种用于执行卷积神经网络正向运算的装置和方法 |
CN110929863B (zh) * | 2016-04-29 | 2023-11-28 | 中科寒武纪科技股份有限公司 | 用于执行lstm运算的装置和方法 |
CN107341541B (zh) * | 2016-04-29 | 2021-01-29 | 中科寒武纪科技股份有限公司 | 一种用于执行全连接层神经网络训练的装置和方法 |
CN109934331B (zh) * | 2016-04-29 | 2020-06-19 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络正向运算的装置和方法 |
CN106022468B (zh) * | 2016-05-17 | 2018-06-01 | 成都启英泰伦科技有限公司 | 人工神经网络处理器集成电路及该集成电路的设计方法 |
CN106126481B (zh) * | 2016-06-29 | 2019-04-12 | 华为技术有限公司 | 一种计算系统和电子设备 |
CN107229967B (zh) * | 2016-08-22 | 2021-06-15 | 赛灵思公司 | 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法 |
CN107239823A (zh) * | 2016-08-12 | 2017-10-10 | 北京深鉴科技有限公司 | 一种用于实现稀疏神经网络的装置和方法 |
US10621486B2 (en) * | 2016-08-12 | 2020-04-14 | Beijing Deephi Intelligent Technology Co., Ltd. | Method for optimizing an artificial neural network (ANN) |
CN106502626A (zh) * | 2016-11-03 | 2017-03-15 | 北京百度网讯科技有限公司 | 数据处理方法和装置 |
CN106775599B (zh) * | 2017-01-09 | 2019-03-01 | 南京工业大学 | 递归神经网络的多计算单元粗粒度可重构系统及方法 |
CN106940815B (zh) * | 2017-02-13 | 2020-07-28 | 西安交通大学 | 一种可编程卷积神经网络协处理器ip核 |
CN107273621B (zh) * | 2017-06-21 | 2020-10-09 | 上海研鸥信息科技有限公司 | 一种fpga应用电路的可移植方法 |
CN107451658B (zh) * | 2017-07-24 | 2020-12-15 | 杭州菲数科技有限公司 | 浮点运算定点化方法及系统 |
CN107368857A (zh) * | 2017-07-24 | 2017-11-21 | 深圳市图芯智能科技有限公司 | 图像对象检测方法、系统及模型处理方法、设备、终端 |
-
2017
- 2017-12-14 CN CN202010040822.8A patent/CN111242294B/zh active Active
- 2017-12-14 CN CN201711346335.9A patent/CN109961136B/zh active Active
- 2017-12-14 CN CN201911401046.3A patent/CN111160542B/zh active Active
- 2017-12-14 CN CN201911401050.XA patent/CN110909872B/zh active Active
- 2017-12-14 CN CN201911333469.6A patent/CN110826712B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9818136B1 (en) * | 2003-02-05 | 2017-11-14 | Steven M. Hoffberg | System and method for determining contingent relevance |
CN106485321A (zh) * | 2015-10-08 | 2017-03-08 | 上海兆芯集成电路有限公司 | 具有架构神经网络执行单元的处理器 |
CN106503797A (zh) * | 2015-10-08 | 2017-03-15 | 上海兆芯集成电路有限公司 | 具有神经存储器的神经网络单元以及集体将接收自神经存储器的数据列进行移位的神经处理单元阵列 |
EP3154001A2 (en) * | 2015-10-08 | 2017-04-12 | VIA Alliance Semiconductor Co., Ltd. | Neural network unit with neural memory and array of neural processing units that collectively shift row of data received from neural memory |
Also Published As
Publication number | Publication date |
---|---|
CN110826712A (zh) | 2020-02-21 |
CN110909872B (zh) | 2023-08-25 |
CN111242294B (zh) | 2023-08-25 |
CN110826712B (zh) | 2024-01-09 |
CN109961136A (zh) | 2019-07-02 |
CN111160542A (zh) | 2020-05-15 |
CN110909872A (zh) | 2020-03-24 |
CN109961136B (zh) | 2020-05-19 |
CN111242294A (zh) | 2020-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109902804B (zh) | 一种池化运算方法及装置 | |
CN110197270B (zh) | 集成电路芯片装置及相关产品 | |
CN111160542B (zh) | 集成电路芯片装置及相关产品 | |
CN109993301B (zh) | 神经网络训练装置及相关产品 | |
CN111160541B (zh) | 集成电路芯片装置及相关产品 | |
CN110717583A (zh) | 卷积电路、处理器、芯片、板卡和电子设备 | |
CN113837922B (zh) | 计算装置、数据处理方法及相关产品 | |
CN109993291B (zh) | 集成电路芯片装置及相关产品 | |
CN111091189B (zh) | 集成电路芯片装置及相关产品 | |
CN109993292B (zh) | 集成电路芯片装置及相关产品 | |
CN111767998B (zh) | 集成电路芯片装置及相关产品 | |
CN113807510B (zh) | 集成电路芯片装置及相关产品 | |
CN109993290A (zh) | 集成电路芯片装置及相关产品 | |
CN110197275B (zh) | 集成电路芯片装置及相关产品 | |
CN111767996B (zh) | 集成电路芯片装置及相关产品 | |
CN110197265B (zh) | 集成电路芯片装置及相关产品 | |
CN111767997B (zh) | 集成电路芯片装置及相关产品 | |
CN109615062B (zh) | 一种卷积运算方法及装置 | |
CN110197273A (zh) | 集成电路芯片装置及相关产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |