CN110780921B - 数据处理方法和装置、存储介质及电子装置 - Google Patents
数据处理方法和装置、存储介质及电子装置 Download PDFInfo
- Publication number
- CN110780921B CN110780921B CN201910817926.2A CN201910817926A CN110780921B CN 110780921 B CN110780921 B CN 110780921B CN 201910817926 A CN201910817926 A CN 201910817926A CN 110780921 B CN110780921 B CN 110780921B
- Authority
- CN
- China
- Prior art keywords
- data
- processing
- instruction
- object data
- parallel
- 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
- 238000003860 storage Methods 0.000 title claims abstract description 78
- 238000003672 processing method Methods 0.000 title abstract description 24
- 238000000034 method Methods 0.000 claims abstract description 56
- 230000008569 process Effects 0.000 claims abstract description 33
- 239000013598 vector Substances 0.000 claims description 61
- 239000012634 fragment Substances 0.000 claims description 9
- 238000007493 shaping process Methods 0.000 claims description 8
- 238000013508 migration Methods 0.000 claims 1
- 230000005012 migration Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 5
- 238000001914 filtration Methods 0.000 description 4
- 238000005070 sampling Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 3
- 230000017105 transposition Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- 238000011112 process operation Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005111 flow chemistry technique Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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
Abstract
本发明公开了一种数据处理方法和装置、存储介质及电子装置。其中,该方法包括:读取数据处理指令,数据处理指令中携带有用于对待处理的目标数据流执行张量运算的多个指令域,每个指令域用于指示在张量运算过程中所要调用的参数;根据数据处理指令,确定在每个处理周期内所要处理的目标数据流中的对象数据对应的对象存储地址,以及对对象数据所执行的对象处理操作;在处理周期内从对象存储地址中读取对象数据,并通过并行执行模块对对象数据执行对象处理操作,并行执行模块包括与对象处理操作对应的多个并行操作算子;存储并行执行模块返回的处理结果。本发明解决了由于需要多条数据处理指令来完成处理操作,导致数据处理效率较低的问题。
Description
技术领域
本发明涉及计算机领域,具体而言,涉及一种数据处理方法和装置、存储介质及电子装置。
背景技术
目前,在深度神经网络模型的数据处理过程中,通常都是通过指令配置用于支持对标量或向量进行计算的算子,以实现对标量或向量的逻辑运算。
然而,针对操作量较大的张量(Tensor),往往需要配置多个逻辑运算的算子,通过多条指令循环执行多次运算过程,才能得到处理结果,使得数据处理操作较复杂,导致数据处理效率较低的问题。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据处理方法和装置、存储介质及电子装置,以至少解决由于需要多条数据处理指令来完成处理操作,导致数据处理效率较低的技术问题。
根据本发明实施例的一个方面,提供了一种数据处理方法,包括:读取数据处理指令,其中,上述数据处理指令中携带有用于对待处理的目标数据流执行张量运算的多个指令域,每个上述指令域用于指示在上述张量运算过程中执行的一种处理操作;根据上述数据处理指令,确定在每个处理周期内所要处理的上述目标数据流中的对象数据对应的对象存储地址,以及对上述对象数据所执行的对象处理操作;在上述处理周期内从上述对象存储地址中读取上述对象数据,并通过并行执行模块对上述对象数据执行上述对象处理操作,其中,上述并行执行模块包括与上述对象处理操作对应的多个并行操作算子;存储上述并行执行模块返回的处理结果。
根据本发明实施例的另一方面,还提供了一种数据处理装置,包括:指令读取模块、取值译码模块、数据读取模块、并行执行模块及对象数据缓存,其中,上述指令读取模块,用于读取数据处理指令,其中,上述数据处理指令中携带有用于对待处理的目标数据流执行张量运算的多个指令域,每个上述指令域用于指示在上述张量运算过程中所要调用的参数;上述取值译码模块,用于根据上述指令读取模块所读取的上述数据处理指令,确定在每个处理周期内所要处理的上述目标数据流中的对象数据对应的对象存储地址,以及对上述对象数据所执行的对象处理操作;上述数据读取模块,用于在上述处理周期内从上述对象存储地址中读取上述对象数据;上述并行执行模块,用于对上述对象数据执行上述对象处理操作,其中,上述并行执行模块包括与上述对象处理操作对应的多个并行操作算子;上述对象数据缓存,用于存储上述并行执行模块返回的处理结果。
根据本发明实施例的又一方面,还提供了一种存储介质,该存储介质中存储有待执行的指令,其中,该待执行的指令被设置为运行时执行上述数据处理方法。
根据本发明实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的指令序列,其中,上述处理器通过上述指令序列执行上述的数据处理方法。
在本发明实施例中,在读取携带有多个指令域的粗粒度的数据处理指令之后,可以根据指令域的指示,直接确定每个处理周期内所要处理的目标数据流中的对象数据对应的对象存储地址,及对象数据所执行的对象处理操作。然后从对象存储地址读取上述对象数据,再通过可以复用的并行执行模块来实现对上述对象数据执行张量运算中的对象处理操作,而无需再为每条数据定制单独的数据处理指令及单独的数据处理模块,通过使用粗粒度的数据处理指令及复用并行执行模块,实现对目标数据流的高效处理,达到提高数据处理效率,进而解决了由于需要多条数据处理指令来完成处理操作,导致数据处理效率较低的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的数据处理方法的硬件环境的示意图;
图2是根据本发明实施例的一种可选的数据处理方法的流程图;
图3是根据本发明实施例的一种可选的数据处理方法中张量的示意图;
图4是根据本发明实施例的一种可选的数据处理方法的示意图;
图5是根据本发明实施例的一种可选的数据处理方法的应用架构图;
图6是根据本发明实施例的另一种可选的数据处理方法中张量的示意图;
图7是根据本发明实施例的另一种可选的数据处理方法的流程图;
图8是根据本发明实施例的一种可选的数据处理装置的结构示意图;
图9是根据本发明实施例的一种可选的电子装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例的一个方面,提供了一种数据处理方法,可选地,作为一种可选的实施方式,上述数据处理方法可以但不限于应用于如图1所示的硬件环境的数据处理系统中,其中,该硬件环境可以但不限于为运行有数据流处理单元(Data Flow ProcessingUnit,简称DPU)的现场可编程门阵列(Field Programmable Gate Array,简称FPGA)或专用集成电路(Application Specific Integrated Circuit,简称ASIC)。其中,如图1所示,在FPGA 100中运行的DPU 102中至少包括:指令加载模块106、指令缓存108、指令读取模块110、取指译码模块112、数据加载模块114、地址生成器116、对象数据缓存118及并行执行模块120。上述并行执行模块120中包括多个并行操作算子(如并行操作算子1至并行操作算子n)。
在从双倍速率同步动态随机存储器(Double Data Rate Synchronous DynamicRandom Access Memory,简称DDR SDRAM)104加载到全部待处理的数据处理指令后,将其存储到片上指令缓存108中。
进一步,通过本申请实施例提供的方法,通过指令读取模块110依次从指令缓存108中读取一条数据处理指令,然后,取指译码模块112将解析数据处理指令,得到其中携带的用于对待处理的目标数据流执行张量运算的多个指令域。进一步,根据上述多个指令域可以确定在每个处理周期内所要处理的目标数据流中的对象数据对应的对象存储地址,以及对该对象数据所要执行的对象处理操作。然后通过数据加载模块114加载对象数据,并在地址生成器116中生成上述对象存储地址,以便于到用于存储对象数据的缓存查找所要加载的对象数据,并将其输入并行执行模块120,利用其中多个并行操作算子(如图1所示并行操作算子1至并行操作算子n)对对象数据执行对应的对象处理操作。最后,将得到的处理结果返回上述指令域中所指示的对象数据缓存118中的对应的地址。
需要说明的是,在本实施例中,在读取携带有多个指令域的粗粒度的数据处理指令之后,可以根据指令域的指示,直接确定每个处理周期内所要处理的目标数据流中的对象数据对应的对象存储地址,及对象数据所执行的对象处理操作。然后从对象存储地址读取上述对象数据,再通过可以复用的并行执行模块来实现对上述对象数据执行张量运算中的对象处理操作,而无需再为每条数据定制单独的数据处理指令及单独的数据处理模块,通过使用粗粒度的数据处理指令及复用并行执行模块,实现对目标数据流的高效处理,达到提高数据处理效率,进而克服相关技术中数据处理效率低的问题。
可选地,作为一种可选的实施方式,如图2所示,上述数据处理方法包括:
S202,读取数据处理指令,其中,数据处理指令中携带有用于对待处理的目标数据流执行张量运算的多个指令域,每个指令域用于指示在张量运算过程中所要调用的参数;
S204,根据数据处理指令,确定在每个处理周期内所要处理的目标数据流中的对象数据对应的对象存储地址,以及对对象数据所执行的对象处理操作;
S206,在处理周期内从对象存储地址中读取对象数据,并通过并行执行模块对对象数据执行对象处理操作,其中,并行执行模块包括与对象处理操作对应的多个并行操作算子;
S208,存储并行执行模块返回的处理结果。
可选地,在本实施例中,上述数据处理方法可以但不限于应用于深度学习处理过程中,对如图3所示的数据结构较复杂的张量(Tensor)进行运算处理,该张量宽为W,高为H,深度为N。进一步,假设以应用于如图4所示的卷积神经网络(Convolutional NeuralNetwork,简称CNN)中的DPU的数据处理过程中为例,将待处理的目标数据流通过输入缓存402输入,经过卷积/矩阵运算单元404的运算后,再写入输出缓存406。当存在包括DepthwiseCov在内的不包含深度方向运算的操作时,DPU 408将从输出缓存406中读取数据,在DPU 408中执行操作,并将结果写回输出缓存406。当DPU 408完成当前所有深度方向无关的运算操作,而需要执行深度方向相关运算时,可将数据从输出缓存406搬移到输入缓存402,准备后续执行过程。其中,上述输入缓存和输出缓存可以包括但不限于以下至少之一:ram、cache、regfile等用于存储的资源。上述仅是一种示例,本实施例中对此不作任何限定。
可选地,在本实施例中,上述对象数据的数据类型可以包括但不限于:权值参数、待处理数据,其中,上述权值参数可以但不限于存储在权值缓存中,上述待处理数据可以但不限于存储在数据缓存中。此外,上述对象数据的格式可以包括但不限于:张量、向量、标量。
可选地,在本实施例中,上述并行执行模块可以包括但不限于以下之一:逻辑运算处理单元(Arithmetic Logic Unit,简称ALU)的多个并行操作算子、数据整型处理单元(也可称作Reshape)的多个并行操作算子。其中,上述ALU中可以包括但不限于:乘法器、加法器、比较器、查找器等。上述Reshape中可以包括但不限于:数据搬移、矩阵二维/三维转置、上采样(upsampling)、下采样(downsampling)、pad等操作。也就是说,通过上述并行执行模块将实现DepthwiseCov、多种激活函数、池化(Pooling)处理、上采样(upsampling)、下采样(downsampling)、batchnorm、Pad、张量与张量之间的乘法、加法、比较等,张量与向量之间的乘法、加法、比较等,张量与标量之间的乘法、加法、比较等操作。上述仅是示例,本实施例中对此不作任何限定。
进一步,在从对象存储地址中读取对象数据之后,还可以包括:
1)在操作标识指示对象处理操作为逻辑运算处理操作的情况下,将读取到的对象数据输入并行执行模块中用于实现逻辑运算处理的多个第一并行操作算子。例如,对张量A中位于位置(x,y)上的向量v在深度上的每个分量分别输入一个第一并行操作算子执行逻辑运算处理操作,如加法操作、乘法操作等。
2)在操作标识指示对象处理操作为数据整型操作的情况下,将读取到的对象数据输入并行执行模块中用于实现数据整型处理的多个第二并行操作算子。例如,对张量A中位于位置(x,y)上的向量v在深度上的每个分量分别输入一个第二并行操作算子执行数据整型处理操作,如矩阵转置等。
具体结合图5所示的DPU 50中包括的模块单元来进行说明。图5所示DPU 50中包括整体控制模块500、切换模块502、指令读取模块504、指令缓存506、取指译码模块508、片循环处理模块510、权值加载模块512、权值缓存514、数据缓存516、存储器接口518、地址生成器520、ALU模块522、Reshape模块524及复用器(Multiplex,简称MUX)526。其中,上述各个模块的功能可以如下:
1)整体控制模块500,用于实现对DPU 50中包括的各个模块的使能控制和配合控制,如接收请求(DPU_REQ),发送响应(DPU_ACK);
2)切换模块502(Switch,简称SW),用于从DDR中加载所要处理的多条数据处理指令(例如DDR_LOAD),并存储到指令缓存506中;还可以用于从DDR中加载权值,并存储到权值缓存514中;也就是说,对外的DDR数据通路为一个,在同一时间,指令读取模块和权值加载模块二者允许运行其中一个,而该切换模块用于实现上述切换选择过程。
3)指令读取模块504,用于从指令缓存506中读取数据读取指令;
4)指令缓存506,用于存储加载到的多条数据处理指令,并定时更新;
5)取指译码模块508,用于对读取到的数据处理指令进行译码,获取其中多个指令域中的参数;
6)片循环处理模块510,用于执行数据处理指令所指示的逻辑运算操作与数据整型操作。当待处理的目标数据流中对象数据为张量,且张量的深度为N的情况下,对于并行控制模块中M个并行操作算子,可以执行以下操作:当N>M时,每次完成M个通道(channel)的数据处理,则共需执行ceil(N/M)次,其中,ceil()为向上取整函数。ceil(N/M)次的起止控制由该片循环处理模块510控制完成;
7)权值加载模块512,用于从DDR加载权值参数,其中,该权值参数可以为张量或向量,并将该权值参数写入权值缓存;
8)权值缓存514,用于存储临时的权值参数;
9)数据缓存516,用于采用乒乓方式,存储待处理数据和处理结果,如格式为张量的数据。此外,还可以与图3所示的卷积/矩阵运算单元共用;
10)存储器接口518,与数据缓存516连接,对乒乓存储器进行封装,对DPU提供双通道的读数据接口和写数据接口。
11)地址生成器520,用于生成所要读取的对象数据的对象存储地址。假设当前数据处理指令用于指示对张量A和张量B进行运算,则这里可以生成以下四种地址:张量A的数据流的连续读取地址、张量B的数据流的连续读取地址、权值数据流的连续读取地址、数据流写回的连续地址。在数据读写中,支持基于窗口内数据的顺序读取模式,用于基于滑窗的操作,如DeptiwiseCov、MaxPool、AvgPool、Upsampling等,并支持连续数据的重复读取,如DeptiwiseCov中,权值数据顺序重复读取。
12)ALU模块522,包括M个并行操作算子,每个并行操作算子中可以包括但不限于以下至少之一:乘法器、加法器、比较器、查找器及其他。每个并行操作算子可以但不限于对应输入张量的一个通道。这里ALU模块可以实现张量/向量/标量之间的数值计算,以实现张量与张量、张量与向量、张量与标量之间的运算。
13)Reshape模块524,包括M个并行操作算子,实现与非数值计算类操作,包括数据缓存内的数据搬移、矩阵二维/三维转置、upsampling、downsampling、pad等操作。
14)复用器(Multiplex,简称MUX)526,用于对并行执行模块输出结果进行整合,并将整合的结果返回写入数据缓存中。
需要说明的是,图5所示的DPU的架构是一种示例,本实施例中对其包含的模块及相应的连接关系不作任何限定。例如,并行执行模块中的ALU模块和Reshape模块可以择一配置;此外,在上述架构中,还可以替换上述ALU模块和Reshape模块来对数据执行替换后的对象处理操作,以实现对运算处理模块的灵活复用,使其具备支持其他并行操作算子的能力,达到提高数据处理效率和灵活性的目的。
进一步,指令读取模块也可以但不限于用于控制指令数据加载,即,通过切换模块,从DDR读取数据处理指令,并将读取的结果写回指令缓存。这里指令读取模块和指令缓存之间的箭头是双向的,即数据流向是双向的,包括数据读取过程和数据写入过程。
此外,在本实施例中,在对象数据为张量的情况下,且其深度大于多个并行操作算子的数量的情况下,还可以对张量进行拆分,得到多个张量数据片段。例如,如图6所示,假设对象数据为张量(Tensor),该张量宽为W,高为H,深度为N。在并行操作算子的数量为M,且N>M的情况下,可以但不限于按照并行操作算子的数量M的长度,对张量执行拆分,得到张量数据片段(Slice),进而将该张量数据片段(Slice)中各个位置上的分量(如图6所示斜线部分为一个分量),分别输入并行执行模块中的多个并行操作算子中,来执行对应的对象处理操作。
通过本申请提供的实施例,在读取携带有多个指令域的粗粒度的数据处理指令之后,可以根据指令域的指示,直接确定每个处理周期内所要处理的目标数据流中的对象数据对应的对象存储地址,及对象数据所执行的对象处理操作。然后从对象存储地址读取上述对象数据,再通过可以复用的并行执行模块来实现对上述对象数据执行张量运算中的对象处理操作,而无需再为每条数据定制单独的数据处理指令及单独的数据处理模块,通过使用粗粒度的数据处理指令及复用并行执行模块,实现对目标数据流的高效处理,达到提高数据处理效率,进而克服相关技术中数据处理效率低的问题。
作为一种可选的方案,根据数据处理指令,确定在每个处理周期内所要处理的目标数据流中的对象数据对应的对象存储地址,以及对对象数据所执行的对象处理操作包括:
S1,解析数据处理指令,得到多个指令域;
S2,根据多个指令域,确定在每个处理周期内所要处理的对象数据的数据类型以及对象处理操作的操作标识;
S3,在对象数据的数据类型包括权值参数的情况下,从权值缓存中确定出所要加载的权值参数的参数对象存储地址;
S4,在对象数据的数据类型包括待处理数据的情况下,从数据缓存中确定出所要加载的待处理数据的数据对象存储地址。
可选地,在本实施例中,上述数据处理指令可以包括但不限于以下之一:滤波运算指令、数据整型指令和权值加载指令。每种指令由多个指令域构成,每个指令域用于指示在指令执行中所要调用的子模块所需的参数。例如,在滤波运算指令需要调用地址生成器、ALU模块、写地址生成器。则上述滤波运算指令中将携带有对应各个模块所需的参数。进一步,上述指令域中可以包括但不限于:上述对象操作的操作标识,在操作标识指示为逻辑运算处理操作的情况下,则表示对象数据将输入ALU模块执行逻辑运算处理操作;在操作标识指示为数据整型处理操作的情况下,则表示对象数据将输入Reshape模块执行数据整型处理操作。
此外,在本实施例中,上述数据流处理单元中可以包括但不限于:用于存储权值参数的权值缓存,用于存储待处理数据的数据缓存。其中,权值参数的格式可以但不限于为标量或向量,待处理数据的格式可以但不限于为张量。
例如,假设数据处理指令指示执行张量和张量的运算,则同时使能两个张量地址生成模块,形成两个连续不断的张量数据流,并存储在数据缓存中对应的对象存储地址中,分别对应张量A和张量B;若为张量和向量的运算,则同时使能一个张量地址生成模块,和一个向量地址生成模块,其中,向量地址生成模块可以但不限于以与其同时运算的张量A的周期为生成周期,重复生成同一个向量v,形成一个连续不断的张量数据流和一个连续不断的向量数据流,并存储在数据缓存中对应的对象存储地址中和/或权值缓存中对应的对象存储地址中,分别对应张量A和向量v,以便于对张量A和向量v执行对象处理操作。若为张量A和标量s的运算,则使能一个张量地址生产模块,并对从数据处理指令中解析出的标量s复制M个,生成参数向量r,然后将该参数向量r输入ALU模块中,以便于ALU模块利用上述参数向量r与从数据缓存中读取的张量A执行对象处理操作。
需要说明的是,在本实施例中,在目标数据流的来源小于等于2个的情况下,上述并行执行模块最多可支持对两个通道中的数据同时执行处理操作。例如,在第一处理周期(也可称作时钟周期)内,可以对地址生成模块生成的两个张量(如张量A和张量B)执行对象处理操作,也可以对地址生成模块生成的一个张量和一个权值(如向量或张量)执行对象处理操作,或对地址生成模块生成的一个张量执行对象处理操作(如自增累加处理)。此外,在第一处理周期(也可称作时钟周期)内,还可以对一个张量或一个标量执行单独操作。上述仅是示例,本实施例中对此不作任何限定。
进一步,在本实施例中,并行执行模块可以包括但不限于多层并行操作算子。例如,在第一层的多个并行操作算子的数据来源为从数据缓存中读取的两个张量,或从数据缓存中读取的一个张量和从权值缓存中读取的一个向量的情况下,如图5所示,数据来源为CH_1和CH_2(数据缓存中读取)以及KB(权值缓存中读取)中任意两个的情况下,则第二层之后的多个并行算子的数据来源可以为已经存储的标量生成的参数向量。又例如,在第一层的多个并行操作算子的数据来源为一个张量,或一个向量的情况下,如图5所示,数据来源为CH_1和CH_2(数据缓存中读取)以及KB(权值缓存中读取)中任意一个的情况下,则第二层之后的多个并行算子的数据来源至少还可以从数据缓存或权值缓存中引入一个张量或向量。上述数据读取过程是根据DPU预先配置的处理能力确定,本实施例中对此不作限定。
通过本申请提供的实施例,在解析数据处理指令以得到多个指令域之后,可以根据多个指令域,确定在每个处理周期内所要处理的对象数据的数据类型以及对象处理操作的操作标识,从而实现根据不同的数据类型到不同的缓存中读取对应的对象数据,并将该对象数据输入对应的并行操作算子中执行对象处理算子。也就是说,从数据处理架构层级,对读取对象数据与执行对象数据处理操作两个环节实现物理分离,以实现对用于执行对象处理操作的并行执行模块的复用。无需为不同的对象数据定制配置不同的指令和处理结构,而是通过灵活地调整替换并行操作算子,就可以实现数据处理的更新,从而达到提高数据处理效率的目的。
作为一种可选的方案,在处理周期内从对象存储地址中读取对象数据,并通过并行执行模块对对象数据执行对象处理操作包括:
S1,根据数据处理指令确定对象数据的格式均为张量的情况下,从对象存储地址中读取格式为张量的对象数据;
S2,通过并行执行模块中的多个并行操作算子对对象数据执行对象处理操作。
需要说明的是,在本实施例中,在对象数据的格式均为张量的情况下,上述张量可以均是从数据缓存中确定出的对象存储地址中读取,也可以分别是从数据缓存中确定出的对象存储地址和从权值缓存中确定出的对象存储地址中读取。也就是说,上述张量可以是待处理数据,也可以是可复用的权值参数,本实施例中对此不作任何限定。
可选地,在本实施例中,在对象数据是深度为N的张量,且并行执行模块中包括M个并行操作算子的情况下,通过并行执行模块中的多个并行操作算子对对象数据执行对象处理操作包括:
1)在M<N的情况下,根据N/M的上取整结果对对象数据进行拆分,得到多个张量数据片段;依次读取每个张量数据片段,并在每个处理周期内将张量数据片段中每个位置上的向量在深度上的分量分别输入每个并行操作算子中执行对象处理操作;
2)在M≥N的情况下,在每个处理周期内将对象数据中每个位置上的向量在深度上的分量分别输入每个并行操作算子中执行对象处理操作。
需要说明的是,在通过函数ceil()对N/M执行向上取整处理后得到上取整结果,可以根据该上取整结果对对象数据进行拆分,得到多个张量数据片段,其中,每个张量数据片段将在DPU中独立的执行一次数据处理过程。
具体结合以下示例进行说明,假设数据处理指令用于指示对对象数据执行加法操作,其中,上述对象数据包括:10*10*130的张量,数值为5的标量。即对上述张量中每个位置上的向量在深度上的分量分别加上同一个标量值5。进一步,假设上述并行执行模块中包括的多个并行操作算子的数量为32。
在根据上述数据处理执行数据处理的过程中,可以对张量在深度方向上进行切分,如深度N=130,则根据上取整结果确定拆分为32,32,32,32,2),5个张量数据片段,需要在DPU中执行ceil(130/32)=5次数据处理过程。
进一步,在依次读取每个张片数据片段之后,对于每个张量数据片段,可以在每个处理周期(时钟周期)内,将一个位置上的向量(深度方向上的向量)中的32个分量分别输入32个并行操作算子中执行加法操作。其中,上述处理周期可以但不限于为10*10个周期。
通过本申请提供的实施例,在对象数据的格式均为张量的情况下,可以利用并行执行模块中的多个并行操作算子对张量在深度方向上的分量同时执行对象处理操作。从而实现利用结构的复用,达到提高数据处理效率的目的。进一步,在张量的深度大于多个并行操作算子的数量的情况下,还可以通过对张量在深度方向上进行拆分,得到多个张量数据片段,以便于依次对每个张量数据片段执行数据处理操作,保证数据处理的完整性和准确性。
作为一种可选的方案,在处理周期内从对象存储地址中读取对象数据,并通过并行执行模块对对象数据执行对象处理操作包括:
S1,根据数据处理指令确定对象数据包括格式为张量的第一对象数据及格式为标量的第二对象数据的情况下,从对象存储地址中读取第一对象数据,并从指令域中解析出第二对象数据;
S2,对第二对象数据进行复制,以生成参数向量,其中,参数向量的长度等于多个并行操作算子的数量;
S3,将参数向量的分量分别输入多个并行操作算子中;
S4,通过多个并行操作算子,对第一对象数据及参数向量执行对象处理操作。
具体结合以下示例进行说明,假设数据处理指令用于指示对对象数据执行乘法操作,其中,上述对象数据包括:10*10*32的张量A,数值为5的标量。进一步,假设上述并行执行模块中包括的多个并行操作算子的数量为32。即,张量A的深度=多个并行操作算子的数量,无需对上述张量进行拆分。
进一步,则可以对上述标量值5进行复制,得到32个5构成的参数向量r{5,5,5,…5},并将该参数向量r输入ALU模块中。然后,在从数据缓存中读取到上述10*10*32的张量A,并将其输入ALU模块之后,则可以在每个处理周期内,对每个位置上的向量在在深度上的分量分别乘同一个标量值5,来完成乘法处理,得到最终的处理结果,并将该处理结果写回数据缓存中。
通过本申请提供的实施例,在对象数据的格式包括张量和标量的情况下,可以通过对标量进行复制,得到参数向量,从而实现将该参数向量与待处理的张量在每个位置上的向量执行对象处理操作,以达到针对不同格式的对象数据均可实现对并行执行模块的复用,扩展上述并行执行模块的适用范围。
作为一种可选的方案,在处理周期内从对象存储地址中读取对象数据,并通过并行执行模块对对象数据执行对象处理操作包括:
S1,根据数据处理指令确定对象数据包括格式为张量的第三对象数据和格式为向量的第四对象数据的情况下,从对象存储地址中读取第三对象数据及第四对象数据;
S2,通过多个并行操作算子,对第三对象数据及第四对象数据执行对象处理操作。
具体结合以下示例进行说明,假设数据处理指令用于指示对对象数据执行乘法操作,其中,上述对象数据包括:10*10*32的张量A,向量v。进一步,假设上述并行执行模块中包括的多个并行操作算子的数量为32。即,张量A的深度=多个并行操作算子的数量,无需对上述张量进行拆分。
进一步,则可以从权值缓存中直接读取上述向量v,并从数据缓存中读取上述10*10*32的张量A,然后,将上述向量v和张量A输入ALU模块输入ALU模块中的多个并行操作算子(如乘法器),来完成乘法处理,得到最终的处理结果,并将该处理结果写回数据缓存中。
通过本申请提供的实施例,在对象数据的格式包括张量和向量的情况下,可以通过直接读取权值缓存中的向量,从而实现将该向量与待处理的张量在每个位置上的向量执行对象处理操作,以达到针对不同格式的对象数据均可实现对并行执行模块的复用,扩展上述并行执行模块的适用范围。
作为一种可选的方案,在读取数据处理指令之前,还包括:
S1,在指令缓存为空或指令缓存非空非满的情况下,从动态随机存储器中加载多条数据处理指令到指令缓存中。
需要说明的是,在本实施例中,可以但不限于根据指令缓存中的存储状态确定是否继续从DDR中加载新的数据处理指令。
例如,检测指令缓存是否为空。在检测到指令缓存的存储状态为空的情况下,则发起从DDR加载数据处理指令的加载请求,将数据处理指令加载到指令缓存中。在检测到指令缓存的存储状态为满的情况下,则忽略DDR加载过程,直接触发后续的取指译码过程。在检测到指令缓存的存储状态为非空非满的情况下,表示指令缓存内有可执行的指令,则可以在发起从DDR中加载数据处理指令的同时,还可以使能取值译码模块,以开始对数据处理指令的读取和解析译码操作。
通过本申请提供的实施例,在DPU加载数据处理指令之前,还可以先确定本地的指令缓存的存储状态,再根据该存储状态来触发指令加载过程,以避免在无存储空间的情况下触发指令加载,导致增加处理负荷的问题。从而实现对指令加载的灵活控制的效果。
作为一种可选的方案,在存储并行执行模块返回的处理结果之后,还包括:
S1,在确定数据处理指令所指示处理的目标数据流已完成处理的情况下,读取下一条数据处理指令。
需要说明的是,在本实施例中,上述数据处理指令为粗粒度指令,可以同时携带用于指示执行数据处理操作的多个指令域。也就是说,通过在数据处理指令中写入所要执行的数据处理操作的类规则,来达到对数据流的连续控制,从而实现大大提升了指令的利用效率,减少了CPU中指令之间的关系判断、数据依赖判断、数据预测准确度等对数据处理性能的影响。
通过本申请提供的实施例,在判断出当前所要处理的目标数据流已完成处理的情况下,再触发读取下一条数据处理指令,以便于对下一个目标数据流的连续处理控制,从而提高了数据处理效率。
具体本申请实施例可以结合图5所示的架构和图7所示流程进行说明。
如图7所示步骤S702-S730:在深度学习的一层处理过程中包含DPU可执行的算子时,使能DPU_REQ发起请求,在如步骤S702收到主机host处理请求DPU_REQ之后,执行步骤S704-S706,检测指令缓存是否为空?检测指令缓存是否为满?在指令缓存为空的情况下,则如步骤S708发起从DDR加载数据处理指令的加载请求,将数据处理指令加载到指令缓存中。在指令缓存为满的情况下,则忽略DDR加载过程,直接触发后续的取指译码过程(如步骤S710)。在指令缓存为非空非满的情况下,表示指令缓存内有可执行的指令,则可以在如步骤S708从DDR中加载数据处理指令的同时,还可以执行步骤S710,使能取值译码模块,以开始对数据处理指令的读取和解析译码操作。
在取值译码模块解析数据处理指令后,根据指令域中包括的指令头信息确定所要执行的数据处理操作,再将指令域中包括的指令主体内的参数信息作为执行部分的执行参数进行后向传递后,使能对应模块执行相应操作。
假设指示执行权值加载操作的情况下,则执行步骤S712-1至步骤S714-1:在确定是权值加载指令的情况下,从权值缓存中加载权值。当加载完成后,权值加载将响应ACK信号发送至取值译码模块中权值加载操作对应的指令译码子模块。该子模块收到ACK信号后,表征当前指令执行完成,即开始下一条指令的执行过程,直到执行完当前的最后一条指令。
假设指示执行滤波操作的情况下,则执行步骤S712-2至步骤S728-2:在确定是滤波指令的情况下,则将解析的参数配置后,向片循环处理模块发送REQ执行请求;片循环处理模块收到上述请求后,根据输入张量在深度方向上的深度N,以及并行执行模块(如ALU模块)中并行操作算子的数量M,将任务进行拆分,得到ceil(C/M)个任务片段,并执行ceil(C/M)次后续模块的调用过程。每次后续模块的调用包括:使能地址生成器,向地址生成器发送SLICE_REQ,地址生成器根据所配置的参数,连续输出数据的读取地址,通过存储器接口从数据缓存中读入输入张量的数据,形成输入目标数据流。在通过并行执行模块执行对象处理操作(如滤波操作)后,再将处理结果写回通过存储器接口写入数据缓存。在上述过程中,数据缓存应至少提供两个读数据接口,以支持至少两路的张量数据流之间的运算。在当前片段运算结束后,地址生成器发送SLICE_ACK至片循环处理模块。片循环处理模块是否完成所有数据片段的数据处理。若没有,则更新地址参数,开始下一轮张量运算。若完成,则向取值译码模块中滤波器运算操作对应的译码子模块发送ACK信号,该子模块收到ACK后,表征当前指令执行完成,即开始下一条指令的执行过程,直到执行完当前的最后一条指令。
假设指示执行数据整型操作的情况下,则执行步骤S712-3至步骤S728-3:与滤波器运算操作类似,重复上述过程,并将ALU模块替换为Reshape模块。本实施例中在此不再赘述。
最后,在确定完成最后一条指令的数据处理后,执行步骤S730,向host返回ACK信号,以确认完成全部数据处理操作。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
根据本发明实施例的另一个方面,还提供了一种用于实施上述数据处理方法的数据处理装置。如图8所示,该装置包括:指令读取模块802、取值译码模块804、数据读取模块806、并行执行模块808及对象数据缓存810,其中,
1)指令读取模块802,用于读取数据处理指令,其中,数据处理指令中携带有用于对待处理的目标数据流执行张量运算的多个指令域,每个指令域用于指示在张量运算过程中所要调用的参数;
2)取值译码模块804,用于根据指令读取模块所读取的数据处理指令,确定在每个处理周期内所要处理的目标数据流中的对象数据对应的对象存储地址,以及对对象数据所执行的对象处理操作;
3)数据读取模块806,用于在处理周期内从对象存储地址中读取对象数据;
4)并行执行模块808,用于对对象数据执行对象处理操作,其中,并行执行模块包括与对象处理操作对应的多个并行操作算子;
5)对象数据缓存810,用于存储并行执行模块返回的处理结果。
作为一种可选的方案,还包括:
1)数据加载模块,用于解析数据处理指令,得到多个指令域;并根据多个指令域,确定在每个处理周期内所要处理的对象数据的数据类型以及对象处理操作的操作标识;
2)地址生成模块(也可称作地址生成器),用于在对象数据的数据类型包括权值参数的情况下,从权值缓存中确定出所要加载的权值参数的参数对象存储地址;在对象数据的数据类型包括待处理数据的情况下,从数据缓存中确定出所要加载的待处理数据的数据对象存储地址,其中,对象数据缓存包括权值缓存、数据缓存。
作为一种可选的方案,并行执行模块808包括:
1)逻辑运算单元,用于在操作标识指示对象处理操作为逻辑运算处理操作的情况下,对读取到的对象数据执行逻辑运算处理,其中,逻辑运算单元中包括多个第一并行操作算子;
2)数据整型单元,在操作标识指示对象处理操作为数据整型操作的情况下,对读取到的对象数据执行数据整型处理,其中,数据整型单元中包括多个第二并行操作算子。
作为一种可选的方案,在对象数据是深度为N的张量,且并行执行模块中包括M个并行操作算子,且M<N的情况下,数据加载模块包括:
1)片循环处理模块,用于根据N/M的上取整结果对对象数据进行拆分,得到多个张量数据片段;依次读取每个张量数据片段,并在每个处理周期内将张量数据片段中每个位置上的向量在深度上的分量分别输入每个并行操作算子中执行对象处理操作。
上述数据处理装置的相关实施例,可以参考上述数据处理方法中的实施例,本实施例中在此不再赘述。
根据本发明实施例的又一个方面,还提供了一种用于实施上述数据处理方法的电子装置,如图9所示,该电子装置包括存储器902和处理器904,该存储器902中存储有指令序列,该处理器904被设置为通过指令序列执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述电子装置可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,上述处理器可以被设置为通过指令序列执行以下步骤:
S1,读取数据处理指令,其中,数据处理指令中携带有用于对待处理的目标数据流执行张量运算的多个指令域,每个指令域用于指示在张量运算过程中所要调用的参数;
S2,根据数据处理指令,确定在每个处理周期内所要处理的目标数据流中的对象数据对应的对象存储地址,以及对对象数据所执行的对象处理操作;
S3,在处理周期内从对象存储地址中读取对象数据,并通过并行执行模块对对象数据执行对象处理操作,其中,并行执行模块包括与对象处理操作对应的多个并行操作算子;
S4,存储并行执行模块返回的处理结果。
可选地,本领域普通技术人员可以理解,图9所示的结构仅为示意,电子装置也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图9其并不对上述电子装置的结构造成限定。例如,电子装置还可包括比图9中所示更多或者更少的组件(如网络接口等),或者具有与图9所示不同的配置。
其中,处理器904可以通过运行存储在存储器902内的指令序列以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据处理方法。此外,处理器904还可以执行自身操作后,将待处理数据发送至存储器902,并使能存储器902执行相关操作。需要说明的是,处理器904可以单独配置专属片上或片外缓存。
进一步,存储器902可用于存储指令序列及对应模块,如本发明实施例中的数据处理方法和装置对应的程序指令/模块,该存储器902可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器902可进一步包括相对于处理器904远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器902具体可以但不限于用于存储上述待处理的对象数据及处理结果等信息。
需要说明的是,在本实施例中,上述存储器902可以但不限于为图1所示DPU 102或包含DPU 102在内的协处理器。其中,协处理器为板卡形式,板卡上包含了协处理器及其相应的存储器,如DDR等。
可选地,上述的传输装置906用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置906包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置906为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
此外,上述电子装置还包括:显示器908,用于显示处理结果;和连接总线910,用于连接上述电子装置中的各个模块部件。
根据本发明的实施例的又一方面,还提供了一种存储介质,该存储介质中存储有待执行指令,其中,该待执行指令用于实现上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的待执行指令:
S1,读取数据处理指令,其中,数据处理指令中携带有用于对待处理的目标数据流执行张量运算的多个指令域,每个指令域用于指示在张量运算过程中所要调用的参数;
S2,根据数据处理指令,确定在每个处理周期内所要处理的目标数据流中的对象数据对应的对象存储地址,以及对对象数据所执行的对象处理操作;
S3,在处理周期内从对象存储地址中读取对象数据,并通过并行执行模块对对象数据执行对象处理操作,其中,并行执行模块包括与对象处理操作对应的多个并行操作算子;
S4,存储并行执行模块返回的处理结果。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (12)
1.一种数据处理方法,其特征在于,包括:
读取数据处理指令,其中,所述数据处理指令中携带有用于对待处理的目标数据流执行张量运算的多个指令域,每个所述指令域用于指示在所述张量运算过程中所要调用的参数;
根据所述数据处理指令,确定在每个处理周期内所要处理的所述目标数据流中的对象数据对应的对象存储地址,以及对所述对象数据所执行的对象处理操作;
在所述处理周期内从所述对象存储地址中读取所述对象数据,并通过并行执行模块对所述对象数据执行所述对象处理操作,包括:根据所述数据处理指令确定所述对象数据的格式均为张量的情况下,从所述对象存储地址中读取格式为张量的所述对象数据;通过并行执行模块中的多个并行操作算子对所述对象数据执行所述对象处理操作;和/或,根据所述数据处理指令确定所述对象数据包括格式为张量的第三对象数据和格式为向量的第四对象数据的情况下,从所述对象存储地址中读取所述第三对象数据及所述第四对象数据;通过所述多个并行操作算子,对所述第三对象数据及所述第四对象数据执行所述对象处理操作;
其中,在所述对象数据是深度为N的张量,且所述并行执行模块中包括M个并行操作算子的情况下,所述通过所述并行执行模块中的多个并行操作算子对所述对象数据执行所述对象处理操作包括:
在M<N的情况下,根据N/M的上取整结果对所述对象数据进行拆分,得到多个张量数据片段;依次读取每个所述张量数据片段,并在每个所述处理周期内将所述张量数据片段中每个位置上的向量在深度上的分量分别输入每个并行操作算子中执行所述对象处理操作;
在M≥N的情况下,在每个所述处理周期内将所述对象数据中每个位置上的向量在深度上的分量分别输入每个并行操作算子中执行所述对象处理操作;
存储所述并行执行模块返回的处理结果。
2.根据权利要求1所述的方法,其特征在于,所述根据所述数据处理指令,确定在每个处理周期内所要处理的所述目标数据流中的对象数据对应的对象存储地址,以及对所述对象数据所执行的对象处理操作包括:解析所述数据处理指令,得到所述多个指令域;
根据所述多个指令域,确定在每个所述处理周期内所要处理的所述对象数据的数据类型以及所述对象处理操作的操作标识;
在所述对象数据的数据类型包括权值参数的情况下,从权值缓存中确定出所要加载的所述权值参数的参数对象存储地址;
在所述对象数据的数据类型包括待处理数据的情况下,从数据缓存中确定出所要加载的所述待处理数据的数据对象存储地址。
3.根据权利要求2所述的方法,其特征在于,所述在所述处理周期内从所述对象存储地址中读取所述对象数据,并通过并行执行模块对所述对象数据执行所述对象处理操作包括:
在所述操作标识指示所述对象处理操作为逻辑运算处理操作的情况下,将读取到的所述对象数据输入所述并行执行模块中用于实现逻辑运算处理的多个第一并行操作算子;
在所述操作标识指示所述对象处理操作为数据整型操作的情况下,将读取到的所述对象数据输入所述并行执行模块中用于实现数据整型处理的多个第二并行操作算子。
4.根据权利要求1所述的方法,其特征在于,所述在所述处理周期内从所述对象存储地址中读取所述对象数据,并通过并行执行模块对所述对象数据执行所述对象处理操作包括:
根据所述数据处理指令确定所述对象数据包括格式为张量的第一对象数据及格式为标量的第二对象数据的情况下,从所述对象存储地址中读取所述第一对象数据,并从所述指令域中解析出所述第二对象数据;
对所述第二对象数据进行复制,以生成参数向量,其中,所述参数向量的长度等于所述多个并行操作算子的数量;
将所述参数向量的分量分别输入所述多个并行操作算子中;
通过所述多个并行操作算子,对所述第一对象数据及所述参数向量执行所述对象处理操作。
5.根据权利要求1所述的方法,其特征在于,在所述读取数据处理指令之前,还包括:
在指令缓存为空或所述指令缓存为非空非满的情况下,从动态随机存储器中加载多条数据处理指令到所述指令缓存中。
6.根据权利要求1至5中任一项所述的方法,其特征在于,在所述对象处理操作为逻辑运算处理操作的情况下,包括以下至少之一:加法操作、乘法操作、比较操作、查找操作;在所述对象处理操作为数据整型处理操作的情况下,包括以下至少之一:数据迁移操作、数据转置操作、数据上采样操作、数据下采样操作。
7.一种数据处理装置,其特征在于,包括:指令读取模块、取值译码模块、数据读取模块、并行执行模块及对象数据缓存,其中,
所述指令读取模块,用于读取数据处理指令,其中,所述数据处理指令中携带有用于对待处理的目标数据流执行张量运算的多个指令域,每个所述指令域用于指示在所述张量运算过程中所要调用的参数;
所述取值译码模块,用于根据所述指令读取模块所读取的所述数据处理指令,确定在每个处理周期内所要处理的所述目标数据流中的对象数据对应的对象存储地址,以及对所述对象数据所执行的对象处理操作;所述装置,还用于在所述处理周期内从所述对象存储地址中读取所述对象数据,并通过并行执行模块对所述对象数据执行所述对象处理操作,包括:根据所述数据处理指令确定所述对象数据的格式均为张量的情况下,从所述对象存储地址中读取格式为张量的所述对象数据;通过并行执行模块中的多个并行操作算子对所述对象数据执行所述对象处理操作;和/或,根据所述数据处理指令确定所述对象数据包括格式为张量的第三对象数据和格式为向量的第四对象数据的情况下,从所述对象存储地址中读取所述第三对象数据及所述第四对象数据;通过所述多个并行操作算子,对所述第三对象数据及所述第四对象数据执行所述对象处理操作;其中,在所述对象数据是深度为N的张量,且所述并行执行模块中包括M个并行操作算子的情况下,所述通过所述并行执行模块中的多个并行操作算子对所述对象数据执行所述对象处理操作包括:在M<N的情况下,根据N/M的上取整结果对所述对象数据进行拆分,得到多个张量数据片段;依次读取每个所述张量数据片段,并在每个所述处理周期内将所述张量数据片段中每个位置上的向量在深度上的分量分别输入每个并行操作算子中执行所述对象处理操作;在M≥N的情况下,在每个所述处理周期内将所述对象数据中每个位置上的向量在深度上的分量分别输入每个并行操作算子中执行所述对象处理操作;
所述对象数据缓存,用于存储所述并行执行模块返回的处理结果。
8.根据权利要求7所述的装置,其特征在于,还包括:
数据加载模块,用于解析所述数据处理指令,得到所述多个指令域;
并根据所述多个指令域,确定在每个所述处理周期内所要处理的所述对象数据的数据类型以及所述对象处理操作的操作标识;
地址生成模块,用于在所述对象数据的数据类型包括权值参数的情况下,从权值缓存中确定出所要加载的所述权值参数的参数对象存储地址;在所述对象数据的数据类型包括待处理数据的情况下,从数据缓存中确定出所要加载的所述待处理数据的数据对象存储地址,其中,所述对象数据缓存包括所述权值缓存、所述数据缓存。
9.根据权利要求8所述的装置,其特征在于,所述并行执行模块包括:
逻辑运算单元,用于在所述操作标识指示所述对象处理操作为逻辑运算处理操作的情况下,对读取到的所述对象数据执行逻辑运算处理,其中,所述逻辑运算单元中包括多个第一并行操作算子;
数据整型单元,在所述操作标识指示所述对象处理操作为数据整型操作的情况下,对读取到的所述对象数据执行数据整型处理,其中,所述数据整型单元中包括多个第二并行操作算子。
10.根据权利要求8所述的装置,其特征在于,在所述对象数据是深度为N的张量,且所述并行执行模块中包括M个并行操作算子,且M<N的情况下,所述数据加载模块包括:
片循环处理模块,用于根据N/M的上取整结果对所述对象数据进行拆分,得到多个张量数据片段;依次读取每个所述张量数据片段,并在每个所述处理周期内将所述张量数据片段中每个位置上的向量在深度上的分量分别输入每个并行操作算子中执行所述对象处理操作。
11.一种存储介质,所述存储介质中存储有待执行的指令,其中,所述待执行的指令用于实现上述权利要求1至6任一项中所述的方法。
12.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有指令序列,所述处理器被设置为通过所述指令序列执行所述权利要求1至6任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910817926.2A CN110780921B (zh) | 2019-08-30 | 2019-08-30 | 数据处理方法和装置、存储介质及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910817926.2A CN110780921B (zh) | 2019-08-30 | 2019-08-30 | 数据处理方法和装置、存储介质及电子装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110780921A CN110780921A (zh) | 2020-02-11 |
CN110780921B true CN110780921B (zh) | 2023-09-26 |
Family
ID=69383390
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910817926.2A Active CN110780921B (zh) | 2019-08-30 | 2019-08-30 | 数据处理方法和装置、存储介质及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110780921B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360747B (zh) * | 2020-03-04 | 2024-01-12 | 阿里巴巴集团控股有限公司 | 基于神经网络模型的数据处理方法及装置 |
CN111506520B (zh) | 2020-07-01 | 2020-09-22 | 腾讯科技(深圳)有限公司 | 一种地址生成的方法、相关装置以及存储介质 |
CN111899149A (zh) * | 2020-07-09 | 2020-11-06 | 浙江大华技术股份有限公司 | 基于算子融合的图像处理方法和装置、存储介质 |
CN111784000A (zh) * | 2020-07-16 | 2020-10-16 | 矩阵元技术(深圳)有限公司 | 数据处理方法、装置和服务器 |
CN112631955B (zh) * | 2020-12-18 | 2024-01-19 | 北京地平线机器人技术研发有限公司 | 数据处理方法、装置、电子设备以及介质 |
CN116127259A (zh) * | 2021-01-13 | 2023-05-16 | 华为技术有限公司 | 张量处理方法、装置、设备及计算机可读存储介质 |
CN117350911A (zh) * | 2022-06-28 | 2024-01-05 | 华为技术有限公司 | 一种着色器输入数据的处理方法和图形处理装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106940815A (zh) * | 2017-02-13 | 2017-07-11 | 西安交通大学 | 一种可编程卷积神经网络协处理器ip核 |
WO2017185418A1 (zh) * | 2016-04-29 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法 |
CN107748674A (zh) * | 2017-09-07 | 2018-03-02 | 中国科学院微电子研究所 | 面向比特粒度的信息处理系统 |
CN108009126A (zh) * | 2017-12-15 | 2018-05-08 | 北京中科寒武纪科技有限公司 | 一种计算方法及相关产品 |
WO2018107476A1 (zh) * | 2016-12-16 | 2018-06-21 | 华为技术有限公司 | 访存设备、计算设备和应用于卷积神经网络运算的设备 |
CN108197705A (zh) * | 2017-12-29 | 2018-06-22 | 国民技术股份有限公司 | 卷积神经网络硬件加速装置及卷积计算方法及存储介质 |
CN108805796A (zh) * | 2017-05-05 | 2018-11-13 | 英特尔公司 | 用于整数深度学习原语的动态精度管理 |
JP2019003414A (ja) * | 2017-06-15 | 2019-01-10 | 公立大学法人会津大学 | データ処理装置、及びこれにおけるデータ処理方法 |
CN109522254A (zh) * | 2017-10-30 | 2019-03-26 | 上海寒武纪信息科技有限公司 | 运算装置及方法 |
CN109886399A (zh) * | 2019-02-13 | 2019-06-14 | 上海燧原智能科技有限公司 | 一种张量处理装置及方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106991073B (zh) * | 2016-01-20 | 2020-06-05 | 中科寒武纪科技股份有限公司 | 用于向量运算的数据读写调度器及保留站 |
US11055063B2 (en) * | 2016-05-02 | 2021-07-06 | Marvell Asia Pte, Ltd. | Systems and methods for deep learning processor |
US10956500B2 (en) * | 2017-01-19 | 2021-03-23 | Google Llc | Dynamic-length stateful tensor array |
US10755141B2 (en) * | 2017-09-13 | 2020-08-25 | Hrl Laboratories, Llc | Streaming data tensor analysis using blind source separation |
US11250314B2 (en) * | 2017-10-27 | 2022-02-15 | Cognizant Technology Solutions U.S. Corporation | Beyond shared hierarchies: deep multitask learning through soft layer ordering |
US20190130269A1 (en) * | 2017-10-27 | 2019-05-02 | Wave Computing, Inc. | Pipelined tensor manipulation within a reconfigurable fabric |
-
2019
- 2019-08-30 CN CN201910817926.2A patent/CN110780921B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017185418A1 (zh) * | 2016-04-29 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法 |
WO2018107476A1 (zh) * | 2016-12-16 | 2018-06-21 | 华为技术有限公司 | 访存设备、计算设备和应用于卷积神经网络运算的设备 |
CN106940815A (zh) * | 2017-02-13 | 2017-07-11 | 西安交通大学 | 一种可编程卷积神经网络协处理器ip核 |
CN108805796A (zh) * | 2017-05-05 | 2018-11-13 | 英特尔公司 | 用于整数深度学习原语的动态精度管理 |
JP2019003414A (ja) * | 2017-06-15 | 2019-01-10 | 公立大学法人会津大学 | データ処理装置、及びこれにおけるデータ処理方法 |
CN107748674A (zh) * | 2017-09-07 | 2018-03-02 | 中国科学院微电子研究所 | 面向比特粒度的信息处理系统 |
CN109522254A (zh) * | 2017-10-30 | 2019-03-26 | 上海寒武纪信息科技有限公司 | 运算装置及方法 |
CN108009126A (zh) * | 2017-12-15 | 2018-05-08 | 北京中科寒武纪科技有限公司 | 一种计算方法及相关产品 |
CN108197705A (zh) * | 2017-12-29 | 2018-06-22 | 国民技术股份有限公司 | 卷积神经网络硬件加速装置及卷积计算方法及存储介质 |
WO2019127731A1 (zh) * | 2017-12-29 | 2019-07-04 | 国民技术股份有限公司 | 卷积神经网络硬件加速装置及卷积计算方法及存储介质 |
CN109886399A (zh) * | 2019-02-13 | 2019-06-14 | 上海燧原智能科技有限公司 | 一种张量处理装置及方法 |
Non-Patent Citations (2)
Title |
---|
Limeng Cui.Multi-view Collective Tensor Decomposition for Cross-modal Hashing.ICMR '18: Proceedings of the 2018 ACM on International Conference on Multimedia Retrieval.2018,全文. * |
基于多维属性的社会网络链接预测算法MDA-TF;仇丽青;丁长青;陈卓艳;;计算机应用研究(第02期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110780921A (zh) | 2020-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110780921B (zh) | 数据处理方法和装置、存储介质及电子装置 | |
JP6840827B2 (ja) | ニューラルネットワークプロセッサにおけるバッチ処理 | |
KR102443546B1 (ko) | 행렬 곱셈기 | |
JP6987860B2 (ja) | ハードウェアにおけるカーネルストライドの実行 | |
EP3451162B1 (en) | Device and method for use in executing matrix multiplication operations | |
US11550543B2 (en) | Semiconductor memory device employing processing in memory (PIM) and method of operating the semiconductor memory device | |
CN109657782B (zh) | 运算方法、装置及相关产品 | |
US10768894B2 (en) | Processor, information processing apparatus and operation method for processor | |
CN111310904A (zh) | 一种用于执行卷积神经网络训练的装置和方法 | |
JP6826181B2 (ja) | 計算装置と計算方法 | |
CN112860320A (zh) | 基于risc-v指令集进行数据处理的方法、系统、设备及介质 | |
CN111382859A (zh) | 用于处理神经网络中的卷积运算的方法和装置 | |
CN110991619A (zh) | 神经网络处理器、芯片和电子设备 | |
CN111047036A (zh) | 神经网络处理器、芯片和电子设备 | |
WO2021036729A1 (zh) | 一种矩阵运算方法、运算装置以及处理器 | |
CN111523652A (zh) | 处理器及其数据处理方法、摄像装置 | |
CN107957975B (zh) | 一种计算方法及相关产品 | |
CN111133457A (zh) | 电子设备及其控制方法 | |
CN109711540B (zh) | 一种计算装置及板卡 | |
CN111381882B (zh) | 数据处理装置及相关产品 | |
CN111047035A (zh) | 神经网络处理器、芯片和电子设备 | |
EP4071619A1 (en) | Address generation method, related device and storage medium | |
US9785582B2 (en) | Data processing architecture and data processing method | |
CN113435591B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2020192587A1 (zh) | 人工智能计算装置及相关产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40020253 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |