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

一种任务调度方法、装置、设备及介质与流程

2022-03-01 18:21:11 来源:中国专利 TAG:


1.本技术涉及计算技术领域,尤其涉及一种任务调度方法、装置、设备以及计算机可读存储介质。


背景技术:

2.随着计算机等智能设备在不同应用领域的深入推广,越来越多的领域特定架构(domain specific architecture,dsa)在不断涌现。基于这些领域特定架构,产生了新的处理引擎。其中,处理引擎是指处理数据的处理器。
3.例如在图像处理领域,基于领域特定架构的处理引擎包括图形处理器(graphical processing unit,gpu)、图像处理器(image processor,ip)等。在数字信号处理领域,基于领域特定架构的处理引擎包括数字信号处理器(digital signal processor,dsp)。在人工智能领域,基于领域特定架构的处理引擎包括神经网络处理器(neural-network processing unit,npu)等。
4.其中,包括两种或两种以上的处理引擎的数据处理系统称之为异构系统。针对该异构系统开发的应用为异构应用。异构应用通常包括至少一个异构应用程序编程接口(application programming interface,api)。异构api具体是接口统一,但在不同处理引擎上有不同的优化实现的api。
5.目前,异构系统在执行异构应用的任务时效率较低。业界亟需提供一种任务调度方法,以提高异构应用的任务的执行效率。


技术实现要素:

