CN111047037A - 数据处理方法、装置、设备及存储介质 - Google Patents
数据处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111047037A CN111047037A CN201911379755.6A CN201911379755A CN111047037A CN 111047037 A CN111047037 A CN 111047037A CN 201911379755 A CN201911379755 A CN 201911379755A CN 111047037 A CN111047037 A CN 111047037A
- Authority
- CN
- China
- Prior art keywords
- input
- data
- output
- bit width
- computing unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title abstract description 21
- 238000012545 processing Methods 0.000 claims abstract description 214
- 238000000034 method Methods 0.000 claims abstract description 60
- 239000011159 matrix material Substances 0.000 claims description 104
- 239000000872 buffer Substances 0.000 claims description 53
- 230000009466 transformation Effects 0.000 claims description 50
- 238000007667 floating Methods 0.000 claims description 20
- 238000004364 calculation method Methods 0.000 claims description 18
- 230000008569 process Effects 0.000 claims description 17
- 230000001131 transforming effect Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 11
- 238000013528 artificial neural network Methods 0.000 description 36
- 238000013135 deep learning Methods 0.000 description 14
- 238000004422 calculation algorithm Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 238000007792 addition Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000019771 cognition Effects 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
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)
- Image Processing (AREA)
- Complex Calculations (AREA)
Abstract
本申请实施例提供一种数据处理方法、装置、设备及存储介质。该方法包括:获取输入多个计算单元中第一计算单元的待处理数据,待处理数据包括第一位宽信息的数据;获取第一计算单元的处理参数,处理参数包括第二位宽信息的参数;基于待处理数据和处理参数,得到第一计算单元的输出结果;其中,输入多个计算单元中第二计算单元的待处理数据的位宽信息与输入第一计算单元的待处理数据的位宽信息不同,和/或,第二计算单元的处理参数的位宽信息与第一计算单元的处理参数的位宽信息不同。
Description
技术领域
本申请实施例涉及深度学习技术领域,尤其涉及一种数据处理方法、装置、设备及存储介质。
背景技术
目前,深度学习被广泛地应用于解决高级抽象认知问题。在高级抽象认知问题中,随着深度学习问题越来越抽象和复杂,深度学习的计算和数据的复杂度也随之增加,然而深度学习的计算离不开深度学习网络,因此深度学习的网络规模也需要不断随之增加。深度学习网络规模的增加,会导致消耗的资源越来越多,计算任务的复杂也会导致计算速度的下降。于是,如何高性能且低能耗地提高深度学习相关算法的计算速度就成为了目前要解决的关键问题。
通常,深度学习的计算任务从表现方式上可分为两种:在通用处理器上,任务通常以软件代码的形式呈现,称为软件任务;在专用硬件电路上,充分发挥硬件固有的快速特性来带代替软件任务,称为硬件任务。常见的有专用集成电路(Application SpecificIntegrated Circuit,ASIC),现场可编程逻辑门阵列(Field-Programmable Gate Array,FPGA)和图形处理器(Graphics Processing Unit,GPU)。其中FPGA最为适用不同功能的可编程标准器件,有一定灵活性,且功耗较低。
深度学习网络在硬件上的实现具有精度信息,精度信息可以理解是神经网络的每层数据用多宽的位宽和哪种数据格式来表示。位宽越大,深度学习网络的预测精度就会越高,然而计算速度又会降低。而位宽越小,计算速度虽然有所提升,但是深度学习网络的预测精度又会下降。因此,现有技术中,深度学习网络的所有层数据目前都是通过采用单一位宽,来保证计算速度,然而这样,就会影响计算速度,进而影响数据处理速度。
发明内容
本申请实施例提供一种数据处理方法、装置、设备及存储介质。
第一方面,本申请实施例提供一种数据处理方法,包括:获取输入多个计算单元中第一计算单元的待处理数据,所述待处理数据包括第一位宽信息的数据;获取所述第一计算单元的处理参数,所述处理参数包括第二位宽信息的参数;基于所述待处理数据和所述处理参数,得到所述第一计算单元的输出结果;其中,输入所述多个计算单元中第二计算单元的待处理数据的位宽信息与输入所述第一计算单元的待处理数据的位宽信息不同,和/或,输入所述第二计算单元的处理参数的位宽信息与输入所述第一计算单元的处理参数的位宽信息不同。
可选的,所述获取输入多个计算单元中第一计算单元的待处理数据,包括:获取所述第一计算单元的第一配置信息,所述第一配置信息包括用于指示输入所述第一计算单元的待处理数据采用的第一位宽信息,所述多个计算单元中至少两个计算单元的第一位宽信息不同;基于所述第一位宽信息,获取所述第一位宽信息的待处理数据。
可选的,所述获取所述第一计算单元的处理参数,包括:获取所述第一计算单元的第二配置信息,所述第二配置信息包括用于指示输入所述第一计算单元的处理参数采用的第二位宽信息,所述多个计算单元中至少两个计算单元的第二位宽信息不同;基于所述第二位宽信息,获取所述第二位宽信息的处理参数。
可选的,所述待处理数据包括多个输入通道的输入数据,所述输入数据包括至少一个输入数据块;所述基于所述待处理数据和所述处理参数,得到所述第一计算单元的输出结果,包括:针对所述多个输入通道中每个输入通道,获取所述至少一个输入数据块中的目标输入数据块;从处理参数中,获取与所述目标输入数据块存在对应关系的处理参数块,所述处理参数块与所述目标输入数据块的大小相同;分别对存在对应关系的所述目标输入数据块和所述处理参数块,按照第一变换关系进行变换,得到与所述目标输入数据块对应的第一矩阵,以及与所述处理参数对应的第二矩阵;将所述第一矩阵和所述第二矩阵进行乘法运算,得到所述多个输入通道中每个输入通道的乘法运算结果;将所述多个输入通道中每个输入通道的乘法运算结果进行累加,得到目标大小的第三矩阵;将所述第三矩阵按照第二变换关系进行变换,得到所述第一计算单元的输出结果。
可选的,所述第一计算单元的输出结果包括多个输出通道的输出结果;所述将所述第三矩阵按照第二矩阵变换关系进行矩阵变换,得到所述第一计算单元的输出结果之后,所述方法还包括:将所述多个输出通道的输出结果并行输出。
可选的,所述获取输入多个计算单元中第一计算单元的待处理数据,包括:将所述多个输入通道的输入数据并行输入至多个第一存储区域中,所述第一存储区域的数量与输入通道的数量相同,不同输入通道的输入数据输入至不同的第一存储区域中。
可选的,所述多个第一存储区域中的每个第一存储区域包括多个输入行缓存,所述输入数据的行数和列数相同,所述目标输入数据块的行数量与对应的第一存储区域的输入行缓存的数量相同;所述针对所述多个输入通道中每个输入通道,获取所述至少一个输入数据块中的目标输入数据块,包括:从所述每个输入通道的多个输入行缓存中并行读取数据,得到所述目标输入数据块。
可选的,所述输入数据中相邻两个所述输入数据块之间具有重叠数据。
可选的,所述将所述多个输出通道的输出结果并行输出,包括:在第一次输出所述多个输出通道的运算结果的情况下,对所述多个输出通道的输出结果分别增加偏移量并输出。
可选的,所述方法还包括:将多个输出通道的输出结果并行输入至多个第二存储区域中,所述第二存储区域的数量与输出通道的数量相同,不同输出通道的输出结果输入至不同的第二存储区域中。
可选的,每个第二存储区域包括多个输出行缓存;所述输出结果包括多行输出数据和多列输出数据;按照总线对齐的方式从多个输出行缓存中并行读取数据,得到目标输出数据块,并写入存储器中,所述目标输出数据块的行数和列数相同。
可选的,所述将所述第一矩阵和所述第二矩阵进行乘法运算之前,所述方法还包括:获取第三配置信息;在所述第三配置信息指示所述第一计算单元支持浮点运算的情况下,对所述待处理数据中的浮点数据进行处理。
第二方面,本申请实施例提供一种数据处理装置,包括:第一获取模块,用于获取输入多个计算单元中第一计算单元的待处理数据,所述待处理数据包括第一位宽信息的数据;第二获取模块,用于获取所述第一计算单元的处理参数,所述处理参数包括第二位宽信息的参数;处理模块,用于基于所述待处理数据和所述处理参数,得到所述第一计算单元的输出结果;其中,输入所述多个计算单元中第二计算单元的待处理数据的位宽信息与输入所述第一计算单元的待处理数据的位宽信息不同,和/或,输入所述第二计算单元的处理参数的位宽信息与输入所述第一计算单元的处理参数的位宽信息不同。
可选的,所述第一获取模块在获取输入多个计算单元中第一计算单元的待处理数据时,具体包括:获取所述第一计算单元的第一配置信息,所述第一配置信息包括用于指示输入所述第一计算单元的待处理数据采用的第一位宽信息,所述多个计算单元中至少两个计算单元的第一位宽信息不同;基于所述第一位宽信息,获取所述第一位宽信息的待处理数据。
可选的,所述第二获取模块在获取所述第一计算单元的处理参数时,具体包括:获取所述第一计算单元的第二配置信息,所述第二配置信息包括用于指示输入所述第一计算单元的处理参数采用的第二位宽信息,所述多个计算单元中至少两个计算单元的第二位宽信息不同;基于所述第二位宽信息,获取所述第二位宽信息的处理参数。
可选的,所述待处理数据包括多个输入通道的输入数据,所述输入数据包括至少一个输入数据块;所述处理模块基于所述待处理数据和所述处理参数,得到所述第一计算单元的输出结果时,具体包括:针对所述多个输入通道中每个输入通道,获取所述至少一个输入数据块中的目标输入数据块;从处理参数中,获取与所述目标输入数据块存在对应关系的处理参数块,所述处理参数块与所述目标输入数据块的大小相同;分别对存在对应关系的所述目标输入数据块和所述处理参数块,按照第一变换关系进行变换,得到与所述目标输入数据块对应的第一矩阵,以及与所述处理参数对应的第二矩阵;将所述第一矩阵和所述第二矩阵进行乘法运算,得到所述多个输入通道中每个输入通道的乘法运算结果;将所述多个输入通道中每个输入通道的乘法运算结果进行累加,得到目标大小的第三矩阵;将所述第三矩阵按照第二变换关系进行变换,得到所述第一计算单元的输出结果。
可选的,所述第一计算单元的输出结果包括多个输出通道的输出结果;
所述装置还包括:输出模块,用于将所述多个输出通道的输出结果并行输出。
可选的,所述第一获取模块在获取输入多个计算单元中第一计算单元的待处理数据时,具体包括:将所述多个输入通道的输入数据并行输入至多个第一存储区域中,所述第一存储区域的数量与输入通道的数量相同,不同输入通道的输入数据输入至不同的第一存储区域中。
可选的,所述多个第一存储区域中的每个第一存储区域包括多个输入行缓存,所述输入数据的行数和列数相同,所述目标输入数据块的行数量与对应的第一存储区域的输入行缓存的数量相同;所述处理模块在针对所述多个输入通道中每个输入通道,获取所述至少一个输入数据块中的目标输入数据块时,具体包括:从所述每个输入通道的多个输入行缓存中并行读取数据,得到所述目标输入数据块。
可选的,所述输入数据中相邻两个所述输入数据块之间具有重叠数据。
可选的,所述输出模块在将所述多个输出通道的输出结果并行输出时,具体包括:在第一次输出所述多个输出通道的运算结果的情况下,对所述多个输出通道的输出结果分别增加偏移量并输出。
可选的,所述输出模块,还用于将多个输出通道的输出结果并行输入至多个第二存储区域中,所述第二存储区域的数量与输出通道的数量相同,不同输出通道的输出结果输入至不同的第二存储区域中。
可选的,每个第二存储区域包括多个输出行缓存;所述输出结果包括多行输出数据和多列输出数据;所述输出模块,还用于按照总线对齐的方式从多个输出行缓存中并行读取数据,得到目标输出数据块,并写入存储器中,所述目标输出数据块的行数和列数相同。
可选的,所述装置还包括:第三获取模块,用于获取第三配置信息;在所述第三配置信息指示所述第一计算单元支持浮点运算的情况下,对所述待处理数据中的浮点数据进行处理。
第三方面,本申请实施例提供一种数据处理设备,包括:存储器;处理器;以及计算机程序;其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现第一方面所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现第一方面所述的方法。
本申请实施例提供的数据处理方法、装置、设备及存储介质,通过获取输入多个计算单元中第一计算单元的待处理数据,所述待处理数据包括第一位宽信息的数据;获取所述第一计算单元的处理参数,所述处理参数包括第二位宽信息的参数;基于所述待处理数据和所述处理参数,得到所述第一计算单元的输出结果;其中,输入所述多个计算单元中第二计算单元的待处理数据的位宽信息与输入所述第一计算单元的待处理数据的位宽信息不同,和/或,输入所述第二计算单元的处理参数的位宽信息与输入所述第一计算单元的处理参数的位宽信息不同。
由于输入多个计算单元中第二计算单元的待处理数据的位宽信息与输入第一计算单元的待处理数据的位宽信息不同,和/或,输入第二计算单元的处理参数的位宽信息与输入第一计算单元的处理参数的位宽信息不同,因此可以支持不同位宽信息的待处理数据。相比于神经网络层支持单一位宽信息的待处理数据的情形,本实施例提供的技术方案可以支持不同位宽信息的待处理数据。并且,考虑到位宽越小,计算速度越快,因此,在选用位宽较小的处理参数和/或待处理数据的情况下,能够提高加速器的计算速度。由此可见,本申请实施例提供的数据处理方式,能够支持多种位宽的数据处理,提升数据处理速度。
附图说明
图1是本申请实施例提供的一种数据处理系统的示意图;
图2为本申请实施例提供的数据处理方法流程图;
图3为本申请另一实施例提供的数据处理方法的流程图;
图4为本申请实施例提供的读取数据的数据结构示意图;
图5为本申请实施例提供的输出数据的数据结构示意图;
图6为本申请实施例提供的数据处理装置的结构示意图;
图7为本申请实施例提供的数据处理设备的结构示意图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是本申请实施例提供的一种数据处理系统的示意图。本申请实施例提供的数据处理方法,可以适用于图1所示的数据处理系统。如图1所示,该数据处理系统包括:可编程器件1、存储器2和处理器3;其中,可编程器件1分别与存储器2和处理器3连接,存储器2还与处理器3连接。
可选的,可编程器件1包括现场可编程逻辑门阵列FPGA,存储器2包括双倍速率同步动态随机存储器(Double Data Rate Synchronous Dynamic Random Access Memory,DDR SDRAM)(以下简称DDR),处理器3包括ARM处理器;其中,ARM(Advanced RISC Machines)处理器是指低功耗低成本的RISC微处理器。
其中,可编程器件1包括加速器,加速器通过cross bar cross bar(纵横式交换机)分别与存储器2和处理器3连接。
可编程器件1从存储器2中读取数据进行处理,并将处理结果存储至存储器2中。可编程器件1与存储器2之间通过总线连接。总线是指计算机各种功能部件之间传送信息的公共通信干线,是由导线组成的传输线束,根据计算机所传输的信息种类不同,计算机的总线可以划分为数据总线、地址总线和控制总线,其分别用来传输数据、数据地址和控制信号。
其中,加速器包括输入模块10a、输出模块10b、前矩阵变换模块11、乘法器12、加法器13、后矩阵变换模块14、权重矩阵变换模块15、输入缓存模块16、输出缓存模块17和权重缓存模块118。输入模块10a、前矩阵变换模块11、乘法器12、加法器13、后矩阵变换模块14和输出模块10b依次连接,权重矩阵变换模块15分别连接至输出模块110b和乘法器12。在本申请实施例中,加速器可以包括卷积神经网络CNN加速器。
DDR、输入缓存模块16和输入模块10a依次连接。DDR中存储有待处理数据,例如特征图数据。
输出模块10b依次与输出缓存模块17、DDR连接。
权重矩阵变换模块15还与权重缓存模块18连接。
输入缓存模块16从DDR中读取待处理数据并进行缓存,权重矩阵变换模块15从权重缓存模块18中读取权重参数并进行处理,处理后的权重参数送入乘法器,输入模块10a从输入缓存模块16中读取待处理数据,并送入前矩阵变换模块11中进行处理,之后送入乘法器12,由乘法器12根据待处理数据和权重参数,得到第一输出结果,第一输出结果再送入加法器13中进行处理,得到第二输出结果,第二输出结果再送入后矩阵变换模块14进行处理,得到输出结果,输出结果通过输出模块10b并行输出至输出缓存模块17,最后再由输出缓存模块17送入DDR中存储。如此,完成对待处理数据的一个计算过程。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图2为本申请实施例提供的数据处理方法流程图。本申请实施例针对现有技术的如上技术问题,提供了数据处理方法,该方法具体步骤如下:
步骤201、获取输入多个计算单元中第一计算单元的待处理数据。
本实施例中,多个计算单元指的可以是神经网络输入层的计算单元、多个隐藏层的计算单元和/或输出层的计算单元,第一计算单元可以包括一个或是多个,在本申请实施例中,以第一计算单元包括一个为例对本申请提出的技术方案进行阐述,对于第一计算单元包括多个的情况,那么每个第一计算单元都可以采用相同或是相似的实现方式来完成数据处理,在此不予赘述。
在一种可选的实施方式中,第一计算单元可以包括如图1所示的输入模块10a、输出模块10b、前矩阵变换模块11、乘法器12、加法器13、后矩阵变换模块14、权重矩阵变换模块15。
对于神经网络而言,每一层神经网络层都可以包括如图1所示的输入模块10a、输出模块10b、前矩阵变换模块11、乘法器12、加法器13、后矩阵变换模块14、权重矩阵变换模块15。由于神经网络层的计算过程是顺序进行的,因此,所有层神经网络层可以共用一个输入缓存模块16和一个输出缓存模块17。在当前层神经网络层,即第一计算单元需要进行运算的情况下,可以从DDR中获取当前层神经网络层所需要的待处理数据,并输入缓存模块16中进行缓存,以及将当前层神经网络层所需要的处理参数缓存在权重缓存模块18中。
示例性地,如图1所示,可以由输入模块10a从输入缓存模块16中读取待处理数据。
本实施例中的待处理数据包括第一位宽信息的数据。其中,第一位宽信息可以包括4bit、8bit和32bit中的一项或是多项。
步骤202、获取第一计算单元的处理参数。
本实施例中的处理参数包括第二位宽信息的参数,是用于参与神经网络层的卷积运算的参数,例如权重参数。其中,第二位宽信息与第一位宽信息类似,可以包括4bit、8bit和32bit中的一项或是多项。
例如,如图1所示,由权重矩阵变换模块15从权重缓存模块18中读取处理参数。
示例性地,在待处理数据和处理参数分别是参与卷积运算的输入数据和权重参数的情况下,待处理数据和处理参数分别采用矩阵形式表示,且待处理数据的位宽信息是4bit,处理参数的位宽信息是8bit,则代表待处理数据对应的矩阵中的每个数据分别为4bit的数据,以及处理参数对应的矩阵中的每个数据分别为8bit的数据。
步骤203、基于待处理数据和处理参数,得到第一计算单元的输出结果。
其中,输入多个计算单元中第二计算单元的待处理数据的位宽信息与输入第一计算单元的待处理数据的位宽信息不同,和/或,输入第二计算单元的处理参数的位宽信息与输入第一计算单元的处理参数的位宽信息不同。
本实施例中,第一计算单元和第二计算单元可以理解为同一神经网络架构中不同的神经网络层,在一种实现方式中,第一计算单元以及第二计算单元所分别对应的神经网络层可以为相邻的或是不相邻的神经网络层,在此不予限定。也就是说,不同的神经网络层所需要的待处理数据的位宽信息可以是不同的,以及处理参数的位宽信息也可以是不同的。
其中,待处理数据可以包括定点数和/或浮点数,同样地,处理参数也可以包括定点数和/或浮点数。其中,定点数可以包括4bit和8bit位宽信息的数据,浮点数可以包括32bit位宽信息的数据。定点数是指小数点在数中的位置是固定不变的,通常包括定点整数和定点小数或者定点分数。在对小数点位置做出选择之后,运算中的所有数均可以统一为定点整数或定点小数,在运算中不再考虑小数点的位置问题。浮点数是指小数点的位置是不固定的,用指数和尾数来表示。通常尾数为纯小数,指数为整数,尾数和指数均为带符号数。尾数的符号表示数的正负;指数的符号则表明小数点的实际位置。
那么对于本申请而言,所有神经网络层能够处理的数据的位宽信息至少可以存在以下5种实施方式,下面以待处理数据和处理参数为例对本申请能够处理的不同位宽信息的数据进行说明:
在一种可选的实施方式中,待处理数据的位宽信息为8bit,处理参数的位宽信息是4bit。
在另一种可选的实施方式中,待处理数据的位宽信息为4bit,处理参数的位宽信息是8bit。
在又一种可选的实施方式中,待处理数据的位宽信息为8bit,处理参数的位宽信息是8bit。
在又一种可选的实施方式中,待处理数据的位宽信息为4bit,处理参数的位宽信息是4bit。
在又一种可选的实施方式中,待处理数据的位宽信息为32bit,处理参数的位宽信息是32bit。
由此可见,本申请实施例提供的技术方案,可以支持浮点运算及定点运算,其中,浮点运算可以包括一种,具体可以包括位宽信息为32bit的待处理数据以及处理参数之间的运算,定点运算可以包括四种,具体可以包括位宽信息为4bit的待处理数据以及处理参数之间的运算、位宽信息为8bit的待处理数据以及处理参数之间的运算、位宽信息为4bit的待处理数据以及位宽信息为8bit的处理参数之间的运算、位宽信息为8bit的待处理数据以及位宽信息为4bit的处理参数之间的运算。
这样本申请实施例提供的数据处理方式,能够支持多种位宽的数据处理,从而有效权衡处理精度与处理速度的双重需求,进而在确保位宽满足条件的情况下,提升数据处理速度。
可选的,基于待处理数据和处理参数,得到第一计算单元的输出结果,包括:基于待处理数据和处理参数进行卷积运算,得到第一计算单元的输出结果。
本实施例通过获取输入多个计算单元中第一计算单元的待处理数据,所述待处理数据包括第一位宽信息的数据;获取所述第一计算单元的处理参数,所述处理参数包括第二位宽信息的参数;基于所述待处理数据和所述处理参数,得到所述第一计算单元的输出结果;其中,输入所述多个计算单元中第二计算单元的待处理数据的位宽信息与输入所述第一计算单元的待处理数据的位宽信息不同,和/或,输入所述第二计算单元的处理参数的位宽信息与输入所述第一计算单元的处理参数的位宽信息不同。因此可以支持不同位宽信息的待处理数据。相比于神经网络层支持单一位宽信息的待处理数据的情形,本实施例提供的技术方案可以支持不同位宽信息的待处理数据。并且,考虑到位宽越小,计算速度越快,因此,在选用位宽较小的处理参数和/或待处理数据的情况下,能够提高加速器的计算速度。由此可见,本申请实施例提供的数据处理方式,能够支持多种位宽的数据处理,提升数据处理速度。
可选的,获取输入多个计算单元中第一计算单元的待处理数据,包括:获取第一计算单元的第一配置信息,第一配置信息包括用于指示输入第一计算单元的待处理数据采用的第一位宽信息,多个计算单元中至少两个计算单元的第一位宽信息不同;基于第一位宽信息,获取第一位宽信息的待处理数据。
其中,神经网络层在运算之前,会对该神经网络层所需要的数据的位宽信息进行配置,也就是预先设置该神经网络层所需要的数据的位宽信息。第一配置信息可以采用0、1、2来表示,若第一配置信息是0,则代表该神经网络层所需要的数据的位宽信息是8bit;若第一配置信息是1,则代表该神经网络层所需要的数据的位宽信息是4bit;若第一配置信息是2,则代表该神经网络层所需要的数据的位宽信息是32bit。
可选的,获取第一计算单元的处理参数,包括:获取第一计算单元的第二配置信息,第二配置信息包括用于指示输入第一计算单元的处理参数采用的第二位宽信息,多个计算单元中至少两个计算单元的第二位宽信息不同;基于第二位宽信息,获取第二位宽信息的处理参数。
同样地,神经网络层在运算之前,会对该神经网络层所需要的处理参数的位宽信息进行配置,也就是预先设置该神经网络层所需要的处理参数的位宽信息。第二配置信息可以采用0、1、2来表示,若第二配置信息是0,则代表该神经网络层所需要的处理参数的位宽信息是8bit;若第二配置信息是1,则代表该神经网络层所需要的处理参数的位宽信息是4bit;若第二配置信息是2,则代表该神经网络层所需要的处理参数的位宽信息是32bit。
图3是本申请另一实施例提供的数据处理方法的流程图。如图3所示,本实施例的数据处理方法,具体步骤如下:
步骤301、针对多个输入通道中每个输入通道,获取至少一个输入数据块中的目标输入数据块。
其中,待处理数据包括多个输入通道的输入数据,输入数据包括至少一个输入数据块。
本实施例中,多个输入通道包括R、G、B通道,待处理数据包括R、G、B通道的输入数据。其中,在获取每个输入通道的输入数据的过程中,是按照输入数据块获取。例如,目标输入数据块为n*n大小,则获取n*n大小的数据块,其中n为大于1的整数。
步骤302、从处理参数中,获取与目标输入数据块存在对应关系的处理参数块,处理参数块与目标输入数据块的大小相同。
例如,目标输入数据块的大小为6*6,则处理参数快的大小也为6*6。
步骤303、分别对存在对应关系的目标输入数据块和处理参数块,按照第一变换关系进行变换,得到与目标输入数据块对应的第一矩阵,以及与处理参数对应的第二矩阵。
可选的,第一变换关系包括前矩阵变换。本实施例中,是对n*n大小的目标输入数据块进行前矩阵变换,得到n*n大小的第一矩阵,以及对处理参数块进行前矩阵变换,得到n*n大小的第二矩阵。
步骤304、将第一矩阵和第二矩阵进行乘法运算,得到多个输入通道中每个输入通道的乘法运算结果。
示例性地,本步骤通过将第一矩阵和第二矩阵进行乘法运算,可以得到每个输入通道,例如R、G、B通道的乘法运算结果。例如,将6*6大小的目标输入数据块和6*6大小的处理参数块进行乘法运算,得到4*4大小的乘法运算结果。
步骤305、将多个输入通道中每个输入通道的乘法运算结果进行累加,得到目标大小的第三矩阵。
示例性地,本步骤是将R、G、B通道的乘法运算结果进行累加,得到目标大小的第三矩阵。例如,将R、G、B通道的乘法运算结果进行累加,得到4*4大小的第三矩阵。
步骤306、将第三矩阵按照第二变换关系进行变换,得到第一计算单元的输出结果。
可选的,第二变换关系包括后矩阵变换,则本实施例是将第三矩阵进行后矩阵变换,得到输出结果。
其中,对第三矩阵进行后矩阵变换,即得到第一计算单元的输出结果。例如,在待处理数据是特征图的情况下,得到对该特征图的运算结果。
下面结合图1,以一个具体的示例对本实施例的实施过程进行详细说明:
本实施例中,如图1所示的数据处理系统上可以实现Winograd算法,Winograd算法的原理如下:
式中,g是卷积的核(比如,第一计算单元的处理参数);d是每次参与Winograd计算的数据块,即目标输入数据块(比如,第一计算单元的至少部分待处理数据);BTdB表示将目标输入数据块d进行前矩阵变换,BTdB对应的结果就是第一矩阵;GgGT代表将卷积核g进行前矩阵变换,GgGT对应的结果就是第二矩阵;代表将两个前矩阵变换结果,也就是第一矩阵和第二矩阵进行点积(乘法运算);代表将点积结果中各个通道的数据进行加和,得到第三矩阵,并对第三矩阵进行后矩阵变换,得到最终的输出结果。
可选的,Winograd算法应用在如图1所示的数据处理系统上,以第一计算单元为例,具体实施过程如下:将6*6大小的目标输入数据块输入前矩阵变换模块11中进行前矩阵变换,得到6*6大小的第一矩阵,以及由权重矩阵变换模块15对处理参数进行前矩阵变换,得到6*6大小的第二矩阵,然后第一矩阵和第二矩阵分别输入乘法器12中进行点积运算,点积运算结果进而输入加法器13中,将各个通道的数据进行加和,加和结果再输入后矩阵变换模块14中进行后矩阵变换,得到第一计算单元的输出结果。
本实施例中,在计算机中,由于乘法运算的速度通常比加法慢,因此,使用加法运算代替部分乘法运算,通过减少乘法次数,增加少量加法,能够提升数据处理速度。
通过这种设计,本申请实施例可以将2种定点数的目标输入数据块与2种定点数的处理参数进行组合,得到4种组合,再加上一种浮点数的运算,总共可以实现5种混合精度的卷积运算。而由于Winograd算法能够减少乘法运算数量,因此能够提升数据处理速度。因此,本申请实施例能够同时兼顾运算速度和运算精度,即既能够提升运算速度,又能够实现混合精度的运算。
需要说明的是,Winograd算法仅为本申请实施例所采用的一种可能的实现方式,在实际应用过程中,还可以采用功能与Winograd算法类似或是相同的其他实现方式,在此不予限定。
可选的,获取输入多个计算单元中第一计算单元的待处理数据,包括:将多个输入通道的输入数据并行输入至多个第一存储区域中,第一存储区域的数量与输入通道的数量相同,不同输入通道的输入数据输入至不同的第一存储区域中。本实施例中的第一存储区域是输入缓存模块116中的存储区域。
可选的,多个第一存储区域中的每个第一存储区域包括多个输入行缓存,输入数据的行数和列数相同,目标输入数据块的行数量与对应的第一存储区域的输入行缓存的数量相同;针对多个输入通道中每个输入通道,获取至少一个输入数据块中的目标输入数据块,包括:从每个输入通道的多个输入行缓存中并行读取数据,得到目标输入数据块。
可选的,输入数据中相邻两个输入数据块之间具有重叠数据。
请继续参阅图1,输入缓存模块16包括多个输入行缓存,则第一存储区域是输入缓存模块16中的多个输入行缓存。输入缓存模块16包括多个输入行缓存。输入模块10a包括多个输入单元,其中,每个输入单元对应第一预设数量个输入行缓存。其中,第一预设数量对应目标输入数据块的行的大小。例如,若目标输入数据块为6*6大小,则第一预设数量为6。
输入模块10a的输入计算并行度IPX为8。例如,可以在输入模块16中设置8个并行的输入单元cu_input_tile。
可选的,每个输入单元cu_input_tile从多个输入行缓存中读取一个输入通道的输入数据。例如,输入缓存模块16从DDR中读取的数据包括R、G、B通道的输入数据,则R、G、B通道中每个通道的输入数据分别存储至输入缓存模块16的预设数量个输入行缓存中。
图4为本申请实施例提供的输入模块获取数据的示意图。
如图4所示,输入模块从输入缓存模块中读取了第一目标输入数据块和第二目标输入数据块,第二目标输入数据块与第一目标输入数据块相邻,且第二目标输入数据块的读取顺序在第一目标输入数据块之后;第一目标输入数据块与第二目标输入数据块之间具有重叠数据。
可选的,第一目标输入数据块与第二目标输入数据块之间具有重叠数据,是指第二目标输入数据块中第一列数据为第一目标输入数据块中倒数第二列的数据。
可选的,在第一目标输入数据块是读取的第一个目标输入数据块的情况下,本实施例的方法还包括:针对每一个输入通道的输入行缓存,在读取的每一个输入行缓存的数据的起始位置之前添加填补数据,形成第一目标输入数据块。
示例性地,在输入行缓存是高速缓存Sram的情况下,如图4所示,可以看到,从高速缓存Sram中读取的数据是并行的6行数据Sram_I0、Sram_I1、Sram_I2、Sram_I3、Sram_I4、Sram_I5,也就是说每个输入单元从Sram_I0、Sram_I1、Sram_I2、Sram_I3、Sram_I4、Sram_I5中并行读取数据。本示例从高速缓存Sram中读取数据的时候在起始列添加了填补列,例如在Sram_I0、Sram_I1、Sram_I2、Sram_I3、Sram_I4、Sram_I5的起始列均增加一列为0的数据。另外,每两个6x6大小的数据块之间存在着重叠区域。由于winograd算法在窗口滑动的时候起始列会添加填补列数据,以及有一部分数据会复用。因此,本实施例在读取数据的时候将读取的两个数据块之间设置重叠区域以及在起始列添加了填补列,能够在本实施例的硬件结构上实现winograd算法。
在另一个示例中,若该神经网络层的第一配置信息和第二配置信息分别为4bit和8bit,则从高速缓存Sram中读取的数据的过程中,读取的目标输入数据块中的数据均为4bit位宽信息的目标输入数据块。以及从权重缓存模块中读取处理参数的过程中,读取的处理参数块中的数据均为4bit位宽信息的处理参数。
可选的,第一计算单元的输出结果包括多个输出通道的输出结果;将第三矩阵按照第二矩阵变换关系进行矩阵变换,得到第一计算单元的输出结果之后,本实施例的方法还包括:将多个输出通道的输出结果并行输出。
可选的,将多个输出通道的输出结果并行输出,包括:在第一次输出所述多个输出通道的运算结果的情况下,对多个输出通道的输出结果分别增加偏移量并输出。其中,偏移量可以是神经网络的卷积层中的bias参数。
可选的,本实施例的方法还包括:将多个输出通道的输出结果并行输入至多个第二存储区域中,第二存储区域的数量与输出通道的数量相同,不同输出通道的输出结果输入至不同的第二存储区域中。
可选的,每个第二存储区域包括多个输出行缓存;输出结果包括多行输出数据和多列输出数据;按照总线对齐的方式从多个输出行缓存中并行读取数据,得到目标输出数据块,并写入存储器中,目标输出数据块的行数和列数相同。本实施例中的存储器可以是如图1所示的DDR。
请继续参阅图1,例如,输出缓存模块17包括多个输出行缓存,则第二存储区域是输出缓存模块17中的多个输出行缓存。输出模块10b包括多个输出单元,其中,每个输出单元对应第二预设数量个输出行缓存。其中,第二预设数量对应目标输出数据块的行的大小。例如,若目标输出数据块为4*4大小,则第二预设数量为4。
输出模块10b的输出计算并行度OPX为4。例如,可以在输出模块10b中设置4个并行的输出单元cu_output_tile。
示例性地,在输出行缓存是高速缓存Sram的情况下,如图5所示,将多行输出结果分别写入Sram_I0、Sram_I1、Sram_I2、Sram_I3这四个输出行缓存中,也就是说每个输出单元将数据并行缓存至Sram_I0、Sram_I1、Sram_I2、Sram_I3中。其中,输出缓存模块内部的存储需要按照data bus align(总线数据对齐)的方式写入,同样的,根据配置共有三种数据形式的对齐方式(4bit、8bit、32bit),向DDR写入数据的时候按照如图5所示的line0,line1,line2,line3的顺序写入。
可选的,将第一矩阵和第二矩阵进行乘法运算之前,本实施例的方法还包括:获取第三配置信息;在第三配置信息指示第一计算单元支持浮点运算的情况下,对待处理数据中的浮点数据进行处理。本实施例中,第三配置信息用于指示乘法运算是否能够进行浮点运算;若第三配置信息指示乘法运算能够进行浮点运算,则获取浮点类型的待处理数据进行处理;若第三配置信息指示乘法运算不能够进行浮点运算,则不获取浮点类型的待处理数据。在一个示例中,可以是对FPGA中乘法器13设置第三配置信息,用于指示乘法器13是否支持浮点运算;若第三配置信息指示乘法器13支持浮点运算,则获取浮点类型的待处理数据进行处理;若所述第三配置信息指示所述乘法器13不支持浮点运算,则不获取浮点类型的待处理数据中。例如,乘法器13可以根据第三配置信息选择是使用定点乘法器还是浮点乘法器,如此,可以灵活配置乘法器。在FPGA中,浮点乘法器用到的资源是定点乘法器的4倍,对于未配置浮点乘法器或是未启动浮点乘法器所具备的功能的情况下,可以省去浮点运算所消耗的资源,提高数据处理速度。
本实施例提供的数据处理方法可以应用于自动驾驶、图像处理类的场景。以自动驾驶场景为例,在一个可选的示例中,待处理数据是自动驾驶过程中获取的环境图像,该环境图像需要通过神经网络进行处理,则该环境图像的处理过程中,由于在不同的神经网络层上,可以支持不同位宽信息的待处理数据,而位宽越小,计算速度越快,因此,相比于神经网络层支持单一位宽信息的待处理数据的情形,本实施例的神经网络层支持不同位宽信息的待处理数据,能够提高对环境图像的处理速度。另外,在计算机中,乘法通常比加法慢,因此,使用加法运算代替部分乘法运算,从而减少乘法运算的数量,增加少量加法,加快对环境图像的处理速度。环境图像的处理速度提升后,对利用该环境图像的处理结果进行后续的驾驶决策或者路径规划等情况,也能够加快进行驾驶决策或者路径规划过程。
图6为本申请实施例提供的数据处理装置的结构示意图。本申请实施例提供的数据处理装置可以执行数据处理方法实施例提供的处理流程,如图6所示,数据处理装置60包括:第一获取模块61、第二获取模块62和处理模块63;其中,第一获取模块61,用于获取输入多个计算单元中第一计算单元的待处理数据,所述待处理数据包括第一位宽信息的数据;第二获取模块62,用于获取所述第一计算单元的处理参数,所述处理参数包括第二位宽信息的参数;处理模块63,用于基于所述待处理数据和所述处理参数,得到所述第一计算单元的输出结果;其中,输入所述多个计算单元中第二计算单元的待处理数据的位宽信息与输入所述第一计算单元的待处理数据的位宽信息不同,和/或,输入所述第二计算单元的处理参数的位宽信息与输入所述第一计算单元的处理参数的位宽信息不同。
可选的,所述第一获取模块61在获取输入多个计算单元中第一计算单元的待处理数据时,具体包括:获取所述第一计算单元的第一配置信息,所述第一配置信息包括用于指示输入所述第一计算单元的待处理数据采用的第一位宽信息,所述多个计算单元中至少两个计算单元的第一位宽信息不同;基于所述第一位宽信息,获取所述第一位宽信息的待处理数据。
可选的,所述第二获取模块62在获取所述第一计算单元的处理参数时,具体包括:获取所述第一计算单元的第二配置信息,所述第二配置信息包括用于指示输入所述第一计算单元的处理参数采用的第二位宽信息,所述多个计算单元中至少两个计算单元的第二位宽信息不同;基于所述第二位宽信息,获取所述第二位宽信息的处理参数。
可选的,所述待处理数据包括多个输入通道的输入数据,所述输入数据包括至少一个输入数据块;所述处理模块63在基于所述待处理数据和所述处理参数,得到所述第一计算单元的输出结果时,具体包括:针对所述多个输入通道中每个输入通道,获取所述至少一个输入数据块中的目标输入数据块;从处理参数中,获取与所述目标输入数据块存在对应关系的处理参数块,所述处理参数块与所述目标输入数据块的大小相同;分别对存在对应关系的所述目标输入数据块和所述处理参数块,按照第一变换关系进行变换,得到与所述目标输入数据块对应的第一矩阵,以及与所述处理参数对应的第二矩阵;将所述第一矩阵和所述第二矩阵进行乘法运算,得到所述多个输入通道中每个输入通道的乘法运算结果;将所述多个输入通道中每个输入通道的乘法运算结果进行累加,得到目标大小的第三矩阵;将所述第三矩阵按照第二变换关系进行变换,得到所述第一计算单元的输出结果。
可选的,所述第一计算单元的输出结果包括多个输出通道的输出结果;所述装置60还包括:输出模块64,用于将所述多个输出通道的输出结果并行输出。
可选的,所述第一获取模块61在获取输入多个计算单元中第一计算单元的待处理数据时,具体包括:将所述多个输入通道的输入数据并行输入至多个第一存储区域中,所述第一存储区域的数量与输入通道的数量相同,不同输入通道的输入数据输入至不同的第一存储区域中。
可选的,所述多个第一存储区域中的每个第一存储区域包括多个输入行缓存,所述输入数据的行数和列数相同,所述目标输入数据块的行数量与对应的第一存储区域的输入行缓存的数量相同;所述处理模块63在针对所述多个输入通道中每个输入通道,获取所述至少一个输入数据块中的目标输入数据块时,具体包括:从所述每个输入通道的多个输入行缓存中并行读取数据,得到所述目标输入数据块。
可选的,所述输入数据中相邻两个所述输入数据块之间具有重叠数据。
可选的,所述输出模块64在将所述多个输出通道的输出结果并行输出时,具体包括:在第一次输出所述多个输出通道的运算结果的情况下,对所述多个输出通道的输出结果分别增加偏移量并输出。
可选的,所述输出模块64,还用于将多个输出通道的输出结果并行输入至多个第二存储区域中,所述第二存储区域的数量与输出通道的数量相同,不同输出通道的输出结果输入至不同的第二存储区域中。
可选的,每个第二存储区域包括多个输出行缓存;所述输出结果包括多行输出数据和多列输出数据;所述输出模块64按照总线对齐的方式从多个输出行缓存中并行读取数据,得到目标输出数据块,并写入存储器中,所述目标输出数据块的行数和列数相同。
可选的,所述装置60还包括:第三获取模块65,用于获取第三配置信息;所述处理模块63,还用于在所述第三配置信息指示所述第一计算单元支持浮点运算的情况下,对所述待处理数据中的浮点数据进行处理。
图6所示实施例的数据处理装置可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图7为本申请实施例提供的数据处理设备的结构示意图。如图7所示,数据处理设备70包括:存储器71、处理器72、计算机程序和通讯接口73;其中,计算机程序存储在存储器71中,并被配置为由处理器72执行以上数据处理方法的实施例的技术方案。
图7所示实施例的数据处理设备可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
另外,本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现上述实施例所述的数据处理方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (20)
1.一种数据处理方法,其特征在于,所述方法包括:
获取输入多个计算单元中第一计算单元的待处理数据,所述待处理数据包括第一位宽信息的数据;
获取所述第一计算单元的处理参数,所述处理参数包括第二位宽信息的参数;
基于所述待处理数据和所述处理参数,得到所述第一计算单元的输出结果;
其中,输入所述多个计算单元中第二计算单元的待处理数据的位宽信息与输入所述第一计算单元的待处理数据的位宽信息不同,和/或,输入所述第二计算单元的处理参数的位宽信息与输入所述第一计算单元的处理参数的位宽信息不同。
2.根据权利要求1所述的方法,其特征在于,所述获取输入多个计算单元中第一计算单元的待处理数据,包括:
获取所述第一计算单元的第一配置信息,所述第一配置信息包括用于指示输入所述第一计算单元的待处理数据采用的第一位宽信息,所述多个计算单元中至少两个计算单元的第一位宽信息不同;
基于所述第一位宽信息,获取所述第一位宽信息的待处理数据。
3.根据权利要求1所述的方法,其特征在于,所述获取所述第一计算单元的处理参数,包括:
获取所述第一计算单元的第二配置信息,所述第二配置信息包括用于指示输入所述第一计算单元的处理参数采用的第二位宽信息,所述多个计算单元中至少两个计算单元的第二位宽信息不同;
基于所述第二位宽信息,获取所述第二位宽信息的处理参数。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述待处理数据包括多个输入通道的输入数据,所述输入数据包括至少一个输入数据块;
所述基于所述待处理数据和所述处理参数,得到所述第一计算单元的输出结果,包括:
针对所述多个输入通道中每个输入通道,获取所述至少一个输入数据块中的目标输入数据块;
从处理参数中,获取与所述目标输入数据块存在对应关系的处理参数块,所述处理参数块与所述目标输入数据块的大小相同;
分别对存在对应关系的所述目标输入数据块和所述处理参数块,按照第一变换关系进行变换,得到与所述目标输入数据块对应的第一矩阵,以及与所述处理参数对应的第二矩阵;
将所述第一矩阵和所述第二矩阵进行乘法运算,得到所述多个输入通道中每个输入通道的乘法运算结果;
将所述多个输入通道中每个输入通道的乘法运算结果进行累加,得到目标大小的第三矩阵;
将所述第三矩阵按照第二变换关系进行变换,得到所述第一计算单元的输出结果。
5.根据权利要求4所述的方法,其特征在于,所述第一计算单元的输出结果包括多个输出通道的输出结果;
所述将所述第三矩阵按照第二矩阵变换关系进行矩阵变换,得到所述第一计算单元的输出结果之后,所述方法还包括:
将所述多个输出通道的输出结果并行输出。
6.根据权利要求4所述的方法,其特征在于,所述获取输入多个计算单元中第一计算单元的待处理数据,包括:
将所述多个输入通道的输入数据并行输入至多个第一存储区域中,所述第一存储区域的数量与输入通道的数量相同,不同输入通道的输入数据输入至不同的第一存储区域中。
7.根据权利要求6所述的方法,其特征在于,所述多个第一存储区域中的每个第一存储区域包括多个输入行缓存,所述输入数据的行数和列数相同,所述目标输入数据块的行数量与对应的第一存储区域的输入行缓存的数量相同;
所述针对所述多个输入通道中每个输入通道,获取所述至少一个输入数据块中的目标输入数据块,包括:
从所述每个输入通道的多个输入行缓存中并行读取数据,得到所述目标输入数据块。
8.根据权利要求6或7所述的方法,其特征在于,所述输入数据中相邻两个所述输入数据块之间具有重叠数据。
9.根据权利要求5所述的方法,其特征在于,所述将所述多个输出通道的输出结果并行输出,包括:
在第一次输出所述多个输出通道的运算结果的情况下,对所述多个输出通道的输出结果分别增加偏移量并输出。
10.根据权利要求5或9所述的方法,其特征在于,所述方法还包括:
将多个输出通道的输出结果并行输入至多个第二存储区域中,所述第二存储区域的数量与输出通道的数量相同,不同输出通道的输出结果输入至不同的第二存储区域中。
11.根据权利要求10所述的方法,其特征在于,每个第二存储区域包括多个输出行缓存;
所述输出结果包括多行输出数据和多列输出数据;
按照总线对齐的方式从多个输出行缓存中并行读取数据,得到目标输出数据块,并写入存储器中,所述目标输出数据块的行数和列数相同。
12.根据权利要求4-11任一项所述的方法,其特征在于,所述将所述第一矩阵和所述第二矩阵进行乘法运算之前,所述方法还包括:
获取第三配置信息;
在所述第三配置信息指示所述第一计算单元支持浮点运算的情况下,对所述待处理数据中的浮点数据进行处理。
13.一种数据处理装置,其特征在于,包括:
第一获取模块,用于获取输入多个计算单元中第一计算单元的待处理数据,所述待处理数据包括第一位宽信息的数据;
第二获取模块,用于获取所述第一计算单元的处理参数,所述处理参数包括第二位宽信息的参数;
处理模块,用于基于所述待处理数据和所述处理参数,得到所述第一计算单元的输出结果;
其中,输入所述多个计算单元中第二计算单元的待处理数据的位宽信息与输入所述第一计算单元的待处理数据的位宽信息不同,和/或,输入所述第二计算单元的处理参数的位宽信息与输入所述第一计算单元的处理参数的位宽信息不同。
14.根据权利要求13所述的装置,其特征在于,所述第一获取模块在获取输入多个计算单元中第一计算单元的待处理数据时,具体包括:
获取所述第一计算单元的第一配置信息,所述第一配置信息包括用于指示输入所述第一计算单元的待处理数据采用的第一位宽信息,所述多个计算单元中至少两个计算单元的第一位宽信息不同;
基于所述第一位宽信息,获取所述第一位宽信息的待处理数据;
所述第二获取模块在获取所述第一计算单元的处理参数时,具体包括:
获取所述第一计算单元的第二配置信息,所述第二配置信息包括用于指示输入所述第一计算单元的处理参数采用的第二位宽信息,所述多个计算单元中至少两个计算单元的第二位宽信息不同;
基于所述第二位宽信息,获取所述第二位宽信息的处理参数。
15.根据权利要求13或14所述的装置,其特征在于,所述待处理数据包括多个输入通道的输入数据,所述输入数据包括至少一个输入数据块;
所述处理模块在基于所述待处理数据和所述处理参数,得到所述第一计算单元的输出结果时,具体包括:
针对所述多个输入通道中每个输入通道,获取所述至少一个输入数据块中的目标输入数据块;
从处理参数中,获取与所述目标输入数据块存在对应关系的处理参数块,所述处理参数块与所述目标输入数据块的大小相同;
分别对存在对应关系的所述目标输入数据块和所述处理参数块,按照第一变换关系进行变换,得到与所述目标输入数据块对应的第一矩阵,以及与所述处理参数对应的第二矩阵;
将所述第一矩阵和所述第二矩阵进行乘法运算,得到所述多个输入通道中每个输入通道的乘法运算结果;
将所述多个输入通道中每个输入通道的乘法运算结果进行累加,得到目标大小的第三矩阵;
将所述第三矩阵按照第二变换关系进行变换,得到所述第一计算单元的输出结果。
16.根据权利要求15所述的装置,其特征在于,所述第一计算单元的输出结果包括多个输出通道的输出结果;
所述装置还包括:
输出模块,用于将所述多个输出通道的输出结果并行输出;
所述输出模块在将所述多个输出通道的输出结果并行输出时,具体包括:
在第一次输出所述多个输出通道的运算结果的情况下,对所述多个输出通道的输出结果分别增加偏移量并输出;
所述输出模块,还用于将多个输出通道的输出结果并行输入至多个第二存储区域中,所述第二存储区域的数量与输出通道的数量相同,不同输出通道的输出结果输入至不同的第二存储区域中。
17.根据权利要求15所述的装置,其特征在于,所述第一获取模块在获取输入多个计算单元中第一计算单元的待处理数据时,具体包括:
将所述多个输入通道的输入数据并行输入至多个第一存储区域中,所述第一存储区域的数量与输入通道的数量相同,不同输入通道的输入数据输入至不同的第一存储区域中;
所述多个第一存储区域中的每个第一存储区域包括多个输入行缓存,所述输入数据的行数和列数相同,所述目标输入数据块的行数量与对应的第一存储区域的输入行缓存的数量相同;
所述处理模块在针对所述多个输入通道中每个输入通道,获取所述至少一个输入数据块中的目标输入数据块时,具体包括:
从所述每个输入通道的多个输入行缓存中并行读取数据,得到所述目标输入数据块。
18.根据权利要求13-17任一项所述的装置,其特征在于,所述装置还包括:
第三获取模块,用于获取第三配置信息;
所述处理模块,还用于在所述第三配置信息指示所述第一计算单元支持浮点运算的情况下,对所述待处理数据中的浮点数据进行处理。
19.一种数据处理设备,其特征在于,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如权利要求1-12中任一所述的方法。
20.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-12中任一项所述的方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911379755.6A CN111047037B (zh) | 2019-12-27 | 2019-12-27 | 数据处理方法、装置、设备及存储介质 |
SG11202013048WA SG11202013048WA (en) | 2019-12-27 | 2020-07-20 | Data processing methods, apparatuses, devices, storage media and program products |
PCT/CN2020/103118 WO2021128820A1 (zh) | 2019-12-27 | 2020-07-20 | 数据处理方法、装置、设备、存储介质和程序产品 |
JP2020570459A JP2022518640A (ja) | 2019-12-27 | 2020-07-20 | データ処理方法、装置、機器、記憶媒体及びプログラム製品 |
US17/139,553 US20210201122A1 (en) | 2019-12-27 | 2020-12-31 | Data processing methods, apparatuses, devices, storage media and program products |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911379755.6A CN111047037B (zh) | 2019-12-27 | 2019-12-27 | 数据处理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111047037A true CN111047037A (zh) | 2020-04-21 |
CN111047037B CN111047037B (zh) | 2024-05-24 |
Family
ID=70239430
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911379755.6A Active CN111047037B (zh) | 2019-12-27 | 2019-12-27 | 数据处理方法、装置、设备及存储介质 |
Country Status (4)
Country | Link |
---|---|
JP (1) | JP2022518640A (zh) |
CN (1) | CN111047037B (zh) |
SG (1) | SG11202013048WA (zh) |
WO (1) | WO2021128820A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021128820A1 (zh) * | 2019-12-27 | 2021-07-01 | 北京市商汤科技开发有限公司 | 数据处理方法、装置、设备、存储介质和程序产品 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114911832B (zh) * | 2022-05-19 | 2023-06-23 | 芯跳科技(广州)有限公司 | 一种数据处理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108229648A (zh) * | 2017-08-31 | 2018-06-29 | 深圳市商汤科技有限公司 | 卷积计算方法和装置、电子设备、计算机存储介质 |
CN109146067A (zh) * | 2018-11-19 | 2019-01-04 | 东北大学 | 一种基于FPGA的Policy卷积神经网络加速器 |
CN110276447A (zh) * | 2018-03-14 | 2019-09-24 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
US20190354159A1 (en) * | 2017-10-29 | 2019-11-21 | Shanghai Cambricon Information Technology Co., Ltd | Convolutional operation device and method |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0464180A (ja) * | 1990-07-04 | 1992-02-28 | Toshiba Corp | ディジタル画像表示装置 |
JP3755345B2 (ja) * | 1999-07-15 | 2006-03-15 | セイコーエプソン株式会社 | 色変換回路 |
EP3336774B1 (en) * | 2016-12-13 | 2020-11-25 | Axis AB | Method, computer program product and device for training a neural network |
CN109121435A (zh) * | 2017-04-19 | 2019-01-01 | 上海寒武纪信息科技有限公司 | 处理装置和处理方法 |
JP6729516B2 (ja) * | 2017-07-27 | 2020-07-22 | トヨタ自動車株式会社 | 識別装置 |
CN109726353B (zh) * | 2017-10-29 | 2023-08-29 | 上海寒武纪信息科技有限公司 | 卷积运算装置和方法 |
CN111047037B (zh) * | 2019-12-27 | 2024-05-24 | 北京市商汤科技开发有限公司 | 数据处理方法、装置、设备及存储介质 |
-
2019
- 2019-12-27 CN CN201911379755.6A patent/CN111047037B/zh active Active
-
2020
- 2020-07-20 SG SG11202013048WA patent/SG11202013048WA/en unknown
- 2020-07-20 JP JP2020570459A patent/JP2022518640A/ja active Pending
- 2020-07-20 WO PCT/CN2020/103118 patent/WO2021128820A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108229648A (zh) * | 2017-08-31 | 2018-06-29 | 深圳市商汤科技有限公司 | 卷积计算方法和装置、电子设备、计算机存储介质 |
US20190354159A1 (en) * | 2017-10-29 | 2019-11-21 | Shanghai Cambricon Information Technology Co., Ltd | Convolutional operation device and method |
CN110276447A (zh) * | 2018-03-14 | 2019-09-24 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
CN109146067A (zh) * | 2018-11-19 | 2019-01-04 | 东北大学 | 一种基于FPGA的Policy卷积神经网络加速器 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021128820A1 (zh) * | 2019-12-27 | 2021-07-01 | 北京市商汤科技开发有限公司 | 数据处理方法、装置、设备、存储介质和程序产品 |
Also Published As
Publication number | Publication date |
---|---|
WO2021128820A1 (zh) | 2021-07-01 |
SG11202013048WA (en) | 2021-07-29 |
CN111047037B (zh) | 2024-05-24 |
JP2022518640A (ja) | 2022-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112214726B (zh) | 运算加速器 | |
US20210357736A1 (en) | Deep neural network hardware accelerator based on power exponential quantization | |
CN112840356B (zh) | 运算加速器、处理方法及相关设备 | |
CN111199273B (zh) | 卷积计算方法、装置、设备及存储介质 | |
CN108805272A (zh) | 一种基于fpga的通用卷积神经网络加速器 | |
CN111915001B (zh) | 卷积计算引擎、人工智能芯片以及数据处理方法 | |
CN106846235B (zh) | 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统 | |
US8321492B1 (en) | System, method, and computer program product for converting a reduction algorithm to a segmented reduction algorithm | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
US20200234129A1 (en) | Techniques for removing masks from pruned neural networks | |
US20210201122A1 (en) | Data processing methods, apparatuses, devices, storage media and program products | |
CN111898733A (zh) | 一种深度可分离卷积神经网络加速器架构 | |
CN108845828B (zh) | 一种协处理器、矩阵运算加速方法及系统 | |
CN112836813B (zh) | 一种用于混合精度神经网络计算的可重构脉动阵列系统 | |
US10664552B2 (en) | Stream processing for LU decomposition | |
CN111047037B (zh) | 数据处理方法、装置、设备及存储介质 | |
US11397791B2 (en) | Method, circuit, and SOC for performing matrix multiplication operation | |
US12009948B2 (en) | Data processing apparatus and method, base station, and storage medium | |
KR101929847B1 (ko) | 희소행렬 연산 방법과 장치 | |
CN111210004B (zh) | 卷积计算方法、卷积计算装置及终端设备 | |
CN103455518A (zh) | 一种数据处理方法及装置 | |
CN111325332A (zh) | 卷积神经网络的处理方法和装置 | |
US20210044303A1 (en) | Neural network acceleration device and method | |
CN116431562B (zh) | 一种基于加速处理器的多头注意力机制融合计算分配方法 | |
CN112183732A (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 |