任务调度方法和电子装置与流程

文档序号:37541250发布日期:2024-04-08 13:40阅读:11来源:国知局
任务调度方法和电子装置与流程

本技术实施例涉及计算机,尤其涉及一种任务调度方法和电子装置。


背景技术:

1、随着科学技术的发展,计算机技术得到突飞猛进的提升,其中深度学习领域和并行计算领域成为主流研究方向。在深度学习领域或者并行计算领域中,由于计算机需要处理的数据、以及所要执行的任务数量较大,通常均需要任务调度以提高任务并行速度。

2、当前任务调度中,业界提出采用任务存储(task memory,tm)、数据版本存储(dataversion memory,vm)以及依赖项存储(dependence memory,dm)三种数据结构,来记录数据、数据版本、以及任务之间的相互关系,以实现多任务的管理和执行。另外,在该三种数据结构的基础上,还主要区分了对数据进行操作的生产者(producer)链表以及读取数据的消费者(consumer)链表。也即当某一任务是对数据进行操作时,该任务相对于数据为producer;当某一任务是读取数据时,该任务相对于数据为consumer。然而,采用上述三种数据结构在创建任务和任务结束时,需要在三个数据结构之间来回切换,更新不同的数据结构中的不同域段;此外,由于采用produce链表以及consumer链表,在任务完成时,需要遍历列表,逐个更新任务信息,导致任务不能快速下发;数据结构中由于采用produce链表以及consumer链表,在建立任务关系之前,首先需要判断任务和数据之间的关系(对数据进行操作还是访问数据),依据任务和数据之间的关系来建立任务关系,导致任务建立流程极其复杂,软硬件开销大。

3、由此,在深度学习网络复杂、或者并行计算的任务量巨大的情况下,如何简化任务调度列表,从而提高任务调度效率以及任务执行速度成为需要解决的问题。


技术实现思路

1、本技术提供的任务调度方法和电子装置,可以简化任务调度列表,从而提高任务调度效率以及任务执行速度。为达到上述目的,本技术采用如下技术方案。

2、第一方面,本技术实施例提供一种任务调度方法,该任务调度方法包括:基于多个任务所包括的数据变量、以及所述多个任务中各任务之间对数据变量的依赖关系,创建包括所述多个任务的任务信息表、以及创建对应于所述任务信息表的数据变量表;基于所述任务信息表以及所述数据变量表,将所述多个任务调度给执行单元阵列中的运算器执行;所述任务信息表中记录有所述多个任务中每一个任务的任务信息,所述任务信息包括:所述每一个任务的任务标识、所述每一个任务所依赖的之前任务的数目、以及依赖于所述每一个任务的任务标识,所述依赖关系包括以下至少一项:所采用的数据变量的名称相同、所采用的数据变量的地址空间相重叠;所述数据变量表中记录有数据变量标识、所述多个任务中至少一个任务的任务标识、以及所述至少一个任务对所述数据变量的访问方式,所述访问方式包括改写所述数据变量或者读取所述数据变量。

3、本技术实施例中所述的依赖,如果当前任务为改写数据变量x,则当前任务所依赖的之前任务,即为之前任务中、所有对该数据变量x进行访问的任务,依赖于当前任务的任务,即为当前任务对该数据变量x改写后,后续需要对所改写的数据变量x进行访问的任务;如果当前任务为读取数据变量x,则当前任务所依赖的之前任务,即为之前任务中、对该数据变量x进行改写的任务,依赖于当前任务的任务,即为需要对数据变量x进行改写的任务。

4、本技术实施例提供的任务调度方法,基于多个任务所包括的数据变量、以及多个任务中各任务之间对数据变量的依赖关系,仅需要设置用于记录任务之间依赖关系的任务信息表和用于记录数据和任务之间的依赖关系的数据变量表,从而,与现有技术相比,本技术实施例提供的任务调度方法,简化了数据结构的设计,降低了任务信息表、以及各任务之间依赖关系构建的复杂度,节省了数据结构的存储空间;另外,与现有技术中需要对内存分配和依赖关系进行判断相比,本技术实施例中,由于仅通过多个任务中各任务之间对数据变量的依赖关系进行任务调度,不需要进行内存分配和依赖关系的判断,从而可以提高任务的下发和执行效率。综上,本技术实施例提供的任务调度方法,可以提高任务调度效率。

5、在一种可能的实现方式中,所述多个任务采用多个数据变量,所述多个数据变量中的每一个数据变量对应一个数据变量表;所述创建对应于所述任务信息表的数据变量表,包括:基于所述多个任务中第一任务所采用的第一数据变量,检测是否已创建所述第一数据变量的第一数据变量表;当检测出未创建所述第一数据变量表时,创建所述第一数据变量表,所述第一数据变量表中记录有所述第一数据变量的数据变量标识、所述第一任务的任务标识以及所述第一任务对所述第一数据变量的访问方式。

6、在一种可能的实现方式中,所述每一个任务均对应一个独立的任务信息表,所述每一个任务的任务信息分别记录于相应的任务信息表中;所述创建包括所述多个任务的任务信息表,包括:创建所述第一任务的第一任务信息表,所述第一任务信息表中记录有所述第一任务的任务标识以及所述第一任务所依赖的之前任务的第一数目;其中,所述第一数目为零。

7、在一种可能的实现方式中,所述创建包括所述多个任务的任务信息表,包括:基于所述多个任务中第二任务采用所述第一数据变量,将所述第二任务的任务标识添加至所述第一任务信息表中;创建所述第二任务的第二任务信息表,所述第二任务信息表中记录有所述第二任务的任务标识以及所述第二任务所依赖的之前任务的第二数目;其中,当所述第二任务用于读取所述第一数据变量时,若所述第二任务之前的任务未对所述第一数据变量改写,所述第二数目为0,若所述第二任务之前的任务中,存在至少一个任务对所述第一数据变量改写,所述第二数目为1;当所述第二任务用于改写所述第一数据变量时,所述第二数目与所述第一数据变量表中所记录的之前用于访问所述第一数据变量的任务的数目相同,所述访问包括读取和改写。

8、在一种可能的实现方式中,所述创建对应于所述任务信息表的数据变量表,包括:将所述第二任务的任务标识以及指示读取或改写所述第一数据变量的访问方式添加至所述第一数据变量表中。

9、在一种可能的实现方式中,所述创建对应于所述任务信息表的数据变量表,包括:当所述第二任务用于改写所述第一数据变量时,删除所述第一任务的任务标识以及所述第一任务对所述第一数据变量的访问方式。

10、在一种可能的实现方式中,所述方法还包括:当所述第一任务执行完成后,基于所述第一任务对应的任务信息表所记录的依赖于所述第一任务的第一任务标识,更新所述第一任务标识所对应的任务信息表中依赖之前任务的数目。

11、在一种可能的实现方式中,所述方法还包括:清除所述数据变量表中记录的所述第一任务的任务标识、以及所述第一任务对所述第一数据变量的访问方式。

12、在一种可能的实现方式中,所述基于所述任务信息表以及所述数据变量表,将所述多个任务调度给执行单元阵列中的运算器执行,包括:将所述多个任务中所依赖的之前任务的数目为零的任务,发送给所述执行单元阵列中的运算器执行。

13、第二方面,本技术实施例提供一种电子装置,该电子装置包括任务调度器和执行单元阵列;所述任务调度器用于:基于多个任务所包括的数据变量、以及所述多个任务中各任务之间对数据变量的依赖关系,创建包括所述多个任务的任务信息表、以及创建对应于所述任务信息表的数据变量表;基于所述任务信息表以及所述数据变量表,将所述多个任务下发给所述执行单元阵列;所述执行单元阵列,包括多个运算器,所述多个运算器用于对所述多个任务进行处理;其中,所述任务信息表中记录有所述多个任务中每一个任务的任务信息,所述任务信息包括:所述每一个任务的标识、所述每一个任务所依赖的之前任务的数目、以及依赖于所述每一个任务的任务标识,所述依赖关系包括以下至少一项:所采用的数据变量的名称相同、所采用的数据内存空间相重叠;所述数据变量表中记录有数据变量标识、所述多个任务中至少一个任务的任务标识、以及所述至少一个任务对所述数据变量的访问方式,所述访问方式包括改写所述数据变量或者读取所述数据变量。

14、在一种可能的实现方式中,所述电子装置还包括:存储器,用于存储所述任务信息表和所述数据变量表。

15、在一种可能的实现方式中,所述电子装置还包括控制器,所述控制器用于:生成所述多个任务;将所述多个任务存储至所述存储器,所述多个任务中的每一个任务包括任务标识、程序指令、所采用的数据变量以及所采用的数据变量的地址空间;向所述任务调度器发送指示信息,所述指示信息用于指示已将所述多个任务存储至所述存储器。

16、在一种可能的实现方式中,所述多个任务采用多个数据变量,所述多个数据变量中的每一个变量对应一个数据变量表;当创建对应于所述任务信息表的数据变量表时,所述调度器具体用于:从所述存储器读取所述多个任务中的第一任务,基于所述第一任务所采用的第一数据变量,检测是否已创建所述第一数据变量的第一数据变量表;当检测出未创建所述第一数据变量表时,创建所述第一数据变量表,所述第一数据变量表中记录有所述第一数据变量的标识、所述第一任务的任务标识以及所述第一任务对所述第一数据变量的访问方式。

17、在一种可能的实现方式中,所述每一个任务均对应一个独立的任务信息表,所述每一个任务的任务信息分别记录于相应的任务信息表中;当创建包括所述多个任务的任务信息表时,所述调度器具体用于:创建所述第一任务的第一任务信息表,所述第一任务信息表中记录有所述第一任务的任务标识以及所述第一任务所依赖的之前任务的第一数目;其中,所述第一数目为零。

18、在一种可能的实现方式中,当创建包括所述多个任务的任务信息表时,所述调度器具体用于:从所述存储器读取所述多个任务中的第二任务;基于所述第二任务采用的所述第一数据变量,将所述第二任务的任务标识添加至所述第一任务信息表中;创建所述第二任务的第二任务信息表,所述第二任务信息表中记录有所述第二任务的任务标识以及所述第二任务所依赖的之前任务的第二数目;其中,当所述第二任务用于读取所述第一数据变量时,若所述第二任务之前的任务未对所述第一数据变量改写,所述第二数目为0,若所述第二任务之前的任务中,存在至少一个任务对所述第一数据变量改写,所述第二数目为1;当所述第二任务用于改写所述第一数据变量时,所述第二数目与所述第一数据变量表中所记录的之前用于访问所述第一数据变量的任务的数目相同,所述访问包括读取和改写。

19、在一种可能的实现方式中,当创建对应于所述任务信息表的数据变量表时,所述调度器具体用于:将所述第二任务的任务标识以及指示读取或改写所述第一数据变量的访问方式添加至所述第一数据变量表中。

20、在一种可能的实现方式中,当创建对应于所述任务信息表的数据变量表时,所述调度器具体用于:当所述第二任务用于改写所述第一数据变量时,删除所述第一任务的任务标识以及所述第一任务对所述第一数据变量的访问方式。

21、在一种可能的实现方式中,所述调度器还用于:当所述第一任务执行完成后,基于所述第一任务对应的任务信息表所记录的依赖于所述第一任务的第一任务标识,更新所述第一任务标识所对应的任务信息表中依赖之前任务的数目。

22、在一种可能的实现方式中,所述调度器还用于:清除所述数据变量表中记录的所述第一任务的任务标识、以及所述第一任务对所述第一数据变量的访问方式。

23、在一种可能的实现方式中,所述调度器将所述多个任务下发给所述执行单元阵列具体用于:将所述多个任务中所依赖的之前任务的数目为零的任务,发送给所述执行单元阵列中的运算器执行。

24、第三方面,本技术实施例提供一种装置,所述装置包括存储器和控制器,所述存储器用于存储计算机程序,所述控制器被配置用于调用所述存储器存储的全部或部分计算机程序,执行上述第一方面所述的方法。

25、第四方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储中存储有计算机程序,该计算机程序被控制器执行时用于实现如第一方面所述的方法。

26、第五方面,本技术实施例提供一种计算机程序产品,当所述计算机程序产品被控制器执行时用于实现上述第一方面所述的方法。

27、应当理解的是,本技术的第二至五方面与本技术的第一方面的技术方案一致,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1