6.本技术提供了一种任务调度方法,该方法根据任务和处理引擎的关系,确定与待执行的目标任务对应的目标处理引擎,将目标任务调度到包括上述目标处理引擎的第一从节点,一方面可以提供任务整体的执行效率,另一方面可以减少跨节点调度的次数,降低调度开销。本技术还提供了上述方法对应的装置、设备、计算机可读存储介质以及计算机程序产品。
7.第一方面,本技术提供了一种任务调度方法。具体地,异构系统的主节点获取目标任务,该目标任务包括至少一个异构应用程序编程接口(application programming interface,api)调用,然后主节点可以根据任务与处理引擎的关系,确定与目标任务对应的目标处理引擎,将目标任务调度到包括上述目标处理引擎的第一从节点。
8.一方面,任务与处理引擎的关系能够反映任务与各种处理引擎的亲和性高低,因此,主节点可以根据任务与处理引擎的关系,将目标任务合理地调度至亲和性较高的从节点执行,提高目标任务整体的执行效率。并且,该方法可以避免异构应用的任务被调度至不合适的从节点,导致从节点的资源被长期占用,提高了异构系统中资源的利用率。此外,该方法可以减少跨节点调度异构api调用的次数,降低了调度开销。
9.在一些可能的实现方式中,主节点可以从异构系统中确定多个第二从节点,该第
二从节点是指包括目标处理引擎的从节点,然后主节点可以根据负载均衡策略,从多个第二从节点中确定第一从节点。例如,主节点可以从多个第二从节点中确定负载率小于预设负载率的第二从节点为第一从节点。如此,可以避免任务在某一从节点堆积,导致其他从节点的资源被闲置,一方面提高任务的执行效率,另一方面提高资源的利用率。
10.在一些可能的实现方式中,不同第二从节点可以包括不同数量的目标处理引擎(具体是可用的目标处理引擎)。基于此,主节点还可以在从异构系统中确定多个第二从节点后,根据多个第二从节点中(可用的)目标处理引擎的数量,从多个第二从节点中确定第一从节点。如此,可以实现将目标任务调度至包括目标处理引擎,且目标处理引擎的数量充足的从节点,从而提高任务的并发粒度,进一步提高任务的执行效率。
11.在一些可能的实现方式中,考虑到不同异构api调用在不同处理引擎上具有不同执行效率,目标任务在被调度至第一从节点后,第一从节点还可以确定异构api调用的参数规模值,然后根据异构api调用的参数规模值,确定异构api调用的调度参考信息。然后第一从节点根据调度参考信息,从第一从节点可用的处理引擎中确定执行效率满足预设条件的处理引擎,将异构api调用调度至执行效率满足预设条件的处理引擎。
12.其中,参数规模能够描述调用该异构api所需要的参数的大小。需要说明的是,在本技术实施例中参数的大小并非指参数的数值大小,而是指参数所占用内存或在处理引擎中占用的字节数。基于此,参数规模的值(即参数规模值)可以取值为区间(0, ∞)的任意整数。
13.调度参考信息用于描述异构api调用在至少一种处理引擎上的执行效率。与任务的调度参考信息类似,调度参考信息可以包括执行效率、执行时间和执行效率(执行时间)的排名中的任意一种或多种。其中,调度参考信息的格式具有多样性,例如调度参考信息可以是向量格式,也可以是键值对格式,在此不再一一列举。
14.满足预设条件的处理引擎可以是执行效率最高或者执行效率高于预设效率的处理引擎,本技术实施例对此不作限定。
15.由于第一从节点将异构api调用调度至合适的处理引擎,因而可以提高异构api调用的执行效率,进而提高异构应用的任务的执行效率。而且,将异构api调用分别调度至合适的处理引擎,避免了资源浪费,提高了资源利用率。
16.在一些可能的实现方式中,第一从节点还可以支持跨节点调度异构api调用。具体地,当第一从节点中执行效率满足预设条件的处理引擎不可用时,第一从节点还可以从异构系统中确定第三从节点,该第三从节点可用的处理引擎中包括执行效率满足预设条件的处理引擎。异构api调用可以被调度至第三从节点,第三从节点可以从第三从节点可用的处理引擎中确定执行效率满足预设条件的处理引擎,用于执行异构api调用。
17.由此可以综合利用整个异构系统各从节点的处理引擎,通过将异构api调用调度到异构系统中合适的处理引擎,而不局限于第一从节点自身的处理引擎,可以进一步提高异构api调用的执行效率,从而提高异构应用的执行效率。此外,跨节点调度异构api调用有利于均衡各从节点的负载,提高资源利用率。
18.在一些可能的实现方式中,考虑到第一从节点跨节点调度异构api调用时,还会产生额外的开销,如传输实参的开销,回写结果的开销等等。基于此,第一从节点还可以根据调度开销确定第三从节点。具体地,第一从节点可以从异构系统中确定可用的处理引擎满
足预设条件的多个从节点,然后根据多个从节点的调度开销从多个从节点中确定第三从节点。例如,第一从节点可以从异构系统中确定多个第四从节点。该第四从节点可用的处理引擎的执行效率满足预设条件。然后,第一从节点从多个第四从节点中确定调度开销小于预设开销或者调度开销最小的从节点为第三从节点。
19.如此,既保证了异构api调用能够被调度至合适的处理引擎,又避免了调度开销大幅增加,具有较高可用性。
20.在一些可能的实现方式中,执行效率满足预设条件的处理引擎包括:执行效率最高的处理引擎或执行效率高于预设效率的处理引擎。当多个目标任务对应的执行效率最高的处理引擎是同一种处理引擎,或者多个异构api调用对应的执行效率最高的处理引擎是同一种处理引擎,而这种处理引擎的数量不足时,将一部分目标任务或一部分异构api调用调度至执行效率高于预设效率的处理引擎,如执行效率次高的处理引擎,如此可以避免任务或者异构api调用被阻塞,提高了任务或异构api调用的执行效率。
21.在一些可能的实现方式中,异构系统还可以在每一种处理引擎上分别执行至少一个异构api调用,得到目标任务在每一种处理引擎上的总执行时间,然后根据至少一种处理引擎的标识以及目标任务在至少一种处理引擎上的总执行时间,构造任务与处理引擎的关系。如此可以为任务由主节点调度至从节点提供帮助,具体是帮助主节点选择合适的从节点,将目标任务调度至该从节点,提高任务整体的执行效率。
22.在一些可能的实现方式中,多个从节点中至少有两个从节点为异构单节点异构系统。单节点异构系统是指包括不同种类的处理引擎的单节点所形成的异构系统。
23.异构单节点异构系统是指具有不同结构的单节点异构。例如从节点1为包括处理引擎1、处理引擎2的节点,从节点2为包括处理引擎3、处理引擎4的节点,则节点1、节点2为异构单节点异构系统。
24.如此,可以实现节点内调度异构api调用,或者跨节点调度异构api调用,从而提高异构api调用的执行效率,进而提高任务整体的执行效率。
25.在一些可能的实现方式中,多个从节点中的每个从节点为同构系统,即一个从节点包括一种处理引擎。并且至少有两个从节点的处理引擎的架构不同,例如,从节点1包括cpu这一种处理引擎,从节点2包括gpu这一种处理引擎。
26.如此,可以跨节点调度异构api调用,提高该异构api调用的执行效率。
27.在一些可能的实现方式中,多个从节点为云环境、边缘环境或终端环境中的节点。其中,云环境具体为包括至少一个云计算设备(例如中心服务器)的计算集群。边缘环境具体为包括至少一个边缘计算设备(例如边缘服务器)的计算集群。终端环境包括至少一个终端计算设备。终端计算设备可以简称为终端或终端设备,包括但不限于台式机、笔记本电脑以及智能手机等等。
28.第二方面,本技术提供了一种任务调度装置。所述装置包括:
29.获取模块,用于获取目标任务,目标任务包括至少一个异构应用程序编程接口api调用;
30.确定模块,用于根据任务与处理引擎的关系,确定与目标任务对应的目标处理引擎;
31.调度模块,用于将目标任务调度到第一从节点,第一从节点包括目标处理引擎。
32.在一些可能的实现方式中,确定模块还用于:
33.从异构系统中确定多个第二从节点,该第二从节点包括目标处理引擎;
34.根据负载均衡策略,从多个第二从节点中确定第一从节点。
35.在一些可能的实现方式中,确定模块还用于:
36.从异构系统中确定多个第二从节点,第二从节点包括目标处理引擎;
37.根据至少一个第二从节点中目标处理引擎的数量,从多个第二从节点中确定第一从节点。
38.在一些可能的实现方式中,确定模块还用于:
39.根据异构api调用的参数规模值,确定异构api调用的调度参考信息,调度参考信息用于描述多种处理引擎的执行效率;
40.根据调度参考信息,从第一从节点可用的处理引擎中确定执行效率满足预设条件的处理引擎;
41.调度模块还用于:
42.将异构api调用调度至执行效率满足预设条件的处理引擎。
43.在一些可能的实现方式中,确定模块还用于:
44.当第一从节点中执行效率满足预设条件的处理引擎不可用时,从异构系统中确定第三从节点,第三从节点可用的处理引擎中包括执行效率满足预设条件的处理引擎;
45.从第三从节点可用的处理引擎中确定执行效率满足预设条件的处理引擎,用于执行上述异构api调用。
46.在一些可能的实现方式中,确定模块具体用于:
47.从异构系统中确定可用的处理引擎满足预设条件的多个从节点;
48.根据多个从节点的调度开销,从上述多个从节点中确定第三从节点。
49.在一些可能的实现方式中,执行效率满足预设条件的处理引擎包括:执行效率最高的处理引擎或执行效率高于预设效率的处理引擎。
50.在一些可能的实现方式中,该装置还包括:
51.构造模块,用于在至少一种处理引擎上分别执行至少一个异构api调用,得到目标任务在每一种处理引擎上的总执行时间,根据至少一种处理引擎的标识以及目标任务在至少一种处理引擎上的总执行时间,构造任务与处理引擎的关系。
52.在一些可能的实现方式中,多个从节点中至少有两个从节点为异构单节点异构系统。
53.在一些可能的实现方式中,多个从节点中的每个从节点为同构系统,并且至少有两个从节点的处理引擎的架构不同。
54.在一些可能的实现方式中,多个从节点为云环境、边缘环境或终端环境中的节点。
55.第三方面,本技术提供一种计算设备,所述计算设备包括处理器和存储器。所述处理器、所述存储器进行相互的通信。所述处理器用于执行所述存储器中存储的指令,以使得计算设备执行如第一方面或第一方面的任一种实现方式中的任务调度方法。
56.第四方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,所述指令指示计算设备执行上述第一方面或第一方面的任一种实现方式所述的任务调度方法。
57.第五方面,本技术提供了一种包含指令的计算机程序产品,当其在计算设备上运行时,使得设备执行上述第一方面或第一方面的任一种实现方式所述的任务调度方法。
58.本技术在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
59.为了更清楚地说明本技术实施例的技术方法,下面将对实施例中所需使用的附图作以简单地介绍。
60.图1a为本技术实施例提供的一种任务调度方法的系统架构图;
61.图1b为本技术实施例提供的一种任务调度方法的系统架构图;
62.图2为本技术实施例提供的一种端边云协同的示意图;
63.图3为本技术实施例提供的一种任务调度方法的流程图;
64.图4a为本技术实施例提供的一种关系表的示意图;
65.图4b为本技术实施例提供的一种关系表的示意图;
66.图5为本技术实施例提供的一种任务调度方法的流程图;
67.图6为本技术实施例提供的一种任务调度方法的流程图;
68.图7为本技术实施例提供的一种任务调度装置的结构示意图;
69.图8为本技术实施例提供的一种计算设备的结构示意图。
具体实施方式
70.本技术实施例中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
71.首先对本技术实施例中所涉及到的一些技术术语进行介绍。
72.处理引擎,也称之为硬件引擎,具体是能够进行数据处理操作的单元。本技术并不限定处理引擎的具体类型和形态,凡是能够进行数据处理操作的单元均可以作为处理引擎。在一些示例中,处理引擎可以包括中央处理器(central processing unit,cpu)。
73.进一步地,处理引擎还可以包括基于领域特定架构(domain specific architecture,dsa)的处理单元。例如,处理引擎还可以包括图形处理器(graphical processing unit,gpu)、图像处理器(image processor,ip)、数字信号处理器(digital signal processor,dsp)、神经网络处理器(neural-network processing unit,npu)和现场可编程逻辑门阵列(field programmable gate array,fpga)中的任意一种或多种。
74.异构系统是包括多个不同类型处理引擎的数据处理系统。具体地,多个不同类型处理引擎可以包括至少一个cpu,其余处理引擎可以为与cpu类型不同的处理引擎。例如,其余处理引擎可以包括下列的部分或全部:gpu、ip、dsp、npu、或fpga。当然,在一些实施例中,其余处理引擎也可以包括cpu。
75.异构系统具体可以是多节点的异构系统。多节点的异构系统是指部署在多个计算节点上的异构系统。在一些实施例中,异构系统可以分布式地部署在多个计算节点。进一步地,多个计算节点可以形成异构集群。异构集群包括一个主节点和多个从节点。
76.针对上述异构系统开发的应用为异构应用。异构应用通常包括至少一个异构应用程序编程接口(application programming interface,api)调用。其中,异构api具体是接口统一,但在不同处理引擎上有不同的优化实现的api。
77.异构应用的任务(task)也可以称为异构应用的作业(job),具体是用户需要异构系统实现某个功能时要求该异构系统所做工作的集合。其中,异构系统所做工作包括执行异构应用。
78.目前,异构系统的主节点通过负载均衡策略将异构应用的任务调度至负载相对较小的从节点,由该从节点执行上述异构应用的任务。由于并未考虑异构应用自身的特性,导致异构应用的任务可能被调度至不适合的从节点上,降低了任务的执行效率。如果将该异构应用的任务由当前从节点再调度至其他从节点,则会产生额外的开销。
79.有鉴于此,本技术实施例提供了一种任务调度方法。具体地,异构系统的主节点获取包括至少一个异构api调用的目标任务。然后主节点可以根据任务与处理引擎的关系,确定与目标任务对应的目标处理引擎,接着主节点将目标任务调度到包括上述目标处理引擎的第一从节点,以便由第一从节点执行目标任务。
80.一方面,任务与处理引擎的关系能够反映任务与各种处理引擎的亲和性高低,因此,主节点可以根据任务与处理引擎的关系,将目标任务合理地调度至亲和性较高的从节点执行,提高目标任务整体的执行效率。并且,该方法可以避免目标任务被调度至不合适的从节点,导致从节点的资源被长期占用,提高了异构系统中资源的利用率。此外,该方法可以减少跨节点调度异构api调用的次数,降低了调度开销。
81.为了使得本技术的技术方案更加清楚、易于理解,下面结合附图对本技术实施例提供的任务调度方法的系统架构进行介绍。
82.参见图1a所示的系统架构图,异构系统100包括一个主节点102和多个从节点104。其中,多个从节点104中至少有两个从节点104为异构单节点异构系统。其中,单节点异构系统是指包括多种处理引擎的单节点。基于此,多个从节点104中至少有两个从节点104为不同结构的单节点异构系统。
83.在图1a所示实施例中,一个从节点104包括处理引擎11、处理引擎12
……
处理引擎1n,另有一个从节点包括处理引擎21、处理引擎22
……
处理引擎2n。其中,n为正整数。处理引擎11、处理引擎12
……
处理引擎1n与处理引擎21、处理引擎22
……
处理引擎2n中至少有一个处理引擎是不同种类的。
84.该异构系统100包括两个以上的从节点104时,其他从节点104可以包括处理引擎11、处理引擎12
……
处理引擎1n和/或处理引擎21、处理引擎22
……
处理引擎2n,也可以包括其他种类的处理引擎。
85.需要说明的是,图1a是以各从节点104包括的处理引擎的种类数均为n进行示例说明的,在一些实施例中,不同从节点104包括的处理引擎的种类数也可以不同。例如一个从节点104可以包括n种处理引擎,另一个从节点104可以包括m种处理引擎,m为正整数。
86.具体地,主节点102获取目标任务,根据任务与处理引擎的关系,确定与目标任务对应的目标处理引擎,然后将目标任务调度到包括上述目标处理引擎的第一从节点。第一从节点可以选择执行效率满足预设条件的处理引擎,用于执行上述目标任务包括的至少一个异构api调用。
87.在一些可能的实现方式中,多个从节点104中的每个从节点104为同构系统。并且,至少有两个从节点104的处理引擎的架构不同。如图1b所示,一个从节点104的处理引擎均为处理引擎1,另一个从节点104的处理引擎均为处理引擎2。当异构系统还包括其他从节点104时,其他从节点104的处理引擎可以均为处理引擎1,或者处理引擎2,当然,其他从节点104的处理引擎也可以是除处理引擎1、处理引擎2以外的、其他种类的处理引擎。
88.在图1b的场景中,主节点102获取目标任务,根据任务与处理引擎的关系,确定与目标任务对应的目标处理引擎,然后主节点102将目标任务调度到包括上述目标处理引擎的第一从节点。第一节点可以选择执行效率满足预设条件的处理引擎,用于执行上述目标任务包括的至少一个异构api调用。
89.需要说明的是,上述多个从节点104可以是如图2所示的云环境、边缘环境或终端环境中的节点。其中,云环境具体为包括至少一个云计算设备(例如中心服务器)的计算集群。边缘环境具体为包括至少一个边缘计算设备(例如边缘服务器)的计算集群。终端环境包括至少一个终端计算设备。终端计算设备可以简称为终端或终端设备,包括但不限于台式、笔记本电脑以及智能手机等等。
90.以上对任务调度方法的系统架构进行详细说明。接下来,结合附图对本技术实施例提供的任务调度方法进行详细说明。
91.参见图3所示的任务调度方法的流程图,该方法包括:
92.s302:异构系统100的主节点102获取目标任务。
93.主节点102可以维护一个任务队列,该任务队列存储有至少一个用户提交的任务。主节点102可以根据加入该任务队列的时间,从任务队列中取出至少一个任务,从而获得目标任务。
94.具体地,主节点102可以从任务队列中取出最先加入该任务队列的任务,获得目标任务。在一些实施例中,主节点102也可以从任务队列中取出加入该任务队列的前q个,获得目标任务。其中,q为正整数。
95.s304:主节点102根据任务与处理引擎的关系,确定与目标任务对应的目标处理引擎。
96.任务与处理引擎的关系用于描述任务在至少一种处理引擎上的执行效率。执行效率是指单位时间内执行任务的工作量。执行效率可以根据任务的执行时间确定。假设执行任务的工作量为1,则执行效率为执行时间的倒数。
97.在一些实施例中,任务在处理引擎上的执行效率还可以通过任务在处理引擎上的执行时间进行表征。具体地,任务在处理引擎上的执行时间越短,则表明任务在该处理引擎上的执行效率越高,任务在处理引擎上的执行时间越长,则表明任务在该处理引擎上的执行效率越低。
98.进一步地,任务在处理引擎上的执行效率还可以通过排名进行表征。具体地,任务在处理引擎上的执行时间经过排序,可以得到任务在各处理引擎上的执行效率的排名。该排名可以用于表征处理引擎的调度优先级。
99.基于此,任务与处理引擎的关系可以包括任务的标识与该任务的调度参考信息。该调度参考信息可以是任务在至少一种处理引擎上的执行效率、任务在至少一种处理引擎上的执行时间、任务在至少一种处理引擎上执行时间(执行效率)的排名中的一种或多种。
100.任务与处理引擎的关系可以通过关系表、关系文本和关系图中的任意一种或多种呈现。
101.其中,关系表的每一行可以代表一个任务的调度参考信息。在一些实施例中,如图4a所示,关系表的每一行可以代表一个任务在不同处理引擎上的执行效率的排名。在另一些实施例中,如图4b所示,关系表的每一行可以代表一个任务在不同处理引擎上的执行时间。当然,关系表的每一行也可以代表一个任务在不同处理引擎上的执行效率。需要说明的是,关系表也可以通过每一列代表一个任务的调度参考信息。
102.上述调度参考信息可以是向量格式,如图4a所示,调度参考信息可以是调度优先向量。在该示例中,调度优先向量的每个元素的元素值表征任务在一种处理引擎上执行效率的排名,也即任务在该处理引擎上的调度优先级。
103.当然,上述调度参考信息也可以是键值对格式,如4b所示,调度参考信息可以是键值对的集合。其中,键值对可以表示为(key,value)。其中,key用于表示处理引擎,value用于表示该处理引擎的执行时间、执行效率或者执行效率的排名。图4b以value表示执行时间进行示例说明。每个键值对分别对应一种处理引擎以及任务在该处理引擎上的执行时间。键值对的集合中各键值对可以是无序的,也可以是有序的,例如可以按照执行时间排序,如此有助于提高查找满足预设条件的处理引擎的效率。
104.在另一些实施例中,关系文本中存储有任务的标识以及该任务的调度参考信息。其中,关系文本可以是js对象简谱(java script object notation,json)格式,也可以是可扩展标记语言(extensible markup language,xml)格式,或者是普通文本(text,txt)格式,本技术实施例对此不作限定。
105.关系图中也可以存储任务的标识以及该任务的调度参考信息。具体地,每个任务可以作为关系图的一个节点,该任务的调度参考信息可以作为关系图的一条边。其中,调度参考信息可以为任务在至少一种处理引擎上的执行效率、执行效率的排名和执行时间的一种或多种。由此实现存储任务与处理引擎的关系。
106.上述任务与处理引擎的关系可以通过任务以及任务的调度参考信息构建得到。具体地,异构系统在至少一种处理引擎上分别执行目标任务包括的至少一个异构api调用,得到目标任务在每一种处理引擎上的总执行时间,该总执行时间可以作为任务的调度参考信息,然后根据至少一种处理引擎的标识以及目标任务在至少一种处理引擎上的总执行时间,构造任务与处理引擎的关系。
107.主节点102可以通过查询上述关系表、关系文本或者关系图的方式,确定与目标任务对应的目标处理引擎。其中,与目标任务对应的目标处理引擎可以是目标任务的执行效率最高的处理引擎,或者目标任务的执行效率高于预设效率的处理引擎。本技术实施例对此不作限定。
108.s306:主节点102将目标任务调度到第一从节点。
109.第一从节点包括上述目标处理引擎。具体地,主节点102可以从多个从节点104中筛选出包括目标处理引擎的从节点104,然后根据该从节点104确定第一从节点,将目标任务调度到第一从节点,由第一从节点执行目标任务。
110.当包括目标处理引擎的从节点104为一个时,主节点102可以直接将该从节点104确定为第一从节点,并将目标任务调度至该第一从节点。当包括目标处理引擎的从节点104
为多个时,主节点102还可以从多个从节点104中确定第一从节点,将目标任务调度至该第一从节点。
111.在一些可能的实现方式中,主节点102可以从异构系统中确定多个第二从节点,该第二从节点是指包括目标处理引擎的从节点104,然后主节点102可以根据负载均衡策略,从多个第二从节点中确定第一从节点。例如,主节点102可以从多个第二从节点中确定负载率小于预设负载率的第二从节点为第一从节点。如此,可以避免任务在某一从节点104堆积,导致其他从节点104的资源被闲置,一方面提高任务的执行效率,另一方面提高资源的利用率。
112.在另一些可能的实现方式中,不同第二从节点可以包括不同数量的目标处理引擎(具体可以是可用的目标处理引擎)。基于此,主节点102在从异构系统中确定多个第二从节点后,可以根据多个第二从节点中(可用的)目标处理引擎的数量,从多个第二从节点中确定第一从节点。如此,可以实现将目标任务调度至包括目标处理引擎,且目标处理引擎的数量充足的从节点104,从而提高任务的并发粒度,进一步提高任务的执行效率。
113.主节点102和每个从节点104均维护有各自的任务队列。主节点102将目标任务从主节点102的任务队列中移出,然后将其添加至第一从节点的任务队列,如此实现将目标任务调度到第一从节点。
114.基于上述内容描述,本技术实施例提供了一种任务调度方法。在该方法中,异构系统100的主节点102获取目标任务,然后根据任务与处理引擎的关系,确定与目标任务对应的目标处理引擎,接着主节点将目标任务调度到包括上述目标处理引擎的第一从节点,以便由第一从节点执行目标任务。一方面,任务与处理引擎的关系可以反映任务与各种处理引擎的亲和性高低,如此主节点102可以根据上述关系将目标任务合理地调度至亲和性较高的从节点104,从而提高目标任务整体的执行效率。并且,该方法可以避免目标任务被调度至不合适的从节点104,导致从节点104的资源被长期占用,提高了异构系统100中资源的利用率。
115.在图3所示实施例中,主节点102将目标任务调度至合理的从节点104的关键即在于任务与处理引擎的关系。基于此,本技术实施例还提供了构建任务与处理引擎的关系的具体实现方式。
116.参见图5所示的构建任务与处理引擎的关系的的流程示意图,如图5所示,异构系统100包括n种处理引擎。对于包括至少一个异构api调用的目标任务,在每一种处理引擎上分别执行该目标任务,得到目标任务在每一种处理引擎上的总执行时间,基于处理引擎的标识以及在该处理引擎上的总执行时间可以构建任务与处理引擎的关系。
117.在一些可能的实现方式中,构建任务与处理引擎的关系的过程可以在配备有上述n种处理引擎的单节点异构系统上实现,也可以在异构系统100中实现。为了便于理解,本技术实施例以在单节点异构系统上构建特征集进行示例说明。
118.在该示例中,调度处理引擎如host cpu将目标任务在每一种处理引擎上的总执行时间可以初始化为0,记作sum[1:n]={0,0,

0}。然后host cpu将该目标任务调度至单节点异构系统的每一种处理引擎。
[0119]
目标任务包括至少一个异构api调用。host cpu判断当前目标任务包括的异构api调用是否都已经处理完毕。若否,则对当前异构api调用分别采用每一个处理引擎(er)执
行,将该异构api调用的执行时间(ter)累加到对应处理引擎的总执行时间,即令sum[r] =ter。sum[r]用于表征处理引擎er的总执行时间。然后返回判断当前目标任务包括的异构api调用是否都已经处理完毕的步骤。若是,则根据处理引擎的标识和目标任务在处理引擎上的总执行时间形成键值对,例如生成(gpu,98),接着将键值对按照总执行时间由小到大(优先级由高到低)的顺序排序,由此任务与处理引擎的关系。
[0120]
图3所示实施例主要描述了将目标任务调度至从节点104的具体实现,在目标任务被调度至第一从节点后,第一从节点执行上述目标任务。其中,目标任务包括至少一个异构api调用。
[0121]
考虑到不同异构api调用在不同处理引擎上具有不同执行效率,第一从节点还可以确定异构api调用的参数规模值,然后根据异构api调用的参数规模值,确定异构api调用的调度参考信息。
[0122]
参数规模能够描述调用该异构api所需要的参数的大小。需要说明的是,在本技术实施例中参数的大小并非指参数的数值大小,而是指参数所占用内存或在处理引擎中占用的字节数。基于此,参数规模的值(即参数规模值)可以取值为区间(0, ∞)的任意整数。
[0123]
调度参考信息用于描述异构api调用在至少一种处理引擎上的执行效率。与任务的调度参考信息类似,调度参考信息可以包括执行效率、执行时间和执行效率(执行时间)的排名中的任意一种或多种。其中,调度参考信息的格式具有多样性,例如调度参考信息可以是向量格式,也可以是键值对格式,具体可以参见任务的调度参考信息的相关内容描述,在此不再赘述。
[0124]
第一从节点可以根据异构api调用的标识(例如api id)以及参数规模值,结合预先构建的参数规模与处理引擎的关系,确定异构api调用的调度参考信息。其中,预先构建的参数规模与处理引擎的关系可以存储在处理引擎选择表,第一从节点可以根据api id以及参数规模值查询处理引擎选择表,确定异构api调用的调度参考信息,如调度优先向量。
[0125]
接着,第一从节点可以根据调度参考信息(例如调度优先向量),从第一从节点可用的处理引擎中确定执行效率满足预设条件的处理引擎。接着第一从节点将异构api调用调度至对应的处理引擎。
[0126]
由于第一从节点将异构api调用调度至合适的处理引擎,因而可以提高异构api调用的执行效率,进而提高异构应用的任务的执行效率。而且,将异构api调用分别调度至合适的处理引擎,避免了资源浪费,提高了资源利用率。
[0127]
在一些可能的实现方式中,第一从节点还支持跨节点调度异构api调用。具体地,当第一从节点中执行效率满足预设条件的处理引擎不可用时,第一从节点还可以从异构系统中确定第三从节点,该第三从节点可用的处理引擎中包括执行效率满足预设条件的处理引擎。异构api调用可以被调度至第三从节点,第三从节点可以从第三从节点可用的处理引擎中确定执行效率满足预设条件的处理引擎,将该异构api调用调度至该处理引擎,由该处理引擎执行异构api调用。
[0128]
需要说明的是,第一从节点跨节点调度异构api调用时,还会产生额外的开销,如传输实参的开销,回写结果的开销等等。基于此,第一从节点还可以根据调度开销确定第三从节点。具体地,第一从节点可以从异构系统中确定可用的处理引擎满足预设条件的多个从节点,然后根据多个从节点的调度开销从多个从节点中确定第三从节点。例如,第一从节
点可以从异构系统中确定多个第四从节点。该第四从节点可用的处理引擎的执行效率满足预设条件。然后,第一从节点从多个第四从节点中确定调度开销小于预设开销或者调度开销最小的从节点为第三从节点。
[0129]
接下来,结合附图对本技术实施例提供的层次式调度方法进行详细说明。
[0130]
参见图6,主节点和从节点各自维护异构应用任务队列。异构应用任务队列用于存储异构应用的任务。主节点主要负责将异构应用的任务调度到从节点。从节点负责执行调度到本节点上的异构应用的任务。其中,主节点根据任务与处理引擎的关系将异构应用的任务(具体为目标任务)调度到合适的从节点。从节点在执行目标任务时,利用本节点内的处理引擎执行目标任务所包括的异构api调用。当本节点内满足预设条件的处理引擎不可用时,将上述异构api调用调度至其他节点执行。
[0131]
具体地,主节点通过如下处理逻辑,将目标任务调度到从节点:
[0132]
主节点检测主节点的异构应用任务队列。当该异构应用任务队列不为空时,将主节点的异构应用任务队列中的第一个任务(记作任务t)移出队列,根据任务与处理引擎的关系确定包括目标处理引擎的从节点n,将任务t加入从节点n的异构应用任务队列。
[0133]
进一步地,主节点通过如下处理逻辑平衡从节点的负载:
[0134]
主节点检测到从节点m的异构应用任务队列为空时,在其他异构应用任务队列较满的从节点中找到含有可调度到从节点m的任务t的从节点n,将任务t从上述从节点n的异构应用任务队列中移出,将任务t加入从节点m的异构应用任务队列。
[0135]
从节点n主要通过如下处理逻辑,执行任务:
[0136]
从节点n的异构应用任务队列不为空时,从节点n将该从节点n的异构应用任务队列中的第一个任务(具体为任务t)移出队列,向主节点上报任务t的状态变化,具体是由等待状态变为执行状态,从节点n在本单节点异构系统上执行任务t。在执行完毕后,从节点n还可以向主节点上报任务t的状态变化,具体是由执行状态变为完成状态。
[0137]
进一步地,如果本从节点n中满足预设条件的处理引擎不可用,则从节点n向主节点发送查询请求,请求查询满足预设条件的处理引擎可用且执行当前异构api调用开销小于预设开销的从节点。从节点n接收到主节点返回的查询响应。查询响应中携带有主节点查询到的、从节点m的标识。从节点n根据从节点m的标识,向从节点m发送调度请求,以请求将异构api调用调度到从节点m。
[0138]
上文结合图1至图6对本技术实施例提供的任务调度方法进行了详细介绍,下面将结合附图对本技术实施例提供的装置、设备进行介绍。
[0139]
参见图7所示的任务调度装置的结构示意图,该装置700包括:
[0140]
获取模块702,用于获取目标任务,目标任务包括至少一个异构应用程序编程接口api调用;
[0141]
确定模块704,用于根据任务与处理引擎的关系,确定与目标任务对应的目标处理引擎;
[0142]
调度模块706,用于将目标任务调度到第一从节点,第一从节点包括目标处理引擎。
[0143]
在一些可能的实现方式中,确定模块704还用于:
[0144]
从异构系统中确定多个第二从节点,该第二从节点包括目标处理引擎;
[0145]
根据负载均衡策略,从多个第二从节点中确定第一从节点。
[0146]
在一些可能的实现方式中,确定模块704还用于:
[0147]
从异构系统中确定多个第二从节点,第二从节点包括目标处理引擎;
[0148]
根据至少一个第二从节点中目标处理引擎的数量,从多个第二从节点中确定第一从节点。
[0149]
在一些可能的实现方式中,确定模块704还用于:
[0150]
根据异构api调用的参数规模值,确定异构api调用的调度参考信息,调度参考信息用于描述多种处理引擎的执行效率;
[0151]
根据调度参考信息,从第一从节点可用的处理引擎中确定执行效率满足预设条件的处理引擎;
[0152]
调度模块706还用于:
[0153]
将异构api调用调度至执行效率满足预设条件的处理引擎。
[0154]
在一些可能的实现方式中,确定模块704还用于:
[0155]
当第一从节点中执行效率满足预设条件的处理引擎不可用时,从异构系统中确定第三从节点,第三从节点可用的处理引擎中包括执行效率满足预设条件的处理引擎;
[0156]
从第三从节点可用的处理引擎中确定执行效率满足预设条件的处理引擎,用于执行上述异构api调用。
[0157]
在一些可能的实现方式中,确定模块704具体用于:
[0158]
从异构系统中确定可用的处理引擎满足预设条件的多个从节点;
[0159]
根据多个从节点的调度开销,从上述多个从节点中确定第三从节点。
[0160]
在一些可能的实现方式中,执行效率满足预设条件的处理引擎包括:执行效率最高的处理引擎或执行效率高于预设效率的处理引擎。
[0161]
在一些可能的实现方式中,该装置700还包括:
[0162]
构造模块,用于在每一种处理引擎上分别执行至少一个异构api调用,得到目标任务在每一种处理引擎上的总执行时间,根据至少一种处理引擎的标识以及目标任务在至少一种处理引擎上的总执行时间,构造任务与处理引擎的关系。
[0163]
在一些可能的实现方式中,多个从节点中至少有两个从节点为异构单节点异构系统。
[0164]
在一些可能的实现方式中,多个从节点中的每个从节点为同构系统,并且至少有两个从节点的处理引擎的架构不同。
[0165]
在一些可能的实现方式中,多个从节点为云环境、边缘环境或终端环境中的节点。
[0166]
根据本技术实施例的任务调度装置700可对应于执行本技术实施例中描述的方法,并且任务调度装置700的各个模块/单元的上述和其它操作和/或功能分别为了实现图3所示实施例中的各个方法的相应流程,为了简洁,在此不再赘述。
[0167]
本技术实施例还提供了一种计算设备800。该计算设备800可以是笔记本电脑、台式机等端侧设备,也可以是云环境中的云计算设备,例如中心云中的中心服务器,或者边缘云中的边缘服务器。该计算设备800具体用于实现如图7所示实施例中任务调度装置700的功能。
[0168]
图8提供了一种计算设备800的结构示意图,如图8所示,计算设备800包括总线
801、处理器802、通信接口803和存储器804。处理器802、存储器804和通信接口803之间通过总线801通信。
[0169]
总线801可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0170]
处理器802可以为中央处理器(central processing unit,cpu)、图形处理器(graphics processing unit,gpu)、微处理器(micro processor,mp)或者数字信号处理器(digital signal processor,dsp)等处理器中的任意一种或多种。
[0171]
通信接口803用于与外部通信。例如,获取目标任务,或者获取任务与处理引擎的关系等等。
[0172]
存储器804可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,ram)。存储器804还可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,rom),快闪存储器,机械硬盘(hard disk drive,hdd)或固态硬盘(solid state drive,ssd)。
[0173]
存储器804中存储有可执行代码,处理器802执行该可执行代码以执行前述任务调度方法。具体地,在实现图7所示实施例的情况下,且图7实施例中所描述的任务调度装置700的各模块为通过软件实现的情况下,执行图7中各模块功能所需的软件或程序代码存储在存储器804中。处理器802执行存储器804中存储的程序代码,以执行图3所示实施例中的任务调度方法。
[0174]
本技术实施例还提供了一种计算机可读存储介质。所述计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,所述指令指示计算设备执行上述应用于任务调度装置700的任务调度方法。
[0175]
本技术实施例还提供了一种计算机程序产品。所述计算机程序产品包括一个或多个计算机指令。在计算设备上加载和执行所述计算机指令时,全部或部分地产生按照本技术实施例所述的流程或功能。
[0176]
所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机或数据中心进行传输。
[0177]
所述计算机程序产品可以为一个软件安装包,在需要使用前述任务调度方法的任一方法的情况下,可以下载该计算机程序产品并在计算设备上执行该计算机程序产品。
[0178]
上述各个附图对应的流程或结构的描述各有侧重,某个流程或结构中没有详述的部分,可以参见其他流程或结构的相关描述。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献