CN111274023A - 数据处理方法、装置、计算机系统和存储介质 - Google Patents
数据处理方法、装置、计算机系统和存储介质 Download PDFInfo
- Publication number
- CN111274023A CN111274023A CN201811481014.4A CN201811481014A CN111274023A CN 111274023 A CN111274023 A CN 111274023A CN 201811481014 A CN201811481014 A CN 201811481014A CN 111274023 A CN111274023 A CN 111274023A
- Authority
- CN
- China
- Prior art keywords
- node
- equivalent
- computing node
- computing
- nodes
- 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 claims abstract description 31
- 238000012545 processing Methods 0.000 claims abstract description 51
- 230000015654 memory Effects 0.000 claims description 89
- 238000000034 method Methods 0.000 claims description 61
- 238000004590 computer program Methods 0.000 claims description 14
- 238000004364 calculation method Methods 0.000 description 33
- 238000013528 artificial neural network Methods 0.000 description 28
- 238000003491 array Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 238000010801 machine learning Methods 0.000 description 8
- 238000003062 neural network model Methods 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种数据处理方法、装置、计算机系统和存储介质,可以根据各个等效节点的连接关系及执行顺序,以及原始网络的模型数据集和模型结构参数运行该原始网络,从而获得各个原始网络中各个计算节点对应的指令。本申请的数据处理方法、装置、计算机系统和存储介质,通过调整各个计算节点的执行顺序,从而减少了不同设备之间的切换次数以及不同设备之间的数据拷贝次数,从而可以提高该计算机系统的数据处理速度及效率。
Description
技术领域
本申请涉及深度学习技术领域,特别是涉及一种数据处理方法、装置、计算机系统和存储介质。
背景技术
随着人工智能技术的发展,如今深度学习已无处不在且必不可少,并随之产生了许多可扩展的深度学习系统,例如,TensorFlow、MXNet、Caffe和PyTorch等等,上述深度学习系统可以用于提供各种能够在CPU(Central Processing Unit,中央处理单元)或GPU(Graphics Processing Unit,图形处理器)等处理器上运行的神经网络模型。
一般地,处理器在运行神经网络模型时,如运行Caffe网络模型时,每次均需要对该神经网络模型中的各个计算节点分别进行编译、解析,之后,按照该神经网络模型的结构形式按照一定的形式执行各个计算节点。其中,神经网络模型以及网络结构可以是已训练好或未训练好的人工神经网络模型数据。当各个计算节点需要在不同的处理器上执行时,通常需要在不同的处理器之间进行频繁的切换,各不同处理器之间的通讯次数较多且需要多次数据拷贝。例如,神经网络具有三个计算节点,分别为第一个计算节点、第二个计算节点和第三个计算节点,其中,第一个计算节点和第三个计算节点需要在CPU上执行,第二个计算节点需要在GPU上执行,且第二计算节点和第三计算节点并列的连接在第一计算节点的输出端,这样,在对该神经网络进行处理时,系统可能会顺序执行第一个计算节点、第二个计算节点和第三个计算节点,这样系统将在不同的处理器之间进行频繁的切换,各不同处理器之间的通讯次数较多且需要多次数据拷贝。
发明内容
基于此,有必要针对上述技术问题,提供一种数据处理方法、装置、计算机系统和存储介质,以减少不同设备之间的切换次数,提高计算机系统的处理效率。
一种数据处理方法,包括如下步骤:
获取原始网络中各个计算节点的设备属性;
根据所述原始网络中各个计算节点的设备属性及各计算节点间的连接关系,将具有相同设备属性的计算节点等效为等效节点;
确定各个所述等效节点的连接关系及执行顺序;
根据所述各个所述等效节点的连接关系及执行顺序,以及所述原始网络的模型数据集、模型结构参数运行该原始网络,获得原始网络中各个计算节点对应的指令。
在其中一个实施例中,所述的获取原始网络中各个计算节点的设备属性的步骤,包括:
根据各个所述计算节点对应的设备参数和/或各个所述计算节点的运算量大小,分别确定各个所述计算节点的设备属性;
其中,所述计算节点对应的设备参数包括支持所述计算节点对应的运算的设备类型、不同设备执行所述计算节点时的处理速度、功耗、精度中的一种或多种。
在其中一个实施例中,所述的根据所述原始网络中各个计算节点的设备属性及各计算节点间的连接关系,将具有相同设备属性的计算节点等效为等效节点的步骤,还包括:
若当前计算节点与所述当前计算节点的输入节点的设备属性相同,则将所述当前计算节点的输入节点对应的段号作为所述当前计算节点的段号;
将具有相同段号的所有计算节点等效为等效节点。
在其中一个实施例中,所述的根据所述原始网络中各个计算节点的设备属性及各计算节点间的连接关系,将具有相同设备属性的计算节点等效为等效节点的步骤,还包括:
若所述当前计算节点的设备属性与所述当前计算节点的输入节点的设备属性不相同,则将所述当前计算节点与所述当前计算节点的输入节点划分为不同段,且所述当前计算节点与所述当前计算节点的输入节点的段号不相同。
在其中一个实施例中,所述的根据所述原始网络中各个计算节点的设备属性及各计算节点间的连接关系,将具有相同设备属性的计算节点等效为等效节点的步骤,还包括:
若所述当前计算节点与所述当前计算节点的输入节点的设备属性不同,且所述当前计算节点的输入节点的段号与预设常数之和大于所述当前计算节点的段号,则将所述当前计算节点的输入节点的段号与预设常数之和作为所述当前计算节点的段号。
在其中一个实施例中,根据所述原始网络中各个计算节点的设备属性及各计算节点间的连接关系,将具有相同设备属性的计算节点等效为等效节点的步骤,还包括:
针对每个设备对应的设备列表,分别判断所述设备列表中的各个输入节点的设备属性与所述输入节点的输出节点的设备属性是否相同;
若所述设备列表中的输入节点的设备属性与所述输入节点的输出节点具有相同的设备属性,则将所述输入节点的输出节点作为所述新的输入节点,之后返回判断所述设备列表中的输入节点的设备属性与所述输入节点的输出节点的设备属性是否相同的步骤,直至所述输入节点的设备属性与所述当前输入节点的输出节点的设备属性不同;
将所述设备列表中的所有输入节点等效为等效节点,将所述等效节点的段号更新为所述设备列表中输入节点的段号。
在其中一个实施例中,所述方法还包括:
若所述设备列表中的输入节点的设备属性与所述输入节点的输出节点的设备属性不同,则将所述输入节点的输出节点存储至所述输出节点的设备属性对应的设备列表中。
在其中一个实施例中,所述方法还包括:
若所述设备列表中的各个输入节点的段号大于或等于预设段号,则记录所述设备列表中各个输入节点的段号;之后判断所述设备列表中的输入节点的设备属性与所述输入节点的输出节点的设备属性是否相同。
在其中一个实施例中,所述的根据所述原始网络中各个计算节点的设备属性及各计算节点间的连接关系,将具有相同设备属性的计算节点等效为等效节点的步骤,包括:
根据当前计算节点的设备属性,查找所述当前计算节点对应的第一数组,判断所述当前计算节点与所述第一数组中存储的第M个等效节点之间,是否存在与所述当前计算节点的设备属性不同的计算节点;其中,每个设备对应设置有一个所述第一数组,所述第一设备数据用于存储同一设备属性的等效节点,M大于或等于1,M为正整数;
若所述当前计算节点和所述第一数组中存储的第M个等效节点之间,不存在与所述当前计算节点的设备属性不同的计算节点,则所述第M个等效节点包含所述当前计算节点,将所述当前计算节点的段号更新为所述第M个等效节点对应的段号;
若所述当前计算节点和所述第一数组中存储的第M个等效节点之间存在与所述当前计算节点的设备属性不同的计算节点,则将所述当前计算节点的段号记为第M+1段。
在其中一个实施例中,所述的判断所述当前计算节点与所述第一数组中存储的第M个等效节点之间,是否存在与所述当前计算节点的设备属性不同的计算节点的步骤,包括:
分别根据所述原始网络的各个所述计算节点的设备属性,获得各个所述计算节点对应的第二数组的值;其中,每个设备对应设置有一个所述第二数组;
若所述当前计算节点的设备属性之外的其他设备属性的计算节点对应的第二数组的值之和等于预设数值,则确定所述当前计算节点和所述第一数组中存储的第M个等效节点之间不存在与所述当前计算节点的设备属性不同的计算节点;
若所述当前计算节点的设备属性之外的其他设备属性的计算节点对应的第二数组的值之和大于所述预设数值,则确定所述当前计算节点和所述第一数组中存储的第M个等效节点之间存在与所述当前计算节点的设备属性不同的计算节点。
在其中一个实施例中,所述的分别根据所述原始网络的各个所述计算节点的设备属性,获得各个所述计算节点对应的第二数组的值的步骤,包括:
若所述计算节点与所述计算节点之前的所有节点均具有相同的设备属性,则所述计算节点对应的设备的第二数组的值大于所述预设数值;
若所述计算节点与所述计算节点之前的所有节点之间存在与所述计算节点的设备属性不同的计算节点,则所述计算节点对应的设备的第二数组的值等于所述预设数值。
在其中一个实施例中,确定各个所述等效节点的连接关系及执行顺序的步骤,包括:
对于每个所述等效节点,若所述等效节点与所述等效节点的输入节点具有不同的设备属性,则将与所述等效节点具有不同设备属性的输入节点作为等效节点的输入节点;
对于每个所述等效节点,若所述等效节点与所述等效节点的输出节点具有不同的设备属性,则将与所述等效节点具有不同设备属性的输出节点作为等效节点的输出节点。
在其中一个实施例中,所述的确定各个所述等效节点的连接关系及执行顺序的步骤,还包括:
根据各个所述等效节点的段号,确定各个所述等效节点的执行顺序;
其中,所述等效节点的段号能够表示所述等效节点的设备属性。
在其中一个实施例中,所述方法还包括如下步骤:
根据各个所述计算节点的设备属性,分别将各个所述计算节点的网络权值及指令,存储至所述计算节点对应的设备的非易失性存储器中,获得所述原始网络对应的一个以上的离线模型。
一种计算机装置,包括:
获取模块,用于获取原始网络中各个计算节点的设备属性;
等效节点确定模块,用于根据所述原始网络中各个计算节点的设备属性及各计算节点间的连接关系,将两个以上顺序执行的、具有相同设备属性的计算节点等效为等效节点;
等效网络确定模块,用于确定各个所述等效节点的连接关系及执行顺序;
网络运行模块,用于根据所述各个所述等效节点的连接关系及执行顺序,以及所述原始网络的模型数据集、模型结构参数运行该原始网络,获得原始网络中各个计算节点对应的指令。
一种计算机系统,包括:
第一处理器及与所述第一处理器对应设置的第一存储器及第二存储器;
一个或多个第二处理器及与所述第二处理器对应设置的一个或多个第三存储器,各个所述第二处理器均连接至所述第一处理器;
所述第一存储器或所述第二存储器中存储有计算机程序,所述第一处理器在执行所述计算机程序时,执行上述任一项所述的方法的步骤。
一种计算机存储介质,所述计算机存储介质中存储有计算机程序,当所述计算机程序被一个或多个第一处理器执行时,执行上述任一项所述的方法的步骤。
上述的数据处理方法、装置、计算机系统和存储介质,根据原始网络中各个计算节点的设备属性及各个计算节点的连接关系,将两个以上顺序执行的、具有相同设备属性的计算节点等效为等效节点,确定各个等效节点的连接关系及执行顺序,并根据各个等效节点的连接关系及执行顺序,以及原始网络的模型数据集和模型结构参数运行该原始网络,从而获得各个原始网络中各个计算节点对应的指令。本申请的数据处理方法,通过将具有相同设备属性的计算节点等效为同一个等效节点,并通过调整各个等效节点之间的执行顺序,使得具有相同设备属性的计算节点在同一设备被顺次执行,通过调整各个计算节点的执行顺序,从而减少了不同设备之间的切换次数以及不同设备之间的数据拷贝次数,从而可以提高该计算机系统的数据处理速度及效率。
附图说明
图1为一个实施例的计算机系统的结构框图;
图2为一个实施例的计算机系统中神经网络处理器的结构框图;
图3为一个实施例中数据处理方法的流程示意图;
图4为一个实施例中数据处理方法中确定等效节点的流程示意图;
图5为一个实施例中数据处理方法中确定等效节点的流程示意图;
图6为一个实施例中数据处理方法中确定等效节点的流程示意图;
图7为一个实施例中数据处理方法中确定等效节点的执行顺序和连接关系的流程示意图;
图8为一个实施例中数据处理方法的流程示意图;
图9为一个实施例中数据处理方法的流程示意图;
图10为一个实施例中原始网络结构图及等效网络结构图;
图11为一个实施例中离线模型的生成过程示意图;
图12为一个实施例中计算机装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的数据处理方法,可以应用于如图1所示的计算机系统中。该计算机系统可以是由多个处理器形成的异构计算机系统,其中,处理器可以包括主处理器及一个或多个协处理器,每个处理器可以对应设置有一个存储器。具体地,如图1所示,该计算机系统100可以包括第一处理器110、与该第一处理器110连接的第一存储器120及第二存储器130,与该第一处理器110连接的一个或多个第二处理器140,以及与各个第二处理器140对应设置的第三存储器150。其中,其中,该第一处理器110用于提供计算和控制能力,其可以包括第一获取电路111、第一运算电路113及第一控制电路112等等,其中,该第一获取电路111可以是IO(Input输入/Output输出)接口等硬件电路,第一运算电路113及第一控制电路112均为硬件电路。例如,第一运算电路113及第一控制电路112可以为数字电路或模拟电路等等。上述硬件电路的物理实现包括但不限于物理器件,物理器件包括但不限于晶体管及忆阻器等等。
可选地,第一处理器110可以作为主处理器,该第一处理器110可以为通用处理器,如CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或DSP(DigitalSignal Processing,数字信号处理)等等。一个或多个第二处理器可以作为协处理器,该第二处理器140可以为IPU(Intelligence Processing Unit,智能处理器)或NPU(Neural-network Processing unit,神经网络处理器)等神经网络处理器,该第二处理器140也可以是通用处理器。进一步地,该第二处理器140可以包括第二获取电路、第二运算电路及第二控制电路等等,其中,该第二获取电路可以是IO(Input输入/Output输出)接口等硬件电路,第二运算电路及第二控制电路均为硬件电路,例如,第二运算电路及第二控制电路可以为数字电路或模拟电路等等。上述硬件电路的物理实现包括但不限于物理器件,物理器件包括但不限于晶体管及忆阻器等等。第二获取电路、第二运算电路及第二控制电路之间的连接关系与第一处理器中各个电路的连接关系类似,可参见第一处理器中各个电路的连接关系。
该第一存储器120或第二存储器130还可以用于存储计算机程序,该计算机程序用于实现本申请实施例中提供的数据处理方法。具体地,该数据处理方法用于调整第一处理器110接收的原始网络中各个计算节点的执行顺序,并根据调整后的执行顺序,获得该第一处理器110接收的原始网络中各个计算节点的指令,以减少不同处理器之间的切换次数及数据拷贝次数。
进一步地,该数据处理方法还包括获得该原始网络的离线模型的过程。可选地,本申请实施例中,该计算机系统中的每个处理器均对应有一个设备属性,该数据处理方法可以获得各个处理器对应的离线模型。其中,每个离线模型中包含原始网络中同一设备属性的所有计算节点对应的权值和指令。这样在计算机系统再次运行该原始网络时,可以直接从该处理器对应的离线模型获得原始网络中各个计算节点对应的网络权值及指令,无需再次对同一原始网络中的计算节点进行编译等操作,从而缩短了运行该网络时的运行时间,进而提高计算机系统的处理速度及效率。应当清楚的是,离线模型的数量可以等于计算机系统100中所包含处理器的种类。
例如,该计算机系统包含CPU、GPU及IPU三种处理器,可以将IPU作为第一设备,将GPU作为第二设备,将CPU作为第三设备。相应地,各个计算节点的设备属性可以分为三种,第一设备对应的第一设备属性可以是IPU属性,第二设备对应的第二设备属性可以是GPU属性,第三设备对应的第三设备属性可以是CPU属性。离线模型的数量可以为三种,即为每个处理器对应设置一个离线模型,以避免神经网络执行过程中指令的重复编译等操作。具体地,该原始网络对应的离线模型还可以包括第一设备对应的第一离线模型、第二设备对应的第二离线模型及第三设备对应的第三离线模型等等,其中,第一离线模型中包含原始网络中具有第一设备属性的所有计算节点对应的网络权值及指令,第二离线模型中包含原始网络中具有第二设备属性的所有计算节点对应的网络权值及指令,第三离线模型中包含原始网络中具有第三设备属性的所有计算节点对应的网络权值及指令。
可选地,第一存储器120可以是内存储器,如缓存等易失性存储器,其可以用于存储神经网络运行过程中的相关数据,如网络的输入数据、网络的输出数据、网络权值及指令等等。第二存储器130和第三存储器150可以是外部存储器等非易失性存储器,第二存储130和第三存储器150可以用于存储对应设备的离线模型。因而,当计算机系统需要再次对同一原始网络进行编译以运行该原始网络时,可以直接从第二存储器130和第三存储器150中获得各个设备的第一离线模型、第二离线模型及第三离线模型等离线模型,并分别从各个设备的离线模型中获得该原始网络中各个计算节点对应的网络权值及指令,从而提高处理器的处理速度及效率。
可选地,本申请实施例中的IPU或NPU可以采用如图2所示的架构。该神经网络处理器可以包括控制器单元11和运算单元12,其中,控制器单元11与运算单元12连接,该运算单元12包括:一个主处理电路101和多个从处理电路102。
其中,控制器单元11用于获取数据、机器学习模型以及计算指令,当该机器学习模型包括人工神经网络模型时,数据包括:输入神经元数据、权值数据和输出神经元数据;在一种可选方案中,具体的,获取数据、机器学习模型以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。该机器学习模型具体可以包括网络模型,该网络模型可以为神经网络模型和/或非神经网络模型。上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
控制器单元11还用于解析该计算指令得到多个运算指令,将该多个运算指令以及数据发送给主处理电路101;主处理电路101用于对数据执行前序处理以及与多个从处理电路之间传输数据以及运算指令;多个从处理电路102用于依据从主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给主处理电路101;主处理电路101用于对多个中间结果执行后续处理得到计算指令的计算结果。
本申请提供的技术方案将运算单元设置成一主多从结构,对于正向运算的计算指令,其可以将依据正向运算的计算指令将数据进行拆分,这样通过多个从处理电路即能够对计算量较大的部分进行并行运算,从而提高运算速度,节省运算时间,进而降低功耗。
可选的,上述神经网络处理器还可以包括:存储单元10和直接内存访问单元50,存储单元10可以包括寄存器、缓存中的一个或任意组合,具体的,所述缓存用于存储所述计算指令;所述寄存器用于存储所述机器学习模型、所述数据和标量;所述缓存为高速暂存缓存。直接内存访问单元50用于从存储单元10读取或存储数据。
可选的,该控制器单元包括:指令存储单元301、指令处理单元302和存储队列单元304;指令存储单元301用于存储所述机器学习模型关联的计算指令;所述指令处理单元302用于对所述计算指令解析得到多个运算指令;存储队列单元304用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。进一步地,上述控制器单元还可以包括依赖关系处理单元303,依赖关系处理单元303用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如第一运算指令与第零运算指令存在关联关系,则将第一运算指令缓存在所述指令存储单元内,在第零运算指令执行完毕后,从指令存储单元提取所述第一运算指令传输至运算单元。更进一步地,确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
举例说明,在一个可选的技术方案中,主处理电路也可以包括一个控制器单元,该控制器单元可以包括主指令处理单元,具体用于将指令译码成微指令。当然在另一种可选方案中,从处理电路也可以包括另一个控制器单元,该另一个控制器单元包括从指令处理单元,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通过对指令的拆分或解码后获得,能被进一步解码为各部件、各单元或各处理电路的控制信号。
在一个实施例中,本发明一实施例的数据的处理方法,用于图1所示的计算机系统中,用于调整第一处理器110接收的原始网络中各个计算节点的执行顺序,并根据调整后的执行顺序,获得该第一处理器110接收的原始网络中各个计算节点的指令,以减少不同处理器之间的切换次数及数据拷贝次数,以提高该计算机系统的处理效率及速度。具体地,如图3所示,上述方法包括如下步骤:
S100、获取原始网络中各个计算节点的设备属性。
具体地,计算节点的设备属性可以包括第一设备属性、第二设备属性和第三设备属性等,其中,计算节点的设备属性用于标识该计算节点对应的计算指令能够在哪个处理器上执行,即在该计算机系统的哪个处理器上实现该计算节点的相关运算。例如,第一设备属性可以用于表示该计算节点对应的相关运算能够在IPU或NPU等神经网络处理器上实现,第二设备属性可以用于表示该计算节点对应的相关运算能够在GPU上执行,第三设备属性可以用于表示该计算节点对应的相关运算能够在CPU上执行。当然,若计算机系统还包括神经网络处理器(IPU或NPU)、CPU及GPU以外的其他类型的处理器(如DSP或FPGA等)时,计算节点的设备属性还可以是三个以上,其与计算机系统中处理器的种类一一对应。
进一步地,可以通过枚举方法来表示和保存各个计算节点的设备属性。例如,可以定义一个枚举变量device,该枚举变量可以包括两个以上的枚举值。若当前计算节点的设备属性为第一设备属性,则该枚举变量的枚举值可以为1;若当前计算节点的设备属性为第二设备属性,则该枚举变量的枚举值可以为0;若当前计算节点的设备属性为第三设备属性,则该枚举变量的枚举值可以为-1。
S200、根据原始网络中各个计算节点的设备属性及各计算节点间的连接关系,将具有相同设备属性的计算节点等效为等效节点。
具体地,系统可以根据各个计算节点的连接关系,确定各个计算节点的输入节点和输出节点,并根据原始网络的各个计算节点的设备属性,以及该计算节点的输入节点和/或输出节点,确定该计算节点与其输入节点和/或输出节点的设备属性是否相同,若该计算节点与其输入节点和/或输出节点的设备属性相同,则可以将具有相同设备属性的计算节点等效为等效节点。进一步地,同一个等效节点中包含的多个计算节点可以根据其连接关系在同一设备上完成执行。之后,再切换至其他设备上实现其他等效节点的执行,从而可以减少设备间的切换次数及数据拷贝次数,提高数据处理效率。
其中,原始网络中各个计算节点的连接关系用于表示计算节点之间是否有数据传递(数据依赖关系),例如,当多个计算节点之间具有数据流的传递(数据依赖关系)时,则可以说明多个计算节点之间具有连接关系。可选地,该计算节点之间的连接关系可以通过该原始网络的模型数据集和模型结构参数获得。其中,模型数据集包括原始网络中各个计算节点对应的网络权值,模型结构参数包括原始网络中多个计算节点的连接关系及各个计算节点的计算属性。
具体地,可以通过第一处理器能够获取原始网络的模型数据集及模型结构参数,通过该原始网络的模型数据集及模型结构参数可以获得该原始网络的网络结构图。其中,模型数据集包括原始网络中各个计算节点对应的网络权值等数据,图10所示的神经网络中的W1~W6即用于表示计算节点的网络权值。模型结构参数包括原始网络中多个计算节点的连接关系。进一步地,计算节点的连接关系可以包括输入关系和输出关系等等。如图10所示,计算节点C0输出作为计算节点I1和G1的输入,则可以说明计算节点C0和计算节点I1之间具有连接关系,计算节点C0和计算节点G1之间具有连接关系。再如,计算节点C0和计算节点I0之间没有数据传递,则可以说明计算节点C0和计算节点I0之间不存在连接关系。
可选地,各个计算节点的计算属性可以包括相应计算节点的计算类型及计算参数,其中计算节点的计算类型是指该计算节点用于完成何种计算,如计算节点的计算类型可以包括加法运算、减法运算及卷积运算等等,相应的,该计算节点可以是用于实现加法运算的计算节点、用于实现减法运算的计算节点或用于实现卷积运算的计算节点等等。计算节点的计算参数可以是完成该计算节点对应的计算类型所需的必要参数。例如,计算节点的计算类型可以是用于实现加法运算的计算节点,相应的,该计算节点的计算参数可以为加法运算中的加数,该加法运算中的被加数可以作为输入数据通过获取电路获取,或者,该加法运算中的被加数可以是该计算节点的上一计算节点的输出数据等等。
S300、确定各个等效节点之间的连接关系及执行顺序。
具体地,第一处理器可以根据各个等效节点中计算节点与其他等效节点中计算节点的连接关系,确定各个等效节点的连接关系,获得该原始网络的等效网络。可选地,该第一处理器可以为每个等效节点分配一个段号,该段号可以用于表示各个等效节点的执行顺序,从而第一处理器可以根据各个等效节点的段号确定各个等效节点的执行顺序。
S400、根据各个等效节点的连接关系及执行顺序,以及原始网络的模型数据集、模型结构参数运行该原始网络,获得原始网络中各个计算节点对应的指令。
具体地,第一处理器可以根据原始网络的模型数据集、模型结构参数及该原始网络的等效网络中各个等效节点的连接关系及执行顺序运行该原始网络,以获得原始网络中各个计算节点对应的指令。进一步地,第一处理器还可以获取该原始网络的输入数据,第一处理器可以根据原始网络的输入数据、网络模型数据集、模型结构参数及原始网络的等效网络中各个等效节点的连接关系及执行顺序,获得该原始网络中各个计算节点对应的指令。更进一步地,上述运行该原始网络获得各个计算节点的指令的过程实质上是编译的过程,该编译过程可以通过计算机系统的处理器或虚拟设备实现。即计算机系统的处理器或虚拟设备根据原始网络的模型数据集和模型结构参数运行原始网络。其中,虚拟设备指的是在存储器的内存空间中虚拟出一段处理器运行空间。
应当清楚的是,本实施例中的运行原始网络是指,处理器使用人工神经网络模型数据运行某种机器学习算法(如神经网络算法),通过执行前向运算实现算法的目标应用(如语音识别等人工智能应用)。
上述的数据处理方法,通过将具有相同设备属性的计算节点等效为同一个等效节点,并通过调整各个等效节点之间的执行顺序,使得具有相同设备属性的计算节点在同一设备被顺次执行,通过调整各个计算节点的执行顺序,从而减少了不同设备之间的切换次数以及不同设备之间的数据拷贝次数,从而可以提高该计算机系统的数据处理速度及效率。
可选地,上述各个等效节点可以是离线节点,每个离线节点可以包括一个或一个以上的具有相同设备属性的计算节点。
可选地,上述步骤S400可以包括如下步骤:
根据原始网络的模型结构参数,获得原始网络中各个计算节点的执行顺序。具体地,第一处理器可以根据原始网络的模型结构参数,获得原始网络中各个计算节点的执行顺序,进一步地,第一处理器可以根据原始网络中各个计算节点的连接关系,获得原始网络中各个计算节点的执行顺序,该各个计算节点的执行顺序应当满足各个计算节点之间的数据依赖关系。
按照原始网络中各个计算节点的执行顺序以及各个等效节点的执行顺序运行原始网络,分别获得原始网络中各个计算节点对应的指令。具体地,第一处理器可以确定各个等效节点的执行顺序,并进一步根据原始网络中各个计算节点的执行顺序确定该等效节点中各个计算节点的执行顺序,之后可以运行该原始网络以获得原始网络中各个计算节点对应的指令,即第一处理器可以将原始网络的模型数据集等数据进行编译获得各个计算节点对应的指令,通过各个计算节点对应的指令可以获知该计算节点用于实现何种计算功能,即可以获得该计算节点的计算类型及计算参数等计算属性。
在一个实施例中,各个计算节点的设备属性可以预先存储于该原始网络的网络结构参数或模型数据集中,此时,在读取该原始网络的过程中,即可直接获得该原始网络中各个计算节点的设备属性。即上述步骤S100可以包括如下步骤:
从原始网络的模型数据集或模型结构参数中,获得原始网络中各个计算节点的设备属性。具体地,各个计算节点的设备属性可以预先存储于该原始网络的网络结构参数或模型数据集中。第一处理器的第一获取电路在获得原始网络的模型数据集或模型结构参数的过程中,即可获得该原始网络中各个计算节点的设备属性。
可选地,上述原始网络中各个计算节点的设备属性还可以是第一处理器根据计算获得。具体地,上述步骤S100还可以包括:
根据各个所述计算节点对应的设备参数和/或各个所述计算节点的运算量大小,分别确定各个所述计算节点的设备属性。其中,上述的设备参数可以包括支持所述计算节点对应的运算的设备类型、不同设备执行所述计算节点时的处理速度、功耗、精度中的一种或多种。即各个计算节点的设备属性可以根据设备是否支持特定运算、设备执行该特定运算的处理速度、功耗、精度以及当前特定运算的运算量大小等多种参数中的一种或多种的结合计算获得。
具体地,若该设备支持当前计算节点对应的特定运算时,则可以根据该设备执行该特定运算的处理速度、功耗及精度等多种参数的结合计算获得当前计算节点的设备属性。若该设备不支持当前计算节点对应的特定运算时,则可以确认当前计算节点的设备属性不是该设备。例如,各个参数及其对应的权重可参见下表所示:
则计算机系统可以根据上表中各个参数及其对应的权重,加权计算获得各个设备的评分值,然后将评分值最高的设备的属性作为该计算节点的设备属性。例如,若当前计算节点对应的特定运算既可以在神经网络处理器(IPU)上被执行,也可以在CPU或GPU等通用处理器上运行,此时A1、A2及A3的值均可以取1。此时,IPU对应的评分值R1=A1*(B1*W1+C1*W2+D1*W3),GPU对应的评分值R2=A2*(B2*w1+C2*w2+D2*w3),CPU对应的评分值R3=A3*(B3*weight1+C3*weight2+D3*weight3)。
该计算机系统可以比较上述三个加权计算结果R1、R2、R3的大小,将其中加权计算结果的值最大的一个对应的设备作为该计算节点的设备属性。若加权计算结果R1的值最大,则将该计算节点的设备属性标记为第一设备属性(即IPU属性)。若加权计算结果R2的值最大,则将该计算节点的设备属性标记为第二设备属性(即GPU属性)。若加权计算结果R3的值的最大,则将计算节点的设备属性标记的第三设备属性(即CPU属性)。
若GPU不支持该计算节点对应的特定运算,IPU和CPU能够支持该计算节点对应特定运算,则A2的值可以取0,进而可以获得加权计算结果R2的值为0。A1和A3的值可以取1,IPU对应的评分值R1=A1*(B1*W1+C1*W2+D1*W3),CPU对应的评分值R3=A3*(B3*weight1+C3*weight2+D3*weight3)。此时,该计算机系统只需比较上述加权计算结果R1和R3的大小,并将两者中加权计算结果的值最大的一个对应的设备作为该计算节点的设备属性。若R1大于R3,则将该计算节点的设备属性标记为第一设备属性(即IPU属性);若R1小于R3,则将该计算节点的设备属性标记为第三设备属性(即CPU属性)。
再如,若该多个设备均支持该计算节点对应的特定运算,则可以根据该计算节点对应的特定运算的运算量大小,确定该计算节点的设备属性。例如,上述的三种设备(IPU、GPU和CPU)均支持该特定运算,此时,若该特定运算的运算量大于或等于第一预设值时,可以将计算节点的设备属性确定为第一设备属性(即IPU属性)。若该特定运算的运算量小于第一预设值,且该特定运算的运算量大于或等于第二预设值时,则可以将该计算节点的设备属性确定为第三设备属性(即GPU属性)。若该特定运算的运算量小于第二预设值时,则可以将计算节点的设备属性确定为第二设备属性(即CPU属性)。其中,第一预设值大于第二预设值。
又如,还可以根据各个计算节点对应的设备参数和各个所述计算节点的运算量大小,分别确定各个计算节点的设备属性。则计算机系统可以根据下表中各个参数及其对应的权重,加权计算获得各个设备的评分值,然后将评分值最高的设备的属性作为该计算节点的设备属性。
例如,若当前计算节点对应的特定运算既可以在神经网络处理器(IPU)上被执行,也可以在CPU或GPU等通用处理器上运行,此时A1、A2及A3的值均可以取1。此时,IPU对应的评分值R1=A1*(B1*W1+C1*W2+D1*W3+E*H),GPU对应的评分值R2=A2*(B2*w1+C2*w2+D2*w3++E*H),CPU对应的评分值R3=A3*(B3*weight1+C3*weight2+D3*weight3++E*H)。
当然,在其他实施例中,该计算机系统所包含的设备种类还可以是三种以上或两种,此处仅以三种设备举例设备,并不做具体限定。上述计算各个计算节点的设备属性所需的各种参数及各个参数对应的权重可以由系统自定义,也可以根据用户的需求进行调整,此处不做具体限定。各个设备处理当前计算节点对应的特定运算的参考值可以根据历史数据计算获得,也可以根据用户的需求进行调整。
可选地,若当前计算节点能够在神经网络处理器上执行,则判定神经网络处理器(IPU或NPU)能够支持该计算节点对应的特定运算;若当前计算节点能够在CPU上执行,则将判定CPU能够支持该计算节点对应的特定运算;若当前计算节点能够在GPU上执行,则判定GPU能够支持该计算节点对应的特定运算。
进一步地,第一处理器的第一运算电路可以通过预设函数表查询当前计算节点是否存在具有第一设备属性的等效计算节点,若当前计算节点具有第一设备属性的等效计算节点,则可判定神经网络处理器(IPU或NPU)能够支持该计算节点对应的特定运算,其中,等效计算节点为能够在神经网络处理器上执行的计算节点。若通过预设函数表未查找到与当前计算节点匹配的具有第一设备属性的等效计算节点时,则判定神经网络处理器(IPU或NPU)不能够支持该计算节点对应的特定运算。同理,第一处理器还可以通过预设函数表确定当前计算节点是否存在具有第二设备属性或第三设备属性的等效计算节点。
在一个实施例中,系统可以根据各个计算节点的设备属性获得该原始网络的等效网络,即将该原始网络中具有相同设备属性且具有连接关系或邻近位置的计算节点划分为同一段,将同一段内的多个计算节点等效为一个等效节点,该等效节点可以是离线节点,从而获得该原始网络的等效网络。这样同一段内的计算节点可以连续执行,当同一段内的所有计算节点均执行完成后,再通过切换设备以执行其他段的计算节点,从而可以减少不同设备之间切换以及数据的拷贝次数。
可选地,系统可以通过自下向上对该原始网络进行遍历,依次判断各个计算节点与其输入节点的设备属性是否相同,从而确定出一个以上的等效节点,获得该原始网络的等效网络。具体地,如图4所示,上述步骤S200可以包括如下步骤:
S210、遍历原始网络中的每个计算节点,分别判断当前计算节点与其输入节点的设备属性是否相同;
若当前计算节点与当前计算节点的输入节点的设备属性相同,则可以执行步骤S211,将当前计算节点的输入节点的段号作为当前计算节点的段号,即将当前计算节点与其输入节点划分为同一段,之后执行步骤S212,将同一段内的所有计算节点等效为一个等效节点。进一步地,若当前计算节点与当前计算节点的输入节点的设备属性相同,且当前计算节点的输入节点对应的段号大于当前计算节点对应的段号,则执行步骤S211,将当前计算节点的输入节点对应的段号作为当前计算节点的段号;之后执行步骤S212,将同一段号内的所有计算节点等效为一个等效节点。具体地,当前计算节点的更新后的段号可以等于当前计算节点的输入节点的段号,即将当前计算节点及与其具有相同设备属性的输入节点记为同一段。
遍历原始网络中的每个计算节点,若当前计算节点与当前计算节点的输入节点的设备属性不同,则可以执行步骤S213,将该当前计算节点与其输入节点划分为不同的段,且当前计算节点与其输入节点的段号不相同。进一步地,若当前计算节点与当前计算节点的输入节点的设备属性不同,且当前计算节点的输入节点的段号与预设常数之和大于当前计算节点的段号,则将当前计算节点的输入节点的段号与预设常数之和作为当前计算节点的段号。其中,该预设常数可以等于1,即若当前计算节点与其输入节点的设备属性不同,且当前计算节点的输入节点的段号与常数1之和大于当前计算节点的段号时,则将当前计算节点的输入节点的段号与常数1之和作为当前计算节点的段号。如,该当前计算节点的输入节点的段号为m,则若该当前计算计算节点与其输入节点的设备属性不同时,则将该当前输入节点的段号更新为m+1段,其中m用于表示等效节点的段号,m大于或等于0,m为整数。
可选地,各个计算节点可以预设有初始段号。进一步地,在对该原始网络的各个计算节点进行遍历排序之前,可以先对该原始网络的各个计算节点进行排序,使得各个计算节点的输入节点均已经被找到。
下面举例说明本申请实施例中方法的实现方法:
例如,参见图10所示,针对计算节点I1,系统可以判断当前计算节点I1与当前计算节点I1的输入节点(C0、I0及G0)的设备属性是否相同。如,当前计算节点I1与其输入计算节点I0的设备属性相同,则系统可以继续判断当前计算节点I1的输入节点I0对应的段号是否大于当前计算节点I1对应的段号,若当前计算计算节点的输入节点I0对应的段号大于当前计算节点I1对应的段号,则将当前计算节点的输入节点I0对应的段号作为当前计算节点I1的段号,即将计算节点I0和I1作为同一段,并将计算节点I0的段号作为该段的段号。
若当前计算节点I1与其输入节点(C0或G0)的设备属性不同,则系统可以将该当前计算节点与其输入节点划分为不同的段,且计算节点C0、G0与计算节点I0具有不同的段号。进一步地,系统可以继续判断当前计算节点的输入节点(C0或G0)的段号与预设常数之和是否大于当前计算节点I1的段号,若当前计算节点的输入节点(C0或G0)的段号与预设常数之和是否大于当前计算节点I1的段号,则将当前计算节点的输入节点(C0或G0)的段号与预设常数之和作为当前计算节点I1的段号。
按照上述方法,遍历整个原始网络,从而可以得到该原始网络中各个计算节点的段号,并将同一段号内的所有计算节点等效为一个等效节点,该等效节点可以是一个离线节点,从而获得该原始网络的等效网络。如图10所示,计算节点I0、I1、I2具有相同的设备属性,且具有相同的段号(其段号可以等于计算节点I0的段号),因而可以将上述计算节点I0、I1、I2等效为一个离线节点IPU_First Offline 1,该离线节点表示具有第一设备属性的第一个离线节点。再如,计算节点G0和G1可以等效为一个离线节点GPU_First Offline 1,该离线节点表示具有第二设备属性的第一个离线节点。又如,计算节点C0可以单独作为一个离线节点CPU_First Offline 1,该离线节点表示具有第三设备属性的第一个离线节点。计算节点C1和C2可以等效为一个离线节点CPU_First Offline 2,该离线节点表示具有第三设备属性的第二个离线节点。
可选地,在另一个实施例中,系统可以对该原始网络查找获取该原始网络的各个输入节点,并分别记录该原始网络的各个输入节点的设备属性以及各个输入节点对应的初始段号。该计算机系统中的各种设备均可以对应设置有一个设备列表,该设备列表用于存储具有该设备属性的输入节点,并通过分别查找该设备列表中各个输入节点的输出节点,从而实现该原始网络中各个计算节点的分段,将同一段内的所有计算节点等效为一个等效节点,从而获得该原始网络的等效网络。具体地,如图5所示,上述步骤S200还可以包括如下步骤:
S223、针对每个设备对应的设备列表,分别判断所述设备列表中的各个输入节点的设备属性与所述输入节点的输出节点的设备属性是否相同;
若所述设备列表中的输入节点的设备属性与所述输入节点的输出节点具有相同的设备属性,则执行步骤S224,将所述输入节点的输出节点作为所述新的输入节点,之后返回上述步骤S223,判断所述设备列表中的输入节点的设备属性与所述输入节点的输出节点的设备属性是否相同,直至所述输入节点的设备属性与所述当前输入节点的输出节点的设备属性不同。本申请实施例中,当设备列表中输入节点对应的输出节点与该输入节点的设备属性相同,则将该输出节点作为新的输入节点,并循环递归调用上述步骤S223和步骤S224。
S225、将所述设备列表中的所有输入节点等效为一个等效节点,将所述等效节点的段号更新为所述设备列表中输入节点的段号。具体地,当循环递归完成上述步骤S223和步骤S224之后,可以将该设备列表中的输入节点删除,并将该输入节点与其一个以上具有相同设备属性的输出节点等效为一个等效节点,并将该输入节点的段号作为该等效节点的段号。
若所述设备列表中的输入节点的设备属性与所述输入节点的输出节点的设备属性不同,则执行步骤S226,将所述输入节点的输出节点存储至所述输出节点的设备属性对应的设备列表中。具体地,各个设备列表中输入节点均需按照上述步骤S223和步骤S224进行判断,以确定等效节点及其段号。
进一步地,所述方法还包括:
S220、判断各个设备列表中各个输入节点的段号是否大于或等于预设段号;
若所述设备列表中的各个输入节点的段号大于或等于预设段号,则执行步骤S221,记录所述设备列表中各个输入节点的段号;之后执行步骤S223和步骤S224。若设备列表中存在一个以上的输入节点的段号小于预设段号,则说明该设备列表中有部分输入节点没有被找到,此时可以执行步骤S222,继续查找该原始网络的输入节点。
本申请实施例中,该原始网络的各个计算节点可以具有一初始段号,例如,各个计算节点的初始段号可以为-1,此处仅用于举例说明,不做具体限定。该预设段号可以等于0(初始段号与常数1之和)。当通过遍历查找到该输入节点时,则可以更新该输入节点的段号,例如,可以将该输入节点对应的段号累加一次。这样,若设备列表中的各个输入节点的段号均大于或等于0,则说明该原始网络中的所有输入节点均被找到,之后可以分别记录设备列表中各个输入节点的段号,例如,该输入节点的段号可以使用全局变量进行记录存储。若该设备列表中存在一个以上的输入节点的段号小于0时,则说明该设备列表中有一个以上的输入节点没有被找到,此时可以返回对原始网络进行遍历的步骤,直至查找到所有的初始输入节点。
如图10所示,下面举例说明本实施例的方法的实现过程:
系统中的每个设备均对应设置有一个设备列表,其中,第一设备(IPU)对应的设备列表可以表示为IPU_OP_List,第二设备(GPU)对应的设备列表可以表示为GPU_OP_List,第三设备(CPU)对应的设备列表可以表示为CPU_OP_List。具体地,上述各个设备对应的设备列表可以是数据队列或数组,此处不做具体限定。系统可以根据该原始网络中各个输入节点的设备属性,将该原始网络的各个输入节点分别存储于对应的设备列表中。
例如,该第一设备对应的设备列表IPU_OP_List中可以包括输入节点I0,该第二设备对应的设备列表GPU_OP_List对应的设备列表中可以包括输入节点G0,第三设备对应的设备列表CPU_OP_List中可以包括输入节点C0。
对于第一设备对应的设备列表IPU_OP_List,首先判断该设备列表IPU_OP_List中的所有输入节点的段号是否大于或等于0,若该设备列表IPU_OP_List中的输入节点I0的当前段号小于0,则表明该原始网络中还存在有第一设备属性的输入节点未被找到。若该设备列表IPU_OP_List中的所有输入节点I0的段号大于或等于0,则可以记录该输入节点I0的当前段号。之后,系统可以判断设备列表IPU_OP_List中的输入节点I0的设备属性与其输出节点(I1、G1)的设备属性是否相同。若该设备列表IPU_OP_List中的输入节点I0的设备属性与其输出节点G1具有不同的设备属性,则将该计算节点G1存储至其对应的设备列表GPU_OP_List中,此时,该设备列表GPU_OP_List中包含的输入节点包括G0和G1。
若该设备列表IPU_OP_List中的输入节点I0的设备属性与其输出节点I1具有相同的设备属性,则将输出节点I1作为新的输入节点,继续判断新的输入节点I1的设备属性与其输出节点I2的输出节点是否相同,若该输出节点I2的设备属性与其输入节点I1的设备属性相同,则将该输出节点I2作为新的输入节点,继续判断该新的输入节点I2的输出节点C1、C2的设备属性与该新的输入节点I2的输入节点的设备属性是否相同,直至所述输入节点的设备属性与所述当前输入节点的输出节点的设备属性不同。进一步地,可以将该输入节点I0从设备列表IPU_OP_List中删除。
当该输出节点C1、C2的设备属性与该新的输入节点I2的设备属性不同时,则将该输出节点C1、C2存储至输出节点的设备属性对应的设备列表CPU_OP_List中,此时,该设备列表CPU_OP_List中包含的输入节点包括C0、C1和C2。进一步地,可以将上述设备列表IPU_OP_List中的所有输入节点I0、I1和I2等效为一个离线节点,并将所述离线节点的段号更新为设备列表中输入节点I0的段号。
针对该系统中其他设备对应的设备列表GPU_OP_List和CPU_OP_List,分别执行上述步骤,直至各个设备对应的设备列表均被清空,则完成该原始网络中各个计算节点的分段,从而获得多个离线节点,获得该原始网络的等效网络。其中,其他设备对应的设备列表GPU_OP_List和CPU_OP_List中各个输入节点的处理方法与上述设备列表IPU_OP_List中输入节点的处理方法类似,具体可参见上文中的描述,此处不再一一赘述。
可选地,在另一个实施例中,每一个设备对应设置有一个第一数组,每个第一数组用于存储能够在对应设备上执行的,具有同一设备属性的一个或多个等效节点。例如,该原始网络对应的设备种类可以为3种,如IPU、CPU及GPU。相应地,可以设置三个第一数组,其中一个第一数组与第一设备(IPU)对应设置,记录需要在IPU上执行的一个或多个具有第一设备属性的等效节点。其中一个第一数组与第二设备(GPU)对应设置,用于记录一个或多个具有第二设备属性的等效节点。另一个第一数组与第三设备(CPU)对应设置,用于记录一个或多个具有第三设备属性的等效节点。可选地,上述各个设备对应的第一数可以是N*N大小的二维数组,其中,N表示该原始网络中计算节点的总数量。各个设备对应的第一数组的值可以为0。
每一个设备对应设置有一个第二数组,该第二数组用于记录两个具有该设备属性的计算节点之间是否存在其他设备属性的计算节点。例如,该原始网络对应的设备种类可以为3种,如IPU、CPU及GPU。相应地,可以设置三个第二数组,其中一个第二数组与第一设备(IPU)对应设置,用于记录具有第一设备属性的当前计算节点与当前计算节点之前的所有节点之间,是否存在与当前计算节点的设备属性不同的计算节点。其中一个第二数组与第二设备(GPU)对应设置,用于记录具有第二设备属性的当前计算节点与当前计算节点之前的所有节点之间,是否存在与当前计算节点的设备属性不同的计算节点。另一个第二数组与第三设备对应设置,用于记录具有第三设备属性的当前计算节点与当前计算节点之前的所有节点之间,是否存在与当前计算节点的设备属性不同的计算节点。可选地,上述各个第二数组可以是N*N大小的二维数组,其中,N表示该原始网络中计算节点的总数量。
具体地,如图6所示,上述步骤S200还可以包括如下步骤:
S230、根据当前计算节点的设备属性,查找所述当前计算节点对应的第一数组,判断所述当前计算节点与所述第一数组中存储的第M个等效节点之间,是否存在与所述当前计算节点的设备属性不同的计算节点;其中,每个设备对应设置有一个第一数组,所述第一设备数据用于存储同一设备属性的等效节点,M大于或等于1,M为正整数。本申请实施例中,第一数组中存储的第M个等效节点是与该当前计算节点最邻近的计算节点,该第M个等效节点与该当前计算节点可能存在一定的连接关系。
若所述当前计算节点与其对应的所述第一数组中存储的第M个等效节点之间,不存在与所述当前计算节点的设备属性不同的计算节点,即当前计算节点与其对应的第一数组中存储的第M个等效节点的设备属性相同时,则执行步骤S231,该第M个等效节点可以包含所述当前计算节点,将所述当前计算节点的段号更新为所述第M个等效节点对应的段号,即将该当前计算节点作为第M个等效节点划分为同一段。
若所述当前计算节点和所述第一数组中存储的第M个等效节点之间存在与所述当前计算节点的设备属性不同的计算节点,即当前计算节点与其对应的第一数组中存储的第M个等效节点的设备属性不同时,则表明该当前计算节点与其对应的第一数组中存储的第M个等效节点应当划分为不同的段,执行步骤S232,将所述当前计算节点的段号记为第M+1段。
可选地,上述步骤S230进一步可以包括:
分别根据所述原始网络的各个所述计算节点的设备属性,获得各个所述计算节点对应的第二数组的值;其中,每个设备对应设置有一个所述第二数组。可选地,若所述计算节点与所述计算节点之前的所有节点均具有相同的设备属性,则所述计算节点对应的设备的第二数组的值大于预设数值,例如,该预设数值可以等于0,该计算节点对应的设备的第二数组的值可以等于1。若所述计算节点与所述计算节点之前的所有节点之间存在与所述计算节点的设备属性不同的计算节点,则所述计算节点对应的设备的第二数组的值等于预设数值,该预设数值可以等于0。
若当前计算节点的设备属性之外的其他设备属性的计算节点对应的第二数组的值之和等于预设数值,如当前计算节点的设备属性之外的其他设备属性的计算节点对应的第二数组的值之和等于0,则确定所述当前计算节点和所述第一数组中存储的第N个等效节点之间不存在与所述当前计算节点的设备属性不同的计算节点;若当前计算节点的设备属性之外的其他设备属性的计算节点对应的第二数组的值之和大于预设数值,如当前计算节点的设备属性之外的其他设备属性的计算节点对应的第二数组的值之和大于0,则确定所述当前计算节点和所述第一数组中存储的第M个等效节点之间存在与所述当前计算节点的设备属性不同的计算节点。
下面举例说明本实施例的方法的实现过程:
本申请实施例的计算机系统包括三个不同的设备,分别为第一设备(IPU)、第二设备(GPU)及第三设备(CPU)。每个设备均对应设置有第一数组和第二数组,其中,第一设备对应的第一数组可以表示为IPU_Stream_OP,第一设备对应的第二数组可以表示为has_IPU_op[k_op][op]。第二设备对应的第一数组可以表示为GPU_Stream_OP,第二设备对应的第二数组可以表示为has_GPU_op[k_op][op]。第三设备对应的第一数组可以表示为CPU_Stream_OP,第一设备对应的第二数组可以表示为has_CPU_op[k_op][op]。其中,op表示当前计算节点,k_op表示从原始网络的第一个节点到当前计算节点之前的所有节点。
进一步地,第一设备对应的第二数组的值可以根据如下公式计算获得,has_IPU_op[k_op][op]=(max(has_IPU_op[k_op][i_op]+has_IPU_op[op][op]),其中,i_op表示当前计算节点的所有输入节点。若当前计算节点I1的设备属性为第一设备属性,则has_IPU_op[op][op]的值等于1,has_IPU_op[k_op][op]的值大于零,说明从当前计算节点I1到当前计算节点之前的所有计算节点I1、I0均需经过第一设备属性的计算节点。
同理,第二设备对应的第二数组的值可以根据如下公式计算获得,has_GPU_op[k_op][op]=(max(has_GPU_op[k_op][i_op]+has_GPU_op[op][op])。其中,i_op表示当前计算节点的所有输入节点。若当前计算节点G1的设备属性为第二设备属性,则has_GPU_op[op][op]的值等于1,has_GPU_op[k_op][op]的值大于零,说明从当前计算节点到当前计算节点之前的所有计算节点均需经过第二设备属性的计算节点。
第三设备对应的第二数组的值可以根据如下公式计算获得,has_CPU_op[k_op][op]=(max(has_CPU_op[k_op][i_op]+has_CPU_op[op][op])。其中,i_op表示当前计算节点的所有输入节点。若当前计算节点C1的设备属性为第三设备属性,则has_CPU_op[op][op]的值等于1,has_CPU_op[k_op][op]的值大于零,说明从当前计算节点C1到当前计算节点之前的所有计算节点均需经过第三设备属性的计算节点。
进一步地,若当前计算节点具有第一设备属性,且该当前计算节点对应的第一数组IPU_Stream_OP已经存储有M个具有第一设备属性的等效节点(即M个第一设备属性的不同段),若该当前计算节点之外的其他设备属性的计算节点对应的第二数组has_CPU_op[op][op]与has_GPU_op[op][op]的和大于0,则确定所述当前计算节点和所述第一数组中存储的第M个等效节点之间存在与所述当前计算节点的设备属性不同的计算节点。若该当前计算节点之外的其他设备属性的计算节点对应的第二数组has_CPU_op[op][op]与has_GPU_op[op][op]的和等于0,则确定所述当前计算节点和所述第一数组中存储的第M个等效节点之间,不存在与所述当前计算节点的设备属性不同的计算节点。
同理,若当前计算节点具有第二设备属性,且该当前计算节点对应的第一数组GPU_Stream_OP已经存储有M个具有第二设备属性的等效节点(即M个第二设备属性的不同段),若该当前计算节点之外的其他设备属性的计算节点对应的第二数组has_CPU_op[op][op]与has_IPU_op[op][op]的和大于0,则确定所述当前计算节点和所述第一数组中存储的第M个等效节点之间存在与所述当前计算节点的设备属性不同的计算节点。若该当前计算节点之外的其他设备属性的计算节点对应的第二数组has_CPU_op[op][op]与has_IPU_op[op][op]的和等于0,则确定所述当前计算节点和所述第一数组中存储的第M个等效节点之间,不存在与所述当前计算节点的设备属性不同的计算节点。
若当前计算节点具有第三设备属性,且该当前计算节点对应的第一数组CPU_Stream_OP已经存储有M个具有第三设备属性的等效节点(即M个第一设备属性的不同段),若该当前计算节点之外的其他设备属性的计算节点对应的第二数组has_IPU_op[op][op]与has_GPU_op[op][op]的和大于0,则确定所述当前计算节点和所述第一数组中存储的第M个等效节点之间存在与所述当前计算节点的设备属性不同的计算节点。若该当前计算节点之外的其他设备属性的计算节点对应的第二数组has_IPU_op[op][op]与has_GPU_op[op][op]的和等于0,则确定所述当前计算节点和所述第一数组中存储的第M个等效节点之间,不存在与所述当前计算节点的设备属性不同的计算节点。
在一个实施例中,可以将同一段内的多个具有相同设备属性的计算节点等效为一个等效节点,从而可以获得该原始网络的等效网络。如图7所示,上述步骤S300可以包括:
S310、对于每个所述等效节点,若所述等效节点与所述等效节点的输入节点具有不同的设备属性,则将与所述等效节点具有不同设备属性的输入节点作为等效节点的输入节点;
S320、对于每个所述等效节点,若所述等效节点与所述等效节点的输出节点具有不同的设备属性,则将与所述等效节点具有不同设备属性的输出节点作为等效节点的输出节点。
例如,如图10所示,其中一个等效节点C0、GPU_First Offline 1与等效节点IPU_First Offline 1具有不同的设备属性,则可以将该等效节点C0、GPU_First Offline 1作为该等效节点IPU_First Offline 1的输入节点。等效节点IPU_First Offline 1与等效节点CPU_First Offline 2具有不同的设备属性,则可以将该等效节点CPU_First Offline 2作为该等效节点IPU_First Offline 1的输出节点。若该等效节点IPU_First Offline 1和CPU_First Offline 2具有相同的设备属性,则可以将该IPU_First Offline 1和CPU_First Offline 2作为同一个等效节点,此时,等效节点CPU_First Offline 2不作为等效节点IPU_First Offline 1的输出节点。
应当清楚的是,等效节点的设备属性是指该等效节点包含的所有计算节点所共有的设备属性。即若该等效节点IPU_First Offline 1包含的所有计算节点I0、I1和I2的设备属性均为第一设备属性,则该等效节点IPU_First Offline 1的设备属性也为第一设备属性。
S330、根据各个所述等效节点的段号,确定各个所述等效节点的执行顺序;其中,所述等效节点的段号能够表示所述等效节点的设备属性。
可选地,等效节点的段号可以根据等效节点的设备属性分别进行编号。例如,第一设备对应有a个等效节点,该a个具有第一设备属性的等效节点,可以顺次编号为IPU[0]、IPU[1]、IPU[2]……IPU[a],其中,0~a的编号依次增大。第二设备对应有b个等效节点,该b个具有第二设备属性的等效节点,可以顺次编号为GPU[0]、GPU[1]、GPU[2]……GPU[b],其中,0~b的编号依次增大。第三设备对应有c个等效节点,该c个具有第三设备属性的等效节点,可以顺次编号为CPU[0]、CPU[1]、CPU[2]……CPU[c],其中,0~c的编号依次增大。此时,系统可以根据各个等效节点的段号以及原始网络中各个计算节点之间的连接关系,将各个等效节点的执行顺序确定为IPU[0]—GPU[0]—CPU[0]—IPU[1]—GPU[1]—CPU[1]……IPU[a]—GPU[b]—CPU[c]。此处的等效节点的执行顺序仅用于举例说明,并不用于具体限定各个等效节点的执行顺序。
当然,系统还可以对各个等效节点的段号进行顺次编号,如根据原始网络的遍历顺序及原始网络中各个计算节点的连接关系,将第一个等效节点的段号标记为1、第二个等效节点的段号标记为2……第n个等效节点的段号标记为n,从而系统可以根据各个等效节点的执行顺序,并根据各个等效节点的执行顺序顺次执行各个等效节点中的计算节点。进一步地,该等效节点的段号能够表示该等效节点的设备属性,从而当段号相邻的两个等效节点具有不同的设备属性时,系统可以通过设备的切换,实现不同的等效节点的执行。
本申请实施例中,图7的流程图并不用于限定上述步骤S310~步骤S330的执行顺序,此处仅用于举例说明。事实上,上述步骤S310~步骤S330也可以并行执行。
本申请实施例中的数据处理方法,通过将同一个等效节点中的多个计算节点放在同一个设备上,并在该设备上按照原始网络的模型参数确定的各个等效节点内部的各个计算节点的执行顺序执行该等效节点。当完成当前等效节点的执行过程之后,再通过切换设备执行下一个等效节点,从而可以减少设备之间的切换次数,提高计算机系统的数据处理速度及效率。
可选地,如图8所示,上述方法还包括如下步骤:
S500、根据各个所述计算节点的设备属性,分别将各个所述计算节点的网络权值及指令,存储至所述计算节点对应的设备的非易失性存储器中,获得所述原始网络对应的一个以上的离线模型。
具体地,若当前计算节点的设备属性为第一设备属性时,则将当前计算节点对应的网络权值及指令存储至第一设备对应的非易失性存储器中,以获得原始网络对应的第一离线模型。其中,该第一设备对应的非易失性存储器可以为IPU或NPU等神经网络处理器对应的第三存储器。若当前计算节点的设备属性为第二设备属性时,则将当前计算节点对应的网络权值及指令存储至第二设备对应的非易失性存储器中,以获得原始网络对应的第二离线模型。若当前计算节点的设备属性为第三设备属性时,则将当前计算节点对应的网络权值及指令存储至第三设备对应的非易失性存储器中,以获得该原始网络对应的第三离线模型。
进一步地,针对原始网络的每个计算节点,该计算节点的网络权值及指令一一对应进行存储。这样,当再次运行该原始网络时,可以直接从第一设备对应非易失性存储器中获取该原始网络对应的第一离线模型,并根据与该第一离线模型运行原始网络中所有具有第一设备属性的计算节点;直接从第二设备对应非易失性存储器中获取该原始网络对应的第二离线模型,并根据与该第二离线模型运行原始网络中所有具有第二设备属性的计算节点;直接从第三设备对应非易失性存储器中获取该原始网络对应的第三离线模型,并根据与该第三离线模型运行原始网络中所有具有第三设备属性的计算节点,无需在线对该原始网络中的各个计算节点进行编译获得指令,提高了系统的运行速度及效率。
应当清楚的是,本实施例中,直接运行该原始网络对应的离线模型是指,使用离线模型运行该原始网络对应的机器学习算法(如神经网络算法),通过执行前向运算实现算法的目标应用(如语音识别等人工智能应用)。
更进一步地,上述步骤S500还可以包括:
根据原始网络的模型数据集和模型结构参数,获得原始网络的内存分配方式;具体地,第一处理器可以根据原始网络的模型数据集和模型结构参数,获得原始网络的内存分配方式。进一步地,第一处理器可以根据原始网络的模型结构参数以及各个等效节点的执行顺序,获得原始网络中各个计算节点的执行顺序,并根据原始网络中各个计算节点的执行顺序确定当前网络的内存分配方式。例如,按各个计算节点的执行顺序将各个计算节点在运行过程中的相关数据保存至一个栈内。其中,内存分配方式是指确定原始网络中各个计算节点相关的数据(包括输入数据、输出数据、网络权值数据及中间结果数据等等)在内存空间(如第一存储器)上的存储位置。例如,可以采用数据表存储各个计算节点相关的数据(输入数据、输出数据、网络权值数据及中间结果数据等等)和内存空间的映射关系。
根据原始网络的内存分配方式,将原始网络运行过程中的相关数据存储至第一存储器中,其中,原始网络运行过程中的相关数据包括原始网络的各个计算节点对应的网络权值、指令、输入数据及输出数据。
例如,如图10所示,X1和X2表示该神经网络的输入数据,W1~W6用于表示计算节点C0、I0和G0对应的网络权值,计算节点I1、I2、G1的输出数据以及计算节点C1和C2的输出数据可以作为中间计算结果。第一处理器可以根据已确定的内存分配方式,将原始网络运行过程中的相关数据存储至第一存储器,如内存储器或缓存等易失性存储器,其具体的存储方式可参见图11中中间位置的存储空间。
从第一存储器中获取原始网络中各个具有第一设备属性的计算节点对应的网络权值及指令,并将原始网络中各个具有第一设备属性的计算节点对应的网络权值及指令存储于第一设备对应的非易失性存储器中,生成第一离线模型。其中,第一设备对应的非易失性存储器可以是IPU或NPU对应的第三存储器。该第一离线模型的生成过程具体可参见图11所示,图11中右边的存储空间内存储的即为原始网络的对应的第一离线模型。
同理,可以从第一存储器中获取原始网络中各个具有第二设备属性的计算节点对应的网络权值及指令,并将原始网络中各个具有第二设备属性的计算节点对应的网络权值及指令存储于第二设备对应的非易失性存储器中,生成第二离线模型。其中,第二设备对应的非易失性存储器可以是GPU对应的第三存储器。可以从第一存储器中获取原始网络中各个具有第三设备属性的计算节点对应的网络权值及指令,并将原始网络中各个具有第三设备属性的计算节点对应的网络权值及指令存储于第三设备对应的非易失性存储器中,生成第三离线模型。其中,第三设备对应的非易失性存储器可以是GPU对应的第三存储器。如图11所示,图11中左边的存储空间内存储的即为原始网络的对应的第二离线模型和第三离线模型。
在一个实施例中,如图9所示,本申请实施例还可以提供一种数据处理方法,该数据处理方法可以直接采用该原始网络对应的离线模型,实现该原始网络的相关运算,从而无需对该原始网络进行编译等操作,提高数据处理效率及速度。具体地,上述方法可以包括如下步骤:
S600、获取原始网络的模型数据集和模型结构参数,其中,所述模型数据集包括所述原始网络中各个计算节点对应的网络权值,所述模型结构参数包括所述原始网络中多个计算节点的连接关系。
S610、根据所述原始网络中多个计算节点的连接关系,将具有相同设备属性的计算节点等效为一个离线节点,获得所述原始网络对应的等效网络;
S620、根据各个计算节点的设备属性,分别从该原始网络对应的离线模型中获取该计算节点的指令和权值,根据该计算节点的指令和权值执行该计算节点。
这样,当需要再次执行该原始网络时,可以直接从各个设备对应的非易失性存储器中存储的离线模型中,获取具有该原始网络中各个计算节点的网络权值及指令,从而可以无需再次对该原始网络进行编译,即可直接执行该原始网络。
具体地,该原始网络对应的离线模型可以是一个以上,该离线模型的数量可以等于该计算机系统中设备的种类,即每个设备均对应设置有一个离线模型。例如,如图10和图11所示,当系统需要再次运行图10所示的原始网络时,系统可以从第一离线模型中获得计算节点I0、I1、I2和I3的指令和权值,可以从第二离线模型中获得计算节点G0和G1的指令和权值,并从第三离线模型中获得计算节点C0、C1和C2的指令和权值,并根据各个等效节点的执行顺序运行该原始网络,从而获得该原始网络的运算结果。这样可以无需再次对该原始网络进行编译,即可直接执行该原始网络。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
应该理解的是,虽然图3-9的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3-9中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
同时,本申请还提供了一种计算机系统100包括第一处理器110及与第一处理器110对应设置的第一存储器120及第二存储器130;一个或多个第二处理器140及与第二处理器140对应设置的一个或多个第三存储器150,各个第二处理器140均连接至第一处理器110;第一存储器120或第二存储器130中存储有计算机程序,第一处理器110在执行计算机程序时,执行如上述任一实施例的方法。具体地,第一处理器110在执行上述计算机程序时,具体执行如下步骤:
获取原始网络中各个计算节点的设备属性;
根据所述原始网络中各个计算节点的设备属性及各计算节点间的连接关系,将具有相同设备属性的计算节点等效为一个等效节点;
确定各个所述等效节点的连接关系及执行顺序;
根据所述各个等效节点的连接关系及执行顺序,以及所述原始网络的模型数据集、模型结构参数运行该原始网络,获得原始网络中各个计算节点对应的指令。
应当清楚的是,本申请实施例中的第一处理器执行计算机程序的工作过程,与上述方法中各个步骤的执行过程基本一致,具体可参见上文中的描述,此处不做具体限定。
进一步地,该计算机系统的第一处理器可以为中央处理器、图像处理器、数字信号处理器或现场可编辑门阵列等,第二处理器可以为专用神经网络处理器、中央处理器、图像处理器、数字信号处理器或现场可编程门阵列等等。可以理解的是,本实施例中计算机系统的工作原理与图3~图9中所示的数据处理方法中各个步骤的执行过程一致,具体可参见上文中的描述,此处不再赘述。
此外,本发明一实施例还提供了一种计算机存储介质,计算机存储介质中存储有计算机程序,当计算机程序被一个或多个第一处理器执行时,执行上述任一实施例的方法。其中,该计算机存储介质可以包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
具体地,本申请的计算机存储介质中存储的计算机程序被一个或多个处理器执行时,具体实现如下步骤:
获取原始网络中各个计算节点的设备属性;
根据所述原始网络中各个计算节点的设备属性及各计算节点间的连接关系,将具有相同设备属性的计算节点等效为一个等效节点;
确定各个所述等效节点的连接关系及执行顺序;
根据所述各个等效节点的连接关系及执行顺序,以及所述原始网络的模型数据集、模型结构参数运行该原始网络,获得原始网络中各个计算节点对应的指令。
应当清楚的是,本申请实施例的计算机存储介质中存储的计算机程序被执行的过程,与上述方法中各个步骤的执行过程一致,具体可参见上文中的描述,此处不再赘述。
如图12所示,本申请实施例还提供了一种计算机装置200,包括获取模块210、等效节点确定模块220、等效网络确定模块230和网络运行模块240。其中,
获取模块210用于获取原始网络中各个计算节点的设备属性;
等效节点确定模块220用于根据所述原始网络中各个计算节点的设备属性及各计算节点间的连接关系,将两个以上顺序执行的、具有相同设备属性的计算节点等效为一个等效节点;
等效网络确定模块230用于确定各个所述等效节点的连接关系及执行顺序;
网络运行模块240用于根据所述各个等效节点的连接关系及执行顺序,以及所述原始网络的模型数据集、模型结构参数运行该原始网络,获得原始网络中各个计算节点对应的指令。
关于计算机装置的具体限定可以参见上文中对于数据处理方法的限定,在此不再赘述。上述计算机装置中的各个电路可全部或部分通过软件、硬件及其组合来实现。上述各电路可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个电路对应的操作。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (17)
1.一种数据处理方法,其特征在于,包括如下步骤:
获取原始网络中各个计算节点的设备属性;
根据所述原始网络中各个计算节点的设备属性及各计算节点间的连接关系,将具有相同设备属性的计算节点等效为等效节点;
确定各个所述等效节点的连接关系及执行顺序;
根据所述各个所述等效节点的连接关系及执行顺序,以及所述原始网络的模型数据集、模型结构参数运行该原始网络,获得原始网络中各个计算节点对应的指令。
2.根据权利要求1所述的方法,其特征在于,所述的获取原始网络中各个计算节点的设备属性的步骤,包括:
根据各个所述计算节点对应的设备参数和/或各个所述计算节点的运算量大小,分别确定各个所述计算节点的设备属性;
其中,所述计算节点对应的设备参数包括支持所述计算节点对应的运算的设备类型、不同设备执行所述计算节点时的处理速度、功耗、精度中的一种或多种。
3.根据权利要求1所述的方法,其特征在于,所述的根据所述原始网络中各个计算节点的设备属性及各计算节点间的连接关系,将具有相同设备属性的计算节点等效为等效节点的步骤,还包括:
若当前计算节点与所述当前计算节点的输入节点的设备属性相同,则将所述当前计算节点的输入节点对应的段号作为所述当前计算节点的段号;
将具有相同段号的所有计算节点等效为等效节点。
4.根据权利要求3所述的方法,其特征在于,所述的根据所述原始网络中各个计算节点的设备属性及各计算节点间的连接关系,将具有相同设备属性的计算节点等效为等效节点的步骤,还包括:
若所述当前计算节点的设备属性与所述当前计算节点的输入节点的设备属性不相同,则将所述当前计算节点与所述当前计算节点的输入节点划分为不同段,且所述当前计算节点与所述当前计算节点的输入节点的段号不相同。
5.根据权利要求3所述的方法,其特征在于,所述的根据所述原始网络中各个计算节点的设备属性及各计算节点间的连接关系,将具有相同设备属性的计算节点等效为等效节点的步骤,还包括:
若所述当前计算节点与所述当前计算节点的输入节点的设备属性不同,且所述当前计算节点的输入节点的段号与预设常数之和大于所述当前计算节点的段号,则将所述当前计算节点的输入节点的段号与预设常数之和作为所述当前计算节点的段号。
6.根据权利要求1所述的方法,其特征在于,根据所述原始网络中各个计算节点的设备属性及各计算节点间的连接关系,将具有相同设备属性的计算节点等效为等效节点的步骤,还包括:
针对每个设备对应的设备列表,分别判断所述设备列表中的各个输入节点的设备属性与所述输入节点的输出节点的设备属性是否相同;
若所述设备列表中的输入节点的设备属性与所述输入节点的输出节点具有相同的设备属性,则将所述输入节点的输出节点作为所述新的输入节点,之后返回判断所述设备列表中的输入节点的设备属性与所述输入节点的输出节点的设备属性是否相同的步骤,直至所述输入节点的设备属性与所述当前输入节点的输出节点的设备属性不同;
将所述设备列表中的所有输入节点等效为等效节点,将所述等效节点的段号更新为所述设备列表中输入节点的段号。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若所述设备列表中的输入节点的设备属性与所述输入节点的输出节点的设备属性不同,则将所述输入节点的输出节点存储至所述输出节点的设备属性对应的设备列表中。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若所述设备列表中的各个输入节点的段号大于或等于预设段号,则记录所述设备列表中各个输入节点的段号;之后判断所述设备列表中的输入节点的设备属性与所述输入节点的输出节点的设备属性是否相同。
9.根据权利要求1所述的方法,其特征在于,所述的根据所述原始网络中各个计算节点的设备属性及各计算节点间的连接关系,将具有相同设备属性的计算节点等效为等效节点的步骤,包括:
根据当前计算节点的设备属性,查找所述当前计算节点对应的第一数组,判断所述当前计算节点与所述第一数组中存储的第M个等效节点之间,是否存在与所述当前计算节点的设备属性不同的计算节点;其中,每个设备对应设置有一个所述第一数组,所述第一设备数据用于存储同一设备属性的等效节点,M大于或等于1,M为正整数;
若所述当前计算节点和所述第一数组中存储的第M个等效节点之间,不存在与所述当前计算节点的设备属性不同的计算节点,则所述第M个等效节点包含所述当前计算节点,将所述当前计算节点的段号更新为所述第M个等效节点对应的段号;
若所述当前计算节点和所述第一数组中存储的第M个等效节点之间存在与所述当前计算节点的设备属性不同的计算节点,则将所述当前计算节点的段号记为第M+1段。
10.根据权利要求9所述的方法,其特征在于,所述的判断所述当前计算节点与所述第一数组中存储的第M个等效节点之间,是否存在与所述当前计算节点的设备属性不同的计算节点的步骤,包括:
分别根据所述原始网络的各个所述计算节点的设备属性,获得各个所述计算节点对应的第二数组的值;其中,每个设备对应设置有一个所述第二数组;
若所述当前计算节点的设备属性之外的其他设备属性的计算节点对应的第二数组的值之和等于预设数值,则确定所述当前计算节点和所述第一数组中存储的第M个等效节点之间不存在与所述当前计算节点的设备属性不同的计算节点;
若所述当前计算节点的设备属性之外的其他设备属性的计算节点对应的第二数组的值之和大于所述预设数值,则确定所述当前计算节点和所述第一数组中存储的第M个等效节点之间存在与所述当前计算节点的设备属性不同的计算节点。
11.根据权利要求10所述的方法,其特征在于,所述的分别根据所述原始网络的各个所述计算节点的设备属性,获得各个所述计算节点对应的第二数组的值的步骤,包括:
若所述计算节点与所述计算节点之前的所有节点均具有相同的设备属性,则所述计算节点对应的设备的第二数组的值大于所述预设数值;
若所述计算节点与所述计算节点之前的所有节点之间存在与所述计算节点的设备属性不同的计算节点,则所述计算节点对应的设备的第二数组的值等于所述预设数值。
12.根据权利要求1-11任一项所述方法,其特征在于,确定各个所述等效节点的连接关系及执行顺序的步骤,包括:
对于每个所述等效节点,若所述等效节点与所述等效节点的输入节点具有不同的设备属性,则将与所述等效节点具有不同设备属性的输入节点作为等效节点的输入节点;
对于每个所述等效节点,若所述等效节点与所述等效节点的输出节点具有不同的设备属性,则将与所述等效节点具有不同设备属性的输出节点作为等效节点的输出节点。
13.根据权利要求1-11任一项所述的方法,其特征在于,所述的确定各个所述等效节点的连接关系及执行顺序的步骤,还包括:
根据各个所述等效节点的段号,确定各个所述等效节点的执行顺序;
其中,所述等效节点的段号能够表示所述等效节点的设备属性。
14.根据权利要求1-11任一项所述的方法,其特征在于,所述方法还包括如下步骤:
根据各个所述计算节点的设备属性,分别将各个所述计算节点的网络权值及指令,存储至所述计算节点对应的设备的非易失性存储器中,获得所述原始网络对应的一个以上的离线模型。
15.一种计算机装置,其特征在于,包括:
获取模块,用于获取原始网络中各个计算节点的设备属性;
等效节点确定模块,用于根据所述原始网络中各个计算节点的设备属性及各计算节点间的连接关系,将两个以上顺序执行的、具有相同设备属性的计算节点等效为等效节点;
等效网络确定模块,用于确定各个所述等效节点的连接关系及执行顺序;
网络运行模块,用于根据所述各个所述等效节点的连接关系及执行顺序,以及所述原始网络的模型数据集、模型结构参数运行该原始网络,获得原始网络中各个计算节点对应的指令。
16.一种计算机系统,其特征在于,包括:
第一处理器及与所述第一处理器对应设置的第一存储器及第二存储器;
一个或多个第二处理器及与所述第二处理器对应设置的一个或多个第三存储器,各个所述第二处理器均连接至所述第一处理器;
所述第一存储器或所述第二存储器中存储有计算机程序,所述第一处理器在执行所述计算机程序时,执行如权利要求1-14任一项所述的方法的步骤。
17.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有计算机程序,当所述计算机程序被一个或多个第一处理器执行时,执行如权利要求1-14任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811481014.4A CN111274023B (zh) | 2018-12-05 | 2018-12-05 | 数据处理方法、装置、计算机系统和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811481014.4A CN111274023B (zh) | 2018-12-05 | 2018-12-05 | 数据处理方法、装置、计算机系统和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111274023A true CN111274023A (zh) | 2020-06-12 |
CN111274023B CN111274023B (zh) | 2022-11-22 |
Family
ID=70996661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811481014.4A Active CN111274023B (zh) | 2018-12-05 | 2018-12-05 | 数据处理方法、装置、计算机系统和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111274023B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115576699A (zh) * | 2022-11-25 | 2023-01-06 | 成都登临科技有限公司 | 数据处理方法、装置、ai芯片、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107180010A (zh) * | 2016-03-09 | 2017-09-19 | 联发科技股份有限公司 | 异构计算系统和方法 |
CN107766148A (zh) * | 2017-08-31 | 2018-03-06 | 北京百度网讯科技有限公司 | 一种异构集群及任务处理方法和装置 |
EP3343388A1 (en) * | 2016-12-30 | 2018-07-04 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
-
2018
- 2018-12-05 CN CN201811481014.4A patent/CN111274023B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107180010A (zh) * | 2016-03-09 | 2017-09-19 | 联发科技股份有限公司 | 异构计算系统和方法 |
EP3343388A1 (en) * | 2016-12-30 | 2018-07-04 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
CN107766148A (zh) * | 2017-08-31 | 2018-03-06 | 北京百度网讯科技有限公司 | 一种异构集群及任务处理方法和装置 |
Non-Patent Citations (1)
Title |
---|
彭江泉等: "CPU/GPU系统负载均衡的可分负载调度", 《计算机工程与设计》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115576699A (zh) * | 2022-11-25 | 2023-01-06 | 成都登临科技有限公司 | 数据处理方法、装置、ai芯片、电子设备及存储介质 |
CN115576699B (zh) * | 2022-11-25 | 2024-03-12 | 成都登临科技有限公司 | 数据处理方法、装置、ai芯片、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111274023B (zh) | 2022-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110689138B (zh) | 运算方法、装置及相关产品 | |
US20220335284A1 (en) | Apparatus and method with neural network | |
CN111338635A (zh) | 计算图的图编译方法、装置、设备及存储介质 | |
CN113449857A (zh) | 一种数据处理方法和数据处理设备 | |
US10817293B2 (en) | Processing core with metadata actuated conditional graph execution | |
CN110659069B (zh) | 用于执行神经网络计算的指令调度方法及相应计算系统 | |
CN109993287B (zh) | 神经网络处理方法、计算机系统及存储介质 | |
JP6879072B2 (ja) | 処理方法、プログラム、情報処理装置、および画像処理装置 | |
CN113449859A (zh) | 一种数据处理方法及其装置 | |
CN114450699A (zh) | 由处理单元实现的方法、可读存储介质和处理单元 | |
US11113051B2 (en) | Processing core with metadata actuated conditional graph execution | |
CN114556260A (zh) | 用于执行神经网络的装置和系统 | |
KR20190089685A (ko) | 데이터를 처리하는 방법 및 장치 | |
CN112668689A (zh) | 进行多媒体数据处理的方法和设备 | |
CN113724814A (zh) | 一种分诊方法、装置、计算设备及存储介质 | |
Wen et al. | Taso: Time and space optimization for memory-constrained DNN inference | |
JP2022546271A (ja) | カーネルチューニングパラメータを予測するための方法及び装置 | |
CN114026571A (zh) | 用于并行执行的神经网络操作重新排序 | |
CN111274023B (zh) | 数据处理方法、装置、计算机系统和存储介质 | |
KR20210035702A (ko) | 인공 신경망의 양자화 방법 및 인공 신경망을 이용한 연산 방법 | |
CN111860824A (zh) | 一种数据处理方法及相关产品 | |
CN113761934B (zh) | 一种基于自注意力机制的词向量表示方法及自注意力模型 | |
CN111026523A (zh) | 任务调度控制方法、任务调度器及任务处理装置 | |
KR20230099190A (ko) | 다차원 텐서의 주소 생성 장치 및 방법 | |
CN111582464B (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 |