CN117908830A - 数据处理装置及操作方法、计算装置、存储介质 - Google Patents
数据处理装置及操作方法、计算装置、存储介质 Download PDFInfo
- Publication number
- CN117908830A CN117908830A CN202410089267.6A CN202410089267A CN117908830A CN 117908830 A CN117908830 A CN 117908830A CN 202410089267 A CN202410089267 A CN 202410089267A CN 117908830 A CN117908830 A CN 117908830A
- Authority
- CN
- China
- Prior art keywords
- multiply
- add
- data processing
- configuration
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 76
- 238000003672 processing method Methods 0.000 title description 9
- 238000004364 calculation method Methods 0.000 claims abstract description 52
- 238000000034 method Methods 0.000 claims abstract description 18
- 239000011159 matrix material Substances 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 6
- 238000013528 artificial neural network Methods 0.000 abstract description 40
- 238000004422 calculation algorithm Methods 0.000 abstract description 11
- 230000001131 transforming effect Effects 0.000 abstract 1
- 239000010410 layer Substances 0.000 description 41
- 238000010586 diagram Methods 0.000 description 21
- 238000013527 convolutional neural network Methods 0.000 description 20
- 238000004590 computer program Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000011176 pooling Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000009825 accumulation Methods 0.000 description 3
- 210000004556 brain Anatomy 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 210000002569 neuron Anatomy 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 238000010606 normalization Methods 0.000 description 2
- 230000000638 stimulation Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 239000012792 core layer Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000007830 nerve conduction Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
-
- 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/0464—Convolutional networks [CNN, ConvNet]
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Complex Calculations (AREA)
Abstract
本公开提供一种数据处理装置及其操作方法、计算装置以及存储介质。该数据处理装置包括乘加运算阵列和配置单元,其中,乘加运算阵列包括多个乘加计算单元,配置单元与乘加运算阵列耦接,且配置单元至少具有第一配置状态和第二配置状态,配置单元在第一配置状态时控制多个乘加计算单元分为N组,每组内的M个乘加计算单元配置为彼此耦接以用于将每组中M个计算结果累加,配置单元在第二配置状态时控制多个乘加计算单元分为Q组,每组内的P个乘加计算单元配置为彼此耦接以用于将每组中P个计算结果累加。该数据处理装置能够通过变换乘加运算阵列的配置状态,使得神经网络算法中的参数能够更充分地映射到硬件单元,从而提高硬件单元利用率。
Description
技术领域
本公开的实施例涉及一种数据处理装置及操作方法、计算装置、存储介质。
背景技术
目前,人工智能领域中,深度学习(Deep Learning)技术在图像识别、语音识别、自动驾驶等应用都取得了非常不错的效果。深度学习涉及例如卷积神经网络(CNN)、深度神经网络(DNN)、循环神经网络(RNN)等。神经网络从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络,神经网络处理器为了加快运算速度都会采用乘加运算阵列的方法来实现,并将神经网络算法中的维度映射到乘加运算阵列的各个维度。
公开内容
本公开的一些实施例提供一种数据处理装置,所述数据处理装置包括乘加运算阵列和配置单元,其中,所述乘加运算阵列包括多个乘加计算单元,所述配置单元与所述乘加运算阵列耦接,且所述配置单元至少具有第一配置状态和第二配置状态,所述配置单元在所述第一配置状态时控制所述多个乘加计算单元分为N组,每组内的M个所述乘加计算单元配置为彼此耦接以用于将每组中M个计算结果累加,所述配置单元在所述第二配置状态时控制所述多个乘加计算单元分为Q组,每组内的P个乘加计算单元配置为彼此耦接以用于将每组中P个计算结果累加,其中,M、N、P与Q均为大于1整数,且N与Q不相等。
例如,在本公开一些实施例提供的数据处理装置中,M为3的正整数倍。
例如,在本公开一些实施例提供的数据处理装置中,P为2的正整数次幂。
例如,在本公开一些实施例提供的数据处理装置中,所述控制单元配置为获取计算参数,以根据所述计算参数控制所述配置单元的配置状态。
例如,在本公开一些实施例提供的数据处理装置中,所述控制单元进一步配置为控制所述第一配置状态时的N组所述乘加计算单元并行计算,以及所述第二配置状态时的Q组所述乘加计算单元并行计算。
例如,在本公开一些实施例提供的数据处理装置还包括多个加法器,其中,所述配置单元与所述多个加法器耦接,在所述第一配置状态时为N组所述乘加计算单元每组分配至少一个加法器以累加每组中M个计算结果,在所述第二配置状态时为Q组所述乘加计算单元每组分配至少一个加法器以累加每组中P个计算结果。
本公开的一些实施例还提供一种计算装置,所述计算装置包括上述任一实施例所述的数据处理装置。
本公开的一些实施例还提供一种数据处理装置的操作方法,用于上述任一实施例所述的数据处理装置,所述操作方法包括:接收输入矩阵和卷积核;根据计算参数,控制所述配置单元对所述乘加运算阵列进行配置;使用配置后的所述乘加运算阵列对所述输入矩阵和所述卷积核进行卷积计算。
例如,在本公开一些实施例提供的数据处理装置的操作方法中,所述控制所述配置单元对所述乘加运算阵列进行配置,包括:响应于所述配置单元的配置状态从所述第一配置状态切换为所述第二配置状态,在所述N组乘加计算单元中的选择至少一组作为目标拆分组,其他组作为待分配组,将所述目标拆分组中的乘加计算单元分配至所述待分配组,以使所述多个乘加计算单元分为Q组,或者,响应于所述配置单元的配置状态从所述第二配置状态切换为所述第一配置状态,在所述Q组乘加计算单元中每组选择至少一个乘加计算单元作为目标拆分单元,将所述目标拆分单元合并为至少一个新的组,以使所述多个乘加计算单元分为N组。
本公开的一些实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,其中,所述计算机指令在被处理器执行时用于实现如下步骤:接收输入矩阵和卷积核;根据计算参数,控制所述配置单元对所述乘加运算阵列进行配置;使用配置后的所述乘加运算阵列对所述输入矩阵和所述卷积核进行卷积计算。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1A示出了示例性的卷积神经网络中一个神经元的输入与输出;
图1B示出了示例性的一个卷积层进行多通道卷积运算的示意图;
图1C示出了一种神经网络处理器的架构示意图;
图2示出了本公开至少一实施例提供的一种数据处理装置结构示意图;
图3示出了本公开至少一实施例提供的数据处理装置的配置状态示意图;
图4示出了本公开至少一实施例提供的数据处理装置的另一配置状态示意图;
图5示出了本公开至少一实施例提供的一种数据处理装置的操作方法流程示意图;
图6为本公开一些实施例提供的电子设备的结构示意图;以及
图7为本公开一些实施例提供的存储介质的示意图。
具体实施方式
为使本领域技术人员更好地理解本公开的技术方案,下面将结合附图对本公开实施例作进一步地详细描述,此处描述的具体实施例和附图仅仅用于解释本公开,而非对公开实施例的限定,在不冲突的情况下,本公开的各实施例及实施例中的各特征可相互组合。
为便于描述,本公开实施例的附图中仅示出了与本公开实施例相关的部分,而与本公开实施例无关的部分未在附图中示出。本公开的实施例中所涉及的每个单元、模块可仅对应一个实体结构,也可由多个实体结构组成,或者,多个单元、模块也可集成为一个实体结构。在不冲突的情况下,本公开实施例的流程图和框图中所标注的功能、步骤可按照不同于附图中所标注的顺序发生。
本公开实施例的流程图和框图中,示出了按照本公开各实施例的系统、装置、设备、方法的可能实现的体系架构、功能和操作。流程图或框图中的每个方框可代表一个单元、模块、程序段、代码,其包含用于实现规定的功能的可执行指令。而且,框图和流程图中的每个方框或方框的组合,可用实现规定的功能的基于硬件的系统实现,也可用硬件与计算机指令的组合来实现。
为了保持本公开实施例的以下说明清楚且简明,可省略已知功能和已知部(元)件的详细说明。当本公开实施例的任一部(元)件在一个以上的附图中出现时,该部(元)件在每个附图中由相同或类似的参考标号表示。
神经网络是受大脑神经元结构及神经传导原理启发建立的数学计算模型,基于这类模型实现智能计算的方式称为脑启发计算。例如,神经网络包括多种形式的网络结构,例如,反向传播(Back Propagation,BP)神经网络、卷积神经网络(CNN)、循环神经网络(RNN)、长短期记忆网络(LSTM)等,例如,卷积神经网络还可以细分为全卷积网络、深度卷积网络、U型网络(U-Net)等。
例如,一种通常的卷积神经网络通常包括输入端、输出端以及多个处理层。例如,输入端用于接收待处理的数据,例如待处理图像等,输出端用于输出处理结果,例如处理后图像等,这些处理层可以包括卷积层、池化层、批量标准化层(Batch Normalization,简称BN)、全连接层等,根据卷积神经网络的结构不同,处理层可以包括不同的内容和组合方式。输入数据输入卷积神经网络后,经过若干个处理层得到对应的输出,例如,输入数据可以通过若干个处理层完成卷积、上采样、下采样、标准化、全连接、平坦化等操作。
卷积层是卷积神经网络的核心层,对输入数据(输入图像或输入特征图)应用若干个过滤器,输入数据被用来进行多种类型的特征提取。对于输入数据应用一个过滤器之后得到的结果被称为特征图(feature map),特征图的数目与过滤器的数目相等。一个卷积层输出的特征图可以被输入到下一个层级的卷积层再次处理以得到新的特征图。池化层是夹在连续的卷积层之间的中间层,用于缩减输入数据的规模,也在一定程度上减小过拟合的现象。实现池化的方法有很多种,这些方法包括但不限于:最大值合并(max-pooling)、平均值合并(avg-pooling)、随机合并、欠采样(decimation,例如选择固定的像素)、解复用输出(demuxout,将输入图像拆分为多个更小的图像)等。通常最后一个子采样层或卷积层连接到一个或多个全连接层,全连接层的输出作为最终输出,可得到一个一维矩阵,也就是向量。
图1A抽象地示出了卷积神经网络中一个神经元的输入与输出。如图1A所示,C1、C2等指代不同的信号通道,针对某一个局部感受域(该局部感受域包含多个通道),使用不同的过滤器对该局部感受域的C1、C2等信号通道上的数据进行卷积,卷积结果被输入刺激节点,该刺激节点根据相应的函数进行计算以得到特征信息。例如,卷积神经网络通常为深度卷积神经网络,可以包括至少五层卷积层,例如,VGG-16神经网络具有16层,而GoogLeNet神经网络具有22层,当然,其他神经网络结构可以具有更多的处理层,上述内容仅对神经网络进行示例性介绍,本公开对神经网络的结构不作限制。
图1B示出了一个卷积层进行多通道卷积运算的示意图。如图1B所示,使用M组具有C个通道的R×S的卷积核,对N组具有C个通道的H×W的输入图像(或输入特征图)进行卷积运算,分别得到N组具有M个通道的E×F的输出特征图,因此输出特征图总地包括F/E/M这些维度。
卷积运算具有高并行度的特征,体现在多个卷积核可以和多个输入特征图同时运算。而且,由于神经网络的计算量,尤其是对于具有大尺寸的输入特征图的卷积层的计算量非常大,这通常需要将神经网络中的一个卷积层的计算操作进行分解。例如,对于同一卷积层的不同部分的卷积操作可以彼此独立进行,这些分解后的任务交由多个处理单元并行执行计算,之后再将这些处理单元的计算结果进行合并,得到整个卷积层的计算结果,然后该网络层的计算结果可以作为下一卷积层的输入。
图1C示出了一种神经网络处理器的架构示意图。如图1C所示,该神经网络处理器包括处理单元(PE)阵列110、全局缓存120以及内存130。该处理单元阵列110包括多行和多列(例如12行×12列)处理单元,这些处理单元通过片上互联彼此耦接且共享全局缓存120,该片上互联例如为片上网络(NoC)。每个处理单元具有计算功能,并且例如还可以具有自身的局域缓存,例如包括乘累加器(MAC)以及用于缓存输入的向量(或矩阵)的缓存或寄存器阵列。每个PE可以访问其周围的其他PE、该PE自身的本地缓存和全局缓存。全局缓存120进一步通过例如总线与内存130耦接。
在工作过程中,例如一个网络层(例如卷积层)计算所需的卷积核(Flt)、输入特征图(Ifm)等的数据从内存130读入到全局缓存120中,然后从全局缓存120,卷积核(Flt)、输入图像(Img)被输入到处理单元阵列110进行计算,对于不同图像像素的计算任务被分配到不同的处理单元(即进行映射)。在计算过程产生的部分累加和(Psum1)被暂存到全局缓存中,如果后续的计算中需要之前产生的部分累加和(Psum1)进行进一步的累加运算,则可以再从全局缓存120中将所需的部分累加和(Psum2)读入到处理单元阵列110进行运算。完成一个卷积层的运算所得到的输出特征图(Ofm)可以从全局缓存120中输出到内存130中在保存,例如可用于下一网络层(例如卷积层)的计算所使用。
如上所述神经网络处理器为了加快运算速度都会采用乘加运算阵列的方法来实现,并将神经网络算法中的维度映射到乘加运算阵列的各个维度。然而不同的神经网络算法以及同一神经网络算法的每一层都有着不同通道数以及卷积核的大小,会出现神经网络的维度参数无法整除乘加运算阵列的维度参数进而导致部分乘加运算单元闲置的情况。
例如,卷积神经网络的参数在首层中输入数据的通道数大多为3,例如,卷积神经网络进行图像处理时,RGB图像的输入数据会分为三个通道分别进行处理,且卷积神经网络的卷积核常使用3×3的大小,使得卷积神经网络中乘累加的操作数通常为3的正整数倍。然而,在其他类型的神经网络例如transformer(转换)网络模型中大多数的乘累加运算的操作数数量都是2的正整数次幂,且神经网络处理器的乘加运算阵列大小通常都会2的正整数次幂,例如英伟达的张量计算核心(tensor core)的三个维度都是2的正整数次幂,这能够很好的匹配首层外的大部分网络,但是却对首层不友好,这一方面是不能整除,另一方面,神经网络处理器会有一个维度的数据在做完乘法后将乘积累加到一起。为了提高输入特征图的并行度通常都将累加维度做到了16甚至更大,导致乘加运算阵列在神经网络首层的输入通道方向利用率低。如果神经网络参数在映射到硬件的并行计算单元时因为硬件参数不能同时满足与两种算法参数的整除关系,则将导致部分硬件资源无法参与映射。这些无法参与映射的硬件单元就闲置了起来,降低了硬件利用率。
本公开至少一实施例提供一种数据处理装置,该数据处理装置包括乘加运算阵列和配置单元,其中,该乘加运算阵列包括多个乘加计算单元,配置单元与乘加运算阵列耦接,且配置单元至少具有第一配置状态和第二配置状态。配置单元在第一配置状态时控制多个乘加计算单元分为N组,每组内的M个乘加计算单元配置为彼此耦接以用于将每组中M个计算结果累加,配置单元在第二配置状态时控制多个乘加计算单元分为Q组,每组内的P个乘加计算单元配置为彼此耦接以用于将每组中P个计算结果累加。M、N、P与Q均为大于1整数,且N与Q不相等。
本公开上述实施例能够通过变换配置单元的配置状态,使得数据处理装置与神经网络算法中的参数更匹配,使得输入图、特征图等能够更充分地映射到运算阵列中的乘加计算单元上,让尽可能多的硬件单元参与计算,从而获得更高的硬件单元利用率。
该数据处理装置所配置来处理的神经网络(模型)例如可以为卷积神经网络(CNN)、深度神经网络(DNN)、循环神经网络(RNN)、转换神经网络(transformer)等,该数据处理装置也可以配置为处理其他乘累加计算操作,本公开的实施例对此不做限制。
例如,M为3的正整数倍,例如,P为2的正整数次幂。在本公开的实施例中,例如,因子3和2都是卷积神经网络中较为典型的参数,因此在每组的累加维度上引入因子3和2,能够使得参数映射到硬件单元时拥有更高的灵活性,减少闲置的运算单元,提高硬件利用率。但需要说明的是,本公开其他实施例中,M和P也可以取其他数字作为因子,例如5、7等,本公开的实施例对此不做限制。
图2为本公开至少一实施例提供的一种数据处理装置结构示意图。
如图2所示,该数据处理装置10包括乘加运算阵列101以及配置单元102,该数据处理装置10例如可以作为处理单元,用于处理神经网络计算,乘加运算阵列101中包括多个且排列为阵列的乘加计算单元(MAC)1011,例如,每列乘加计算单元1011可以分为一组,每组乘加计算单元可以分别进行乘法计算并将乘法计算的结果累加。每个乘加计算单元例如包括一个或多个乘法器以及一个或多个加法器。
例如,配置单元包括多个选择器(选择开关),这些选择器与乘加运算阵列101中包括的多个乘加计算单元分别连接,可以在控制信号的控制下进行逻辑运算以对多个乘加计算单元进行组合,由此实现不同的配置状态。
在至少一个示例中,数据处理装置还可以包括控制单元,该控制单元与配置单元通信连接,且配置为接收控制信息且将发送控制信号到配置单元,以控制配置单元实现或保持某一配置状态。例如,多个数据处理装置可以共享控制单元,也即,同一控制单元控制多个数据处理装置的配置单元。
图3为本公开至少一实施例提供的数据处理装置的配置状态示意图。
下面结合图3对本公开如何通过乘加运算阵列实现卷积计算进行说明。
如图3所示,数据处理装置包括乘加运算阵列101、配置单元102以及控制单元103。乘加运算阵列101包括排列为3行4列的乘加计算单元1011,以及多个加法器1012,其中,每个乘加计算单元1011执行一次乘法计算得到一个计算结果;配置单元102与多个加法器1012耦接,此时配置单元102处于第一配置状态,为4组乘加计算单元每组分配2个加法器以累加每组3个计算结果,例如,配置单元102在第二配置状态时为3组乘加计算单元每组分配至少一个加法器以累加每组中4个计算结果(下面将参考图4说明)。
控制单元103配置为获取计算参数以作为控制信息,可以根据计算参数控制配置单元102的配置状态。例如,控制单元103获取的计算参数为3的正整数倍时,控制配置单元102的配置状态为第一配置状态,或者,控制单元103获取的计算参数为2的倍数时,控制配置单元102的配置状态为第二配置状态。例如,图3所示控制单元103控制第一配置状态时的4组乘加计算单元并行计算。
例如,向图3所示的数据处理装置输入一个4×4数据矩阵,卷积神经网络使用一个3×3卷积核对该输入数据进行处理,则需要进行4次卷积操作,每次卷积操作可以拆分为9次乘法操作后将9次乘法操作的结果相加。此时,一列中的3个乘加计算单元1011作为一组,选择一组乘加计算单元1011分别执行3次乘法操作,再将这一组乘加计算单元1011此次执行的全部乘法操作的结果相加,则可以得到一次卷积操作的结果,不同组的乘加计算单元1011执行不同的卷积操作,此时,列方向上全部的乘加计算单元1011都在此次计算中被使用,硬件单元的利用率高。
图4为本公开至少一实施例提供的对应于如图3所示的乘加运算阵列的另一配置状态的示意图。
下面结合图4说明本公开如何通过配置状态转化实现在输入不同计算参数的情况下提高硬件利用率。
当乘累加操作的数量不是3的正整数倍时,例如,对输入的5×5数据使用4×4的卷积核进行处理,此时需要执行4次卷积操作,每次卷积操作可以拆分为16次乘法操作后将16次乘法操作的结果相加。此时,使用每组3个乘加计算单元1011将无法与16次乘法操作进行匹配,执行乘法操作时存在一组中的3个乘加计算单元1011执行次数不等,硬件利用率降低。此时,例如可以通过控制单元103控制配置单元102,将配置单元102的配置状态从第一配置状态转换为第二配置状态,配置单元102控制乘加运算阵列101从3行4列转换为4行3列,每列作为一组。
例如,如图4所示,通过选择器将第二列中的3个乘加计算单元1011分别拆分至另外三列中,使得每列(组)中有4个乘加计算单元1011,此时,每组乘加计算单元1011执行4次乘法操作,再将一组乘加计算单元1011全部乘法操作的结果相加则可以得到一次卷积操作的结果。此时,列方向上全部的乘加计算单元1011都在此次计算中被使用,硬件单元的利用率高。
当前的数据处理装置可以适应累加操作数为3的正整数倍和2的正整数次幂两种场景。当乘累加操作数数量为3的正整数倍时,将这12个运算单元排列成3行4列,同1列的数据相加(对应神经网络算法中1组乘累加运算),不同列之间不相加(不同的列对应神经网络算法中不同的乘累加运算的不同组);当乘累加操作数数量不是3的正整数倍时,将这12个运算单元中选择的1列(图4中以第2列为例)拆分到另外3列,使得这12个运算单元的累加维度变成4(4行),不同列之间不相加。
需要说明的是,在同一数据处理装置中,根据选择器的配置,可以进行列方向以及行方向的扩展,扩展出更多的并行计算单元,以提高算力。
图5为本公开至少一实施例提供的一种数据处理装置的操作方法流程示意图。
本公开至少一实施例还提供一种数据处理装置的操作方法,该操作方法应用于上述任一实施例所述的数据处理装置,如图5所示,该操作方法包括以下步骤S1~S3:
步骤S1、接收输入矩阵和卷积核;
步骤S2、根据计算参数,控制配置单元对乘加运算阵列进行配置;
步骤S3、使用配置后的乘加运算阵列对输入矩阵和卷积核进行卷积计算。
例如,计算参数可以包括与输入矩阵和卷积核大小相关的参数。
例如,可以通过图3所示的控制单元103控制配置单元对乘加运算阵列进行配置。
本公开上述实施例能够适应不同神经网络算法的参数特点,支持变换硬件配置,使得算法参数能够充分映射到硬件上,让更多的硬件单元参与计算,提高硬件单元利用率。
例如,控制配置单元对乘加运算阵列进行配置,包括:响应于配置单元的配置状态从第一配置状态切换为第二配置状态,在N组乘加计算单元中的选择至少一组作为目标拆分组,其他组作为待分配组,将目标拆分组中的乘加计算单元分配至待分配组,以使多个乘加计算单元分为Q组;或者,响应于配置单元的配置状态从第二配置状态切换为第一配置状态,在Q组乘加计算单元中每组选择至少一个乘加计算单元作为目标拆分单元,将目标拆分单元合并为至少一个新的组,以使多个乘加计算单元分为N组。
例如,从第一配置状态转换为第二配置状态可以采用如图4所示将一组乘加计算单元拆分至其他组的,例如,从第二配置状态转换为第一配置状态可以采用与图4相反的过程,将4行3列乘加计算单元中每一列选择1个乘加计算单元组成新的1列,以变为3行4列。
本公开至少一实施例还提供一种计算装置,包括上述任一实施例所述的数据处理装置,例如,可以是如图3或图4所示的数据处理装置。该计算装置例如可以是处理器等任何包括该处理器与处理器配套使用的产品或部件。又例如,该计算装置可以是服务端设备或终端设备,例如终端设备可以为手机、笔记本电脑等。
本公开一些实施例还提供一种计算装置,该计算装置包括上述用于神经网络计算的数据处理装置。该计算装置可以实现为AI加速器,例如可以为通用图像处理器(GPGPU)、张量处理器(TPU)或深度计算单元(DCU)等,或者实现为包括前述AI加速器的电子设备。
图6为本公开一些实施例提供的计算装置,例如,如图6所示,该计算装置200例如用于实施本公开任一实施例提供的数据处理方法。例如,计算装置200可以是个人电脑、笔记本电脑、平板电脑、移动电话等终端设备也可以是工作站、服务器、云服务等。需要注意的是,图6示出的计算装置200仅仅是一个示例,其不会对本公开实施例的功能和使用范围带来任何限制。
如图6所示,计算装置200可以包括处理装置(例如一个或多个中央处理器、一个或多个图形处理器等、上述数据处理装置)210,其可以根据存储在只读存储器(ROM)220中的程序或者从存储装置280加载到随机访问存储器(RAM)230中的程序而执行各种适当的动作和处理。在RAM 230中,还存储有计算装置200操作所需的各种可执行程序和数据。处理装置210、ROM 220以及RAM 230通过总线240彼此相连。输入/输出(I/O)接口250也连接至总线240。
通常,以下装置可以连接至I/O接口250:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计或陀螺仪等的输入装置260;包括例如液晶显示器(LCD)、扬声器或振动器等的输出装置270;包括例如磁带、硬盘等的存储装置280;以及通信装置290。通信装置290可以允许计算装置200与其它计算装置进行无线或有线通信以交换数据。虽然图6示出了包括各种装置的计算装置200,但是应当理解的是,并不要求实施或具备所有示出的装置,计算装置200可以替代地实施或具备更多或更少的装置。
例如,根据本公开的实施例,上述数据处理方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包括用于执行上述数据处理方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置290从网络上被下载和安装,或者从存储装置280安装,或者从ROM 220安装。在该计算机程序被处理装置210执行时,可以执行本公开实施例提供的数据处理方法中限定的功能。
本公开一些实施例还提供一种存储介质,用于存储非暂时性计算机程序可执行代码(例如计算机可执行指令),当该非暂时性计算机程序可执行代码由计算机(例如包括一个或多个处理器)执行时可以实现本公开任一实施例的数据处理方法;或者,当该非暂时性计算机程序可执行代码由计算机执行时可以实现本公开实施例提供的数据处理方法。
图7为本公开一些实施例提供的一种存储介质的示意图。如图7所示,存储介质300非暂时性地存储有计算机程序可执行代码301。例如,当计算机程序可执行代码301由计算机(例如包括一个或多个处理器)执行时可以执行根据本公开实施例提供的数据处理方法。
例如,该存储介质300可以应用于上述数据处理装置中。又例如,存储介质300可以为图6所示的计算装置200中的存储器220。例如,关于存储介质300的相关说明可以参考图6所示的计算装置200中的存储器220的相应描述,此处不再赘述。
可以理解的是,以上实施方式仅仅是为了说明本公开的原理而采用的示例性实施方式,然而本公开并不局限于此。对于本领域内的普通技术人员而言,在不脱离本公开的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本公开的保护范围。
除了上述示例性的描述之外,对于本公开,还有以下几点需要说明:
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)为了清晰起见,在用于描述本公开的实施例的附图中,层或区域的厚度被放大或缩小,即这些附图并非按照实际的比例绘制。
(3)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种数据处理装置,包括乘加运算阵列和配置单元,其中,所述乘加运算阵列包括多个乘加计算单元,
所述配置单元与所述乘加运算阵列耦接,且所述配置单元至少具有第一配置状态和第二配置状态,
所述配置单元在所述第一配置状态时控制所述多个乘加计算单元分为N组,每组内的M个所述乘加计算单元配置为彼此耦接以用于将每组中M个计算结果累加,
所述配置单元在所述第二配置状态时控制所述多个乘加计算单元分为Q组,每组内的P个乘加计算单元配置为彼此耦接以用于将每组中P个计算结果累加,其中,M、N、P与Q均为大于1整数,且N与Q不相等。
2.根据权利要求1所述的数据处理装置,其中,M为3的正整数倍。
3.根据权利要求1或2所述的数据处理装置,其中,P为2的正整数次幂。
4.根据权利要求1所述的数据处理装置,还包括控制单元,其中,所述控制单元配置为获取计算参数,以根据所述计算参数控制所述配置单元的配置状态。
5.根据权利要求4所述的数据处理装置,其中,所述控制单元进一步配置为控制所述第一配置状态时的N组所述乘加计算单元并行计算,以及控制所述第二配置状态时的Q组所述乘加计算单元并行计算。
6.根据权利要求1或4所述的数据处理装置,还包括多个加法器,其中,所述配置单元与所述多个加法器耦接,
在所述第一配置状态时为N组所述乘加计算单元每组分配至少一个加法器以累加每组中M个计算结果,
在所述第二配置状态时为Q组所述乘加计算单元每组分配至少一个加法器以累加每组中P个计算结果。
7.一种计算装置,包括权利要求1-6任一所述的数据处理装置。
8.一种数据处理装置的操作方法,用于权利要求1-6任一所述的数据处理装置,包括:
接收输入矩阵和卷积核;
根据计算参数,控制所述配置单元对所述乘加运算阵列进行配置;
使用配置后的所述乘加运算阵列对所述输入矩阵和所述卷积核进行卷积计算。
9.根据权利要求8所述的数据处理装置的操作方法,其中,控制所述配置单元对所述乘加运算阵列进行配置,包括:
响应于所述配置单元的配置状态从所述第一配置状态切换为所述第二配置状态,在所述N组乘加计算单元中的选择至少一组作为目标拆分组,其他组作为待分配组,
将所述目标拆分组中的乘加计算单元分配至所述待分配组,以使所述多个乘加计算单元分为Q组,或者,
响应于所述配置单元的配置状态从所述第二配置状态切换为所述第一配置状态,在所述Q组乘加计算单元中每组选择至少一个乘加计算单元作为目标拆分单元,
将所述目标拆分单元合并为至少一个新的组,以使所述多个乘加计算单元分为N组。
10.一种计算机可读存储介质,存储有计算机指令,其中,所述计算机指令在被处理器执行时用于实现如下步骤:
接收输入矩阵和卷积核;
根据计算参数,控制所述配置单元对所述乘加运算阵列进行配置;
使用配置后的所述乘加运算阵列对所述输入矩阵和所述卷积核进行卷积计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410089267.6A CN117908830A (zh) | 2024-01-22 | 2024-01-22 | 数据处理装置及操作方法、计算装置、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410089267.6A CN117908830A (zh) | 2024-01-22 | 2024-01-22 | 数据处理装置及操作方法、计算装置、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117908830A true CN117908830A (zh) | 2024-04-19 |
Family
ID=90686700
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410089267.6A Pending CN117908830A (zh) | 2024-01-22 | 2024-01-22 | 数据处理装置及操作方法、计算装置、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117908830A (zh) |
-
2024
- 2024-01-22 CN CN202410089267.6A patent/CN117908830A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107679620B (zh) | 人工神经网络处理装置 | |
CN107704922B (zh) | 人工神经网络处理装置 | |
CN107679621B (zh) | 人工神经网络处理装置 | |
EP3746945B1 (en) | Improving performance of neural network arrays | |
US10394929B2 (en) | Adaptive execution engine for convolution computing systems | |
CN112840356B (zh) | 运算加速器、处理方法及相关设备 | |
CN105930902B (zh) | 一种神经网络的处理方法、系统 | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
CN114402338A (zh) | 用于在节能输入操作数固定加速器中执行小通道计数卷积的系统和方法 | |
CN111611197B (zh) | 可软件定义的存算一体芯片的运算控制方法和装置 | |
CN108170640B (zh) | 神经网络运算装置及应用其进行运算的方法 | |
US10755169B2 (en) | Hybrid non-uniform convolution transform engine for deep learning applications | |
CN110766128A (zh) | 卷积计算单元、计算方法及神经网络计算平台 | |
US11494326B1 (en) | Programmable computations in direct memory access engine | |
CN113989169A (zh) | 一种膨胀卷积加速计算方法及装置 | |
CN110414672B (zh) | 卷积运算方法、装置及系统 | |
CN110377874B (zh) | 卷积运算方法及系统 | |
CN115310037A (zh) | 矩阵乘法计算单元、加速单元、计算系统和相关方法 | |
US11132195B2 (en) | Computing device and neural network processor incorporating the same | |
KR20200029661A (ko) | 뉴럴 프로세싱 시스템 | |
KR20220083820A (ko) | 뉴럴 네트워크 프로세서에서의 3차원 콘볼루션 | |
CN117908830A (zh) | 数据处理装置及操作方法、计算装置、存储介质 | |
CN117063182A (zh) | 一种数据处理方法和装置 | |
CN113627587A (zh) | 一种多通道式卷积神经网络加速方法及装置 | |
CN115081600A (zh) | 执行Winograd卷积的变换单元、集成电路装置及板卡 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |