CN111767121B - 运算方法、装置及相关产品 - Google Patents
运算方法、装置及相关产品 Download PDFInfo
- Publication number
- CN111767121B CN111767121B CN201910262378.1A CN201910262378A CN111767121B CN 111767121 B CN111767121 B CN 111767121B CN 201910262378 A CN201910262378 A CN 201910262378A CN 111767121 B CN111767121 B CN 111767121B
- Authority
- CN
- China
- Prior art keywords
- task
- processor
- executed
- neural network
- processors
- 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
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Multi Processors (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开涉及一种运算方法、装置及相关产品,所述产品包括控制模块,所述控制模块包括:指令缓存单元、指令处理单元和存储队列单元;所述指令缓存单元,用于存储所述人工神经网络运算关联的计算指令;所述指令处理单元,用于对所述计算指令解析得到多个运算指令;所述存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。通过以上方法,本公开可以提高相关产品在进行神经网络模型的运算时的运算效率。
Description
技术领域
本公开涉及深度学习技术领域,尤其涉及一种任务调度方法、装置及相关产品。
背景技术
在深度学习技术领域,在多核神经网络处理器处理神经网络模型中的多项任务时,相关技术中,在处理器开始处理各项任务时,会同时进行动态任务调度。即,处理器在运行神经网络模型的同时,会将多项任务逐个实时分发到不同的运算核上,以实现多任务并发调度。但是,采用上述相关技术运行神经网络模型时,神经功能网络模型的运行速度较慢。
发明内容
有鉴于此,本公开提出了一种任务调度方法、装置及相关产品,可以在任务执行前进行资源调度,从而在神经网络模型运行过程中,不需要再分配额外资源来进行调度处理,使得处理器可以专注于任务运行
根据本公开的一方面,提供了一种任务调度方法,包括:
在神经网络模型处于非运行状态时,确定所述神经网络模型中各待执行任务的目标执行路径,
其中,所述待执行任务通过拆分所述神经网络模型得到;
基于各所述待执行任务的目标执行路径和各处理器的优先级,为各所述待执行任务分配相应的处理器。
在一种可能的实现方式中,所述待执行任务包括算子集合;
所述算子集合通过在拆分所述神经网络模型时,对所述神经网络模型中的串行算子进行合并得到。
在一种可能的实现方式中,所述目标执行路径为:所述待执行任务在所述神经网络模型中执行时间最长的路径。
在一种可能的实现方式中,确定所述神经网络模型中各待执行任务的目标执行路径,包括:
确定各所述待执行任务的预计运行时间;
根据各所述待执行任务的预计运行时间和所述神经网络模型的数据流图,获取各所述待执行任务的目标执行路径。
在一种可能的实现方式中,确定各所述待执行任务的预计运行时间,包括:
基于处理器参数,计算各所述待执行任务的预计运行时间;
其中,所述处理器参数包括:连接各所述处理器的缓冲区期望带宽、存储器通道分配给各所述处理器的期望带宽和各所述处理器所在的板卡的预计主频。
在一种可能的实现方式中,确定各所述待执行任务的预计运行时间,包括:
基于模型参数,计算各所述待执行任务的预计运行时间;
其中,所述模型参数包括:所述待执行任务的任务类型以及所述待执行任务的任务规模;
所述任务规模通过所述待执行任务的计算量和输入输出数据量确定。
在一种可能的实现方式中,确定各所述待执行任务的预计运行时间,包括:
基于速度参数,计算各所述待执行任务的预计运行时间;
其中,所述速度参数包括:各所述待执行任务在每个处理器上的读写速度和运算速度。
在一种可能的实现方式中,所述数据流图基于对所述神经网络模型拆分后所得到的各所述待执行任务的依赖关系生成。
在一种可能的实现方式中,基于各所述待执行任务的目标执行路径和各处理器的优先级,为各所述待执行任务分配相应的处理器,包括:
基于各所述目标执行路径,由当前还未分配的各所述待执行任务中,选取目标执行路径最长的待执行任务作为当前所要分配的第一任务;
按照各所述处理器的优先级,由各所述处理器中逐级筛选出第一处理器;
为所述第一任务分配所述第一处理器,以使所述神经网络模型在运行状态时,由所述第一处理器运行所述第一任务。
在一种可能的实现方式中,按照各所述处理器的优先级,由各所述处理器中逐级筛选出第一处理器,包括:
基于各所述处理器的优先级,由各所述处理器中提取出第一优先级的处理器;
其中,所述第一优先级的处理器为:当前负载通道最低的处理器;
在第一优先级的处理器的个数为一个时,确定所述第一优先级的处理器为所述第一处理器。
在一种可能的实现方式中,所述当前负载通道通过基于各所述处理器当前已分配到的所有待执行任务的预计运行时间和所占带宽所模拟出的实时带宽占用确定。
在一种可能的实现方式中,按照各所述处理器的优先级,由各所述处理器中逐级筛选出第一处理器,包括:
在所述第一优先级的处理器的个数为两个以上时,由各所述第一优先级的处理器中提取出第二优先级的处理器;
其中,所述第二优先级的处理器为:各处理器当前已分配的待执行任务中,最后一个待执行任务为所述第一任务的前继任务的处理器;
所述前继任务为:执行完毕时间位于所述第一任务执行之前的待执行任务;
在所述第二优先级的处理器的个数为一个时,确定所述第二优先级的处理器为所述第一处理器。
在一种可能的实现方式中,在所述第二优先级的处理器的个数为两个以上时,选取前继任务执行时间最长的处理器作为所述第一处理器。
在一种可能的实现方式中,按照各所述处理器的优先级,由各所述处理器中逐级筛选出第一处理器,包括:
在各所述第一优先级的处理器中,不存在所述第二优先级的处理器时,由所述第一优先级的处理器中提取出第三优先级的处理器;
其中,所述第三优先级的处理器为:当前运行时间最短的处理器;
所述当前运行时间为各所述处理器中当前已分配的待执行任务的预计运行时间之和;
在所述第三优先级的处理器的个数为一个时,确定所述第三优先级的处理器为所述第一处理器。
在一种可能的实现方式中,在所述第三优先级的处理器的个数为两个以上时,由各所述第三优先级的处理器中提取出任意一个作为所述第一处理器。
在一种可能的实现方式中,在为各所述待执行任务分配相应的处理器器之后,还包括:
根据所述神经网络模型的各所述待执行任务的依赖关系,在所述神经网络模型中添加同步算子,以使添加同步算子后的所述神经网络模型运行在所述处理器上时,各所述待执行任务按照所述依赖关系运行。
在一种可能的实现方式中,根据所述神经网络模型的各所述待执行任务的依赖关系,在所述神经网络模型中添加同步算子,包括:
根据所述依赖关系,在处理器当前任务的网络层和前继任务的网络层之间添加所述同步算子,
其中,所述当前任务和所述前继任务运行在不同的处理器上,且所述当前任务为所述前继任务执行完毕后执行的任务。
在一种可能的实现方式中,所述同步算子包括第一算子和第二算子;
所述第一算子,用于表征所述前继任务的运行状态;
所述第二算子,用于根据所述第一算子确定是否运行所述当前任务;
其中,所述运行状态包括运行未完成或运行完成。
在一种可能的实现方式中,所述第二算子,用于在预设时间间隔读取第一算子,并根据读取到的所述第一算子确定是否运行所述当前任务。
根据本公开的另一方面,还提供了一种任务调度装置,包括:
路径确定模块,用于在神经网络模型处于非运行状态时,确定所述神经网络模型中各待执行任务的目标执行路径,
其中,所述待执行任务通过拆分所述神经网络模型得到;
任务分配模块,用于基于各所述待执行任务的目标执行路径和各处理器的优先级,为各所述待执行任务分配相应的处理器。
在一种可能的实现方式中,还包括:
同步算子添加模块,用于根据所述神经网络模型的各所述待执行任务的依赖关系,在所述神经网络模型中添加同步算子,以使添加同步算子后的所述神经网络模型运行在所述处理器上时,各所述待执行任务按照所述依赖关系运行。
根据本公开的一方面,还提供了一种神经网络芯片,所述芯片包括如上任一所述的任务调度装置。
根据本公开的一方面,还提供了一种电子设备,所述电子设备包括如上所述的神经网络芯片。
根据本公开的一方面,还提供了了一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如上所述的神经网络芯片;
其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述神经网络芯片与外部设备之间的数据传输;
所述控制器件,用于对所述神经网络芯片的状态进行监控。
在一种可能的实现方式中,所述存储器件包括:多组存储单元,每一组所述存储单元与所述神经网络芯片通过总线连接,所述存储单元为:DDR SDRAM;
所述芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接口装置为:标准PCIE接口。
通过在神经网络模型处于非运行状态时,确定神经网络模型中各待执行任务的目标执行路径,并基于确定的各待执行任务的目标执行路径和各处理器的优先级,为各待执行任务分配相应的处理器,来实现对神经网络模型中的多个待执行任务的调度,由此可以在任务执行前进行资源调度,从而在神经网络模型运行过程中,不需要再分配额外资源来进行调度处理,使得处理器可以专注于任务运行。相较于相关技术中,在运行神经网络模型的同时将多项任务逐个实时分发到不同的运算核上的方式,有效加快了神经网络模型的运行速度。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开实施例的任务调度方法的流程图;
图2示出根据本公开实施例中某一个神经网络模型中各算子之间的执行顺序的关系示意图;
图3示出根据本公开实施例的任务调度方法中多个待执行任务下发至不同的处理器的示意图;
图4示出根据本公开实施例的任务调度方法中多个待执行任务下发至不同的处理器的示意图;
图5示出根据本公开实施例的任务调度方法中多个待执行任务下发至不同的处理器的示意图;
图6示出根据本公开实施例的任务调度装置的框图;
图7示出根据本公开实施例的任务调度装置的框图;
图8示出根据本公开实施例的板卡的结构框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
首先,需要说明的是,在本公开的任务调度方法中,神经网络模型可以为各种网络模型,如: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)芯片中的一种或组合。本公开对人工智能处理器的具体类型不作限制。
图1示出了本公开实施例的任务调度方法的流程图。参阅图1,本公开的任务调度方法可以包括:
步骤S100,在神经网络模型处于非运行状态时,确定神经网络模型中各待执行任务的目标执行路径。此处,需要说明的是,神经网络模型的非运行状态指的是神经网络模型在运行之前。本领域技术人员可以理解的是,神经网络模型运行之前可以为神经网络模型构建好之后,在进行初次训练之前阶段,也可以为神经网络模型在经过一次或多次训练后,在进行测试之前,还可以为神经网络模型在经过测试后,在应用之前。也就是说,在本公开的任务调度方法中,神经网络模型的非运行状态可以为神经网络模型在任何阶段(如:训练阶段、测试阶段和应用阶段)中运行之前的状态。
同时,待执行任务通过拆分神经网络模型得到。也就是说,本公开的任务调度方法适用于模型并行方式。其中,模型并行方式指的是分布式系统中的不同处理器负责神经网络模型的不同部分,例如,神经网络模型的不同网络层被分配到不同的处理器,或者同一层内部的不同参数被分配到不同处理器,也就是对于神经网络模型固有的算子等特征进行分拆,使之运行在不同的处理器上。其中,需要说明的是,在本公开的任务调度方法中,每个处理器可以独立运行所分配到的各种任务,如:卷积运算任务、池化任务或全连接任务等。此处不对处理器及处理器所运行的任务进行具体限定。
在通过上述步骤确定各待执行任务的目标执行路径后,再通过步骤S200,基于各待执行任务的目标执行路径和各处理器的优先级,为各待执行任务分配相应的处理器,从而使得在神经网络模型运行时,各处理器分别运行其所分配到的各待执行任务。
本公开的任务调度方法,通过在神经网络模型处于非运行状态时,确定神经网络模型中各待执行任务的目标执行路径,并基于确定的各待执行任务的目标执行路径和各处理器的优先级,为各待执行任务分配相应的处理器,来实现对神经网络模型中多个待执行任务的调度,由此可以在任务执行前进行资源调度,从而在神经网络模型运行过程中,不需要再分配额外资源来进行调度处理,使得处理器可以专注于任务运行,实现了多任务静态调度的目的。相较于相关技术中,在运行神经网络模型的同时将多项任务逐个实时分发到不同的运算核上的方式(即,动态调度),有效加快了神经网络模型的运行速度。
在一种可能的实现方式中,各待执行任务包括算子集合。算子集合通过在拆分神经网络模型时,对神经网络模型中的串行算子进行合并得到。也就是说,在本公开的任务调度方法中,在确定神经网络模型的各待执行任务时,可以将神经网络模型中的串行算子合并为算子集合作为最低的调度粒度。
如:参阅图2,图2示出了某一个神经网络模型中各算子的执行先后顺序。其中,需要说明的是,图2示出的神经网络模型仅作为一个示例性进行说明,在实际应用中,神经网络模型的深度和算子个数并不仅限于此。
对于图2所示的神经网络模型,可以得知:包含有八个算子:算子A、算子B、算子C、算子D、算子E、算子F、算子G、算子H。并且,每个算子可以包含有多条指令。其中,算子A的后继包括算子B和算子D,算子B的后继包括算子C,算子D的后继包括算子E和算子F,算子E的后继包括算子G和算子H。也就是说,算子A的后继中存在两个分支(分别为:算子A→算子B和算子A→算子D),算子B的后继中存在一个分支(算子B→算子C),算子D的后继中存在两个分支(分别为:算子D→算子E和算子D→算子F),算子E的后继中存在一个分支(算子E→算子G→算子H)。
由此,可将算子B和算子C合并作为一个算子集合,将算子E、算子G和算子H合并作为一个算子集合。从而最终得到该神经网络模型的各待执行任务包括:任务①(算子A:{A})、任务②(算子B和算子C的集合:{BC})、任务③(算子D:{D})、任务④(算子E、算子G和算子H的集合:{EGH})、任务⑤(算子F:{F})共五个待执行任务。
也就是说,本公开的任务调度方法中所提及的串行算子指的是无分支的串行算子(即,只有一条支路的串行算子)。
通过采用将串行算子合并为算子集合作为最低的调度粒度,减少了所要调度的待执行任务的个数,从而也就有效减少了任务分配的工作量,这也就进一步地提高了任务调度的效率。
在一种可能的实现方式中,各待执行任务的目标执行路径可以为待执行任务在神经网络模型中执行时间最长的路径。此处,需要说明的是,待执行任务的执行路径指的是待执行任务在神经网络模型的初始出现位置至终点出现位置之间的路径。其中,神经网络模型的网络结构包括有多个节点,随着神经网络模型的深度加深,节点和层数也就会越多,由此,对于一个待执行任务有可能会存在多个执行路径。通过在多个执行路径中选取执行时间最长的路径作为待执行任务的目标执行路径,使得在对待执行任务分配处理器时,能够充分考虑到待执行任务的执行时间,这也就有效保证了神经网络模型运行时,各待执行任务能够顺利执行完毕,从而保证了神经网路模型在各待执行任务调度完成之后运行时的准确性。
在一种可能的实现方式中,在确定神经网络模型中各待执行任务的目标执行路径时,可以通过以下方式来实现。
首先,确定各待执行任务的预计运行时间。然后,再根据各待执行任务的预计运行时间和神经网络模型的数据流图,获取各待执行任务的目标执行路径。
此处,需要说明的是,各待执行任务的预计运行时间指的是各待执行任务由运行开始至运行结束之间所需要的时间。并且,在一种可能的实现方式中,数据流图可以基于对神经网络模型拆分后得到的各待执行任务的依赖关系生成。各待执行任务的依赖关系可以通过各待执行任务所需数据的存储地址区间是否具有重叠的区域来确定。
通过基于各待执行任务的预计运行时间和神经网络模型的数据流图,获取各待执行任务的目标执行路径,保证了目标执行路径的准确性,从而保证了任务调度的可靠性。
在一种可能的实现方式中,在确定各待执行任务的预计运行时间时,可以通过以下方式实现。
如:基于处理器参数,计算各待执行任务的预计运行时间。其中,处理器参数包括:连接各处理器的缓冲区(Cache)期望带宽、存储器(DDR或DRAM)通道(Channel)分配给各处理器的期望带宽和各处理器所在的板卡的预计主频。此处,应当说明的是,多个处理器被配置在同一块板卡上。不同的板卡具有不同的预计主频。
还可以通过以下方式实现:基于模型参数,计算各待执行任务的预计运行时间。其中,模型参数包括:待执行任务的任务类型(即,算子或算子集合本身)以及待执行任务的任务规模。任务规模通过待执行任务的计算量和输入输出数据量确定。即,将任务规模精确到底层指令,根据底层指令的计算量和IO量来确定。
还可以包括以下方式:基于速度参数,计算各待执行任务的预计运行时间。其中,速度参数包括:各待执行任务在每个处理器上的读写速度和运算速度。此处应当指出的是,读写速度和运算速度是针对处理器和待执行任务中的算子综合而言的,不同的待执行任务在不同的处理器上耗时不同。
通过基于以上至少一种参数进行综合计算,即可得到各待执行任务的预计运行时间,并且采用上述至少一种参数进行综合计算,保证了各待执行任务的预计运行时间的准确性,这也就进一步地提高了任务调度的可靠性。
在一种可能的实现方式中,在通过上述任一种方式获取到各待执行任务的目标执行路径后,即可基于各待执行任务的目标执行路径和各处理器的优先级,为各待执行任务分配相应的处理器。
其中,为各待执行任务分配相应的处理器时,可以通过以下方式来进行:
基于各目标执行路径,由当前还未分配的各待执行任务中,选取目标执行路径最长的待执行任务作为当前所要分配的第一任务。
按照各处理器的优先级,由各处理器中逐级筛选出第一处理器。
为第一任务分配第一处理器,以使神经网络模型在运行状态时,由第一处理器运行第一任务。
通过由当前还未分配的各待执行任务中选取目标执行路径最长的待执行任务作为当前所要分配的第一任务,既有效减少了神经网络模型的执行时间,同时还保证了所选取的第一任务不存在还未分配的前继任务。
并且,在进行第一处理器的选取时,采用按照各处理器的优先级,由各处理器中逐级筛选的方式,保证了所选取的第一处理器的合理性,使得最终所选取的第一处理器与当前所要分配的第一任务相匹配,从而最终提高了任务调度的合理性。
其中,在一种可能的实现方式中,按照各处理器的优先级,由各处理器中逐级筛选出第一处理器,可以包括:
基于各处理器的优先级,由各处理器中提取出第一优先级的处理器。其中,第一优先级的处理器为:当前负载通道最低的处理器。此处,应当指出的是,当前负载通道可以通过基于各处理器中当前已分配的所有待执行任务的预计运行时间和所占带宽所模拟出的实时带宽占用来确定。即,通过模拟监控各处理器当前已分配到的所有待执行任务,基于已分配到的所有待执行任务的预计运行时间和所占带宽来模拟出各处理器的实时带宽占用,以实现对各处理器的当前负载通道的实时记录。
在第一优先级的处理器的个数为一个时,确定第一优先级的处理器为第一处理器。即,在各处理器中只提取出一个当前负载通道最低的处理器,则直接将该处理器作为第一处理器。
通过对各处理器的当前负载通道进行实时监控记录,从而在筛选第一处理器时,能够对于目标执行路径最长的待执行任务优先考虑当前负载通道最低的处理器,这就使得神经网络模型在运行时,目标执行路径最长的待执行任务能够快速地被第一处理器运行,从而进一步地提高了神经网络模型的运行速度。
在一种可能的实现方式中,由各处理器中提取出的第一优先级的处理器有可能为两个以上(即,存在两个以上的当前负载通道最低的处理器)。此时,则可以按照处理器的优先级,继续进行处理器的筛选。
即,在第一优先级的处理器的个数为两个以上时,由各第一优先级的处理器中提取出第二优先级的处理器。
其中,第二优先级的处理器为:各处理器当前已分配的待执行任务中,最后一个待执行任务为第一任务的前继任务的处理器。前继任务为:执行完毕时间位于第一任务执行之前的待执行任务。此处,需要说明的是,在对各待执行任务分配相应的处理器时,每个处理器会依据当前所分配到的待执行任务不断更新自身的任务表。
也就是说,在进行任务调度过程中,每个处理器都会生成一个相应的任务表,该任务表用于记录处理器当前已分配的各待执行任务,每个待执行任务可以按照执行顺序依次记录在记录表中。由此,在由多个当前负载通道最低的处理器中提取第二优先级的处理器时,可以根据每个处理器的任务表中所记录的当前已分配的待执行任务中,最后一个待执行任务是否为第一任务的前继任务来实现。
在提取出第二优先级的处理器的个数为一个时,可直接确定第二优先级的处理器为第一处理器。
通过在多个当前负载通道最低的处理器中,选取存在第一任务的前继任务的处理器作为第一处理器,使得处理器在运行已分配到的各待执行任务时,只需要按照任务表的顺序执行即可,这就有效减少了数据读取时间,更进一步地提高了神经网络模型运行的速度。
在一种可能的实现方式中,第一任务的前继任务有可能存在多个,且每个前继任务被分配到不同的处理器上。即,第二优先级的处理器的个数为两个以上。此时,则可以选取前继任务执行时间最长的处理器作为第一处理器。
通过选取前继任务执行时间最长的处理器作为第一处理器,可以减少在对待执行任务调度完成之后进行任务同步时的同步开销,从而简化同步操作。
进一步的,在各第一优先级的处理器中,还可能不存在第二优先级的处理。即,不存在当前已分配待执行任务中,最后一个任务为第一任务的前继任务的处理器。此时,在一种可能的实现方式中,可以由第一优先级的处理器中提取出第三优先级的处理器。其中,第三优先级的处理器为:当前运行时间最短的处理器。
此处,需要说明的是,当前运行时间为各处理器中当前已分配的待执行任务的预计运行时间之和。根据前面所述,当前运行时间同样可以通过每个处理器的任务表来得到。即,通过统计每个处理器的任务表中当前已分配的各待执行任务的预计运行时间,并进行求和运算即可。计算方式简单,易于实现。
在第三优先级的处理器的个数为一个时,可以直接确定第三优先级的处理器为第一处理器。
在一种可能的实现方式中,如果所提取出的第三优先级的处理器的个数为两个以上,也就是说,此时在第一优先级的处理器中存在两个以上当前运行时间最短的处理器,此时则可由多个当前运行时间最短的处理器中选取任意一个处理器作为第一处理器即可。即,在第三优先级的处理器的个数为两个以上时,可以由第三优先级的处理器中提取出任意一个作为第一处理器。
通过在进行第一任务的分配时,按照处理器的优先级逐级进行处理器的筛选,实现了任务调度时的综合考量,使得各待执行任务的分配更加合理。
为了更加清楚的说明本公开实施例的任务调度方法中,对处理器的逐级筛选过程,以下以一个实施例进行详细说明。
其中,在该实施例中,配置有五个处理器,分别为处理器1、处理器2、处理器3、处理器4和处理器5。
在进行处理器的筛选时,可以先由这五个处理器中提取出当前负载通道最低的处理器。如果提取出的当前负载通道最低的处理器的个数为1个(如:处理器1),则直接将处理器1作为第一处理器。
如果提取出的当前负载通道最低的处理器为多个(如:处理器1、处理器2),则由多个当前负载通道最低的处理器(即,处理器1和处理器2)中提取出存在第一任务的前继任务的处理器。
如果处理器1当前已分配的待执行任务中不存在第一任务的前继任务或最后一个待执行任务不是第一任务的前继任务,处理器2当前已分配的待执行任务中的最后一个待执行任务为第一任务的前继任务,那么可以直接将处理器2作为第一处理器。
如果处理器1和处理器2当前已分配的待执行任务中的最后一个待执行任务均为第一任务的前继任务,则可以由处理器1和处理器2中选取前继任务执行时间最长的处理器(如:处理器1)作为第一处理器。
如果处理器1和处理器2中已分配的待执行任务中均不存在第一任务的前继任务,则直接由处理器1和处理器2中提取当前运行时间最短的处理器。
其中,如果提取出的当前运行时间最短的处理器只有一个(如:处理器2),则可以直接将处理器2作为第一处理器。如果提取出的当前运行时间最短的处理器为多个(即,处理器1和处理器2的当前运行时间相同),则由处理器1和处理器2中提取出任意一个作为第一处理器即可。
另外,本公开的任务调度方法中,作为一种可能的实现方式,在对各待执行任务均分配好相应的处理器后,还可以包括:
根据神经网络模型的各待执行任务的依赖关系,在神经网络模型中添加同步算子,以使添加同步算子后的神经网络模型运行在处理器上时,各待执行任务按照依赖关系运行。
其中,同步算子用于表征前继任务的运行状态,并根据前继任务的运行状态确定当前任务的运行状态。并且,前继任务与当前任务为多个待执行任务中具有依赖关系的两个待执行任务。
即,在对各待执行任务分配完之后,各个处理器上的任务流水(即,每个处理器上所需要运行的待执行任务)就得到了确定。其中,不同任务流水内部的各个待执行任务之间存在一定逻辑上的依赖关系(如:不运行任务A就无法运行任务B)。因此,可以根据各个待执行任务之间的依赖关系,在神经网络模型中添加同步算子,以使得各个待执行任务能够按照依赖关系运行。
通过根据神经网络模型确定的各个待执行任务之间的依赖关系,在神经网络模型中添加同步算子,以使修改后的神经网络模型的多个待执行任务按照依赖关系执行,实现了通过在算子级别(神经网络模型的网络结构)添加同步算子来进行多任务的并发同步的目的。相较于常规的在指令级别(硬件机制)使用硬件指令和对应的硬件机制来实现多任务的并发同步方式,能够适用于各种处理器,因此有效提高了通用性。
其中,需要说明的是,在本公开中,同步算子的添加是根据各个待执行任务之间的依赖关系来进行的。因此,同步算子的个数可以为多个。即,各个待执行任务之间的依赖关系有多少个,就可以添加多少个同步算子。
如:图3示出了根据本公开实施例的运算方法中多个待执行任务下发至不同的处理单元的示意图。参阅图3,通过对某一个神经网络模型进行任务拆分,确定了5个待执行任务,分别为:任务A、任务B、任务C、任务D和任务E。其中,任务A与任务B、任务C、任务D和任务E均具有依赖关系。运行该神经网络模型的处理器则对应配置有四个处理器,分别为处理器1、处理器2、处理器3和处理器4。其中,任务A和任务B被下发至处理器1运行,任务C被下发至处理器2运行,任务D被下发至处理器3运行,任务E被下发至处理器4运行。
由此,在对上述神经网络模型添加同步算子时,可以在任务A和任务B所分别对应的网络层之间、任务A和任务C分别对应的网络层之间、任务A和任务D所分别对应的网络层之间、以及任务A和任务E所分别对应的网络层之间均添加同步算子,以保证神经网络模型在插入同步算子之前所执行的拓扑结构与插入同步算子之后所执行的拓扑结构不变,从而保证神经网络模型运行的准确性。
在一种可能的实现方式中,根据依赖关系,在神经网络模型中添加同步算子,可以包括:根据依赖关系,在运行在不同的处理单元上的当前任务的网络层和前继任务的网络层之间添加同步算子。其中,需要指出的是,当前任务为前继任务执行完毕后执行的任务。
也就是说,在神经网络模型中添加同步算子时,可以在具有依赖关系的前继任务和当前任务所分别对应的网络层之间添加。其中,当前任务为前继任务执行完毕后执行的任务。同时,前继任务和当前任务可以分别运行在不同的处理单元上。
如:图4示出了根据本公开实施例的运算方法中多个待执行任务下发至不同的处理单元的示意图。参阅图4,通过对某一个神经网络模型进行任务拆分,确定了三个待执行任务,分别为任务A、任务B、任务C。任务A与任务B具有依赖关系(即,任务A为任务B的前继任务,任务B为一个当前任务),任务A与任务C也具有依赖关系(即,任务A为任务C的前继任务,任务C为一个当前任务)。运行该神经网络模型的处理器配置有两个处理单元,分别为处理器1和处理器2。其中,任务A和任务B被下发至处理器1运行,任务C被下发至处理器2运行。因此,在该神经网络模型中添加同步算子时,可以只在任务A所对应的网络层与任务C所对应的网络层之间添加。而对于任务A和任务B,由于这两个任务被下发至同一个处理单元(核1)运行,该处理单元可以直接根据任务A和任务B之间的依赖关系来运行任务A和任务B,因此,在任务A和任务B所分别对应的网络层之间可以不需要添加同步算子。
由此,在通过对具有依赖关系的前继任务和当前任务所分别对应的网络层之间添加同步算子时,只在具有依赖关系且分别运行在不同的处理单元上的两个待执行任务之间添加同步算子,避免了不必要的同步算子的添加,因而也就简化了同步算子的添加操作,节省了同步算子的添加时间,最终有效提高了多任务并发同步的效率。
在一种可能的实现方式中,依赖关系可以通过各所述待执行任务所需数据的存储地址区间是否具有重叠的区域确定。其中,在对神经网络模型拆分后得到的多个待执行任务中,如果两个待执行任务各自所需数据(可以为矩阵)的存储地址区间具有重叠的区域,则可以确定这两个待执行任务具有依赖关系(如:前继任务和当前任务,前继任务所需数据的存储地址区间与当前任务所需数据的存储地址区间具有重叠的区域)。如果两个待执行任务各自所需数据的存储地址区间不具有重叠的区域,则可以确定这两个待执行任务不具有依赖关系。
如:多个待执行任务中包括第一待执行任务和第二待执行任务。其中,在第一待执行任务所需数据的存储地址区域与第二待执行任务所需数据的存储地址区间具有重叠的区域时,则确定第一待执行任务与第二待执行任务具有依赖关系。在第一待执行任务所需数据的存储地址区间与第二待执行任务所需数据的存储地址区间不具有重叠的区域时,则确定第一待执行任务与第二待执行任务不具有依赖关系。
在一种可能的实现方式中,依赖关系还可以包括多个待执行任务之间的输入输出关系。即,前继任务与当前任务可以为输入输出的关系。也就是说,前继任务的输出结果为当前任务的输入数据。由此,不运行前继任务,就不能运行当前任务。也可以认为,只有在运行了前继任务后,才能运行当前任务。
其中,在依赖关系包括多个待执行任务之间的输入输出关系时,根据依赖关系在神经网络模型中添加同步算子时,可以包括:在具有输入输出关系的两个待执行任务所对应的网络层之间添加同步算子。
如:通过对某一个神经网络模型进行任务拆分,确定了两个待执行任务,分别为任务A和任务B。其中,任务A的输出结果为任务B的输入数据。同时,运行该神经网络模型的处理器配置有两个处理单元,分别为处理器1和处理器2。其中,任务A被下发至处理器1运行,任务B被下发至处理器2运行。因此,在该神经网络模型中添加同步算子时,可以在任务A所对应的网络层与任务B所对应的网络层之间添加。
由此,通过根据各个待执行任务之间的输入输出关系,在具有输入输出关系的两个待执行任务所对应的网络层之间添加同步算子,进一步地保证了神经网络模型运算的准确性。
在一种可能的实现方式中,依赖关系还可以包括多个待执行任务的运行次序。即,在将神经网络模型进行任务拆分确定多个待执行任务,并将多个待执行任务下发至不同的处理器进行处理后,此时由于神经网络模型的结构是一定的,因此多个待执行任务之间的运行顺序也是确定的。其中,多个待执行任务中可以包含有两个待执行任务的运行为同步运行(即,两个待执行任务可以并行执行)。如果在实际情况中,对于并行执行的两个待执行任务需要对他们的运行顺序进行设置(如:优先级设置),此时,根据依赖关系在神经网络模型中添加同步算子时,还可以在运行次序相邻的两个待执行任务所对应的网络层之间添加同步算子。
如:图5示出了根据本公开实施例的运算方法中多个待执行任务下发至不同的处理单元的示意图。参阅图5,通过对某一个神经网络模型进行任务拆分,确定了5个待执行任务,分别为:任务A、任务B、任务C、任务D和任务E。其中,任务A与任务B并行执行,同时任务A与任务C为串行执行(任务A在前,任务C在后)、任务A与任务D为串行执行(任务A在前,任务D在后)、任务B与任务C串行执行(任务B在前,任务C在后)、任务B与任务E串行执行(任务B在前,任务E在后)。
运行该神经网络模型的处理器则对应配置有三个处理单元,分别为处理器1、处理器2、处理器3。其中,任务A和任务B被下发至处理器1运行,任务B和任务E被下发至处理器2运行,任务C被下发至处理器3运行。同时,根据实际情况,对初始为并行执行的任务A和任务B的运行顺序进行了设置,任务A执行完之后再执行任务B。
由此,在对上述神经网络模型添加同步算子时,可以分别在任务A和任务B所分别对应的网络层之间、任务A和任务C分别对应的网络层之间、任务B和任务C所分别对应的网络层之间添加同步算子。
通过在依赖关系包含有多个待执行任务的运行次序时,在运行次序相邻的两个待执行任务之间添加同步层,进一步提高了神经网络模型运算的准确性。
在一种可能的实现方式中,同步算子可以包括第一算子和第二算子。第一算子,用于表征前继任务的运行状态。第二算子,用于根据第一算子确定是否运行当前任务。其中,前继任务与当前任务分别运行在不同的处理器上,且前继任务为当前任务的前继。
也就是说,同步算子可以采用一对算子(第一算子和第二算子)来实现。其中,第一算子添加在前继任务所对应的网络层之后,用于表征前继任务的运行状态。第二算子,则与第一算子结对设置添加,位于当前任务之前,用于根据第一算子确定是否运行当前任务。通过采用一对算子作为同步算子的实现方式,结构简单,易于实现。
在一种可能的实现方式中,第二算子在根据第一算子确定是否运行当前任务时,可以通过在预设时间间隔内读取第一算子,并根据读取到的第一算子确定是否运行当前任务。
即,第二算子可以在预设时间间隔内进行第一算子的读取,并根据当前所读取到的第一算子来确定前继任务是否运行完毕。在确定前继任务运行完毕后,即可确定运行当前任务。在确定前继任务还未运行完毕或还未运行时,则可确定当前不运行当前任务。
通过设置第二算子在预设时间间隔内进行第一算子的读取,避免了频繁读取第一算子的操作,减少了第一算子的读取次数,从而也就有效降低了功耗。
在一种可能的实现方式中,运行状态包括运行未完成和运行完成中的任意一种。其中,第一算子可以设置标志位,通过标志位的不同取值表征前继任务的不同运行状态。
如:第一算子可以为:notify,第二算子为:sync。同步算子不计算,只是算子级别的锁。采用标志位的方式实现。其中,notify的用法为,前继任务计算完成(运行完成)置为1,没计算完成(运行中)默认为0。运算前(等待运行)默认为0。sync同步的用法则为:每隔一段时间间隔读取notify(第一算子)标志位的取值,读到1往后走,使得当前任务的运行状态为运行中,没读到或读到0则等待,使得当前任务的运行状态为等待运行。
通过对第一算子设置标志位,并通过标志位的取值来表征前继任务的运行状态,使得添加在神经网络模型中的同步算子作为算子级别的锁而存在,其不会参与到神经网络模型的运算中,因此可以保证依赖关系不会因同步而改变,并且还保证了神经网络模型的网络拓扑结构的准确性。
在一种可能的实现方式中,同步算子可以存储在处理器的共享内存中。由此,在运行神经网络模型时,各个处理器可以通过由共享内存中直接读取相对应的同步算子,以确定各个待执行任务的运行顺序,从而再根据确定的运行顺序依次运行。
通过将添加的同步算子存储在共享内存中,简化了处理器的硬件配置,不需要对处理器进行任何硬件上的改变,因而也就有效节省了硬件成本。
在一种可能的实现方式中,在根据依赖关系,在神经网络中添加同步算子之后,还可以包括:根据添加同步算子后的神经网络模型生成任务表。其中,需要说明的是,生成的任务表可以存储至共享内存中。另外,任务表包括各处理器所要执行的待执行任务,以及各待执行任务的依赖关系。
通过在根据添加同步算子后的神经网络模型生成任务表,并将生成的任务表存储至处理器的共享内存中,各个处理器在运行神经网络模型的各部分任务时,能够直接由共享内存中读取任务表以及相应的同步算子,进而根据读取到的任务表和同步算子依次运行各个待执行任务,有效提高了数据读取的速率,从而也就有效的加快了运行速度。
在一种可能的实现方式中,任务表的个数可以为多个。并且,各个任务表分别与各个处理器相对应。由此,处理器在由所述共享内存中读取任务表,并根据任务表运行各个待执行任务时,可以直接读取自己相对应的任务表即可,不需要读取所有数据,这就有效降低了数据读取量,从而也就更进一步地提高了运行速率。
可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。即,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
此外,本公开还提供了任务调度装置、神经网络芯片和板卡,上述均可用来实现本公开提供的任一种任务调度方法,相应技术方案和描述和参见方法部分的相应记载,不再赘述。
图6示出根据本公开实施例的任务调度装置100。参阅图6,本公开实施例的一种任务调度装置100,包括:
路径确定模块110,用于在神经网络模型处于非运行状态时,确定神经网络模型中各待执行任务的目标执行路径,
其中,待执行任务通过拆分神经网络模型得到;
任务分配模块120,用于基于各待执行任务的目标执行路径和各处理器的优先级,为各待执行任务分配相应的处理器。
在一种可能的实现方式中,路径确定模块110包括:
运行时间确定子模块,用于确定各待执行任务的预计运行时间;
路径获取子模块,用于根据各待执行任务的预计运行时间和神经网络模型的数据流图,获取各待执行任务的目标执行路径。
在一种可能的实现方式中,运行时间确定子模块包括:
第一计算单元,用于基于处理器参数,计算各待执行任务的预计运行时间;
其中,处理器参数包括:连接各处理器的缓冲区期望带宽、存储器通道分配给各处理器的期望带宽和各处理器所在的板卡的预计主频。
在一种可能的实现方式中,运行时间确定子模块包括:
第二计算单元,用于基于模型参数,计算各待执行任务的预计运行时间;
其中,模型参数包括:待执行任务的任务类型以及待执行任务的任务规模;
任务规模通过待执行任务的计算量和输入输出数据量确定。
在一种可能的实现方式中,运行时间确定子模块包括:
第三计算单元,用于基于速度参数,计算各待执行任务的预计运行时间;
其中,速度参数包括:各待执行任务在每个处理器上的读写速度和运算速度。
在一种可能的实现方式中,任务分配模块120包括:
任务选取子模块,用于基于各目标执行路径,由当前还未分配的各待执行任务中,选取目标执行路径最长的待执行任务作为当前所要分配的第一任务;
处理器筛选子模块,用于按照各处理器的优先级,由各处理器中逐级筛选出第一处理器;
任务分配子模块,用于为第一任务分配第一处理器,以使神经网络模型在运行状态时,由第一处理器运行第一任务。
在一种可能的实现方式中,处理器筛选子模块,包括:
第一提取单元,用于基于各处理器的优先级,由各处理器中提取出第一优先级的处理器;
其中,第一优先级的处理器为:当前负载通道最低的处理器;
第一确定单元,用于在第一优先级的处理器的个数为一个时,确定第一优先级的处理器为第一处理器。
在一种可能的实现方式中,处理器筛选子模块,包括:
第二提取单元,在第一优先级的处理器的个数为两个以上时,由各第一优先级的处理器中提取出第二优先级的处理器;
其中,第二优先级的处理器为:各处理器当前已分配的待执行任务中,最后一个待执行任务为第一任务的前继任务的处理器;
前继任务为:执行完毕时间位于第一任务执行之前的待执行任务;
第二确定单元,用于在第二优先级的处理器的个数为一个时,确定第二优先级的处理器为第一处理器。
在一种可能的实现方式中,处理器筛选子模块,还包括:
第三确定单元,用于在第二优先级的处理器的个数为两个以上时,选取前继任务执行时间最长的处理器作为第一处理器。
在一种可能的实现方式中,处理器筛选子模块,还包括:
第三提取单元,用于在各第一优先级的处理器中,不存在第二优先级的处理器时,由第一优先级的处理器中提取出第三优先级的处理器;
其中,第三优先级的处理器为:当前运行时间最短的处理器;
当前运行时间为各处理器中当前已分配的待执行任务的预计运行时间之和;
第四确定单元,用于在第三优先级的处理器的个数为一个时,确定第三优先级的处理器为第一处理器。
在一种可能的实现方式中,处理器筛选子模块,还包括:
第五确定单元,用于在第三优先级的处理器的个数为两个以上时,由各第三优先级的处理器中提取出任意一个作为第一处理器。
图7示出根据本公开实施例的任务调度装置100,参阅图7,本公开实施例的任务调度装置100还包括:
同步算子添加模块130,用于根据神经网络模型的各待执行任务的依赖关系,在神经网络模型中添加同步算子,以使添加同步算子后的神经网络模型运行在处理器上时,各待执行任务按照依赖关系运行。
在一种可能的实现方式中,同步算子添加模块130,包括:
第一添加子模块,用于根据依赖关系,在处理器当前任务的网络层和前继任务的网络层之间添加同步算子,
其中,当前任务和前继任务运行在不同的处理器上,且当前任务为前继任务执行完毕后执行的任务。
在一种可能的实现方式中,还公开了一种芯片,其包括了上述任务调度装置100。
在一种可能的实现方式中,公开了一种芯片封装结构,其包括了上述芯片。
在一种可能的实现方式中,还公开了一种板卡,其包括了上述芯片封装结构。参阅图8,图8提供了一种板卡,上述板卡除了包括上述芯片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 (22)
1.一种任务调度方法,其特征在于,包括:
在神经网络模型处于非运行状态时,确定所述神经网络模型中各待执行任务的目标执行路径,
其中,所述待执行任务通过拆分所述神经网络模型得到;
基于各所述待执行任务的目标执行路径和各处理器的优先级,为各所述待执行任务分配相应的处理器;
其中,确定所述神经网络模型中各待执行任务的目标执行路径,包括:
确定各所述待执行任务的预计运行时间;
根据各所述待执行任务的预计运行时间和所述神经网络模型的数据流图,获取各所述待执行任务的目标执行路径;
其中,确定各所述待执行任务的预计运行时间,包括:
基于处理器参数,计算各所述待执行任务的预计运行时间;
其中,所述处理器参数包括:连接各所述处理器的缓冲区期望带宽、存储器通道分配给各所述处理器的期望带宽和各所述处理器所在的板卡的预计主频;
其中,基于各所述待执行任务的目标执行路径和各处理器的优先级,为各所述待执行任务分配相应的处理器,包括:
基于各所述目标执行路径,由当前还未分配的各所述待执行任务中,选取目标执行路径最长的待执行任务作为当前所要分配的第一任务;
按照各所述处理器的优先级,由各所述处理器中逐级筛选出第一处理器;
为所述第一任务分配所述第一处理器,以使所述神经网络模型在运行状态时,由所述第一处理器运行所述第一任务。
2.根据权利要求1所述的方法,其特征在于,所述待执行任务包括算子集合;
所述算子集合通过在拆分所述神经网络模型时,对所述神经网络模型中的串行算子进行合并得到。
3.根据权利要求1所述的方法,其特征在于,所述目标执行路径为:所述待执行任务在所述神经网络模型中执行时间最长的路径。
4.根据权利要求1所述的方法,其特征在于,确定各所述待执行任务的预计运行时间,包括:
基于模型参数,计算各所述待执行任务的预计运行时间;
其中,所述模型参数包括:所述待执行任务的任务类型以及所述待执行任务的任务规模;
所述任务规模通过所述待执行任务的计算量和输入输出数据量确定。
5.根据权利要求1所述的方法,其特征在于,确定各所述待执行任务的预计运行时间,包括:
基于速度参数,计算各所述待执行任务的预计运行时间;
其中,所述速度参数包括:各所述待执行任务在每个处理器上的读写速度和运算速度。
6.根据权利要求1所述的方法,其特征在于,所述数据流图基于对所述神经网络模型拆分后所得到的各所述待执行任务的依赖关系生成。
7.根据权利要求1所述的方法,其特征在于,按照各所述处理器的优先级,由各所述处理器中逐级筛选出第一处理器,包括:
基于各所述处理器的优先级,由各所述处理器中提取出第一优先级的处理器;
其中,所述第一优先级的处理器为:当前负载通道最低的处理器;
在第一优先级的处理器的个数为一个时,确定所述第一优先级的处理器为所述第一处理器。
8.根据权利要求7所述的方法,其特征在于,所述当前负载通道通过基于各所述处理器当前已分配到的所有待执行任务的预计运行时间和所占带宽所模拟出的实时带宽占用确定。
9.根据权利要求7所述的方法,其特征在于,按照各所述处理器的优先级,由各所述处理器中逐级筛选出第一处理器,包括:
在所述第一优先级的处理器的个数为两个以上时,由各所述第一优先级的处理器中提取出第二优先级的处理器;
其中,所述第二优先级的处理器为:各处理器当前已分配的待执行任务中,最后一个待执行任务为所述第一任务的前继任务的处理器;
所述前继任务为:执行完毕时间位于所述第一任务执行之前的待执行任务;
在所述第二优先级的处理器的个数为一个时,确定所述第二优先级的处理器为所述第一处理器。
10.根据权利要求9所述的方法,其特征在于,在所述第二优先级的处理器的个数为两个以上时,选取前继任务执行时间最长的处理器作为所述第一处理器。
11.根据权利要求9所述的方法,其特征在于,按照各所述处理器的优先级,由各所述处理器中逐级筛选出第一处理器,包括:
在各所述第一优先级的处理器中,不存在所述第二优先级的处理器时,由所述第一优先级的处理器中提取出第三优先级的处理器;
其中,所述第三优先级的处理器为:当前运行时间最短的处理器;
所述当前运行时间为各所述处理器中当前已分配的待执行任务的预计运行时间之和;
在所述第三优先级的处理器的个数为一个时,确定所述第三优先级的处理器为所述第一处理器。
12.根据权利要求11所述的方法,其特征在于,在所述第三优先级的处理器的个数为两个以上时,由各所述第三优先级的处理器中提取出任意一个作为所述第一处理器。
13.根据权利要求1至6任意一项所述的方法,其特征在于,在为各所述待执行任务分配相应的处理器之后,还包括:
根据所述神经网络模型的各所述待执行任务的依赖关系,在所述神经网络模型中添加同步算子,以使添加同步算子后的所述神经网络模型运行在所述处理器上时,各所述待执行任务按照所述依赖关系运行。
14.根据权利要求13所述的方法,其特征在于,根据所述神经网络模型的各所述待执行任务的依赖关系,在所述神经网络模型中添加同步算子,包括:
根据所述依赖关系,在处理器当前任务的网络层和前继任务的网络层之间添加所述同步算子,
其中,所述当前任务和所述前继任务运行在不同的处理器上,且所述当前任务为所述前继任务执行完毕后执行的任务。
15.根据权利要求14所述的方法,其特征在于,所述同步算子包括第一算子和第二算子;
所述第一算子,用于表征所述前继任务的运行状态;
所述第二算子,用于根据所述第一算子确定是否运行所述当前任务;
其中,所述运行状态包括运行未完成或运行完成。
16.根据权利要求15所述的方法,其特征在于,所述第二算子,用于在预设时间间隔读取第一算子,并根据读取到的所述第一算子确定是否运行所述当前任务。
17.一种任务调度装置,其特征在于,包括:
路径确定模块,用于在神经网络模型处于非运行状态时,确定所述神经网络模型中各待执行任务的目标执行路径,
其中,所述待执行任务通过拆分所述神经网络模型得到;
任务分配模块,用于基于各所述待执行任务的目标执行路径和各处理器的优先级,为各所述待执行任务分配相应的处理器;
其中,路径确定模块包括:
运行时间确定子模块,用于确定各待执行任务的预计运行时间;
路径获取子模块,用于根据各待执行任务的预计运行时间和神经网络模型的数据流图,获取各待执行任务的目标执行路径;
其中,运行时间确定子模块包括:
第一计算单元,用于基于处理器参数,计算各待执行任务的预计运行时间;
其中,处理器参数包括:连接各处理器的缓冲区期望带宽、存储器通道分配给各处理器的期望带宽和各处理器所在的板卡的预计主频;
其中,任务分配模块包括:
任务选取子模块,用于基于各目标执行路径,由当前还未分配的各待执行任务中,选取目标执行路径最长的待执行任务作为当前所要分配的第一任务;
处理器筛选子模块,用于按照各处理器的优先级,由各处理器中逐级筛选出第一处理器;
任务分配子模块,用于为第一任务分配第一处理器,以使神经网络模型在运行状态时,由第一处理器运行第一任务。
18.根据权利要求17所述的装置,其特征在于,还包括:
同步算子添加模块,用于根据所述神经网络模型的各所述待执行任务的依赖关系,在所述神经网络模型中添加同步算子,以使添加同步算子后的所述神经网络模型运行在所述处理器上时,各所述待执行任务按照所述依赖关系运行。
19.一种神经网络芯片,其特征在于,所述芯片包括如权利要求17或18所述的任务调度装置。
20.一种电子设备,其特征在于,所述电子设备包括如权利要求19所述的神经网络芯片。
21.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求19所述的神经网络芯片;
其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述神经网络芯片与外部设备之间的数据传输;
所述控制器件,用于对所述神经网络芯片的状态进行监控。
22.根据权利要求21所述的板卡,其特征在于,
所述存储器件包括:多组存储单元,每一组所述存储单元与所述神经网络芯片通过总线连接,所述存储单元为:DDR SDRAM;
所述芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接口装置为:标准PCIE接口。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910262378.1A CN111767121B (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 |
---|---|---|---|
CN201910262378.1A CN111767121B (zh) | 2019-04-02 | 2019-04-02 | 运算方法、装置及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111767121A CN111767121A (zh) | 2020-10-13 |
CN111767121B true CN111767121B (zh) | 2022-11-01 |
Family
ID=72718177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910262378.1A Active CN111767121B (zh) | 2019-04-02 | 2019-04-02 | 运算方法、装置及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111767121B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020210362A1 (en) * | 2019-04-08 | 2020-10-15 | Ares Technologies, Inc. | Systems, devices, and methods for machine learning using a distributed framework |
CN113934535A (zh) * | 2021-10-11 | 2022-01-14 | 广东科诺勘测工程有限公司 | 海量点云数据处理方法、装置、服务器及系统 |
CN113835900B (zh) * | 2021-11-26 | 2022-02-22 | 山东产研鲲云人工智能研究院有限公司 | 神经网络计算方法、装置、设备及计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019810A (zh) * | 2011-09-19 | 2013-04-03 | 辉达公司 | 具有不同执行优先级的计算任务的调度和管理 |
CN108351783A (zh) * | 2015-10-29 | 2018-07-31 | 华为技术有限公司 | 多核数字信号处理系统中处理任务的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9195506B2 (en) * | 2012-12-21 | 2015-11-24 | International Business Machines Corporation | Processor provisioning by a middleware processing system for a plurality of logical processor partitions |
-
2019
- 2019-04-02 CN CN201910262378.1A patent/CN111767121B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019810A (zh) * | 2011-09-19 | 2013-04-03 | 辉达公司 | 具有不同执行优先级的计算任务的调度和管理 |
CN108351783A (zh) * | 2015-10-29 | 2018-07-31 | 华为技术有限公司 | 多核数字信号处理系统中处理任务的方法和装置 |
Non-Patent Citations (2)
Title |
---|
基于细粒度任务分配的空时自适应并行处理算法研究;王超等;《电子与信息学报》;20120615(第06期);全文 * |
采用优先级排序的数据流驱动调度算法;梁少勋等;《信息工程大学学报》;20180815(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111767121A (zh) | 2020-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102263078B1 (ko) | 복수-타일 복수-칩 프로세싱 구성에서의 동기화 | |
CN111767121B (zh) | 运算方法、装置及相关产品 | |
KR20190044567A (ko) | 프로세서 타일들 간의 동기화 | |
CN105893126A (zh) | 一种任务调度方法及装置 | |
US11687771B2 (en) | Platform for concurrent execution of GPU operations | |
KR20190044570A (ko) | 복수-타일 프로세싱 구성에서의 동기화 | |
CN104615488A (zh) | 异构多核可重构计算平台上任务调度的方法和装置 | |
GB2569098A (en) | Combining states of multiple threads in a multi-threaded processor | |
US8615770B1 (en) | System and method for dynamically spawning thread blocks within multi-threaded processing systems | |
CN114327861A (zh) | 执行eda任务的方法、装置、系统和存储介质 | |
CN111767995B (zh) | 运算方法、装置及相关产品 | |
CN114035916A (zh) | 计算图的编译、调度方法及相关产品 | |
CN109726800B (zh) | 运算方法、装置及相关产品 | |
CN114386349A (zh) | 系统级数字电路的布线方法及装置、设备、存储介质 | |
US20120151145A1 (en) | Data Driven Micro-Scheduling of the Individual Processing Elements of a Wide Vector SIMD Processing Unit | |
US8959497B1 (en) | System and method for dynamically spawning thread blocks within multi-threaded processing systems | |
CN111767999B (zh) | 数据处理方法、装置及相关产品 | |
CN116107634A (zh) | 指令控制方法、装置及相关设备 | |
CN102063308B (zh) | 一种用于地震勘探资料处理流程控制的方法 | |
CN112560184B (zh) | 一种飞行器仿真模型并行计算系统及方法 | |
CN111767078A (zh) | 数据运行方法、装置和相关产品 | |
CN115878272B (zh) | 图任务调度方法、执行端设备、存储介质及程序产品 | |
WO2020200250A1 (zh) | 运算方法、装置及相关产品 | |
CN114896079B (zh) | 指令执行方法、处理器和电子装置 | |
Ivanchev | Simulation and visualization tool for short-term process scheduling |
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 |