CN111767999A - 数据处理方法、装置及相关产品 - Google Patents
数据处理方法、装置及相关产品 Download PDFInfo
- Publication number
- CN111767999A CN111767999A CN201910263149.1A CN201910263149A CN111767999A CN 111767999 A CN111767999 A CN 111767999A CN 201910263149 A CN201910263149 A CN 201910263149A CN 111767999 A CN111767999 A CN 111767999A
- Authority
- CN
- China
- Prior art keywords
- data
- stored
- memory
- neural network
- storage space
- 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 20
- 238000003062 neural network model Methods 0.000 claims abstract description 83
- 238000000034 method Methods 0.000 claims abstract description 72
- 238000012545 processing Methods 0.000 claims abstract description 27
- 238000013528 artificial neural network Methods 0.000 claims abstract description 24
- 230000015654 memory Effects 0.000 claims description 298
- 230000005540 biological transmission Effects 0.000 claims description 8
- 238000012544 monitoring process Methods 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 abstract description 13
- 238000013473 artificial intelligence Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 3
- 239000012141 concentrate Substances 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000005406 washing Methods 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/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
Abstract
本公开涉及一种数据处理方法、装置及相关产品,所述产品包括控制模块,所述控制模块包括:指令缓存单元、指令处理单元和存储队列单元;所述指令缓存单元,用于存储所述人工神经网络运算关联的计算指令;所述指令处理单元,用于对所述计算指令解析得到多个运算指令;所述存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。通过以上方法,本公开可以提高相关产品在进行神经网络模型的运算时的运算效率。
Description
技术领域
本公开涉及深度学习技术领域,尤其涉及一种数据处理方法、装置及相关产品。
背景技术
随着计算机技术的发展,尤其是神经网络技术的普及,越来越多的神经网络被开发和使用,神经网络的规模也随之越来越大。通常情况下,神经网络是逐层进行计算,网络上每层的计算结果都会保存下来。在进行计算结果的保存时,通常是在神经网络运行过程中将生成的计算结果存储到内存中,即,运算器在运行神经网络的同时,还需要分配额外资源用于处理内存,以进行计算结果的存储,这就增加了运算器的运算压力。
发明内容
有鉴于此,本公开提出了一种数据处理方法、装置及相关产品,可以使得神经网络模型在运行过程中,处理器能够专注于算子运算本身,不需要分配额外资源来处理存储空间,从而有效缓解了处理器的运行压力,并且还实现了对多个待存储数据的全局统筹的目的
根据本公开的一方面,提供了一种数据处理方法,所述方法包括:
在神经网络模型处于非运行状态时,根据调度信息,获取所述神经网络模型运行过程中生成的多个待存储数据,并确定多个所述待存储数据的IO顺序队列;
其中,所述调度信息通过对所述神经网络模型调度生成,包括所述神经网络模型的各个算子与多个处理器之间的对应关系,所述IO顺序队列为多个所述待存储数据的输入输出的先后顺序的队列;
根据所述IO顺序队列,在存储器中对所述待存储数据分配存储空间。
在一种可能的实现方式中,所述待存储数据包括各所述处理器单独使用的专属数据和/或多个处理器共同使用的共享数据。
在一种可能的实现方式中,根据所述IO顺序队列,在存储器中对所述待存储数据分配存储空间,包括:
在所述待存储数据为各所述处理器的专属数据时,在所述存储器的各独用内存空间对所述待存储数据分配相应的存储空间,
其中,各所述独用内存空间为各所述处理器单独访问的存储空间;
在所述待存储数据为所述共享数据时,在所述存储器的共享内存空间对所述待存储数据分配相应的存储空间,
其中,所述共享内存空间为多个所述处理器均可访问的存储空间。
在一种可能的实现方式中,根据所述IO顺序队列,在存储器中对所述待存储数据分配存储空间,包括:
根据所述IO顺序队列,按照各所述待存储数据的数据量由大到小的顺序,在存储器中对所述待存储数据分配存储空间。
在一种可能的实现方式中,根据所述IO顺序队列,在存储器中对所述待存储数据分配存储空间,包括:
根据所述IO顺序队列,获取所述待存储数据与已分配的待存储数据之间的IO关系,其中,已分配的待存储数据与所述待存储数据的属性相同;
基于所述IO关系,在所述存储器中对所述待存储数据分配存储空间。
在一种可能的实现方式中,基于所述IO关系,在所述存储器中对所述待存储数据分配存储空间,包括:
基于所述IO关系,确定出在已分配的各待存储数据中,存在与所述待存储数据的IO顺序不冲突的待存储数据时,由所述存储器的已分配内存空间中选取第一内存空间,并指定所述第一内存空间为所述待存储数据的存储空间;
其中,所述第一内存空间为已分配的待存储数据中,与所述待存储数据的IO顺序不冲突的待存储数据的存储空间。
在一种可能的实现方式中,指定所述第一内存空间为所述待存储数据的存储空间,包括:
指定所述第一内存空间的地址为所述待存储数据的存储地址,并根据所述IO关系更新所述第一内存空间的时间线;
其中,所述第一内存空间的时间线用于定义存储地址为所述第一内存空间地址的各待存储数据的写入时间。
在一种可能的实现方式中,所述第一内存空间为已分配的待存储数据中,与所述待存储数据的IO顺序不冲突,且数据量最大的待存储数据的存储空间。
在一种可能的实现方式中,基于所述IO关系,在所述存储器中对所述待存储数据分配存储空间,包括:
基于所述IO关系,确定出已分配的各待存储数据均与所述待存储数据的IO顺序冲突时,根据所述存储器中各已分配内存空间之间的间隙内存空间,对所述待存储数据分配相应的存储空间。
在一种可能的实现方式中,根据所述存储器中各已分配内存空间之间的间隙内存空间,对所述待存储数据分配相应的存储空间,包括:
在各所述已分配内存空间之间不存在所述间隙内存空间时,或存在所述间隙内存空间且各所述间隙内存空间的内存容量不满足所述待存储数据的数据量时,在独用内存空间中新建第二内存空间;
指定所述第二内存空间为所述待存储数据的存储空间。
在一种可能的实现方式中,根据所述存储器中各已分配内存空间之间的间隙内存空间,对所述待存储数据分配相应的存储空间,包括:
在各所述已分配内存空间之间存在间隙内存空间,且间隙内存空间的个数为多个时,根据各间隙内存空间的内存容量,对所述待存储数据分配相应的存储空间。
在一种可能的实现方式中,根据各间隙内存空间的内存容量,对所述待存储数据分配相应的存储空间,包括:
在存在内存容量满足所述待存储数据的数据量的间隙内存空间时,由多个间隙内存空间中选取第一间隙内存空间,指定所述第一间隙内存空间为所述待存储数据的存储空间;
其中,所述第一间隙内存空间在多个所述间隙内存空间中内存容量最大。
在一种可能的实现方式中,根据所述IO顺序队列,获取所述待存储数据与已分配的待存储数据之间的IO关系,包括:
在所述待存储数据为第一处理器的专属数据时,由所述IO顺序队列中提取出第一子队列,所述第一子队列为第一处理器的各专属数据的输入输出先后顺序的队列,所述第一处理器为多个所述处理器中的任意一个;
基于所述第一子队列,获取所述IO关系;
在所述待存储数据为所述共享数据时,根据所述IO顺序队列,获取所述待存储数据的冲突表,其中,所述冲突表用于记录多个所述共享数据中,与所述待存储数据存在IO顺序冲突的其他共享数据;
基于所述冲突表,确定所述IO关系。
在一种可能的实现方式中,在所述待存储数据为所述共享数据时,根据所述IO顺序队列,获取所述待存储数据的冲突表,包括:
由所述IO顺序队列中提取出第二子队列,所述第二子队列为多个所述共享数据的输入输出先后顺序的队列;
根据对所述神经网络模型调度后的各所述共享数据之间的同步关系以及所述第二子队列,对所述待存储数据建立相应的冲突表。
在一种可能的实现方式中,根据对所述神经网络模型调度后的各所述共享数据之间的同步关系以及所述第二子队列,对所述待存储数据建立相应的冲突表,包括:
根据所述同步关系以及所述第二子队列,确定多个所述共享数据中,与所述待存储数据的输入输出顺序存在重叠的共享数据以及与所述待存储数据的输入输出顺序不可确定的共享数据;
将与所述待存储数据的输入输出顺序存在重叠的各共享数据,以及与所述待存储数据的输入输出顺序不可确定的各共享数据记录到所述待存储数据的冲突表中。
在一种可能的实现方式中,所述同步关系通过添加在所述神经网络模型中的同步信息来表征;
其中,所述同步信息包括第一算子和第二算子;
所述第一算子,用于在所述神经网络模型运行过程中,表征所述神经网络模型中的前继算子的运行状态;
所述第二算子,用于根据所述第一算子确定是否运行所述神经网络模型中的当前算子;
其中,所述当前任务为所述前继算子执行完毕后执行的任务,所述运行状态包括运行未完成或运行完成。
在一种可能的实现方式中,所述第二算子,用于在预设时间间隔读取第一算子,并根据读取到的所述第一算子确定是否运行所述当前算子。
在一种可能的实现方式中,还包括:
在所述神经网络模型运行时,根据为各所述待存储数据分配的存储空间的地址,分别存储各所述待存储数据。
根据本公开的另一方面,还提供了一种数据处理装置,所述装置包括:
数据获取模块,用于在神经网络模型处于非运行状态时,根据调度信息,获取所述神经网络模型运行过程中生成的多个待存储数据,并确定多个所述待存储数据的IO顺序队列;
其中,所述调度信息通过对所述神经网络模型调度生成,包括所述神经网络模型的各个算子与多个处理器之间的对应关系,所述IO顺序队列为多个所述待存储数据的输入输出的先后顺序的队列;
空间分配模块,用于根据所述IO顺序队列,在存储器中对所述待存储数据分配存储空间。
在一种可能的实现方式中,所述空间分配模块,还用于根据所述IO顺序队列,按照各所述待存储数据的数据量由大到小的顺序,在存储器中对所述待存储数据分配存储空间。
在一种可能的实现方式中,所述空间分配模块,包括:
IO关系获取子模块,用于根据所述IO顺序队列,获取所述待存储数据与已分配的待存储数据之间的IO关系,其中,已分配的待存储数据与所述待存储数据的属性相同;
空间分配子模块,用于基于所述IO关系,在所述存储器中对所述待存储数据分配存储空间。
在一种可能的实现方式中,所述IO关系获取子模块,包括:
第一提取单元,用于在所述待存储数据为各所述处理器的专属数据时,由所述IO顺序队列中提取出第一子队列,所述第一子队列为第一处理器的各专属数据的输入输出先后顺序的队列,所述第一处理器为多个所述处理器中的任意一个;
第一获取单元,用于基于所述第一子队列,获取所述IO关系;
第一建立单元,用于在所述待存储数据为共享数据时,根据所述IO顺序队列,获取所述待存储数据的冲突表,其中,所述冲突表用于记录多个所述共享数据中,与所述待存储数据存在IO顺序冲突的其他共享数据;
第二获取单元,用于基于所述冲突表,确定所述IO关系。
根据本公开的另一方面,还提供了一种神经网络芯片,所述芯片包括如上任一所述的数据处理装置。
根据本公开的另一方面,还提供了一种电子设备,所述电子设备包括如上所述的神经网络芯片。
根据本公开的另一方面,还提供了一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如上所述的神经网络芯片;
其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述神经网络芯片与外部设备之间的数据传输;
所述控制器件,用于对所述神经网络芯片的状态进行监控。
在一种可能的实现方式中,所述存储器件包括:多组存储单元,每一组所述存储单元与所述神经网络芯片通过总线连接,所述存储单元为:DDR SDRAM;
所述芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接口装置为:标准PCIE接口。
通过在神经网络模型处于非运行状态时,根据神经网络模型的调度信息,预估神经网络模型的运行过程以获取运行过程中生成的多个待存储数据,并根据确定的IO顺序队列对待存储数据进行存储空间的分配,实现了对待存储数据存储空间的静态分配(即,在神经网络模型运行之前对各待存储数据分配相应的存储空间)。这就使得神经网络模型在运行过程中,处理器能够专注于算子运算本身,不需要分配额外资源来处理存储空间,从而有效缓解了处理器的运行压力,加快了神经网络模型的运行速度。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出本公开实施例的数据处理方法的流程图;
图2示出本公开实施例的数据处理装置的框图;
图3示出本公开实施例的板卡的结构框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
首先,需要说明的是,在本公开的数据处理方法中,神经网络模型可以为各种网络模型,如:CNN(卷积神经网络,Convolutional Neural Network)、RNN(循环神经网络,Recurrent Neural Network)、BiRNN(双向RNN,Bidirectional RNN)、GRU(门控循环单元,Gated Recurrent Unit)、LSTM(长短期记忆网络,Long Short-Term Memory)等,此处不进行具体限定。
同时,本公开的数据处理方法可以应用于通用处理器,如:CPU(CentralProcessing Unit/Processor,中央处理器),还可以应用于人工智能处理器。其中,人工智能处理器指的是用于执行人工智能运算的处理器(IPU),如:包括GPU(GraphicsProcessing Unit,图形处理单元)、NPU(Neural-Network Processing Unit,神经网络处理单元)、DSP(Digital Signal Process,数字信号处理单元)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)芯片中的一种或组合。本公开对人工智能处理器的具体类型不作限制。
在一种可能的实现方式中,本公开实施例的数据处理方法可以应用于异构计算架构中,异构计算架构可包括通用处理器和人工智能处理器,其中,通用处理器可用于指定各个数据块的存储空间,人工智能处理器可用于在神经网络模型运行过程中,根据各个数据块的存储空间的地址,分别存储各个数据块。也就是说,本公开实施例的数据处理方法可以由通用处理器和人工智能处理器共同执行,例如,可以采用CPU+IPU的处理器异构架构,首先通过CPU的计算来指定各个数据块的存储空间,然后在运行神经网络模型过程中,根据各个数据块的存储空间的地址,通过IPU来分配存储空间。
另外,本公开实施例的数据处理方法也可以应用于单一架构中。也就是说,本公开的数据处理方法可以由任一个处理器独立执行,例如,可以由IPU来执行该数据处理方法。
图1示出了本公开实施例的数据处理方法的流程图。参阅图1,本公开实施例的数据处理方法可以包括以下步骤:
步骤S100,在神经网络模型处于非运行状态时,根据调度信息,获取神经网络模型运行过程中生成的多个待存储数据,并确定多个待存储数据的IO顺序队列。此处,需要说明的是,神经网络模型的非运行状态指的是神经网络模型在运行之前。本领域技术人员可以理解的是,神经网络模型运行之前可以为神经网络模型构建好之后,在进行初次训练之前阶段,也可以为神经网络模型在经过一次或多次训练后,在进行测试之前,还可以为神经网络模型在经过测试后,在应用之前。也就是说,在本公开的任务调度方法中,神经网络模型的非运行状态可以为神经网络模型在任何阶段(如:训练阶段、测试阶段和应用阶段)中运行之前的状态。
其中,调度信息通过对神经网络模型调度生成,包括神经网络模型的各个算子与多个处理器之间的对应关系。即,通过对神经网络模型进行调度,获取相应的调度信息后,再根据调度信息获取神经网络模型运行过程中生成的多个待存储数据。
应当指出的是,在获取多个待存储数据时,可以通过模拟神经网络模型的运行过程对生成的待存储数据进行预估来实现。所获取的多个待存储数据可以为运行过程中生成的中间结果。中间结果可以是神经网络计算过程中除了输入数据和输出数据之外的各层的计算结果。例如,神经网络模型可以由全连接和池化两个算子组成,首先对输入数据进行全连接运算,然后对运算结果进行池化运算,得到最终的输出结果,中间结果是全连接运算完成后生成的结果。另外,待存储数据还可以包括输入数据和输出数据中的至少一种。
IO顺序队列可以为多个待存储数据的输入输出的先后顺序的队列。其中,IO顺序队列可以通过各待存储数据在预估神经网络模型运行过程中的使用顺序来确定。
在获取神经网络模型运行过程中生成的多个待存储数据后,即可执行步骤S200,根据IO顺序队列,在存储器中对待存储数据分配存储空间。
由此,本公开实施例的数据处理方法,通过在神经网络模型处于非运行状态时,根据神经网络模型的调度信息,预估神经网络模型的运行过程以获取运行过程中生成的多个待存储数据,并在确定多个待存储数据的IO顺序队列后,根据确定的IO顺序队列对待存储数据进行存储空间的分配,实现了对待存储数据存储空间的静态分配(即,在神经网络模型运行之前对各待存储数据分配相应的存储空间)。相较于相关技术中,采用在神经网络模型运行过程中对各数据实时分配存储空间的方式(即,动态分配方式),使得神经网络模型在运行过程中,处理器能够专注于算子运算本身,不需要分配额外资源来处理存储空间,这就有效缓解了处理器的运行压力,并且还实现了对多个待存储数据的全局统筹的目的。
应当指出的是,在本公开实施例的数据处理方法中,待存储数据可以包括各处理器单独使用的专属数据和/或多个处理器共同使用的共享数据。也就是说,在通过模拟神经网络模型的运行过程,根据神经网络模型的调度信息获取运行过程中生成的多个待存储数据时,待存储数据可以为某个处理器所单独使用的数据,还可以为多个处理器共享使用的数据,或者是,部分待存储数据为各处理器单独使用的数据,部分待存储数据则为多个处理器共同使用的数据。
由此,在一种可能的实现方式中,根据IO顺序队列,在存储器中对待存储数据分配存储空间时,可以包括以下方式:
在待存储数据为各处理器的专属数据时,在存储器的各独用内存空间对待存储数据分配相应的存储空间。其中,各独用内存空间为各处理器单独访问的存储空间。并且,各独用内存空间可以为栈结构,即,各独用内存空间内的数据以栈结构进行写入读出。
在待存储数据为多个处理器的共享数据时,则在存储器的共享内存空间对待存储数据分配相应的存储空间。其中,共享内存空间为多个处理器均可访问的存储空间。并且,共享内存空间可以为堆结构。即,共享内存空间的数据以堆结构进行写入读出。
也就是说,将存储器的存储空间进行划分,得到多个存储空间。其中一部分存储空间作为各处理器的单独使用的内存空间,一部分作为多个处理器共同使用的内存空间。由此,在对各待存储数据分配存储空间时,只需要针对不同的待存储数据,选择不同的划分区域进行分配即可。这就有效缩减了划分对象的范围,从而加快了分配进程。
此处,应当指出的是,在将存储的存储空间进行各独用内存空间和共享内存空间的划分时,可以通过划分存储地址来实现。
进一步的,在根据IO顺序队列,在存储器中对待存储数据分配存储空间时,需要先确定当前所要分配的待存储数据(为简化描述,以下统称为第一数据)。根据前面所述,由于待存储数据可以为各处理器单独使用的专属数据,还可以为多个处理器共同使用的共享数据,因此在确定第一数据时,可以先由多个待存储数据中提取各处理器的专属数据或各共享数据,进而再分别对各处理器的专属数据和各共享数据进行存储空间的分配。
此处,应当指出的是,对各处理器的专属数据分配存储空间的过程和对各共享数据分配存储空间的过程可以为并行执行,也可以为串行执行。在采用并行执行时,可以通过多线程方式来实现。在采用串行执行时,可以采用单线程方式实现。
并且,在由多个待存储数据中提取各专属数据或各共享数据时,可以依据待存储数据的属性标识来实现。待存储数据的属性标识用于表征待存储数据为各处理器单独使用的专属数据或多个处理器共同使用的共享数据。其中,本领域技术人员可以理解的是,待存储数据的属性标识可以在模拟神经网络模型运行过程时生成,此处不再进行赘述。
另外,在确定第一数据时,可以通过数据量的大小来实现。即,在一种可能的实现方式中,根据IO顺序队列,在存储器中对待存储数据分配存储空间时,还可以包括:根据IO顺序队列,按照各待存储数据的数据量由大到小的顺序,在存储器中对待存储数据分配存储空间。
也就是说,在根据IO顺序队列,在存储器中对待存储数据分配存储空间时,需要先确定当前所要分配存储空间的待存储数据。在确定当前所要分配存储空间的待存储数据时,可以按照数据量由大到小的顺序由多个待存储数据中依次提取相应的待存储数据进行分配。
通过按照数据量由大到小的顺序进行待存储数据的依次提取,保证了后续在进行存储空间的分配过程中,复用已分配的存储空间时,使得所复用的已分配存储空间的内存容量能够满足当前所要分配的待存储数据,这就保证了存储空间分配方式的可靠性。
进一步的,在按照数据量由大到小的顺序进行当前所要分配存储空间的待存储数据(第一数据)的选取时,同样可以分别针对不同的待存储数据进行相应的数据量的排序。
如:对于待存储数据(即,第一数据)为第一处理器的专属数据时,此处所述的第一处理器指的是多个处理器中的任意一个。在按照数据量由大到小的顺序选取时,可以先由多个待存储数据中提取出第一处理器的各专属数据,进而再对提取出的第一处理器的专属数据按照数据量由大到小的排序,以此来实现第一数据的选取。
举例来说,第一处理器的专属数据包括:数据A、数据B、数据C、数据D和数据E。前述数据的数据量由大到小的顺序依次为:数据A>数据B>数据C>数据D>数据E。由此,在选取第一数据时,可依次选取数据A、数据B、数据C、数据D和数据E。
同样的,对于待存储数据(即,第一数据)为共享数据时,可以先由多个待存储数据中提取出各共享数据,进而再对提取出的共享数据按照数据量由大到小的顺序排序来进行第一数据的选取。由于由各共享数据中提取第一数据的过程与各处理器的专属数据的过程相同或相似,因此此处不再举例说明。
在确定出当前所要分配存储空间的待存储数据(第一数据)后,即可根据IO顺序队列,在存储器中对待存储数据分配存储空间。作为一种可能的实现方式,可以包括以下步骤来实现:
首先,根据IO顺序队列,获取待存储数据(第一数据)与已分配的待存储数据之间的IO关系。此处,应当说明的是,根据前面所述,待存储数据具有不同的属性(即,待存储数据可以包括各处理器单独使用的专属数据和多个处理器共同使用的共享数据中的至少一种),因此所获取的IO关系中,待存储数据(第一数据)与已分配的待存储数据的属性应当为同一属性。
即,在第一数据为第一处理器的专属数据时,已分配的待存储数据应当为第一处理器的各专属数据中已分配存储空间的数据。在第一数据为共享数据时,已分配的待存储数据应当为共享数据中已分配存储空间的数据。
进而再基于获取到的IO关系,在存储器中对待存储数据(第一数据)分配存储空间。
此处,需要指出的是,所获取的IO关系表征了当前所要分配存储空间的待存储数据与已分配的待存储数据之间是否存在IO冲突。即,已分配的待存储数据中,是否存在与第一数据的IO冲突的数据。其中,本领域技术人员可以理解的是,IO冲突指的是输入输出顺序存在重叠(或交叉)。
由此,通过根据IO顺序队列获取当前所要分配存储空间的待存储数据与已分配的待存储数据之间的IO关系,进而再基于IO关系在存储器中对待存储数据分配存储空间,实现了对待存储数据的全局统筹。
需要进一步说明的是,在基于IO关系,在存储器中对第一数据进行存储空间的分配时,根据前面所述,对于不同属性的待存储数据,所分配的存储空间的范围不同。对于第一数据为第一处理器的专属数据时,所对应的分配空间范围为存储器中对第一处理器单独设置的独用内存空间。对于第一数据为共享数据时,所对应的分配空间范围为存储器中对多个处理器所设置的共享内存空间。
进一步的,不同属性的待存储数据,所对应的IO关系可通过不同的方式来表征。也就是说,对于不同属性的待存储数据,根据IO顺序队列,获取待存储数据与已分配的待存储数据之间的IO关系时,可以通过多种方式来实现。
在一种可能的实现方式中,在待存储数据为第一处理器的专属数据时,可以先由IO顺序队列中提取出第一子队列。其中,第一子队列为第一处理器的各专属数据的输入输出先后顺序的队列,第一处理器为多个处理器中的任意一个。然后,再基于第一子队列,获取IO关系。
通过由IO顺序队列中提取出与待存储数据(第一数据)相同属性的各待存储数据的输入输出先后顺序的队列(第一队列)后,可以依据所提取出的第一队列直接获取到IO关系,获取方式简单,易于实现,且数据计算量小,这也就减少了数据运算量,降低了资源损耗。
在待存储数据为共享数据时,可以直接根据IO顺序队列,获取待存储数据的冲突表。其中,冲突表用于记录多个共享数据中与待存储数据存在IO顺序冲突的其他共享数据。进而,再基于冲突表,确定IO关系。
通过采用冲突表的方式来实现等效的IO关系,使得共享数据中与待存储数据存在IO顺序冲突的其他共享数据以更加直观的方式记录下来,从而使得存储空间分配过程更加简单。
进一步的,在待存储数据(第一数据)为共享数据时,根据IO顺序队列,获取待存储数据的冲突表,可以通过以下方式实现:
由IO顺序队列中提取出第二子队列,第二子队列为多个共享数据的输入输出先后顺序的队列。根据对神经网络模型调度后的各共享数据之间的同步关系以及第二子队列,对待存储数据建立相应的冲突表。
其中,根据对神经网络模型调度后的各共享数据之间的同步关系以及第二子队列,对待存储数据建立相应的冲突表,可以包括:
根据同步关系以及第二子队列,确定多个共享数据中,与待存储数据的输入输出顺序存在重叠的共享数据以及与待存储数据的输入输出顺序不可确定的共享数据。
将与待存储数据的输入输出顺序存在重叠的各共享数据,以及与待存储数据的输入输出顺序不可确定的各共享数据记录到待存储数据的冲突表中。
通过上述方式建立待存储数据的冲突表,使得冲突表中所记录的与待存储数据存在IO顺序冲突的共享数据以及IO顺序不确定的共享数据较为完整,这也就更进一步地提高了对待存储数据分配存储空间时的准确性。
为了更清楚的说明本公开实施例中,根据同步关系和由IO顺序队列提取出来的第二子队列,对待存储数据建立相应的冲突表的详细过程,以下对冲突表的建立过程进行举例说明。
如:对于神经网络模型中的同步关系,无论使用什么形式实现,总是以通知-同步的方式体现,其中,在本公开实施例中,各共享数据的访问(IO)顺序,可以视为如下一种队列:
其中,Core0、Core1和Core2分别为处理器0、处理器1和处理器2,Data1至Data11为处理器0、处理器1和处理器2的共享数据。通知1和同步1一组,通知2和同步2一组。
由此可以得知:对一个处理器的队列而言(比如以core1为例),同步之后发生的读写可以认为严格发生在其他处理器的通知之后。比如:core1的data2的读写可以认为发生在core0的data1、data6和data3之后;同理,也发生在core0的data4,data5和data6之前,而对于无法确认顺序的data,则默认为IO冲突。
所以,对于core1的data2,可以排出这样一个周期表:data1、data6、data3、data2、data4、data5和data6。可以看出在这个表里,data2和data1、data3、data4和data5不冲突,和data6的IO周期有重叠,属于冲突范畴,所以data6会被填入data2的冲突表内,同时data4和data5因为有一部分core0的访问无法确定是否和data2冲突,所以也会被填入data2的冲突表中。
同理,对于每一个处理器的每一个data,都可以用上述相同或相似的方式确认其他处理器上的数据是不是和本处理器冲突,此处不再进行赘述。
进一步的,在本公开实施例中,对于core2,由于core2和core1没有直接的同步关系,但是存在间接关系。即,同步1-通知1-同步3-通知3,所以data2可以认为严格发生在data8、data9后,同理也认为data2的读写严格发生在同步4之后读写的数据data11前。
由此,通过采用上述任一种方式建立待存储数据的冲突表,以冲突表的方式来实现等效的IO关系,使得共享数据中与待存储数据存在IO顺序冲突的其他共享数据以更加直观的方式记录下来,这就有效简化了存储空间的分配过程,并且还保证了分配过程的准确性和可靠性。
需要指出的是,同步关系可以基于在对神经网络模型进行调度后生成的调度信息来获得。并且,同步关系可以通过添加在神经网络模型中的同步信息来表征。作为一种可能的实现方式,同步信息可以包括第一算子和第二算子。第一算子,用于在神经网络模型运行过程中,表征神经网络模型中的前继算子的运行状态。第二算子,用于根据第一算子确定是否运行神经网络模型中的当前算子。其中,本领域技术人员可以理解的是,当前任务为前继算子执行完毕后执行的任务。并且,当前任务和前继任务可以分别运行在不同的处理器上。运行状态包括运行未完成或运行完成。
还需要说明的是,在一种可能的实现方式中,第二算子根据第一算子确定是否运行神经网络模型中的当前算子时,可以通过在预设时间间隔读取第一算子,并根据读取到的第一算子确定是否运行当前算子来实现。通过设置第二算子在预设时间间隔内进行第一算子的读取,避免了频繁读取第一算子的操作,减少了第一算子的读取次数,从而也就有效降低了功耗。
为了更清楚地说明本公开实施例中以同步算子来表征神经网络模型调度后的各共享数据之间的同步关系的方式,以下进行举例说明。
如:第一算子可以为:notify(通知),第二算子为:sync(同步)。同步算子不计算,只是算子级别的锁。采用标志位的方式实现。即,第一算子可以设置标志位,通过标志位的不同取值表征前继任务的不同运行状态。其中,notify的用法为,前继任务计算完成(运行完成)置为1,没计算完成(运行中)默认为0。运算前(等待运行)默认为0。sync同步的用法则为:每隔一段时间间隔读取notify(第一算子)标志位的取值,读到1往后走,使得当前任务的运行状态为运行中,没读到或读到0则等待,使得当前任务的运行状态为等待运行。
通过对第一算子设置标志位,并通过标志位的取值来表征前继任务的运行状态,使得添加在神经网络模型中的同步算子作为算子级别的锁而存在,其不会参与到神经网络模型的运算中,因此可以保证依赖关系不会因同步而改变,并且还保证了神经网络模型的网络拓扑结构的准确性。
在通过前面任一种方式获取IO关系后,由于IO关系表征了当前所要分配存储空间的待存储数据与已分配的待存储数据的IO顺序是否存在冲突。因此,在一种可能的实现方式中,基于IO关系,在存储器中对待存储数据分配存储空间时,可以包括:
基于IO关系,确定出在已分配的各待存储数据中,存在与待存储数据的IO顺序不冲突的待存储数据时,由存储器的已分配内存空间中选取第一内存空间,并指定第一内存空间为待存储数据的存储空间。
其中,第一内存空间为已分配的待存储数据中,与待存储数据的IO顺序不冲突的待存储数据的存储空间。
通过在确定出已分配的待存储数据中存在与当前所要分配的待存储数据(即,第一数据)的IO顺序不冲突的待存储数据后,此时可以由已分配的内存空间中选取第一内存空间作为第一数据的存储空间,来达到已分配内存空间的复用的目的,从而提高数据处理过程中存储空间的使用效率,降低存储空间的占用率,这也就有效缓解了存储空间的压力。
应当说明的是,指定第一内存空间为待存储数据(第一数据)的存储空间时,可以通过指定第一内存空间的地址为待存储数据(第一数据)的存储地址来实现。同时,在将第一内存空间的地址指定为待存储数据的存储地址后,为了保证后续再运行神经网络模型时,待存储数据能够顺利的由该内存空间中写入和读出,还可以包括根据IO关系更新第一内存空间的时间线的步骤。其中,第一内存空间的时间线用于定义存储地址为第一内存空间地址的各待存储数据的写入时间。
这是由于第一内存空间为复用空间,用于存储多个IO顺序不冲突的待存储数据,为了保证各待存储数据能够按照自身的使用顺序顺利的写入或读出第一内存空间,可以通过对第一内存空间的时间线进行更新来实现,操作简单,易于实现,并且还更进一步地保证了后续神经网络模型运行时,各待存储数据能够按序进行存储。
另外,还需要指出的是,在基于IO关系,确定出已分配的待存储数据中存在与当前所要分配的待存储数据(即,第一数据)的IO顺序不冲突的待存储数据后,此时与第一数据的IO顺序不冲突的已分配的待存储数据的个数可以为一个,也可以为多个,还可以为零个。
由此,在只存在一个与第一数据的IO顺序不冲突的已分配的待存储数据时,可直接将该待存储数据的存储空间作为第一数据的存储空间。
在与第一数据的IO顺序不冲突的已分配的待存储数据的个数为多个时,为了更进一步地保证第一数据的顺利存储,可以由多个与第一数据的IO顺序不冲突的已分配的待存储数据中选取数据量最大的待存储数据所对应的存储空间作为第一内存空间。即,第一内存空间为已分配的待存储数据中,与待存储数据(第一数据)的IO顺序不冲突,且数据量最大的待存储数据的存储空间。
在与第一数据的IO顺序不冲突的已分配的待存储数据的个数为0时,即,基于所述IO关系,确定出已分配的各待存储数据均与待存储数据的IO顺序冲突。此时,作为一种可能的实现方式,可以在存储器中新建一块内存空间作为当前所要分配存储空间的待存储数据的存储空间。还可以根据存储器中各已分配内存空间之间的间隙内存空间,对待存储数据分配相应的存储空间。
此处,本领域技术人员可以理解的是,各已分配内存空间之间的间隙内存空间指的是,位于每相邻两个已分配内存空间之间且未使用的内存空间。由内存空间地址角度来表示时,间隙内存空间为:内存地址位于每相邻两个已分配内存空间的地址之间的内存空间。
在已分配的各待存储数据均与待存储数据的IO顺序冲突时,通过采用根据存储器中各已分配内存空间之间的间隙内存空间,对待存储数据分配相应的存储空间,实现了存储器的内存空间的更大限度的有效利用,这也就更进一步地提高了内存空间的有效利用率。
其中,根据存储器中各已分配内存空间之间的间隙内存空间,对待存储数据分配相应的存储空间时,可能会存在以下几种情况:
(1)各已分配内存空间之间不存在间隙内存空间;
(2)各已分配内存空间之间存在至少一个间隙内存空间,但是每个间隙内存空间的内存容量均不满足第一数据的数据量;
(3)各已分配内存空间之间存在至少一个间隙内存空间,且部分间隙内存空间的内存容量满足第一数据的数据量。
由此,对于(1)和(2),即,在各已分配内存空间之间不存在间隙内存空间时,或存在间隙内存空间且各间隙内存空间的内存容量不满足待存储数据的数据量时,在独用内存空间中新建第二内存空间,并指定新建的第二内存空间为待存储数据的存储空间,以保证第一数据的顺序存储。
对于(3),即,在各已分配内存空间之间存在间隙内存空间,且间隙内存空间的个数为多个时,根据各间隙内存空间的内存容量,对待存储数据分配相应的存储空间。
其中,作为一种可能的实现方式,根据各间隙内存空间的内存容量,对待存储数据分配相应的存储空间时,可以由多个间隙内存空间(即,内存容量满足第一数据的数据量的部分间隙内存空间)中选取第一间隙内存空间,并指定第一间隙内存空间为待存储数据的存储空间。需要指出的是,第一间隙内存空间可以为多个间隙内存空间中内存容量最大的内存空间。
由此,通过采用上述任一种数据处理方法,在神经网络模型处于非运行状态时,进行神经网络模型运行过程中生成的多个待存储数据的存储空间的分配,实现了存储空间的静态分配,使得处理器在运行神经网络模型时不需要再分配额外资源用于处理内存空间,能够专注于运行过程中的运算本身。并且,在分配过程中,通过基于待存储数据与已分配的待存储数据之间的IO关系,来进行已分配存储空间的复用,使得在静态调度无法释放空间的情况下更大限度地利用了已分配内存空间,达到了内存空间的更有效的利用。
为了更清楚地说明本公开实施例中对待存储数据分配存储空间的过程,以下以待存储数据为第一处理器的专属数据为例,进行更加详细地说明。
其中,在对本实施例中的待存储数据分配存储空间时,所对应的内存空间分配范围为存储器中对第一处理器单独设置的第一独用内存空间。
举例来说,第一处理器的专属数据包括:数据A、数据B、数据C、数据D和数据E。其中,各专属数据的数据量由大到小依次为:数据A>数据B>数据C>数据D>数据E。由此,对第一处理器的专属数据分配存储空间时,可按照数据A、数据B、数据C、数据D和数据E的顺序依次分配。
其中,在第一数据为数据A时,
由于此时第一处理器的专属数据中还没有已分配的待存储数据,因此可以直接在第一独用内存空间中新建一内存空间,如:内存空间A,作为数据A的存储空间。
在第一数据为数据B时,此时,可基于数据A和数据B的IO关系,对数据B进行存储空间的分配。
如果基于IO关系,确定出数据A与数据B的IO顺序不存在冲突,则可以将数据A的存储空间(即,内存空间A)指定为数据B的存储空间。
如果基于IO关系确定出数据A与数据B的IO顺序存在冲突,则由于此时不存在已分配内存空间的间隙内存空间,因此可直接新建一内存空间(即,内存空间B)作为数据B的存储空间。
在第一数据为C时,此时,可基于数据A、数据B和数据C的IO关系,对数据C进行存储空间的分配。
如果基于IO关系,确定出已分配的待存储数据中(即,数据A和数据B)存在一个与数据C的IO顺序不冲突的待存储数据(如:数据B与数据C的IO顺序不冲突),则可以直接指定数据B的存储空间(内存空间B)作为数据C的存储空间。
如果基于IO关系,确定出数据A和数据B中,存在两个与数据C的IO顺序不冲突的待存储数据(即:数据A和数据B均不与数据C的IO顺序冲突),则可以直接指定数据A的存储空间(内存空间A)作为数据C的存储空间。
如果基于IO关系,确定出数据A和数据B均与数据C的IO顺序冲突,则此时可根据内存空间A和内存空间B之间的间隙内存空间,来对数据C分配存储空间。
其中,如果内存空间A和内存空间B之间不存在间隙内存空间,或内存空间A和内存空间B之间存在间隙内存空间,但该间隙内存空间的内存容量不满足数据C的数据量,则直接在第一独用内存空间中新建一内存空间(即,内存空间C)作为数据C的存储空间。
如果内存空间A和内存空间B之间存在间隙内存空间,且该间隙内存空间的内存容量满足数据C的数据量,则直接将该间隙内存空间作为数据C的存储空间。
在第一数据为D时,此时,可基于数据A、数据B、数据C和数据D的IO关系,对数据D进行存储空间的分配。
如果基于IO关系,确定出已分配的待存储数据中(即,数据A、数据B和数据C)存在一个与数据D的IO顺序不冲突的待存储数据(如:数据B与数据D的IO顺序不冲突),则可以直接指定数据B的存储空间(内存空间B)作为数据D的存储空间。
如果基于IO关系,确定出数据A、数据B和数据C中,存在两个与数据D的IO顺序不冲突的待存储数据(即:数据B和数据C均不与数据D的IO顺序冲突),则可以直接指定数据B的存储空间(内存空间B)作为数据D的存储空间。
如果基于IO关系,确定出数据A、数据B和数据C均与数据D的IO顺序冲突,则此时可根据内存空间A、内存空间B和内存空间C之间的间隙内存空间,来对数据D分配存储空间。
其中,如果内存空间A、内存空间B和内存空间C中,每相邻两个内存空间之间不存在间隙内存空间,或每相邻两个内存空间之间存在间隙内存空间,但该间隙内存空间的内存容量不满足数据C的数据量,则直接在第一独用内存空间中新建一内存空间(即,内存空间C)作为数据C的存储空间。
如果内存空间A和内存空间B之间存在间隙内存空间,且该间隙内存空间的内存容量满足数据C的数据量,则直接将该间隙内存空间作为数据C的存储空间。
依此类推,对数据D和数据E分配存储空间的过程与上述数据C的过程相同或相似,因此此处不再赘述。
在按照上述任一种方式对各待存储数据均分配好相应的存储空间后,在本公开实施例的数据处理方法中,还可以包括:
在神经网络模型运行时,根据各待存储数据分配的存储空间的地址,分别存储各待存储数据。即,在为各待存储数据指定存储空间后,可以确定各个数据块的存储空间的地址,在数据处理过程中,可以根据各待存储数据的存储空间的地址,分别存储各个待存储数据。
可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。即,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
此外,本公开还提供了数据处理装置、神经网络芯片和板卡,上述均可用来实现本公开提供的任一种数据处理方法,相应技术方案和描述和参见方法部分的相应记载,不再赘述。
图2示出本公开实施例的数据处理装置100的框图。参阅图2,本公开实施例的数据处理装置100,包括:
数据获取模块110,用于在神经网络模型处于非运行状态时,根据调度信息,获取所述神经网络模型运行过程中生成的多个待存储数据,并确定多个所述待存储数据的IO顺序队列;
其中,所述调度信息通过对所述神经网络模型调度生成,包括所述神经网络模型的各个算子与多个处理器之间的对应关系,所述IO顺序队列为多个所述待存储数据的输入输出的先后顺序的队列;
空间分配模块120,用于根据所述IO顺序队列,在存储器中对所述待存储数据分配存储空间。
在一种可能的实现方式中,所述待存储数据包括各所述处理器单独使用的专属数据和/或多个处理器共同使用的共享数据。
在一种可能的实现方式中,所述空间分配模块120,包括:
第一分配子模块,用于在所述待存储数据为各所述处理器的专属数据时,在所述存储器的各独用内存空间对所述待存储数据分配相应的存储空间,
其中,各所述独用内存空间为各所述处理器单独访问的存储空间;
第二分配子模块,用于在所述待存储数据为所述共享数据时,在所述存储器的共享内存空间对所述待存储数据分配相应的存储空间,
其中,所述共享内存空间为多个所述处理器均可访问的存储空间。
在一种可能的实现方式中,所述空间分配模块120,还用于根据所述IO顺序队列,按照各所述待存储数据的数据量由大到小的顺序,在存储器中对所述待存储数据分配存储空间。
在一种可能的实现方式中,所述空间分配模块120,包括:
IO关系获取子模块,用于根据所述IO顺序队列,获取所述待存储数据与已分配的待存储数据之间的IO关系,其中,已分配的待存储数据与所述待存储数据的属性相同;
空间分配子模块,用于基于所述IO关系,在所述存储器中对所述待存储数据分配存储空间。
在一种可能的实现方式中,所述空间分配子模块120,包括:
第一分配单元,用于基于所述IO关系,确定出在已分配的各待存储数据中,存在与所述待存储数据的IO顺序不冲突的待存储数据时,由所述存储器的已分配内存空间中选取第一内存空间,并指定所述第一内存空间为所述待存储数据的存储空间;
其中,所述第一内存空间为已分配的待存储数据中,与所述待存储数据的IO顺序不冲突的待存储数据的存储空间。
在一种可能的实现方式中,所述第一分配单元,包括:
地址指定子单元,用于指定所述第一内存空间的地址为所述待存储数据的存储地址;
时间线更新子单元,用于根据所述IO关系更新所述第一内存空间的时间线;
其中,所述第一内存空间的时间线用于定义存储地址为所述第一内存空间地址的各待存储数据的写入时间。
在一种可能的实现方式中,所述第一内存空间为已分配的待存储数据中,与所述待存储数据的IO顺序不冲突,且数据量最大的待存储数据的存储空间。
在一种可能的实现方式中,所述空间分配子模块120,包括:
第二分配单元,用于基于所述IO关系,确定出已分配的各待存储数据均与所述待存储数据的IO顺序冲突时,根据所述存储器中各已分配内存空间之间的间隙内存空间,对所述待存储数据分配相应的存储空间。
在一种可能的实现方式中,所述第二分配单元,包括:
空间新建子单元,用于在各所述已分配内存空间之间不存在所述间隙内存空间时,或存在所述间隙内存空间且各所述间隙内存空间的内存容量不满足所述待存储数据的数据量时,在所述独用内存空间中新建第二内存空间;
指定所述第二内存空间为所述待存储数据的存储空间。
在一种可能的实现方式中,所述第二分配单元,包括:
第一分配子单元,用于在各所述已分配内存空间之间存在间隙内存空间,且间隙内存空间的个数为多个时,根据各间隙内存空间的内存容量,对所述待存储数据分配相应的存储空间。
在一种可能的实现方式中,所述第一分配子单元,用于在存在内存容量满足所述待存储数据的数据量的间隙内存空间时,由多个间隙内存空间中选取第一间隙内存空间,指定所述第一间隙内存空间为所述待存储数据的存储空间;
其中,所述第一间隙内存空间在多个所述间隙内存空间中内存容量最大。
在一种可能的实现方式中,所述IO关系获取子模块,包括:
第一提取单元,用于在所述待存储数据为各所述处理器的专属数据时,由所述IO顺序队列中提取出第一子队列,所述第一子队列为第一处理器的各专属数据的输入输出先后顺序的队列,所述第一处理器为多个所述处理器中的任意一个;
第一获取单元,用于基于所述第一子队列,获取所述IO关系;
第一建立单元,用于在所述待存储数据为所述共享数据时,根据所述IO顺序队列,获取所述待存储数据的冲突表,其中,所述冲突表用于记录多个所述共享数据中,与所述待存储数据存在IO顺序冲突的其他共享数据;
第二获取单元,用于基于所述冲突表,确定所述IO关系。
在一种可能的实现方式中,所述第一建立单元,包括:
第一提取子单元,用于由所述IO顺序队列中提取出第二子队列,所述第二子队列为多个所述共享数据的输入输出先后顺序的队列;
第一建立子单元,用于根据对所述神经网络模型调度后的各所述共享数据之间的同步关系以及所述第二子队列,对所述待存储数据建立相应的冲突表。
在一种可能的实现方式中,所述第一建立子单元,还用于根据所述同步关系以及所述第二子队列,确定多个所述共享数据中,与所述待存储数据的输入输出顺序存在重叠的共享数据以及与所述待存储数据的输入输出顺序不可确定的共享数据;
所述第一建立子单元,还用于将与所述待存储数据的输入输出顺序存在重叠的各共享数据,以及与所述待存储数据的输入输出顺序不可确定的各共享数据记录到所述待存储数据的冲突表中。
在一种可能的实现方式中,还公开了一种芯片,其包括了上述数据处理装置100。
在一种可能的实现方式中,公开了一种芯片封装结构,其包括了上述芯片。
在一种可能的实现方式中,还公开了一种板卡,其包括了上述芯片封装结构。参阅图3,图3提供了一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。优选的,当采用PCIE 3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一些实施例里,申请了一种电子设备,其包括了上述板卡。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种数据处理方法,其特征在于,所述方法包括:
在神经网络模型处于非运行状态时,根据调度信息,获取所述神经网络模型运行过程中生成的多个待存储数据,并确定多个所述待存储数据的IO顺序队列;
其中,所述调度信息通过对所述神经网络模型调度生成,包括所述神经网络模型的各个算子与多个处理器之间的对应关系,所述IO顺序队列为多个所述待存储数据的输入输出的先后顺序的队列;
根据所述IO顺序队列,在存储器中对所述待存储数据分配存储空间。
2.根据权利要求1所述的方法,其特征在于,所述待存储数据包括各所述处理器单独使用的专属数据和/或多个处理器共同使用的共享数据。
3.根据权利要求2所述的方法,其特征在于,根据所述IO顺序队列,在存储器中对所述待存储数据分配存储空间,包括:
在所述待存储数据为各所述处理器的专属数据时,在所述存储器的各独用内存空间对所述待存储数据分配相应的存储空间,
其中,各所述独用内存空间为各所述处理器单独访问的存储空间;
在所述待存储数据为所述共享数据时,在所述存储器的共享内存空间对所述待存储数据分配相应的存储空间,
其中,所述共享内存空间为多个所述处理器均可访问的存储空间。
4.根据权利要求1所述的方法,其特征在于,根据所述IO顺序队列,在存储器中对所述待存储数据分配存储空间,包括:
根据所述IO顺序队列,按照各所述待存储数据的数据量由大到小的顺序,在存储器中对所述待存储数据分配存储空间。
5.根据权利要求2所述的方法,其特征在于,根据所述IO顺序队列,在存储器中对所述待存储数据分配存储空间,包括:
根据所述IO顺序队列,获取所述待存储数据与已分配的待存储数据之间的IO关系,其中,已分配的待存储数据与所述待存储数据的属性相同;
基于所述IO关系,在所述存储器中对所述待存储数据分配存储空间。
6.根据权利要求1所述的方法,其特征在于,还包括:
在所述神经网络模型运行时,根据为各所述待存储数据分配的存储空间的地址,分别存储各所述待存储数据。
7.一种数据处理装置,其特征在于,所述装置包括:
数据获取模块,用于在神经网络模型处于非运行状态时,根据调度信息,获取所述神经网络模型运行过程中生成的多个待存储数据,并确定多个所述待存储数据的IO顺序队列;
其中,所述调度信息通过对所述神经网络模型调度生成,包括所述神经网络模型的各个算子与多个处理器之间的对应关系,所述IO顺序队列为多个所述待存储数据的输入输出的先后顺序的队列;
空间分配模块,用于根据所述IO顺序队列,在存储器中对所述待存储数据分配存储空间。
8.一种神经网络芯片,其特征在于,所述芯片包括如权利要求7所述的数据处理装置。
9.一种电子设备,其特征在于,所述电子设备包括如权利要求8所述的神经网络芯片。
10.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求8所述的神经网络芯片;
其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述神经网络芯片与外部设备之间的数据传输;
所述控制器件,用于对所述神经网络芯片的状态进行监控。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910263149.1A CN111767999B (zh) | 2019-04-02 | 2019-04-02 | 数据处理方法、装置及相关产品 |
PCT/CN2020/082831 WO2020200250A1 (zh) | 2019-04-02 | 2020-04-01 | 运算方法、装置及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910263149.1A CN111767999B (zh) | 2019-04-02 | 2019-04-02 | 数据处理方法、装置及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111767999A true CN111767999A (zh) | 2020-10-13 |
CN111767999B CN111767999B (zh) | 2023-12-05 |
Family
ID=72718210
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910263149.1A Active CN111767999B (zh) | 2019-04-02 | 2019-04-02 | 数据处理方法、装置及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111767999B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112965663A (zh) * | 2021-03-05 | 2021-06-15 | 上海寒武纪信息科技有限公司 | 对数据块的存储空间进行复用的方法和相关产品 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150134934A1 (en) * | 2012-06-15 | 2015-05-14 | Soft Machines, Inc. | Virtual load store queue having a dynamic dispatch window with a distributed structure |
US20180088996A1 (en) * | 2016-09-23 | 2018-03-29 | Apple Inc. | Systems and Methods of Memory Allocation for Neural Networks |
CN107886166A (zh) * | 2016-09-29 | 2018-04-06 | 北京中科寒武纪科技有限公司 | 一种执行人工神经网络运算的装置和方法 |
WO2018120016A1 (zh) * | 2016-12-30 | 2018-07-05 | 上海寒武纪信息科技有限公司 | 用于执行lstm神经网络运算的装置和运算方法 |
WO2018124707A1 (ko) * | 2016-12-27 | 2018-07-05 | 삼성전자 주식회사 | 신경망 연산을 이용한 입력 처리 방법 및 이를 위한 장치 |
US20180285715A1 (en) * | 2017-03-28 | 2018-10-04 | Samsung Electronics Co., Ltd. | Convolutional neural network (cnn) processing method and apparatus |
-
2019
- 2019-04-02 CN CN201910263149.1A patent/CN111767999B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150134934A1 (en) * | 2012-06-15 | 2015-05-14 | Soft Machines, Inc. | Virtual load store queue having a dynamic dispatch window with a distributed structure |
US20180088996A1 (en) * | 2016-09-23 | 2018-03-29 | Apple Inc. | Systems and Methods of Memory Allocation for Neural Networks |
CN107886166A (zh) * | 2016-09-29 | 2018-04-06 | 北京中科寒武纪科技有限公司 | 一种执行人工神经网络运算的装置和方法 |
WO2018124707A1 (ko) * | 2016-12-27 | 2018-07-05 | 삼성전자 주식회사 | 신경망 연산을 이용한 입력 처리 방법 및 이를 위한 장치 |
WO2018120016A1 (zh) * | 2016-12-30 | 2018-07-05 | 上海寒武纪信息科技有限公司 | 用于执行lstm神经网络运算的装置和运算方法 |
US20180285715A1 (en) * | 2017-03-28 | 2018-10-04 | Samsung Electronics Co., Ltd. | Convolutional neural network (cnn) processing method and apparatus |
Non-Patent Citations (1)
Title |
---|
李挥;林良敏;黄佳庆;王蔚;安辉耀;伊鹏;汪斌强;: "具有最小缓存复杂度的负载均衡交换方法", 电子学报, no. 11 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112965663A (zh) * | 2021-03-05 | 2021-06-15 | 上海寒武纪信息科技有限公司 | 对数据块的存储空间进行复用的方法和相关产品 |
Also Published As
Publication number | Publication date |
---|---|
CN111767999B (zh) | 2023-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104615488A (zh) | 异构多核可重构计算平台上任务调度的方法和装置 | |
CN105808328A (zh) | 任务调度的方法、装置和系统 | |
US20110265098A1 (en) | Message Passing with Queues and Channels | |
CN110750351B (zh) | 多核任务调度器、多核任务调度方法、装置及相关产品 | |
CN111813517B (zh) | 任务队列的分配方法、装置、计算机设备及介质 | |
US8543722B2 (en) | Message passing with queues and channels | |
CN111767995A (zh) | 运算方法、装置及相关产品 | |
CN111767121B (zh) | 运算方法、装置及相关产品 | |
CN111767999B (zh) | 数据处理方法、装置及相关产品 | |
CN110597627A (zh) | 基于虚拟fpga的数据库运算加速装置及加速方法 | |
CN110704182A (zh) | 深度学习的资源调度方法、装置及终端设备 | |
CN115484187A (zh) | 容器环境下容器网络接口测试方法、设备及存储介质 | |
CN114201727A (zh) | 数据的处理方法、处理器、人工智能芯片及电子设备 | |
CN114331198A (zh) | 工单分配方法、设备及存储介质 | |
CN111340202B (zh) | 运算方法、装置及相关产品 | |
CN112988383A (zh) | 一种资源分配方法、装置、设备以及存储介质 | |
CN111260042B (zh) | 数据选择器、数据处理方法、芯片及电子设备 | |
CN111260046B (zh) | 运算方法、装置及相关产品 | |
CN113220368A (zh) | 一种存储客户端资源隔离方法、系统、终端及存储介质 | |
CN114281558A (zh) | 多核处理器、用于多核处理器的方法及相应产品 | |
CN111045959A (zh) | 一种基于存储优化的复杂算法变量映射方法 | |
CN111124497B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN112396186B (zh) | 执行方法、装置及相关产品 | |
WO2020200250A1 (zh) | 运算方法、装置及相关产品 | |
CN113448962B (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 |