一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

神经网络处理器NPU调度方法和计算机存储介质与流程

2022-10-13 05:59:12 来源:中国专利 TAG:

神经网络处理器npu调度方法和计算机存储介质
技术领域
1.本公开涉及神经网络处理器(npu)。
2.具体来说,涉及用于执行多个任务的神经网络处理器的调度方法。


背景技术:

3.npu是专门针对人工智能(ai)算法的处理器,其可以提供强大的算力以支持各种ai算法。
4.在实际应用中,npu往往需要同时运行多个ai算法以达到较好的用户体验。例如,在智能摄像头的npu中,可能需要同时运行人形检测算法、人脸识别算法和行为动作算法。其中,一些算法的运行时间较短,但需要以较高的频率执行;另外一些算法的运行时间较长,但执行的频率较低。即,npu需要同时执行多个算法任务,这多个任务的运行时间和执行频率有所不同。因此,需要对执行多个任务的npu进行调度。
5.作为比较,用于执行多个任务的中央处理器(cpu)的调度方法是通过复杂的操作系统和硬件配置实现的。但是,npu并没有如cpu那样复杂的操作系统和硬件配置,因此cpu的调度方法无法直接应用于npu。
6.因此,需要一种较为简单的、能够在npu上实现的npu调度方法。


技术实现要素:

7.本公开的目的之一是提供一种神经网络处理器npu调度方法。
8.根据本公开的一个方面,提供了一种神经网络处理器npu调度方法,其中,npu用于执行多个任务,所述方法包括:基于所述多个任务的运行时间和执行频率确定每个任务的优先级;将所述多个任务按照优先级从低到高分类为多个优先类,所述多个优先类至少包括第一优先类和第二优先类;对于第一优先类中的至少一个任务,在其代码中插入至少一组抢占指令作为该任务中的抢占点,其中所述抢占指令在被npu执行时使得npu轮询并执行较后优先类中待执行的任务,以及在执行较后优先类中的任务之前保存现场、在执行较后优先类中的任务之后恢复现场并继续执行该任务;以及npu运行时循环地执行以下步骤:依次执行第二优先类中的待执行的所有任务;执行第一优先类中的待执行的一个任务,其中在该任务的每个抢占点处依次执行较后优先类中的待执行的所有任务。
9.根据本公开的另一个方面,提供了一种计算机存储介质,其上存储有可执行指令,所述指令在被执行时能够实现以上所述的方法。
10.通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得更为清楚。
附图说明
11.构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
12.参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:图1示出了根据本公开的至少一个实施例的npu调度方法的预处理步骤的流程图。
13.图2示出了根据本公开的至少一个实施例的npu调度方法的运行步骤的流程图。
14.图3a-图3i示出了根据本公开的至少一个实施例的npu调度方法的运行步骤的示意图。
15.注意,在以下说明的实施方式中,有时在不同的附图之间共同使用同一附图标记来表示相同部分或具有相同功能的部分,而省略其重复说明。在一些情况中,使用相似的标号和字母表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
16.为了便于理解,在附图等中所示的各结构的位置、尺寸及范围等有时不表示实际的位置、尺寸及范围等。因此,本公开并不限于附图等所公开的位置、尺寸及范围等。
具体实施方式
17.下面将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
18.以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。也就是说,本文中的结构及方法是以示例性的方式示出,来说明本公开中的结构和方法的不同实施例。然而,本领域技术人员将会理解,它们仅仅说明可以用来实施的本公开的示例性方式,而不是穷尽的方式。此外,附图不必按比例绘制,一些特征可能被放大以示出具体组件的细节。
19.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
20.在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
21.在npu运行相应任务之前,首先对npu要执行的任务进行预处理。图1示出了根据本公开的至少一个实施例的用于执行多个任务的npu的调度方法的预处理步骤的流程图。
22.在框101处,预处理开始。
23.在框102处,基于npu要执行的多个任务的运行时间和执行频率确定每个任务的优先级。
24.本发明的发明人认识到,npu需要执行的任务的运行时间和执行频率往往可以被预先确定。例如,对于智能摄像头的npu,可以预先确定人形检测算法的运行时间为大约3ms、执行频率为大约每秒30次,而跌倒检测算法的运行时间为大约100ms、执行频率为大约每秒2次。于是,可以基于npu要执行的多个任务的运行时间和执行频率来确定其优先级。
25.在优选的实施例中,可以将所需的运行时间较短且执行频率较高的任务设定为较高优先级,而将所需的运行时间较长且执行频率较低的任务设定为较低优先级。例如,在智能摄像头的npu中,人形检测算法需要较短的运行时间(约3ms)和较高的执行频率(约每秒30次),而跌倒检测算法需要较长的运行时间(约100ms)和较低的执行频率(约每秒2次)。这样,可以将人形检测算法任务设定为较高优先级,而跌倒检测算法任务设定为较低优先级。
26.在其他实施例中,可以仅根据运行时间或执行频率中的一者来确定每个任务的优先级。例如,可以将所需的运行时间较短的任务设定为较高优先级,将所需的运行时间较长的任务设定为较低优先级,而不管其执行频率如何。在其他实施例中,还可以适当地根据任务的其他特性来确定每个任务的优先级。
27.在框104处,将多个任务按照优先级从低到高分类为多个优先类,其中多个优先类至少包括第一优先类和第二优先类。
28.根据实际应用的需要,可以将多个任务分类为两个优先类,其中第一优先类中的任务的优先级较低,第二优先类中的任务的优先级较高。例如,可以将跌倒检测算法任务分类为第一优先类,而将人形检测算法任务分类为第二优先类。或者,可以将多个任务分类为三个优先类,其中第一优先类中的任务的优先级最低,第二优先类中的任务的优先级较高,第三优先类中的任务的优先级最高。
29.在框106处,对于第一优先类中的至少一个任务,在其代码中插入至少一组抢占指令作为该任务中的抢占点。其中,该抢占指令在被npu执行时使得npu轮询并执行较后优先类中待执行的任务,以及在执行较后优先类中的任务之前保存现场、在执行较后优先类中的任务之后恢复现场并继续执行该任务。在优选的实施例中,可以在内存中保存现场以及从内存恢复现场。
30.例如,对于第一优先类中的跌倒检测算法任务(具有较低优先级),可以在其代码中插入至少一组抢占指令作为抢占点。对于第二优先类中的人形检测算法任务(具有较高优先级),可以不在其中插入抢占点。在执行到跌倒检测算法任务的抢占点处时,npu执行预先被插入到代码中的抢占指令,轮询是否有较后优先类(例如,第二优先类)中的任务等待执行。如果有(例如,第二优先类中的人形检测算法任务等待执行),则暂停执行当前的跌倒检测算法任务、保存现场,并且执行较后优先类中的任务(例如,第二优先类中的人形检测算法任务)。在较后优先类中的等待执行的任务执行完毕之后,npu恢复现场,并且继续执行当前的跌倒检测算法任务。
31.在优选的实施例中,每个优先类中的每个任务中的抢占点的间隔时间至少部分地基于较后优先类中的任务的执行频率来设定。例如,对于第一优先类中的跌倒检测算法任务,其抢占点的间隔时间可以至少部分地基于第二优先类中的人形检测算法任务的执行频率(约每秒30次)而设定为20-25ms。
32.在将多个任务分类为三个以上优先类的实施例中,对于除了最后一个优先类以外的其他优先类中的至少一个任务,可以在其代码中插入至少一组抢占指令作为该任务中的抢占点。换言之,除了对应于最高优先级的一个优先类以外,对于其他优先类中的任务都可以插入抢占点。例如,在将多个任务分类为三个优先类的实施例中,可以对于对应于较低优先级的第一和第二优先类中的至少一个任务插入抢占点。
33.在框108处,预处理结束。
34.在预处理结束后,npu可以开始运行相应的任务。
35.图2示出了根据本公开的至少一个实施例的npu调度方法的运行步骤的流程图。
36.在框201处,npu开始运行。
37.在框202处,npu依次执行第二优先类中的待执行的所有任务。换言之,npu依次执行对应于较高优先级的优先类中的待执行的所有任务。
38.在框204处,npu执行第一优先类中的待执行的一个任务。其中,在该任务的每个抢占点处依次执行较后优先类中的待执行的所有任务。其中,第一优先类中的任务的抢占点在预处理过程中被适当地插入到任务中,并且在npu执行到每个抢占点时轮询并执行较后优先类中待执行的任务。
39.在将多个任务分类为三个以上优先类的实施例中,在框202处,npu可以从最后一个优先类到第二优先类依次执行每个优先类中的待执行的所有任务。换言之,npu可以按照优先级从高到低的顺序依次执行相应优先类中的待执行的所有任务。例如,在将多个任务分类为三个优先类的实施例中,npu可以首先依次执行对应于最高优先级的第三优先类中的待执行的所有任务,然后依次执行对应于较高优先级的第二优先类中的待执行的所有任务。在框204处,类似地,执行第一优先类中的待执行的一个任务。
40.其中,在步骤202和步骤204中,在执行除了最后一个优先类以外的其他优先类中的每个任务时,在该任务的每个抢占点处依次执行较后优先类中的待执行的所有任务。例如,在将多个任务分类为三个优先类的实施例中,npu在步骤202中执行对应于较高优先级的第二优先类中的任务时,在每个抢占点处依次执行对应于最高优先级的第三优先类中的待执行的所有任务。并且,npu在步骤204中执行对应于较低优先级的第一优先类中的任务时,在每个抢占点处首先依次执行对应于最高优先级的第三优先类中的待执行的所有任务,然后依次执行对应于较高优先级的第二优先类中的待执行的所有任务。类似地,每个抢占点在预处理过程中被适当地插入到相应的任务中,并且在npu执行到每个抢占点时轮询并执行较后优先类中待执行的任务。
41.npu循环地执行步骤202和204,直到停止运行。
42.这样,可以以简单的方式在npu上实现多个任务的调度方法,而无须借助于复杂的操作系统和硬件机制(如cpu的情形)。
43.在优选的实施例中,可以利用队列来实现上述调度方法。
44.具体而言,可以由npu和另一个处理器(例如,cpu)共同维护多个队列,每个队列中存储相应优先类中的待执行的任务。其中,npu运行时,另一个处理器将相应优先类中的待执行的任务在相应队列中依次入队,而npu循环地执行以下步骤:将第二队列(对应于第二优先类)中的任务依次出队并执行;将第一队列(对应于第一优先类)中的第一个任务出队并执行,其中在该任务的每个抢占点处将较后队列中的任务依次出队并执行。
45.其中,每个队列可以由多个寄存器构成。
46.在将多个任务分类为三个以上优先类的实施例中,可以类似地利用队列来实现上述调度方法。其中,npu可以循环地执行以下步骤:从最后一个队列到第二队列将队列中的任务依次出队并执行;将第一队列中的第一个任务出队并执行,其中,在执行除了最后一个队列以外的其他队列中的每个任务时,在该任务的每个抢占点处将较后队列中的任务依次出队并执行。
47.图3a-图3i示出了根据本公开的至少一个实施例的npu调度方法的运行步骤的示意图,其中利用队列来实现npu调度方法。
48.在图3a-图3i所示的示意性实施例中,多个任务被分类为三个优先类,分别对应于三个队列。npu 310能够读取这三个队列,并且适当地将队列中的每个任务出队并执行。
49.npu开始运行时,如图3a所示,队列1中依次排列有待执行的任务a1、a2、a3,队列2
中依次排列有待执行的任务b1、b2,队列3中排列有待执行的任务c1。此时,npu首先从最后一个队列到第二队列将队列中的任务依次出队并执行。即,npu首先将队列3中的任务c1出队并执行。这样,队列3中的任务全部出队,队列3为空。
50.之后,npu依次执行第二优先类(对应于队列2)中的任务b1、b2。如图3b所示,npu将队列2中的任务b1出队并执行。之后,如图3c所示,npu将队列2中的任务b2出队并执行。这样,队列2中的任务全部出队,队列2为空。
51.之后,npu执行第一优先类中的待执行的一个任务。如图3d所示,npu将队列1中的任务a1出队并执行。
52.在执行任务a1的过程中,如图3e所示,在任务a1的一个抢占点处,npu轮询队列3和队列2,并且读取到队列2中有新的任务b3等待执行。于是,npu暂停执行任务a1、保存现场,并且将队列2中的任务b3出队并执行。
53.在执行任务b3的过程中,如图3f所示,在任务b3的一个抢占点处,npu轮询队列3,并且读取到队列3中有新的任务c2等待执行。于是,npu暂停执行任务b3、保存现场,并且将队列3中的任务c2出队并执行。
54.在任务c2执行完毕之后,队列3为空。如图3g所示,npu恢复任务b3的运行现场,并且继续执行任务b3。
55.之后,如图3h所示,npu将队列2中的任务b4出队并执行。这样,队列2中的任务全部出队,队列2为空。
56.之后,如图3i所示,npu恢复任务a1的运行现场,并且继续执行任务a1。
57.在任务a1执行完毕之后,npu循环地执行上述步骤。即,npu再次从队列3到队列2将队列中的任务依次出队并执行。
58.根据本公开的方法可以以软件、硬件、软件与硬件的结合等各种适当的方式实现。
59.本公开还涉及一种计算机存储介质,其上存储有可执行指令,该指令在被执行时能够实现以上所述的方法。
60.在说明书及权利要求中的词语“前”、“后”、“顶”、“底”、“之上”、“之下”等,如果存在的话,用于描述性的目的而并不一定用于描述不变的相对位置。应当理解,这样使用的词语在适当的情况下是可互换的,使得在此所描述的本公开的实施例,例如,能够在与在此所示出的或另外描述的那些取向不同的其他取向上操作。
61.如在此所使用的,词语“示例性的”意指“用作示例、实例或说明”,而不是作为将被精确复制的“模型”。在此示例性描述的任意实现方式并不一定要被解释为比其它实现方式优选的或有利的。而且,本公开不受在上述技术领域、背景技术、发明内容或具体实施方式中所给出的任何所表述的或所暗示的理论所限定。
62.如在此所使用的,词语“基本上”意指包含由设计或制造的缺陷、器件或元件的容差、环境影响和/或其它因素所致的任意微小的变化。词语“基本上”还允许由寄生效应、噪声以及可能存在于实际的实现方式中的其它实际考虑因素所致的与完美的或理想的情形之间的差异。
63.另外,前面的描述可能提及了被“连接”或“耦接”在一起的元件或节点或特征。如在此所使用的,除非另外明确说明,“连接”意指一个元件/节点/特征与另一种元件/节点/特征在电学上、机械上、逻辑上或以其它方式直接地连接(或者直接通信)。类似地,除非另
外明确说明,“耦接”意指一个元件/节点/特征可以与另一元件/节点/特征以直接的或间接的方式在机械上、电学上、逻辑上或以其它方式连结以允许相互作用,即使这两个特征可能并没有直接连接也是如此。也就是说,“耦接”意图包含元件或其它特征的直接连结和间接连结,包括利用一个或多个中间元件的连接。
64.另外,仅仅为了参考的目的,还可以在本文中使用“第一”、“第二”等类似术语,并且因而并非意图限定。例如,除非上下文明确指出,否则涉及结构或元件的词语“第一”、“第二”和其它此类数字词语并没有暗示顺序或次序。
65.还应理解,“包括/包含”一词在本文中使用时,说明存在所指出的特征、整体、步骤、操作、单元和/或组件,但是并不排除存在或增加一个或多个其它特征、整体、步骤、操作、单元和/或组件以及/或者它们的组合。
66.在本公开中,术语“提供”从广义上用于涵盖获得对象的所有方式,因此“提供某对象”包括但不限于“购买”、“制备/制造”、“布置/设置”、“安装/装配”、和/或“订购”对象等。
67.本领域技术人员应当意识到,在上述操作之间的边界仅仅是说明性的。多个操作可以结合成单个操作,单个操作可以分布于附加的操作中,并且操作可以在时间上至少部分重叠地执行。而且,另选的实施例可以包括特定操作的多个实例,并且在其他各种实施例中可以改变操作顺序。但是,其它的修改、变化和替换同样是可能的。因此,本说明书和附图应当被看作是说明性的,而非限制性的。
68.虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。在此公开的各实施例可以任意组合,而不脱离本公开的精神和范围。本领域的技术人员还应理解,可以对实施例进行多种修改而不脱离本公开的范围和精神。本公开的范围由所附权利要求来限定。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献