CN116982028A - 一种任务调度方法、npu、芯片、电子设备和可读介质 - Google Patents
一种任务调度方法、npu、芯片、电子设备和可读介质 Download PDFInfo
- Publication number
- CN116982028A CN116982028A CN202280004063.7A CN202280004063A CN116982028A CN 116982028 A CN116982028 A CN 116982028A CN 202280004063 A CN202280004063 A CN 202280004063A CN 116982028 A CN116982028 A CN 116982028A
- Authority
- CN
- China
- Prior art keywords
- task
- preset
- scheduled
- parallel
- scheduling
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 230000015654 memory Effects 0.000 claims abstract description 184
- 238000004364 calculation method Methods 0.000 claims description 31
- 238000013507 mapping Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 6
- 238000012546 transfer Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 11
- 238000012360 testing method Methods 0.000 description 9
- 238000001514 detection method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本申请涉及一种任务调度方法、NPU、芯片、电子设备和可读介质,该方法包括:电子设备响应于任务执行指令,确定多个待调度任务队列中各待调度任务队列所包括的多个候选调度任务是内存受限型还是计算受限型的。然后,从多个候选调度任务中确定出满足预设条件的若干待并行调度的任务和调度每个任务所需的运算逻辑单元数量。确定出的若干待并行调度的任务中需要包括至少一个计算受限型任务。然后根据确定出的调度每个任务所需的运算逻辑单元数量调度上述确定出的待并行调度的任务。如此,电子能够根据上述预设条件确定出待并行调度的任务以及每个待调度任务所需分配的运算逻辑单元数量,以实现最大内存带宽利用,有效提高逻辑运算单元的实际效率。
Description
本申请涉及人工智能(artificial intelligence,AI)芯片技术领域,特别涉及一种任务调度方法、NPU、芯片、电子设备和可读介质。
自动驾驶和智能安防等领域的大量场景中需要用到AI模型推理,AI模型基本上都是深度神经网络,且深度神经网络具有数据量较大的特点,因此,对电子设备的算力(例如执行速度)要求很高。
目前,现有技术中,电子设备会执行AI模型中的任务以完成AI模型推理。在AI模型推理过程中,电子设备一般使用基于优先级的任务调度方法,具体为给不同优先级的任务队列分配不同长度的时间片,优先级高的任务队列(模型)的时间片多,优先级低的任务队列时间片少。
电子设备调用具有时间片的候选的任务时一般为随机调度。如此,存在同时调度内存受限型任务到运算逻辑单元,则所有任务都争用有限的内存带宽,造成执行效率低下,且逻辑运算单元里的计算单元存在一定程度上的空闲和浪费。
发明内容
本申请实施例提供了一种任务调度方法、NPU、芯片、电子设备和可读介质。
第一方面,本申请实施例提供了一种任务调度方法,应用于电子设备,所述方法包括:响应于任务执行指令,确定多个待调度任务队列中各待调度任务队列所包括的多个候选调度任务的类型,候选调度任务的类型包括内存受限型和计算受限型;从所述多个候选调度任务中确定出满足预设条件的各待并行调度任务及分配给各所述待并行调度任务的运算逻辑单元数量,其中待并行调度任务中包括至少一个计算受限型的任务,并且所述预设条件包括:根据确定的分配给待并行调度任务的运算逻辑单元数量调度所述各待并行调度任务时,内存宽带占用大于或者等于均衡内存带宽;根据确定的分配给待并行调度任务的运算逻辑单元数量调度所述各待并行调度任务。
基于本申请实施例,电子设备能够并行调度内存受限型任务和计算受限型任务,能够在一定程度上,避免并行调度内存受限型任务。其次,对于待调度的任务,电子能够根据上述预设条件确定出每个待调度任务所需分配的运算逻辑单元数量,以实现最大内存带宽利用,有效提高逻辑运算单元的实际效率。
在上述第一方面的一种可能的实现中,所述从所述多个候选调度任务中确定出满足预设条件的各待并行调度任务及分配给各所述待并行调度任务的运算逻辑单元数量,包括:
从所述多个候选调度任务中确定任意一个内存受限型任务,并从多个候选调度任务的其他调度任务中匹配至少一个计算受限型任务作为预设并行调度任务;确定所述预设并行调度任务中的每个预设并行调度任务的运算逻辑单元的预设分配数量,其中所有任务的运算逻辑单元分配数量的总和与电子设备的可用运算逻辑单元的数量相等;当根据所述每个预设并行调度任务的运算逻辑单元的预设分配数量并行调度所述每个预设并行调度任务时,占用的内存带宽大于或者等于均衡内存带宽,则将所述预设并行调度任务作为确定的待并行调度任务,将每个预设并行调度任务的运算逻辑单元的预设分配数量作为确定的分配给待并行调度任务的运算逻辑单元数量。
在上述第一方面的一种可能的实现中,所述方法还包括:
当根据所述每个预设并行调度任务的运算逻辑单元预设分配数量并行调度所述每个预设并行调度任务时,占用的内存带宽小于均衡内存带宽,则调整给所述每个预设并行调度任务的运算逻辑单元的预设分配数量;当根据调整后的每个预设并行调度任务的运算逻辑单元的预设分配数量并行调度每个预设并行调度任务时,占用的内存带宽大于或者等于均衡内存带宽,则将每个预设并行调度任务作为确定的待并行调度任务,将调整后的所述每个预设并行调度任务的运算逻辑单元的预设分配数量作为确定的分配给待并行调度任务的运算逻辑单元数量。
在上述第一方面的一种可能的实现中,所述方法还包括:当根据任意调整后的每个预设并行调度任务的运算逻辑单元预设分配数量并行调度所述每个预设并行调度任务时,占用的内存带宽均小于均衡内存带宽,则选取占用内存带宽最大时的预设并行调度任务作为确定的待并行调度任务,所述每个预设并行调度任务的运算逻辑单元的预设分配数量作为确定的分配给待并行调度任务的运算逻辑单元数量。
在上述第一方面的一种可能的实现中,所述从所述多个候选调度任务中确定出满足预设条件的各待并行调度任务及分配给各所述待并行调度任务的运算逻辑单元数量,包括:
从所述多个候选调度任务中确定出可以并行调度的各任务组合,其中,每个所述任务组合中包括至少一个计算受限型任务;选取所述各任务组合中的其中一个预设任务组合,确定给所述预设任务组合中的每个预设并行调度任务的运算逻辑单元预设分配数量,其中所有任务的运算逻辑单元分配数量的总和与电子设备的可用运算逻辑单元的数量相等;当根据所述每个预设并行调度任务的运算逻辑单元的预设分配数量并行调度所述每个预设并行调度任务时,占用的内存带宽大于或者等于均衡内存带宽,则将所述预设任务组合中的任务作为确定的待并行调度任务,将给所述每个预设并行调度任务的运算逻辑单元的预设分配数量作为确定的分配给待并行调度任务的运算逻辑单元数量。
在上述第一方面的一种可能的实现中,所述方法还包括:当根据所述每个预设并行调度任务的运算逻辑单元预设分配数量并行调度所述预设任务组合中的每个预设并行调度任务时,占用的内存带宽小于均衡内存带宽,则调整给所述每个预设并行调度任务的运算逻辑单元预设分配数量;当根据调整后的每个预设并行调度任务的运算逻辑单元预设分配数量并行调度所述预设任务组合中的每个预设并行调度任务时,占用的内存带宽大于或者等于均衡内存带宽,则将所述预设任务组合中的每个预设并行调度任务作为确定的待并行调度任务,将调整后的所述每个预设并行调度任务的运算逻辑单元预设分配数量作为确定 的分配给待并行调度任务的运算逻辑单元数量。
在上述第一方面的一种可能的实现中,所述方法还包括:当根据任意调整后的每个预设并行调度任务的运算逻辑单元预设分配数量并行调度所述预设任务组合中的每个预设并行调度任务时,占用的内存带宽均小于均衡内存带宽,则选取所述各任务组合中的另一个预设任务组合。
在上述第一方面的一种可能的实现中,所述方法还包括:当选取所述各任务组合中的任意预设任务组合,并调整所述任意每个预设并行调度任务的运算逻辑单元预设分配数量,占用的内存带宽均小于所述均衡内存带宽,则选取占用内存带宽最大时的预设任务组合中的每个预设并行调度任务作为确定的待并行调度任务,所述每个预设并行调度任务的运算逻辑单元预设分配数量作为确定的分配给待并行调度任务的运算逻辑单元数量。
在上述第一方面的一种可能的实现中,所述均衡内存带宽是基于所述电子设备的目标均衡值和所述电子设备的逻辑单元数量确定;所述占用的内存带宽是根据所述所述每个预设并行调度任务每个任务的执行块所需的计算周期数、内存搬运请求次数以及预设分配数量确定。
在上述第一方面的一种可能的实现中,确定根据所述每个预设并行调度任务的运算逻辑单元的预设分配数量并行调度所述每个预设并行调度任务时,占用的内存带宽大于或者等于均衡内存带宽的方式包括:
当满足
则确定根据所述每个预设并行调度任务的运算逻辑单元预设分配数量并行调度所述每个预设并行调度任务时占用的内存带宽大于或者等于均衡内存带宽;
其中,c_cnti表示所述预设并行调度任务中第i个任务的执行块所需的计算周期数,m_reqi表示所述预设并行调度任务中第i个任务的内存搬运请求次数,Ni表示预设并行调度任务中第i个任务所需的逻辑单元数量,v表示目标均衡值,n表示电子设备中的运算逻辑单元的数量,b表示待调度任务的总数量。
在上述第一方面的一种可能的实现中,所述确定多个待调度任务队列中各待调度任务队列所包括的多个候选调度任务的类型,包括:
获取目标均衡值,所述目标均衡值为用于判断任务类型的临界值;获取所述候选调度任务的执行块所需的计算周期数与内存搬运请求次数的比值;当所述比值小于所述目标均衡值的情况下,确定所述候选调度任务的类型为计算受限型;
当所述比值大于或者等于所述目标均衡值的情况下,确定所述候选调度任务的类型为内存受限型。
在上述第一方面的一种可能的实现中,所述目标均衡值的获取方式包括:
获取电子设备的逻辑运算单元的数量和逻辑运算单元的频率;根据逻辑运算单元的数量和逻辑运算单元的频率从预设的逻辑运算单元的数量和逻辑运算单元的频率与均衡值的映射表中确定所述目标均衡值。
在上述第一方面的一种可能的实现中,所述运算逻辑单元包括第一寄存器、第二寄存器、第三寄存器和第四寄存器;
所述第一寄存器用于存储多个待调度任务队列中各任务的执行块的计算周期数;所述 第二寄存器用于存储多个待调度任务队列中各任务的执行块的内存搬运请求次数;所述第三寄存器用于存储多个待调度任务队列中各任务的执行块的内存搬运时间;所述第四寄存器用于存储多个待调度任务队列中各任务的执行块的总运行时间。
第二方面,本申请实施例提供了一种NPU,所述NPU包括NPU控制器和多个运算逻辑单元,所述控制器用于执行第一方面任一项可能实现的任务调度方法。
第三方面,本申请实施例提供了一种芯片,所述芯片包括第二方面所述的NPU。
第四方面,本申请实施例提供了一种电子设备,所述电子设备包括CPU和如第二方面所述的NPU,所述CPU上运行应用程序,所述应用程序包括运行时,所述CPU包括NPU驱动器;
所述CPU用于通过所述运行时和所述NPU驱动器将所述应用程序对应的任务加载至所述NPU;
所述NPU驱动器用于存储预设的逻辑运算单元的数量和逻辑运算单元的频率与目标均衡值的映射表,并在NPU上电的情况下,将预设的逻辑运算单元的数量和逻辑运算单元的频率与目标均衡值的映射表上报给所述NPU控制器。
第五方面,本申请实施例提供了一种电子设备,所述电子设备包括第三方面所述的芯片。
第六方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令在电子设备上执行时使电子设备执行第一方面任一项可能实现的任务调度方法。
第七方面,本申请实施例提供了一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行第一方面任一项可能实现的任务调度方法。
图1根据本申请的一些实施例,示出了一组待调度任务队列;
图2根据本申请的一些实施例,示出了一种电子设备调度内存受限型任务的示意图;
图3根据本申请的一些实施例,示出了一种电子设备调度计算受限型任务的示意图;
图4根据本申请的一些实施例,示出了一种电子设备100的结构示意图;
图5根据本申请的一些实施例,示出了图1中的任务1-1的一种拆分示意图;
图6根据本申请的一些实施例,结合图3中电子设备的结构,示出了一种任务调度方法的流程示意图;
图7根据本申请的一些实施例,结合图4,示出了一种确定待调度任务的每个任务的执行块所需的计算周期数与内存搬运请求次数的比值的流程示意图。
本申请的说明性实施例包括但不限于一种任务调度方法、NPU、芯片、电子设备和可读介质。
下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
为了解决背景技术中的技术问题,本申请实施例提出了一种可以提高电子设备算力的任务调度方法,该方法包括:电子设备响应于任务执行指令,确定多个待调度任务队列中各待调度任务队列所包括的多个候选调度任务的类型,候选调度任务的类型包括内存受限型和计算受限型。从多个候选调度任务中确定出满足预设条件的若干待并行调度的任务和调度每个任务所需的运算逻辑单元数量。确定出的若干待并行调度的任务中需要包括至少一个计算受限型任务。然后根据确定出的调度每个任务所需的运算逻辑单元数量调度上述确定出的待并行调度的任务。
其中,预设条件为当电子设备根据确定出的每个任务所需的运算逻辑单元数量并行调度每个任务时,内存宽带占用大于或者等于均衡内存带宽。其中,均衡内存带宽通过总的运算逻辑单元数量以及目标均衡值确定。
可以理解,电子设备的目标均衡值是基于电子设备当前的逻辑运算单元总核数和逻辑运算单元的频率从电子设备内部存储的预设的逻辑运算单元总核数和逻辑运算单元的频率与目标均衡值的映射表获取的。
具体的,从多个待调度任务中确定出满足预设条件的若干并行调度的任务和调度每个任务所需的运算逻辑单元数量的方式为:
从多个待调度任务中确定出可以并行调度的所有任务组合,其中,每个任务组合中需要包括至少一个内存受限型任务和至少一个计算受限型任务。
随机挑选其中一个任务组合,并随机分配该任务组合中每个任务需要的运算逻辑单元的数量。可以理解,由于电子设备的可用运算逻辑单元的总数量是一定的,因此,可随机分配的每个任务需要的运算逻辑单元的数量的组合也是有限制的,即必须满足分配给所有任务的运算逻辑单元的数量的和等于总的可用运算逻辑单元的数量。
判断根据随机分配的每个任务需要的运算逻辑单元的数量并行调度上述任务组合中的任务时,占用的内存带宽是否大于或者等于均衡内存带宽,若是,则将该任务组合中的任务作为确定的待调度任务,将随机分配给每个任务的运算逻辑单元数量作为确定的分配给每个任务的运算逻辑单元数量。若否,则继续不断调整给每个任务分配的运算逻辑单元的数量,直至根据调整后的分配的每个任务的运算逻辑单元数量并行调度上述任务组合时占用的内存带宽大于均衡内存带宽时,则将该任务组合中的任务作为确定的待调度任务,将调整后的分配给该任务组合中每个任务的运算逻辑单元数量作为确定的分配给每个任务的运算逻辑单元数量。
当可随机分配给每个任务需要的运算逻辑单元的数量的组合均尝试后,即无论如何调整给每个任务分配的运算逻辑单元的数量,均不能满足调度上述任务时占用的内存带宽大于均衡内存带宽的预设条件。则随机挑选另一个任务组合,并重复上述过程。直至获取满足上述预设条件的任务组合以及满足上述预设条件的每个任务所需分配的运算逻辑单元的数量。
在一些实施例中,存在所有任务组合均不能满足上述预设条件。则将内存带宽占用的值为最大时的任务组合中的各任务作为确定的需并行调度的多个待调度任务,任务组合中各任务的运算逻辑单元的数量作为确定的调度每个待调度任务所需的运算逻辑单元的数量。
基于上述方案,电子设备能够并行调度内存受限型任务和计算受限型任务,能够在一 定程度上,避免并行调度内存受限型任务。其次,对于待调度的任务,电子能够根据上述预设条件确定出每个待调度任务所需分配的运算逻辑单元数量,以实现最大内存带宽利用,有效提高逻辑运算单元的实际效率。
例如,图1根据本申请的一些实施例,示出了一组待调度任务队列。如图1所示,各待调度任务队列包括待调度任务队列1、待调度任务队列2和待调度任务队列3。其中,待调度任务队列1中至少包括任务1-1、任务1-2和任务1-3,待调度任务队列2中至少包括任务2-1、任务2-2和任务2-3,待调度任务队列3中至少包括任务3-1、任务3-2和任务3-3。待调度任务队列1中的待调度任务为任务1-1,待调度任务队列2中的待调度任务为任务2-1,待调度任务队列3中的待调度任务为任务3-1。
电子设备响应于任务执行指令,确定各待调度任务队列中待调度任务的类型,例如,任务1-1为内存受限型任务,任务2-1为计算受限型任务,任务3-1为计算受限型任务。电子设备确定能够并行调度的任务为待调度任务队列1中的任务1-1、待调度任务队列2中的任务2-1和待调度任务队列3中的任务3-1。
电子设备确定出所有可并行调度的任务组合为任务1-1和任务1-2,并行调度任务1-1和任务1-2这两个组合。此时,随机挑选其中一个组合,例如挑选任务1-1和任务1-2这一任务组合,然后随机分配任务1-1和任务1-2的所需运算逻辑单元数量。假设电子设备的可用运算逻辑单元的数量为10个,例如,随机分配给任务1-1和任务1-2的运算逻辑单元数量分别为6个和4个,此时,若确定出采用6个运算逻辑单元调度任务1-1,采用4个运算逻辑单元调度任务1-2时,内存带宽占用小于内存均衡带宽,不满足预设条件,则调整随机分配给任务1-1和任务1-2的运算逻辑单元数量,例如分别为7个和3个。此时,若确定出采用7个运算逻辑单元调度任务1-1,采用3个运算逻辑单元调度任务1-2时,内存带宽占用大于内存均衡带宽,则确定任务1-1和任务2-1作为待调度的任务,且确定分配给任务1-1和任务1-2的运算逻辑单元数量分别为7个和3个。然后基于确定的任务1-1和任务2-1所需的运算逻辑单元的数量,并行调度任务1-1和任务2-1。
可以理解,在一些实施例中,待调度任务队列1、待调度任务队列2和待调度任务队列3可以分别为自动驾驶系统中障碍物识别模型对应的待调度任务队列、车道线检测模型对应的待调度任务队列、红绿灯检测模型对应的待调度任务队列。如此,车辆采用本申请实施例提供的任务调度方法,并行调度内存受限型任务以及计算受限型任务,能够在一定程度上,避免并行调度内存受限型任务。其次,对于待调度的任务,电子能够根据上述预设条件确定出每个待调度任务所需分配的运算逻辑单元数量,以实现最大内存带宽利用,有效提高逻辑运算单元的实际效率。进而减少了车辆的逻辑运算单元在任务调度过程中存在的空闲时间,充分利用了车辆的逻辑运算单元的计算资源,在一定程度上提高了车辆算力和任务执行效率,进而,在一定程度上提高了车辆自动驾驶的安全性。
可以理解,内存受限型(Memory bound)是指内存搬运时间覆盖计算时间,任务执行完成的时间取决于时间较长的计算时间的任务。
例如,图2根据本申请的一些实施例,示出了一种电子设备调度内存受限型任务的示意图。如图2所示,电子设备中设置ping缓存区和pong缓存区,若电子设备从ping缓存区和pong缓存区对任务1进行读写操作的内存搬运时间(例如时间T1)大于对任务1 的计算操作的计算时间(例如时间T2),电子设备执行完任务1的时间取决于时间较长的内存搬运时间,则该任务1为内存受限型任务。
计算受限型(Compute bound)是指计算时间可以覆盖内存搬运(内存I/O)时间,任务执行完成的时间取决于时间较长的内存搬运时间的任务。
例如,图3根据本申请的一些实施例,示出了一种电子设备调度计算受限型任务的示意图。如图3所示,电子设备中设置ping缓存区和pong缓存区,若电子设备从ping缓存区和pong缓存区对任务2进行计算操作的计算时间(例如计算时间T2)大于对任务2的读写操作的内存搬运时间(例如读写时间T21),电子设备执行完任务2的时间取决于时间较长的计算操作的计算时间,则该任务2为计算受限型任务。
可以理解,电子设备可以为具有本申请实施例提供的任务调度功能的任意设备,可以为汽车主机、手机、芯片结构等。
图4根据本申请的一些实施例,示出了一种电子设备100的结构示意图,该电子设备100用于执行本申请实施例提供的任务调度方法。
如图4所示,该电子设备100包括主CPU((host central processing unit))101和网络处理器(Neural-network Processing Unit,NPU)102。其中,主CPU101包括APP中的运行时(runtime)11和NPU驱动器2。NPU102包括NPU控制器1021和多个运算逻辑单元1022。
在实际应用中,NPU102需要主CPU101的协同处理才能完成特定的任务,也就是NPU102作为协处理器挂载到主CPU101,由主CPU101分配任务(即发送任务相关的命令),NPU102再执行相应任务,并向主CPU101返回执行的处理结果。
具体地,下面对图4中各个模块的功能分别进行介绍。
应用程序1:应用程序1是主CPU101上运行的应用程序,正如上面所述,应用程序1可对应一个或多个模型。应用程序1在完成初始化后,主CPU101可以将与应用程序1对应的AI模型一次性加载至NPU102,也可以是将所需的AI模型加载至NPU102,具体此处不做限定。若NPU102上某个已加载的AI模型长时间(如,超过预设阈值)未使用,也可以通过应用程序1指示NPU102删除该AI模型。然后,NPU102在加载AI模型后,应用程序1可以在得到输入数据后,向NPU102发送AI模型的执行命令,使得NPU102进行AI模型推理,AI模型所有的任务都执行完成,则AI模型推理完成,得到AI模型的执行结果。
例如,输入数据可以为图像,应用程序1可以是自动驾驶应用程序,自动驾驶应用程序可以包括障碍物识别模型、车道线检测模型和红绿灯检测模型。如此,NPU102在加载上述3个AI模型后,且自动驾驶应用程序在输入数据准备好之后(比如摄像头完成一帧图像输出),向NPU102发送AI模型的执行命令,使得NPU102进行上述3个AI模型推理,NPU102执行完上述3个AI模型中所有的任务后,则上述3个AI模型推理完成,得到上述3个AI模型的执行结果。
运行时(runtime)11,runtime11部署在应用程序1中,runtime11提供了NPU102的用户态驱动功能(API接口)。且runtime11还用于向APP提供AI模型的服务接口,如:AI模型加载的接口。具体地,APP侧的AI模型是一个计算图结构,runtime11用于将计算图结构进行转换,转换成NPU102的执行序列结构,一个AI模型包括一个或多个任务执行 序列,每个任务执行序列有多个任务。
NPU驱动器2:用于向NPU102提供驱动,提供了NPU102加速器的驱动功能。
主CPU101通过调度应用程序1中的runtime11和NPU驱动器2,将模型加载到NPU102,并驱动NPU102执行AI模型,获取模型的执行结果。
NPU控制器1021:一方面,NPU控制器1021用于接收主CPU101发来的AI模型,给主CPU101的NPU驱动器2上报执行结果。另一方面,NPU控制器1021用于向运算逻辑单元1022下发任务执行指令,调度AI模型执行,且在执行AI模型中的任务的过程中采用本申请提供的任务调度方法。
运算逻辑单元1022:运算逻辑单元1022用于执行NPU控制器1021下发的任务执行指令(执行AI模型中各个任务的指令),给NPU控制器1021返回任务的执行结果。可以理解的是,NPU控制器1021一次只给逻辑运算单元1022下发一个任务中的一个块,逻辑运算单元1022执行完成后,NPU控制器1021再下发任务中的下一个块到运算逻辑单元1022。
可以理解,在一些实施例中,运算逻辑单元1022中可以包括4个寄存器。
第一寄存器用于存储待调度任务中每个任务的执行块的计算周期数。可以理解,在一些实施例中,待调度任务的每个任务的执行块所需的计算周期数可以用符号c_cnt表示。c_cnt表示NPU控制器1021对任务中执行块的计算操作所使用的时间。例如,图5根据本申请的一些实施例,示出了图1中的任务1-1的一种拆分示意图。如图5所示,c_cnt表示任务1-1中块111、块112、块113和块114的计算操作所使用的时间。
第二寄存器用于存储待调度任务中每个任务的执行块的内存搬运请求次数。可以理解,在一些实施例中,待调度任务的内存搬运请求次数可以用符号m_req表示。m_req表示NPU控制器1021对任务中执行块的读操作和写操作的次数,NPU控制器1021对任务中执行块的读操作和写操作的次数也可以叫做I/O请求次数。例如,如图5所示,m_req表示任务1-1中块111、块112、块113和块114总的读操作和写操作的次数。可以理解,一次I/O请求读写固定长度的数据,数据长度由NPU102的总线决定,与内存带宽无关。因此,NPU102的总线一定,任务中块的I/O总请求次数为定值。
第三寄存器用于存储待调度任务中每个任务的执行块的内存搬运时间。可以理解,在一些实施例中,内存搬运时间可以用m_cnt表示,m_cnt表示NPU控制器1021对任务中执行块的读操作和写操作对应的时间,NPU控制器1021对任务中执行块的读操作和写操作对应的时间也可以叫做I/O循环数,或者叫做内存搬运时间。
第四寄存器用于存储待调度任务中每个任务的执行块的总运行时间。可以理解,在一些实施例中,总运行时间可以用t_cnt表示,t_cnt表示NPU控制器1021对任务中执行块的读写操作和计算操作所使用的时间,或者叫做总运行时间。即NPU控制器1021从逻辑运算单元开始执行任务中块,到任务中块执行完成的执行块的读写操作和计算操作所使用的时间。
图6根据本申请的一些实施例,结合图3中电子设备的结构,示出了一种任务调度方法的流程示意图。如图6所示,该流程为主CPU101和NPU102之间的交互流程,该流程包括如下步骤:
601:主CPU101响应于任务执行请求。
可以理解,主CPU101检测到任务执行触发条件,则响应于任务执行请求。任务执行触发条件可以为主CPU101所运行的应用程序接收到输入数据。例如,如图3所示,若任务为自动驾驶应用程序1的AI模型,在主CPU101获取到AI模型的输入图像的情况下,即响应于AI模型执行请求。其中,AI模型的输入图像可以是车辆中的摄像头采集到后,发送至主CPU101的。
602:主CPU101向NPU102发送任务执行指令。
603:NPU102响应于任务执行指令,确定各待调度任务队列中的多个候选调度任务的类型,候选调度任务的类型包括内存受限型和计算受限型。
可以理解,在一些实施例中,确定待调度任务的类型的一种方式可以为:
获取在当前电子设备的逻辑运算单元的总核数(总数量)和频率的状态下的目标均衡值;获取待调度任务的每个任务的执行块所需的计算周期数与内存搬运请求次数的比值;当上述比值小于目标均衡值的情况下,确定待调度任务的类型为内存受限型;当比值大于或者等于目标均衡值的情况下,确定待调度任务的类型为内存受限型。即如果NPU102中的NPU控制器1021判断出任务的c_cnt/m_req<目标均衡值(预设的c_cnt/预设的m_req),则该任务是计算受限型任务,否则是内存受限型任务。
可以理解,目标均衡值为用于确定任务类型的临界值。确定目标均衡值的方式可以为通过查询预设的逻辑运算单元的数量和逻辑运算单元的频率与目标均衡值的映射表得到。下面介绍映射表的内容。
预设的逻辑运算单元的数量和逻辑运算单元的频率与目标均衡值的映射表可以如下表1所示,表1中包括NPU102中,不同的数量和频率的逻辑运算单元对应的目标均衡值(分界值或均衡值):
表1:
上述当前总核数是指逻辑运算单元的数量。Val_1_1、Val_1_2、Val_1_3、Val_2_1、Val_2_2、Val_2_3、Val_3_1、Val_3_2和Val_3_3表示NPU102中不同逻辑运算单元的数量和逻辑运算单元的频率对应的目标均衡值。多个运算逻辑单元1022中每个运算逻辑单元1022的频率相同。例如,Val_1_1为逻辑运算单元频率1和当前总核数1对应的均衡值。
可以理解,在一些实施例中,NPU驱动器3中预先存储预设的逻辑运算单元的数量和逻辑运算单元的频率与目标均衡值的映射表,在主CPU101上电的情况下,主CPU101中的NPU驱动器3便将预先存储预设的逻辑运算单元的数量和逻辑运算单元的频率与目标均衡值的映射表上报给NPU102中的NPU控制器1021。如此,NPU102便可以根据NPU102中逻辑运算单元的数量和逻辑运算单元的频率,从预设的逻辑运算单元的数量和逻辑运算单元的频率与目标均衡值的映射表中确定用于判断任务类型的目标均衡值。
可以理解的是,上述映射表可以在测试阶段测得,在NPU102的开发测试阶段,测试 人员通过测试设备将NPU控制器1021对任务中执行块的读操作和写操作的次数设置为1时,计算出NPU102在逻辑运算单元的不同工作频率、不同逻辑运算单元数量下对应的任务的目标均衡值。当然,在其他实施例中,也可以将NPU控制器1021对任务中执行块的读操作和写操作的次数设置为大于1的整数值。
可以理解,待调度任务的每个任务的执行块所需的计算周期数与内存搬运请求次数的比值可以在NPU102加载任务阶段确定。例如,图7根据本申请的一些实施例,结合图4,示出了一种确定待调度任务的每个任务的执行块所需的计算周期数与内存搬运请求次数的比值的流程示意图。如图7所示,该流程包括如下步骤:
701:主CPU101响应于AI模型加载请求。
可以理解,在一些实施例中,电子设备100的主CPU101检测到用户开启自动驾驶应用程序,则响应于自动驾驶应用程序对应的AI模型加载请求。
可以理解的是,任务执行请求可以为AI模型的执行请求。任务可以指自动驾驶应用程序中的多个模型中的任务。若自动驾驶应用程序中包括障碍物识别、车道线检测等多种功能,该多种功能分别对应障碍物识别模型、车道线检测等AI模型。AI模型执行请求包括至少一种AI模型的执行请求,例如,障碍物识别、车道线检测的AI模型的执行请求。
702:主CPU101向NPU102发送加载AI模型指令。
加载AI模型指令用于指示NPU102对AI模型进行初始化加载,并保存在NPU102中。
703:NPU102加载AI模型。
可以理解,在一些实施例中,如图4所示,自动驾驶应用程序1通过运行时11和NPU驱动器2加载模型到NPU102。具体地,主CPU101先对应用程序(application,APP)进行初始化,并通过自动驾驶应用程序1的runtime11对该AI模型进行解析,并将解析好的AI模型文件转换为NPU102可处理的格式,之后,运行时11再调度主CPU101上NPU102驱动的用户态接口,NPU102驱动进一步切换到内核态,配置NPU102的相关寄存器和接口,将AI模型加载到NPU102,由NPU102保存该AI模型。
704:NPU102从运算逻辑单元中存储的预设列表中获取AI模型中任务的内存搬运请求次数和执行块所需的计算周期数。
可以理解的是,由于NPU102初次任务(例如AI模型中的任务)时,没有上述计算周期数、内存搬运请求次数、内存搬运时间和总运行时间这些性能数据,上述性能数据可以在NPU102在测试阶段第一次加载AI模型时,应用程序1用测试数据执行一次模型得到。具体地,在NPU102在测试阶段第一次加载AI模型时,应用程序1可以用测试数据执行一次模型,将执行模型的命令下发到NPU控制器1021。然后NPU102直接调度模型的各任务。NPU控制器102分发各任务中的块给逻辑运算单元1022,运算逻辑单元1022执行各任务中的块时,同时统计计算周期数、内存搬运请求次数、内存搬运时间和总运行时间。然后再将统计的计算周期数、内存搬运请求次数、内存搬运时间和总运行时间分别存储至第一寄存器、第二寄存器、第三寄存器和第四寄存器。如此,NPU102便可以在应用阶段响应于加载AI模型指令的情况下,从运算单元中的寄存器中获取存储的性能数据。可以理解的是,在一些实施例中,计算周期数、内存搬运请求次数、内存搬运时间和总运行时间可以以预设列表的形式分别存储至第一寄存器、第二寄存器、第三寄存器和第四寄存器中。如此,NPU102便可以从运算逻辑单元中存储的预设列表中获取AI模型中任务的内存搬运请 求次数和每个任务的执行块所需的计算周期数。
可以理解,内存搬运请求次数和每个任务的执行块所需的计算周期数可以在测试阶段通过如下方式获取:
内存搬运请求次数m_req为NPU的总线决定的,为固定值。
内存搬运时间m_cnt通过如下公式获取:
内存搬运时间m_cnt=内存搬运请求次数m_req*运算逻辑单元位宽*运算逻辑单元频率/逻辑运算单元平均可用带宽。
其中,内存搬运请求次数m_req、运算逻辑单元位宽、运算逻辑单元频率是通过测试设备直接获取,逻辑运算单元平均可用带宽通过如下公式确定:
逻辑运算单元平均可用带宽=NPU102内存可用带宽/运算逻辑单元的核数。
其中,NPU102内存可用带宽的确定公式如下:
NPU102内存可用带宽=NPU102内存频率*NPU102内存位宽*NPU102内存利用率。
其中,内存频率和位宽是固定的,内存利用率低于1,不同场景取不同的值,利用率的经验值范围是0.6~0.8,一般取0.7。
可以理解,NPU控制器1021的存储器中存储有任务的内存搬运请求次数和每个任务的执行块所需的计算周期数。NPU控制器1021可以从该存储器中获取任务的内存搬运请求次数和每个任务的执行块所需的计算周期数。
705:NPU102确定AI模型中各任务的内存搬运请求次数和执行块所需的计算周期数的比值。
可以理解,为了确定AI模型中各任务的类型,NPU102需要确定AI模型中各任务的内存搬运请求次数和执行块所需的计算周期数的比值。
604:NPU102从多个候选调度任务中确定出满足预设条件的各待并行调度任务及分配给各待并行调度任务的运算逻辑单元数量,其中待并行调度任务中包括和至少一个计算受限型的任务。
可以理解,在一些实施例中,预设条件可以为电子设备根据确定的分配给待并行调度任务的运算逻辑单元数量调度各待并行调度任务时,内存宽带占用大于或者等于均衡内存带宽。
可以理解,在一些实施例中,NPU102从多个待调度任务中确定出可以并行调度的所有任务组合,其中,每个任务组合中需要包括至少一个内存受限型任务和至少一个计算受限型任务。
随机挑选其中一个任务组合,并随机分配该任务组合中每个任务需要的运算逻辑单元的数量。可以理解,由于电子设备的可用运算逻辑单元的总数量是一定的,因此,可随机分配的每个任务需要的运算逻辑单元的数量的组合也是有限制的,即必须满足分配给所有任务的运算逻辑单元的数量的和等于总的可用运算逻辑单元的数量。
判断根据随机分配的每个任务需要的运算逻辑单元的数量并行调度上述任务组合中的任务时,占用的内存带宽是否大于或者等于均衡内存带宽,若是,则将该任务组合中的任务作为确定的待调度任务,将随机分配给每个任务的运算逻辑单元数量作为确定的分配给每个任务的运算逻辑单元数量。
若否,则继续不断调整给每个任务分配的运算逻辑单元的数量,直至根据调整后的分 配的每个任务的运算逻辑单元数量并行调度上述任务组合时占用的内存带宽大于均衡内存带宽时,则将该任务组合中的任务作为确定的待调度任务,将调整后的分配给该任务组合中每个任务的运算逻辑单元数量作为确定的分配给每个任务的运算逻辑单元数量。
当可随机分配给每个任务需要的运算逻辑单元的数量的组合均尝试后,即无论如何调整给每个任务分配的运算逻辑单元的数量,均不能满足调度上述任务时占用的内存带宽大于均衡内存带宽的预设条件。则随机挑选另一个任务组合,并重复上述过程。直至获取满足上述预设条件的任务组合以及满足上述预设条件的每个任务所需分配的运算逻辑单元的数量。
在一些实施例中,存在所有任务组合均不能满足上述预设条件。则将内存带宽占用的值为最大时的任务组合中的各任务作为确定的需并行调度的多个待调度任务,任务组合中各任务的运算逻辑单元的数量作为确定的调度每个待调度任务所需的运算逻辑单元的数量。
具体的,判断根据随机分配的每个任务需要的运算逻辑单元的数量并行调度上述任务组合中的任务时,占用的内存带宽是否大于或者等于均衡内存带宽的一种方式为:
获取上述各任务的所需的每个任务的执行块所需的计算周期数c_cnt以及内存搬运请求次数m_req和分配的逻辑单元数量N,并获取电子设备逻辑单元的总数量n和目标均衡值v。
当满足
则确定占用的内存带宽大于或者等于均衡内存带宽;
其中,c_cnti表示预设待调度任务中第i个任务的每个任务的执行块所需的计算周期数,m_reqi表示待调度任务中第i个任务的内存搬运请求次数,Ni表示待调度任务中第i个任务所需的逻辑单元数量,v表示目标均衡值,n表示电子设备中的运算逻辑单元的数量,b表示待调度任务的总数量。
可以理解,上述公式也可以表示为:
c_cnt1/m_r eq1*N1+c_cnt2/m_r eq2*N2+…c_cnt b/m_req b*Nb>=v*n
同时还要满足N1+N2+…Nb=n。其中,c_cnt1表示预设待调度任务中第1个任务的每个任务的执行块所需的计算周期数,m_req1表示待调度任务中第1个任务的内存搬运请求次数,N1表示待调度任务中第1个任务所需的逻辑单元数量,v表示目标均衡值,n表示电子设备中的运算逻辑单元的总数量。c_cnt2表示预设待调度任务中第2个任务的每个任务的执行块所需的计算周期数,m_req2表示待调度任务中第2个任务的内存搬运请求次数,N2表示待调度任务中第2个任务所需的逻辑单元数量。c_cntb表示预设待调度任务中第b个任务的每个任务的执行块所需的计算周期数,m_reqb表示待调度任务中第b个任务的内存搬运请求次数,Nb表示待调度任务中第b个任务所需的逻辑单元数量。
可以理解,上述第1个、第2个,第b个等并不具有先后顺序限定的意义,只是用于区分任务组合中的各任务。
当在任意情况下,根据各预设待调度任务所需的运算逻辑单元的预设数量并行调度各预设待调度任务时,存在均为:
c_cnt1/m_req1*N1+c_cnt2/m_req2*N2+…c_cntb/m_reqb*Nb<v*n的情况,则 将满足
的值为最大时的预设各待调度任务作为确定的需并行调度的多个待调度任务,并将各预设待调度任务所需的运算逻辑单元的预设数量作为确定的调度每个待调度任务所需的运算逻辑单元的数量。
可以理解,任务中所有的块都执行完成,任务才执行完成。当某个任务的所有块执行完成,需要调度新的任务,或有逻辑运算单元空闲出来时(比如某任务的块数是10,NPU控制器计算出该任务使用4个逻辑运算单元,最后1次调度该任务时,只需要2个逻辑运算单元,因此NPU有2个逻辑运算单元空闲出来,可以调度新的任务),需要调度新的任务,NPU控制器都需要计算公式
的值为最大值,以确定新任务使用的运算逻辑单元数量。
可以理解,在其他一些实施例中,NPU102还可以通过以下方式从多个候选调度任务中确定出满足预设条件的各待并行调度任务及分配给各待并行调度任务的运算逻辑单元数量:
NPU102从多个候选调度任务中确定任意一个内存受限型任务,并从多个候选调度任务的其他调度任务中匹配至少一个计算受限型任务作为预设并行调度任务;然后,NPU102确定预设并行调度任务中的每个预设并行调度任务的运算逻辑单元预设分配数量,其中所有任务的运算逻辑单元分配数量的总和与电子设备的可用运算逻辑单元的数量相等;当NPU102根据每个预设并行调度任务的运算逻辑单元的预设分配数量并行调度每个预设并行调度任务时,占用的内存带宽大于或者等于均衡内存带宽,则NPU102将预设并行调度任务作为确定的待并行调度任务,给预设并行调度任务中的每个预设并行调度任务的运算逻辑单元预设分配数量作为确定的分配给待并行调度任务的运算逻辑单元数量。
当NPU102根据每个预设并行调度任务的运算逻辑单元预设分配数量并行调度预设任务组合中的每个预设并行调度任务时,占用的内存带宽小于均衡内存带宽,则调整给每个预设并行调度任务的运算逻辑单元预设分配数量;
当NPU102根据调整后的每个预设并行调度任务的运算逻辑单元预设分配数量并行调度预设任务组合中的每个预设并行调度任务时,占用的内存带宽大于或者等于均衡内存带宽,则将每个预设并行调度任务作为确定的待并行调度任务,将调整后的每个预设并行调度任务的运算逻辑单元预设分配数量作为确定的分配给待并行调度任务的运算逻辑单元数量。
当NPU102根据任意调整后的每个预设并行调度任务的运算逻辑单元预设分配数量并行调度预设任务组合中的每个预设并行调度任务时,占用的内存带宽均小于均衡内存带宽,则选取占用内存带宽最大时的预设任务组合作为确定的待并行调度任务,每个预设并行调度任务的运算逻辑单元预设分配数量作为确定的分配给待并行调度任务的运算逻辑单元数量。
该实施例中,NPU102根据每个预设并行调度任务的运算逻辑单元的预设分配数量并行调度每个预设并行调度任务时,占用的内存带宽大于或者等于均衡内存带宽的方式包括:
当满足
则确定根据每个预设并行调度任务的运算逻辑单元预设分配数量并行调度每个预设并行调度任务时占用的内存带宽大于或者等于均衡内 存带宽;
其中,c_cnti表示每个预设并行调度任务中第i个任务的每个任务的执行块所需的计算周期数,m_reqi表示每个预设并行调度任务中第i个任务的内存搬运请求次数,Ni表示每个预设并行调度任务中第i个任务所需的逻辑单元数量,v表示目标均衡值,n表示电子设备中的运算逻辑单元的数量,b表示待调度任务的总数量。
605:根据确定的分配给待并行调度任务的运算逻辑单元数量调度各待并行调度任务。
可以理解,并行调度内存受限型任务和计算受限型任务是指NPU102中的一部分逻辑运算单元运行计算受限型任务,同时,NPU102中的另一部分逻辑运算单元运行内存受限型任务。
除此之外,本申请的实施例还可以应用在其他应用场景中,例如,物体检测和人脸识别,但并不限于此。
基于上述方案,电子设备能够并行调度内存受限型任务和计算受限型任务,能够在一定程度上,避免并行调度内存受限型任务。其次,对于待调度的任务,电子能够根据上述预设条件确定出每个待调度任务所需分配的运算逻辑单元数量,以实现最大内存带宽利用,有效提高逻辑运算单元的实际效率。
本申请实施例提供了一种NPU,NPU包括NPU控制器和多个运算逻辑单元,控制器用于执行以实现上述各个方法实施例中的步骤。
本申请实施例提供了一种芯片,芯片包括上述各个方法实施例中的NPU。
本申请实施例提供了一种电子设备,电子设备包括CPU和上述各个方法实施例中的NPU,CPU上运行应用程序,应用程序包括运行时,CPU包括NPU驱动器;
CPU用于通过运行时和NPU驱动器将应用程序对应的任务加载至NPU;
NPU驱动器用于存储预设的逻辑运算单元的数量和逻辑运算单元的频率与目标均衡值的映射表,并在NPU上电的情况下,将预设的逻辑运算单元的数量和逻辑运算单元的频率与目标均衡值的映射表上报给NPU控制器。
本申请实施例提供了一种电子设备,电子设备包括上述的芯片。
本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储有指令,指令在电子设备上执行时使电子设备执行上述各个方法实施例中的步骤。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性计算机可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,计算机可读介质可以包括用于以计算机(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、只读存储器(CD-ROMs)、磁光盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的计算机可读存储器。因此,计算机可读介质包括适合于以计算机(例如计算机)可读的形式存储或传输电子指令或信息的任何类型的计算机可读介质。
一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述各个方法实施例中的步骤。
本申请公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本申请的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本申请描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(Digital Signal Processor,DSP)、微控制器、专用集成电路(ApplicatI/On Specific Integrated Circuit,ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本申请中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
需要说明的是,本申请各设备实施例中提到的各单元/模块都是运算逻辑单元/模块,在物理上,一个运算逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模一部分,还可以以多个物理单元/模组合实现,这些运算逻辑单元/模块本身的物理实现方式并不是最重要的,这些运算逻辑单元/模块所实现的功能的组合才是解决本申请所提出的技术问题的关键。此外,为了突出本申请的创新部分,本申请上述各设备实施例并没有将与解决本申请所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
需要说明的是,在本专利的示例和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本申请的某些优选实施例,已经对本申请进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。
Claims (19)
- 一种任务调度方法,应用于电子设备,其特征在于,所述方法包括:响应于任务执行指令,确定多个待调度任务队列中各待调度任务队列所包括的多个候选调度任务的类型,候选调度任务的类型包括内存受限型和计算受限型;从所述多个候选调度任务中确定出满足预设条件的各待并行调度任务及分配给各所述待并行调度任务的运算逻辑单元数量,其中待并行调度任务中包括至少一个计算受限型的任务,并且所述预设条件包括:根据确定的分配给待并行调度任务的运算逻辑单元数量调度所述各待并行调度任务时,内存宽带占用大于或者等于均衡内存带宽;根据确定的分配给待并行调度任务的运算逻辑单元数量调度所述各待并行调度任务。
- 根据权利要求1所述的方法,其特征在于,所述从所述多个候选调度任务中确定出满足预设条件的各待并行调度任务及分配给各所述待并行调度任务的运算逻辑单元数量,包括:从所述多个候选调度任务中确定任意一个内存受限型任务,并从多个候选调度任务的其他调度任务中匹配至少一个计算受限型任务作为预设并行调度任务;确定所述预设并行调度任务中的每个预设并行调度任务的运算逻辑单元的预设分配数量,其中所有任务的运算逻辑单元分配数量的总和与电子设备的可用运算逻辑单元的数量相等;当根据所述每个预设并行调度任务的运算逻辑单元的预设分配数量并行调度所述每个预设并行调度任务时,占用的内存带宽大于或者等于均衡内存带宽,则将所述预设并行调度任务作为确定的待并行调度任务,将每个预设并行调度任务的运算逻辑单元的预设分配数量作为确定的分配给待并行调度任务的运算逻辑单元数量。
- 根据权利要求2所述的方法,其特征在于,所述方法还包括:当根据所述每个预设并行调度任务的运算逻辑单元预设分配数量并行调度所述每个预设并行调度任务时,占用的内存带宽小于均衡内存带宽,则调整给所述每个预设并行调度任务的运算逻辑单元的预设分配数量;当根据调整后的每个预设并行调度任务的运算逻辑单元的预设分配数量并行调度每个预设并行调度任务时,占用的内存带宽大于或者等于均衡内存带宽,则将每个预设并行调度任务作为确定的待并行调度任务,将调整后的所述每个预设并行调度任务的运算逻辑单元的预设分配数量作为确定的分配给待并行调度任务的运算逻辑单元数量。
- 根据权利要求3所述的方法,其特征在于,所述方法还包括:当根据任意调整后的每个预设并行调度任务的运算逻辑单元预设分配数量并行调度所述每个预设并行调度任务时,占用的内存带宽均小于均衡内存带宽,则选取占用内存带宽最大时的预设并行调度任务作为确定的待并行调度任务,所述每个预设并行调度任务的运算逻辑单元的预设分配数量作为确定的分配给待并行调度任务的运算逻辑单元数量。
- 根据权利要求1所述的方法,其特征在于,所述从所述多个候选调度任务中确定出满足预设条件的各待并行调度任务及分配给各所述待并行调度任务的运算逻辑单元数量,包括:从所述多个候选调度任务中确定出可以并行调度的各任务组合,其中,每个所述任务组合中包括至少一个计算受限型任务;选取所述各任务组合中的其中一个预设任务组合,确定给所述预设任务组合中的每个预设并行调度任务的运算逻辑单元预设分配数量,其中所有任务的运算逻辑单元分配数量的总和与电子设备的可用运算逻辑单元的数量相等;当根据所述每个预设并行调度任务的运算逻辑单元的预设分配数量并行调度所述每个预设并行调度任务时,占用的内存带宽大于或者等于均衡内存带宽,则将所述预设任务组合中的任务作为确定的待并行调度任务,将给所述每个预设并行调度任务的运算逻辑单元的预设分配数量作为确定的分配给待并行调度任务的运算逻辑单元数量。
- 根据权利要求5所述的方法,其特征在于,所述方法还包括:当根据所述每个预设并行调度任务的运算逻辑单元预设分配数量并行调度所述预设任务组合中的每个预设并行调度任务时,占用的内存带宽小于均衡内存带宽,则调整给所述每个预设并行调度任务的运算逻辑单元预设分配数量;当根据调整后的每个预设并行调度任务的运算逻辑单元预设分配数量并行调度所述预设任务组合中的每个预设并行调度任务时,占用的内存带宽大于或者等于均衡内存带宽,则将所述预设任务组合中的每个预设并行调度任务作为确定的待并行调度任务,将调整后的所述每个预设并行调度任务的运算逻辑单元预设分配数量作为确定的分配给待并行调度任务的运算逻辑单元数量。
- 根据权利要求6所述的方法,所述方法还包括:当根据任意调整后的每个预设并行调度任务的运算逻辑单元预设分配数量并行调度所述预设任务组合中的每个预设并行调度任务时,占用的内存带宽均小于均衡内存带宽,则选取所述各任务组合中的另一个预设任务组合。
- 根据权利要求7所述的方法,所述方法还包括:当选取所述各任务组合中的任意预设任务组合,并调整所述任意每个预设并行调度任务的运算逻辑单元预设分配数量,占用的内存带宽均小于所述均衡内存带宽,则选取占用内存带宽最大时的预设任务组合中的每个预设并行调度任务作为确定的待并行调度任务,所述每个预设并行调度任务的运算逻辑单元预设分配数量作为确定的分配给待并行调度任务的运算逻辑单元数量。
- 根据权利要求2至8中任一项所述的方法,其特征在于,所述均衡内存带宽是基于所述电子设备的目标均衡值和所述电子设备的逻辑单元数量确定;所述占用的内存带宽是根据所述所述每个预设并行调度任务每个任务的执行块所需的计算周期数、内存搬运请求次数以及预设分配数量确定。
- 根据权利要求2至9中任一项所述的方法,其特征在于,确定根据所述每个预设并行调度任务的运算逻辑单元的预设分配数量并行调度所述每个预设并行调度任务时,占用的内存带宽大于或者等于均衡内存带宽的方式包括:当满足 则确定根据所述每个预设并行调度任务的运算逻辑单元预设分配数量并行调度所述每个预设并行调度任务时占用的内存带宽大于或者等于均衡内存带宽;其中,c_cnti表示所述预设并行调度任务中第i个任务的执行块所需的计算周期数,m_reqi表示所述预设并行调度任务中第i个任务的内存搬运请求次数,Ni表示预设并行调度任务中第i个任务所需的逻辑单元数量,v表示目标均衡值,n表示电子设备中的运算逻辑单元的数量,b表示待调度任务的总数量。
- 根据权利要求1至10中任一项所述的方法,其特征在于,所述确定多个待调度任务队列中各待调度任务队列所包括的多个候选调度任务的类型,包括:获取目标均衡值,所述目标均衡值为用于判断任务类型的临界值;获取所述候选调度任务的执行块所需的计算周期数与内存搬运请求次数的比值;当所述比值小于所述目标均衡值的情况下,确定所述候选调度任务的类型为计算受限型;当所述比值大于或者等于所述目标均衡值的情况下,确定所述候选调度任务的类型为内存受限型。
- 根据权利要求11所述的方法,其特征在于,所述目标均衡值的获取方式包括:获取电子设备的逻辑运算单元的数量和逻辑运算单元的频率;根据逻辑运算单元的数量和逻辑运算单元的频率从预设的逻辑运算单元的数量和逻辑运算单元的频率与均衡值的映射表中确定所述目标均衡值。
- 根据权利要求1至12中任一项所述的方法,其特征在于,所述运算逻辑单元包括第一寄存器、第二寄存器、第三寄存器和第四寄存器;所述第一寄存器用于存储多个待调度任务队列中各任务的执行块的计算周期数;所述第二寄存器用于存储多个待调度任务队列中各任务的执行块的内存搬运请求次数;所述第三寄存器用于存储多个待调度任务队列中各任务的执行块的内存搬运时间;所述第四寄存器用于存储多个待调度任务队列中各任务的执行块的总运行时间。
- 一种NPU,其特征在于,所述NPU包括NPU控制器和多个运算逻辑单元,所述控制器用于执行权利要求1至13中任一项所述的任务调度方法。
- 一种芯片,其特征在于,所述芯片包括权利要求14所述的NPU。
- 一种电子设备,所述电子设备包括CPU和如权利要求14所述的NPU,所述CPU上运行应用程序,所述应用程序包括运行时,所述CPU包括NPU驱动器;所述CPU用于通过所述运行时和所述NPU驱动器将所述应用程序对应的任务加载至所述NPU;所述NPU驱动器用于存储预设的逻辑运算单元的数量和逻辑运算单元的频率与目标均衡值的映射表,并在NPU上电的情况下,将预设的逻辑运算单元的数量和逻辑运算单元的频率与目标均衡值的映射表上报给所述NPU控制器。
- 一种电子设备,其特征在于,所述电子设备包括权利要求15所述的芯片。
- 一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有指令,所述指令在电子设备上执行时使电子设备执行权利要求1至13中任一项所述的任务调度方法。
- 一种计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如权利要求1至13中任一项所述的任务调度方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2022/078293 WO2023159568A1 (zh) | 2022-02-28 | 2022-02-28 | 一种任务调度方法、npu、芯片、电子设备和可读介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116982028A true CN116982028A (zh) | 2023-10-31 |
Family
ID=87764459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280004063.7A Pending CN116982028A (zh) | 2022-02-28 | 2022-02-28 | 一种任务调度方法、npu、芯片、电子设备和可读介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116982028A (zh) |
WO (1) | WO2023159568A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116932175B (zh) * | 2023-09-19 | 2024-01-09 | 之江实验室 | 一种基于序列生成的异构芯片任务调度方法以及装置 |
CN117785619B (zh) * | 2024-02-27 | 2024-05-10 | 深圳超盈智能科技有限公司 | 一种芯片存储状态的监控方法和系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090313631A1 (en) * | 2008-06-11 | 2009-12-17 | Fabio De Marzo | Autonomic workload planning |
US9910481B2 (en) * | 2015-02-13 | 2018-03-06 | Intel Corporation | Performing power management in a multicore processor |
CN105045670A (zh) * | 2015-09-01 | 2015-11-11 | 浪潮(北京)电子信息产业有限公司 | 中央处理器和图形处理器负载均衡的方法和系统 |
CN113032113B (zh) * | 2019-12-25 | 2024-06-18 | 中科寒武纪科技股份有限公司 | 任务调度方法及相关产品 |
CN111381970B (zh) * | 2020-03-16 | 2023-07-25 | 第四范式(北京)技术有限公司 | 集群任务的资源分配方法及装置、计算机装置及存储介质 |
CN114003370A (zh) * | 2021-09-28 | 2022-02-01 | 浙江大华技术股份有限公司 | 算力调度方法以及相关装置 |
-
2022
- 2022-02-28 WO PCT/CN2022/078293 patent/WO2023159568A1/zh active Application Filing
- 2022-02-28 CN CN202280004063.7A patent/CN116982028A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2023159568A1 (zh) | 2023-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116982028A (zh) | 一种任务调度方法、npu、芯片、电子设备和可读介质 | |
US11562214B2 (en) | Methods for improving AI engine MAC utilization | |
CN110929860B (zh) | 一种卷积加速运算方法、装置、存储介质及终端设备 | |
CN115269108A (zh) | 一种数据处理方法、装置及设备 | |
CN110750312A (zh) | 硬件资源配置方法、装置、云侧设备和存储介质 | |
US7376762B2 (en) | Systems and methods for direct memory access | |
CN112416606A (zh) | 任务调度方法、装置和电子设备 | |
CN110750359B (zh) | 硬件资源配置方法、装置、云侧设备和存储介质 | |
CN117251275B (zh) | 多应用异步i/o请求的调度方法及系统、设备及介质 | |
CN112148471A (zh) | 分布式计算系统中资源调度的方法和装置 | |
CN116089477B (zh) | 分布式训练方法及系统 | |
US11429178B2 (en) | Electronic device and method for determining operating frequency of processor | |
CN116414542A (zh) | 任务调度方法、装置、设备及存储介质 | |
US12001382B2 (en) | Methods, apparatus, and articles of manufacture to generate command lists to be offloaded to accelerator circuitry | |
WO2023284347A1 (zh) | 任务执行方法及装置 | |
CN113163018B (zh) | 时延、资源和能耗感知的虚拟网络在线迁移方法和装置 | |
CN115712486A (zh) | 虚拟机的热迁移控制方法和装置、介质和计算机设备 | |
CN114861895A (zh) | 神经网络神经元信息存储方法及装置、众核系统、介质 | |
CN114138444A (zh) | 一种任务调度方法、装置、设备、存储介质及程序产品 | |
CN114546618A (zh) | 基于cnn矩阵分块的调度方法、装置、设备及存储介质 | |
CN114548389A (zh) | 异构计算中计算单元的管理方法及相应处理器 | |
CN112527482A (zh) | 基于移动边缘云平台的任务管理方法及系统 | |
CN116848508A (zh) | 基于强化学习模型调度任务以供计算机执行 | |
CN114116150A (zh) | 一种任务调度方法、装置以及相关设备 | |
KR20090036072A (ko) | 컨텍스트 기반의 계층적이고 적응적인 라운드 로빈스케쥴링을 위한 시스템 및 방법 |
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 |