CN114911586A - 任务调度方法、装置及系统 - Google Patents
任务调度方法、装置及系统 Download PDFInfo
- Publication number
- CN114911586A CN114911586A CN202110167884.XA CN202110167884A CN114911586A CN 114911586 A CN114911586 A CN 114911586A CN 202110167884 A CN202110167884 A CN 202110167884A CN 114911586 A CN114911586 A CN 114911586A
- Authority
- CN
- China
- Prior art keywords
- target
- task
- scheduling
- scheduler
- target task
- 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 124
- 238000012545 processing Methods 0.000 claims description 23
- 230000001360 synchronised effect Effects 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 15
- 230000001133 acceleration Effects 0.000 description 57
- 238000007726 management method Methods 0.000 description 37
- 238000010586 diagram Methods 0.000 description 17
- 239000011159 matrix material Substances 0.000 description 12
- 230000003044 adaptive effect Effects 0.000 description 11
- 239000003795 chemical substances by application Substances 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 208000025174 PANDAS Diseases 0.000 description 2
- 208000021155 Paediatric autoimmune neuropsychiatric disorders associated with streptococcal infection Diseases 0.000 description 2
- 240000004718 Panda Species 0.000 description 2
- 235000016496 Panda oleosa Nutrition 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- -1 i.e. Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
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
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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]
-
- 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
- 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/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Multi Processors (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本申请提供了一种任务调度方法、装置及系统,属于计算机技术领域。本申请提供的方案中,目标计算节点能够获取到目标任务的中间表示和运行时插件。由于该中间表示是与处理器的芯片架构无关的代码,因此目标计算节点可以通过运行时插件将该中间表示编译为目标芯片架构的可执行代码,并在目标芯片架构的处理器中运行该可执行代码。相应的,异构集群中的调度器在调度目标任务时,不会受到该目标任务中已编译的可执行代码的架构的限制,而是可以基于异构集群中各计算节点的资源使用情况,灵活地确定用于执行该目标任务的计算节点。由此,可以确保各计算节点的负载较为均衡,有效提高异构集群的资源利用率。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种任务调度方法、装置及系统。
背景技术
随着芯片技术的快速发展,芯片架构(也可以称为处理器架构)的类型越来越丰富。例如,常见的不同芯片架构的处理器包括:支持通用计算的中央处理器(centralprocessing unit,CPU)、支持图像渲染和高性能计算的图形处理器(graphics processingunit,GPU),以及支持神经网络计算的神经网络处理器(neural-network processingunit,NPU)等。其中,CPU的芯片架构还可以进一步划分为X86架构和进阶精简指令集机器(advanced RISC machine,AMR)架构等。
异构集群是指由不同芯片架构的计算节点所组成的集群,例如异构集群中的部分计算节点的处理器为CPU,部分计算节点的处理器则为GPU或NPU。由于计算节点中的处理器仅能够运行与其芯片架构类型相同的可执行代码,因此异构集群中的调度器在调度任务时,需要基于任务的可执行代码的架构,将该任务调度至处理器的芯片架构与该可执行代码的架构相匹配的计算节点。
但是,由于异构集群接收到的大量任务所采用的可执行代码的架构可能是不均衡的,因此基于上述任务调度方式,可能会导致异构集群中各计算节点的负载不均衡,异构集群的资源利用率较低。
发明内容
本申请提供了一种资源调度方法、装置及系统,可以解决异构集群的资源利用率较低的技术问题,技术方案如下:
一方面,提供了一种任务调度方法,应用于异构集群中的目标计算节点,该异构集群包括调度器和多个计算节点,该多个计算节点中至少两个计算节点的芯片架构不同,该目标计算节点属于该多个计算节点;该方法包括:接收该调度器发送的针对目标任务的调度指令,并获取该目标任务的中间表示以及该目标任务的运行时插件,基于该调度指令,通过该运行时插件将该中间表示编译为目标芯片架构的可执行代码,并通过该运行时插件在该目标芯片架构的处理器中运行该可执行代码;其中,该中间表示是对该目标任务的源代码进行编译得到的与芯片架构无关的代码,该目标计算节点包括该目标芯片架构的处理器。
由于该中间表示是与处理器的芯片架构无关的代码,因此目标计算节点可以通过运行时插件将该中间表示编译为目标芯片架构的可执行代码,并在目标芯片架构的处理器中运行该可执行代码。相应的,异构集群中的调度器在调度目标任务时,不会受到该目标任务中已编译的可执行代码的架构的限制,而是可以基于异构集群中各计算节点的资源使用情况,灵活地确定用于执行该目标任务的计算节点。由此,可以确保各计算节点的负载较为均衡,有效提高异构集群的资源利用率。
可选地,目标计算节点获取该目标任务的中间表示以及运行时插件的过程可以包括:基于该调度指令,从该异构集群的文件管理器中获取该目标任务的中间表示以及运行时插件;或者,接收该调度器发送的该目标任务的中间表示以及运行时插件。
由于目标任务的中间表示和运行时插件的数据量相对较大,因此可以通过异构集群中的文件管理器来存储该中间表示和运行时插件,由此能够降低对调度器的存储性能的要求。并且,由于调度器无需转发中间表示和运行时插件,因此可以避免对其调度性能造成影响。
或者,也可以直接由调度器来转发该中间表示和运行时插件,从而无需在异构集群中额外设置文件管理器,以简化该异构集群的结构,降低异构集群的部署成本。
可选地,该方法还可以包括:接收该调度器发送的该目标芯片架构的架构标识;相应的,通过该运行时插件将该中间表示编译为目标芯片架构的可执行代码的过程可以包括:基于该调度器发送的该目标芯片架构的架构标识,通过该运行时插件将该中间表示编译为目标芯片架构的可执行代码。
由于目标计算节点可以包括多种不同芯片架构的处理器,因此调度器还可以向目标计算节点发送该目标芯片架构的架构标识,以便该目标计算节点能够确定该中间表示所需编译成的可执行代码的架构。
可选地,该方法还可以包括:获取该目标任务的输入数据;通过该运行时插件在该目标芯片架构的处理器中运行该可执行代码的过程可以包括:通过该运行时插件将该输入数据作为可执行代码的输入,在该目标芯片架构的处理器中运行该可执行代码,得到该可执行代码的运行结果;该方法还可以包括:向该调度器发送该运行结果。
该调度器进而可以将该运行结果发送至提供该目标任务的主机,以便主机对该运行结果进行后续处理。例如,主机可以对多个计算节点提供的运行结果进行归约处理。
可选地,该目标计算节点获取该目标任务的输入数据的过程可以包括:基于该调度指令,从该异构集群的文件管理器中获取该目标任务的输入数据;或者,接收该调度器发送的该目标任务的输入数据。
由于输入数据的数据量相对较大,因此可以通过文件管理器来存储该输入数据,由此能够降低对调度器的存储性能的要求。或者,也可以直接由调度器来转发该输入数据,从而无需在异构集群中额外设置文件管理器,以简化该异构集群的结构,降低异构集群的部署成本。
另一方面,提供了一种任务调度方法,应用于异构集群中的调度器,该异构集群还包括多个计算节点,该多个计算节点中至少两个计算节点的芯片架构不同;该方法包括:接收待调度的目标任务的调度需求信息,该调度需求信息包括目标任务的资源需求,以及目标任务支持的至少两种芯片架构;基于该调度需求信息,从多个计算节点中确定目标计算节点,该目标计算节点中目标芯片架构的处理器的空闲资源量满足该目标任务的资源需求,且该目标芯片架构属于该至少两种芯片架构;向该目标计算节点发送针对目标任务的调度指令,该调度指令用于指示该目标计算节点通过该目标任务的运行时插件,将该目标任务的中间表示编译为目标芯片架构的可执行代码,并在该目标芯片架构的处理器中运行该可执行代码,其中,该中间表示是对该目标任务的源代码进行编译得到的与芯片架构无关的代码,。
可选地,该调度需求信息还可以包括:该至少两种芯片架构的优先级;相应的,该调度器基于该调度需求信息,从该多个计算节点中确定目标计算节点的过程可以包括:按照该至少两种芯片架构的优先级由高到低的顺序,依次检测该多个计算节点中对应芯片架构的处理器的空闲资源量是否满足该资源需求;若检测到目标芯片架构的处理器的空闲资源量满足该资源需求,则将包含该目标芯片架构的处理器的一个计算节点确定为目标计算节点。
由于不同芯片架构的处理器所擅长处理的任务的类型不同,因此可以在调度需求信息中限定该至少两种芯片架构的优先级,且其中优先级越高的芯片架构越适于处理该目标任务。由此,调度器基于该优先级由高到低的顺序确定目标芯片架构,可以有效确保该目标任务的执行效率。
可选地,该方法还可以包括:向该目标计算节点发送该目标芯片架构的架构标识。
可选地,该方法还可以包括:接收该目标任务的中间表示和该目标任务的运行时插件,并向该目标计算节点发送该中间表示和该运行时插件。
可选地,该目标任务为多个并行任务中的一个并行任务,该调度需求信息还包括:该多个并行任务的并行调度模式;该调度器基于该调度需求信息,从该多个计算节点中确定目标计算节点的过程可以包括:若该多个并行任务的并行调度模式为同步并行模式,则基于该多个并行任务的资源需求之和,从该多个计算节点中确定目标计算节点,该异构集群中该目标芯片架构的处理器的空闲资源量之和满足该多个并行任务的资源需求之和;若该多个并行任务的并行调度模式为理想并行模式,则基于该目标任务的资源需求,从该多个计算节点中确定目标计算节点;其中,同步并行模式是指多个并行任务需同步执行,理想并行模式是指多个并行任务无需同步执行。
本申请提供的方案中,调度器可以基于多个并行任务的并行调度模式,采用不同的方式确定该目标计算节点,以确保该多个并行任务能够按照所要求的调度模式可靠执行。
又一方面,提供了一种任务调度方法,该方法可以应用于主机,该方法包括:对目标任务的源代码进行编译,得到该目标任务的中间表示和该目标任务的运行时插件,该中间表示为与芯片架构无关的代码;发送该中间表示和该运行时插件;向异构集群中的调度器发送该目标任务的调度需求信息,该调度需求信息包括该目标任务的资源需求,以及该目标任务支持的至少两种芯片架构;其中,该异构集群还包括多个计算节点,该多个计算节点中至少两个计算节点的芯片架构不同,该调度需求信息用于指示该调度器将该目标任务调度至该至少两个计算节点中的目标计算节点,该目标计算节点中目标芯片架构的处理器的空闲资源量满足该目标任务的资源需求,且该目标芯片架构属于该至少两种芯片架构,该运行时插件用于供该目标计算节点将该中间表示编译为该目标芯片架构的可执行代码。
可选地,发送该中间表示和该运行时插件的过程可以包括:向该调度器发送该中间表示和该运行时插件;或者,向该异构集群中的文件管理器发送该中间表示和该运行时插件。
再一方面,提供了一种目标计算节点,应用于异构集群,该异构集群包括调度器和多个计算节点,该多个计算节点中至少两个计算节点的芯片架构不同,该目标计算节点属于该多个计算节点;该目标计算节点包括目标芯片架构的处理器;该目标计算节点还包括至少一个模块,该至少一个模块用于实现上述方面提供的应用于目标计算节点的任务调度方法。
再一方面,提供了一种调度器,应用于异构集群,该异构集群还包括多个计算节点,该多个计算节点中至少两个计算节点的芯片架构不同;该调度器包括至少一个模块,该至少一个模块用于实现上述方面提供的应用于调度器的任务调度方法。
再一方面,提供了一种主机,该主机包括至少一个模块,该至少一个模块用于实现上述方面提供的应用于主机的任务调度方法。
再一方面,提供了一种计算机设备,该计算机设备包括:存储器,处理器及存储在该存储器上并能够在该处理器上运行的计算机程序,该处理器执行该计算机程序时实现上述方面提供的应用于目标计算节点的任务调度方法,或者,实现上述方面提供的应用于调度器的任务调度方法,又或者,实现上述方面提供的应用于主机的任务调度方法。
再一方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,该指令由处理器执行以实现上述方面提供的应用于目标计算节点的任务调度方法,或者,实现上述方面提供的应用于调度器的任务调度方法,又或者,实现上述方面提供的应用于主机的任务调度方法。
再一方面,提供了一种计算机程序产品,该计算机程序产品在计算机上运行时,可以使得计算机执行实现上述方面提供的应用于目标计算节点的任务调度方法,或者,执行上述方面提供的应用于调度器的任务调度方法,又或者,执行上述方面提供的应用于主机的任务调度方法。
再一方面,提供了一种任务调度系统,该任务调度系统包括:如上述方面提供的主机,如上述方面提供的调度器,以及多个计算节点;该多个计算节点中至少一个计算节点为如上述方面提供的目标计算节点。
再一方面,提供了一种任务调度系统,该任务调度系统包括:主机,调度器,以及多个计算节点,该多个计算节点中至少两个计算节点的芯片架构不同;
该主机,用于对目标任务的源代码进行编译,得到该目标任务的中间表示和该目标任务的运行时插件,发送该中间表示和该运行时插件,以及向该度器发送该目标任务的调度需求信息,其中,该中间表示为与芯片架构无关的代码,该调度需求信息包括该目标任务的资源需求,以及该目标任务支持的至少两种芯片架构;
该调度器,用于基于该调度需求信息,从该多个计算节点中确定目标计算节点,并向该目标计算节点发送针对该目标任务的调度指令,其中,该目标计算节点中目标芯片架构的处理器的空闲资源量满足该目标任务的资源需求,且该目标芯片架构属于该至少两种芯片架构;
该目标计算节点,用于基于该调度指令,通过该运行时插件将该中间表示编译为该目标芯片架构的可执行代码,并通过该运行时插件在目标芯片架构的处理器中运行该可执行代码。
本申请提供的方案至少具有如下有益效果:
本申请提供了一种任务调度方法、装置及系统,目标计算节点可以获取到目标任务的中间表示和运行时插件。由于该中间表示是与处理器的芯片架构无关的代码,因此目标计算节点可以通过运行时插件将该中间表示编译为目标芯片架构的可执行代码,并在目标芯片架构的处理器中运行该可执行代码。相应的,异构集群中的调度器在调度目标任务时,不会受到该目标任务中已编译的可执行代码的架构的限制,而是可以基于异构集群中各计算节点的资源使用情况,灵活地确定用于执行该目标任务的计算节点。由此,可以确保各计算节点的负载较为均衡,有效提高异构集群的资源利用率。
附图说明
图1是本申请实施例提供的一种任务调度方法的应用场景的示意图;
图2是本申请实施例提供的另一种任务调度方法的应用场景的示意图;
图3是本申请实施例提供的一种任务调度方法的流程图;
图4是本申请实施例提供的一种任务调度框架的示意图;
图5是本申请实施例提供的又一种任务调度方法的应用场景的示意图;
图6是本申请实施例提供的再一种任务调度方法的应用场景的示意图;
图7是本申请实施例提供的一种编译过程的示意图;
图8是本申请实施例提供的一种任务调度过程的示意图;
图9是本申请实施例提供的一种确定目标计算节点的方法流程图;
图10是本申请实施例提供的再一种任务调度方法的应用场景的示意图;
图11是本申请实施例提供的一种目标计算节点的结构示意图;
图12是本申请实施例提供的一种调度器的结构示意图;
图13是本申请实施例提供的一种主机的结构示意图;
图14是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面结合附图详细介绍本申请实施例提供的任务调度方法、装置及系统。
图1是本申请实施例提供的一种任务调度方法的应用场景的示意图。如图1所示,该应用场景包括异构集群,该异构集群包括:管理节点01,以及与该管理节点01连接的多个计算节点02。该多个计算节点02中至少两个计算节点02采用的处理器的芯片架构不同。例如,该多个计算节点02中,部分计算节点02采用的处理器为CPU,部分计算节点02采用的处理器为GPU,其余计算节点02采用的处理器为NPU。
参考图1,该管理节点01中部署有调度器011,并且该应用场景还可以包括主机03。该主机03可以向该调度器011发送待调度的目标任务,该调度器011进而可以将该目标任务调度至至少一个计算节点02中执行。
图2是本申请实施例提供的另一种任务调度方法的应用场景的示意图。如图2所示,该主机03中部署有加速库031,该加速库031为用于对处理器的性能进行优化的软件集合。该加速库031可以用于向调度器011发送待调度的目标任务。
可以理解的是,该异构集群中的任一计算节点02也可以作为主机向该调度器011发送待调度的任务。相应的,该应用场景也可以不包括独立于该异构集群的主机03。
还可以理解的是,该管理节点01也可以具有计算节点的功能,即该管理节点01不仅可以调度任务,还可以执行任务。
相关技术中,异构集群中的调度器需要预先记录每个计算节点的芯片架构的类型。主机在向调度器提交任务时,也需要在提交的任务中标记该任务所采用的可执行代码的架构。调度器接收到任务后,即可根据该任务中标记的可执行代码的架构,将该任务调度至芯片架构相匹配的计算节点中执行。但是,若主机提交的大量任务中,各个任务所采用的可执行代码的架构是不均衡的,则基于上述任务调度方式,会导致异构集群中各计算节点的负载不均衡。
示例的,假设主机提交的任务中可执行代码的架构为X86架构,则该任务只能调度到处理器架构为X86的计算节点中运行。若异构集群中处理器架构为X86的计算节点已经没有可用的空闲资源,而处理器架构为ARM的计算节点中却有空闲资源。则在该场景下,将无法利用异构集群的空闲资源处理该任务,导致资源利用率较低。
或者,主机提交的任务可以包括多个不同架构的可执行代码。调度器接收到任务后,可以根据各个计算节点02的负载确定用于执行该任务的目标计算节点,并将该任务调度至该目标计算节点。由于该任务包括多个不同架构的可执行代码,因此该目标计算节点可以执行架构与其处理器的芯片架构相同的可执行代码。但是,该调度方式需要主机实现多种不同架构的可执行代码,导致成本较高。
本申请实施例提供了一种用于在异构集群中实现自适应任务调度的分布式中间件。其中,自适应任务调度是指基于异构集群的资源使用情况自适应的调度任务。相应的,该异构集群也可以称为自适应集群(adaptive cluster),该分布式中间件也可以称为自适应中间件。结合图1和图2,该分布式中间件可以包括:部署在主机03中的中间件编程接口032、部署在管理节点01中的调度器011,以及部署在计算节点02中的集群代理021。
该中间件编程接口032用于为加速库031提供接入异构集群的能力,即该加速库031可以通过调用该中间件编程接口032与异构集群中的组件交互数据。例如,该加速库031可以通过该中间件编程接口032向调度器011发送目标任务的调度需求信息、目标任务的中间表示以及目标任务的运行时插件。
其中,该中间表示(intermediate representation)也可以称为中间语言或中间代码,是一种源代码的等效内部表示代码。并且,该中间表示与处理器的芯片架构无关,即该中间表示可以被编译为不同架构的可执行代码(也可以称为目标代码)。
运行时(run time)是一种编程语言的运行环境,该运行环境是一种能够为正在运行的程序提供软件服务的虚拟环境。该运行时插件是指能够提供该中间表示的运行环境的组件。由于本申请实施例提供的该运行时插件支持应用在异构设备环境下运行,因此也可以称为异构运行时插件。该运行时插件能够提供用于被分布式中间件中的集群代理021调用的插件接口,以便该集群代理021能够初始化该运行时插件,反初始化该运行时插件,运行该运行时插件,以及退出清理该运行时插件。
该调度器011用于基于异构群内的异构资源的使用情况进行任务调度。如图2所示,该调度器011主要包括任务管理和调度器0111,以及资源管理和调度器0112。该资源管理和调度器0112用于管理和调度异构集群中各个计算节点02的资源,该资源至少包括处理器资源,还可以包括内存资源等。任务管理和调度器0111用于基于加速库031发送的目标任务的资源需求,向资源管理和调度器0112发送资源调度请求。该资源管理和调度器0112可以基于该资源调度请求为目标任务分配资源。假设资源管理和调度器0112基于各个计算节点02的资源使用情况,为该目标任务分配的资源包括目标计算节点02中目标芯片架构的处理器资源,则任务管理和调度器0111可以基于该分配的资源向目标计算节点02分发该目标任务。
该集群代理021主要用于启动任务服务实例,以及管理运行时插件。如图2所示,该集群代理021包括资源层代理0211和任务层代理0212。其中,资源层代理0211用于收集计算节点02的资源信息并上报至资源管理和调度器0112,以使计算节点02加入异构集群。该任务层代理0212用于基于资源层代理0211提供的资源启动任务服务实例,该任务服务实例中运行有目标任务的运行时插件,或者可以理解为,该任务服务实例包括运行时插件实例。该任务层代理022还可以用于将目标任务的中间表示,以及资源管理和调度器0112确定出的目标芯片架构发送至该运行时插件。该运行时插件进而可以将该中间表示编译为该目标芯片架构的可执行代码,并在该目标芯片架构的处理器中运行该可执行代码,由此实现目标任务的运行。
由于加速库031提供的目标任务的中间表示是与芯片架构无关的代码,因此管理节点01中的调度器011可以基于各个计算节点02的资源使用情况调度该目标任务,而无需考虑该目标任务的可执行代码的架构。由此,能够在无需主机03提供多个不同架构的可执行代码的前提下,有效提高异构集群的资源利用率。又由于调度器011无需根据任务中标记的可执行代码的架构,确定芯片架构与该架构相匹配的计算节点,因此可以有效降低资源管理和调度的复杂度,进而提高任务调度的效率。
可以理解的是,在本申请实施例中,不同领域的加速库均可以与上述分布式中间件结合,以实现目标任务在异构集群中的自适应调度。
本申请实施例提供了一种任务调度方法,该方法可以应用于上述实施例所提供的应用场景中。参考图3,本申请实施例提供的任务调度方法包括:
步骤101、主机对目标任务的源代码进行编译,得到该目标任务的中间表示和运行时插件。
在本申请实施例中,如图1和图2所示,该主机03中的加速库031可以对目标任务的源代码进行编译,得到该目标任务的中间表示和运行时插件。
图4是本申请实施例提供的一种任务调度框架的示意图。如图4所示,该加速库031可以为不同领域的加速库。示例的,该加速库031可以为并行编程加速库,例如可以为开放式并行处理(open multi-processing,OpenMP)加速库。或者,该加速库031还可以是数值计算加速库、图计算加速库、数据帧(data frame)加速库或机器学习加速库等其他类型的加速库。可选地,该数值计算加速库可以包括数值Python(numerical Python,NumPy)加速库,该数据帧加速库可以为pandas加速库,该机器学习加速库可以包括Scikit学习(Scikit-learn)加速库。其中,pandas是Python的一个数据分析包。
参考图4,该目标任务可以为计算机视觉(computer vision,CV)应用、自然语言处理(natural language processing,NLP)应用或机器学习预测应用等不同领域的应用的任务。该加速库031可以通过编译器将该目标任务的源代码编译为与芯片架构无关的中间表示,并得到与该编译器相关的运行时插件。其中,该中间表示可以为标准可移植中间表示(standard portable intermediate representation-V,SPIR-V)或者网络组件(WebAssembly,WASM)中间表示等。该运行时插件可以为张量虚拟机(tensor virtualmachine,TVM)运行时插件、SPIR-V运行时插件或者WASM运行时插件等。
继续参考图4,该加速库031所采用的编译器的编程框架可以包括下述框架中的任一种:Python、Java、Go、数值领域专用语言(domain specified language,DSL)、表结构DSL、分布并行DSL和C++异构编程框架等。其中,Python、Java和Go均为计算机编程语言的名称。
可选地,如图5所示,该目标任务的源代码可以为某个程序中的代码片段,该代码片段也可以称为待加速的代码片段,或者加速核(kernel)代码片段。开发人员可以采用设备导语的方式预先对该代码片段进行标注,加速库031可以对该被标注的代码片段进行编译,得到目标任务的中间表示和运行时插件。
示例的,假设该加速库为OpenMP加速库,该OpenMP加速库中运行的用于实现矩阵相乘(matmul)运算的程序如下:
上述程序中,float表示浮点型数据类型,int表示整数类型,A和B表示两个输入矩阵,C表示输出矩阵,即矩阵C等于矩阵A和矩阵B的乘积。“pragma omp parallel for”是OpenMP中的一个指令,表示下文的for循环将被多线程执行。
在本申请实施例中,若该两个输入矩阵A和B的数据量较大,则为了提高上述矩阵相乘运算的计算效率,可以通过异构集群中的计算节点并行执行上述程序中的for循环。也即是,可以将该for循环的代码片段卸载至异构集群中执行,相应的,该目标任务的源代码即为该程序中的for循环。
示例的,开发人员可以在上述矩阵相乘运算的程序中添加设备导语,以实现对该for循环的标记,该添加有设备导语的程序为:
上述程序中,“pragma omp target device(ADAPTIVE_CLUSTER)”即为添加的设备导语,该设备导语表示将后续的代码片段从主机卸载到目标设备(target device)中执行。在本申请实施例中,该目标设备即为异构集群。“ADAPTIVE_CLUSTER”为本申请实施例中定义的目标设备的名称。OpenMP加速库在编译上述程序的过程中,可以将被设备导语标注的代码片段(for循环)编译为中间表示。之后,OpenMP加速库在运行上述程序的可执行代码的过程中,当检测到被设备导语标注的代码片段的中间表示要被执行时,即可将该中间表示卸载至异构集群中执行。
可选地,如图6所示,加速库031可以通过底层虚拟机(low level virtualmachine,LLVM)对该目标任务的源代码进行编译得到胖二进制(fat binary)文件。该fatbinary文件包含主机代码(例如main函数)以及与芯片架构无关的中间表示。其中,该fatbinary文件的文件格式可以为可执行与可链接格式(executable and linkable format,ELF)。
图7是本申请实施例提供的一种编程框架的示意图。如图7所示,该加速库031可以采用DSL编译器对目标任务的源代码进行编译。该编译过程可以包括:算法抽象、计算图优化、数据图优化、通信图优化以及抽象语法树生成等步骤。上述各个步骤可以由加速库031自动化调度,或者由用户自定义调度。
步骤102、主机向异构集群中的文件管理器发送该目标任务的中间表示、该运行时插件以及该目标任务的输入数据。
如图5和图8所示,该异构集群还可以包括文件管理器04,该主机01中的加速库031可以通过调用中间件编程接口032,向该文件管理器04发送该目标任务的中间表示、该运行时插件以及该目标任务的输入数据。例如,假设该目标任务的源代码为矩阵相乘运算中的for循环,则该输入数据可以包括输入矩阵A和输入矩阵B。
可选地,参考图5,该异构集群还可以包括网关05,该网关05分别与调度器011和文件管理器04连接。如图5中的步骤S1所示,该加速库031可以通过调用该网关05提供的软件开发工具包(software development kit,SDK)接口,向该网关05发送该目标任务的中间表示、运行时插件以及输入数据。该网关05进而可以将接收到的数据转发至文件管理器04。其中,该SDK接口的主要组成部分即为中间件编程接口032。
可以理解的是,该文件管理器04可以包括一个或多个具有文件存储功能的存储设备。该异构集群中的各个计算节点02均与该文件管理器04建立有通信连接,且能够从该文件管理器04中获取数据。
步骤103、主机向异构集群中的调度器发送该目标任务的调度需求信息。
主机03中的加速库031可以通过调用中间件编程接口032,向管理节点01中的调度器011发送该目标任务的调度需求信息。例如,参考图8,加速库031可以向调度器011中的任务管理和调度器011发送调度需求信息。该调度需求信息包括该目标任务的资源需求,以及该目标任务支持的至少两种芯片架构。并且,该调度需求信息可以由该加速库031配置。
示例的,假设执行该目标任务需要的处理器的资源量为x,该目标任务支持的芯片架构包括X86、ARM和GPU,则如图5中的步骤S2,该加速库031可以通过调用中间件编程接口032向网关05发送该目标任务的资源需求:处理器资源量X,以及三种芯片架构:X86、ARM和GPU。该网关05进而可以将接收到的调度需求信息转发至调度器011。
步骤104、调度器基于该调度需求信息,从多个计算节点中确定目标计算节点。
在本申请实施例中,调度器011接收到加速库031发送的待调度的目标任务的调度需求信息后,即可基于异构集群中各计算节点02的资源使用情况,从该多个计算节点02中确定出满足该目标任务的执行条件的目标计算节点。其中,该目标计算节点中目标芯片架构的处理器的空闲资源量满足该目标任务的资源需求,且该目标芯片架构属于该至少两种芯片架构。
可选地,该加速库031发送的目标任务的调度需求信息还可以包括:该至少两种芯片架构的优先级。相应的,该调度器011可以按照该优先级由高到低的顺序,依次检测异构集群中每种芯片架构的处理器的空闲资源量,并从该多个计算节点02中确定出目标计算节点。
由于不同芯片架构的处理器所擅长处理的任务的类型不同,例如CPU擅长标量运算,GPU擅长向量运算,而NPU擅长矩阵运算。因此,在本申请提供的方案中,可以在调度需求信息中限定该至少两种芯片架构的优先级,其中优先级越高的芯片架构越适于处理该目标任务。由此,调度器基于该优先级由高到低的顺序确定目标芯片架构,可以在提高异构集群的资源利用率的同时,尽量确保该目标任务的执行效率。
可选地,为了提高任务的执行效率,主机03中的加速库031可以将待执行的任务拆分为多个并行任务,以便异构集群中的各个计算节点02能够并行执行该多个并行任务。相应的,该目标任务即为该多个并行任务中的一个并行任务,该调度需求信息还可以包括:该多个并行任务的并行调度模式。该并行调度模式可以包括同步并行模式和理想并行模式。
其中,该同步并行模式是指该多个并行任务需同步执行,因此在调度该多个并行任务时,需要确保将该多个并行任务同步调度至相同芯片架构的处理器中执行。该理想并行模式是指该多个并行任务不要求同步执行,即该多个并行任务可以同步执行,或者也可以先执行部分并行任务可以先执行,然后再执行剩余的并行任务。因此在调度该多个并行任务时,可以将该多个并行任务调度至不同芯片架构的处理器中执行。该理想并行也可以称为尴尬并行(embarrassing parallel)。
下文以该调度需求信息包括该至少两种芯片架构的优先级,以及该多个并行任务的并行调度模式为例,对上述步骤104的实现过程进行介绍。如图9所示,该步骤104可以包括:
步骤1041、确定多个并行任务的并行调度模式。
调度器011可以基于接收到的调度需求信息确定该多个并行任务的并行调度模式。若该多个并行任务的并行调度模式为理想并行模式,则调度器011可以执行下述步骤1042a和步骤1043a;若该多个并行任务的并行调度模式为同步并行模式,则调度器011可以执行下述步骤1042b和步骤1043b。
步骤1042a、按照优先级由高到低的顺序,依次检测多个计算节点中对应芯片架构的处理器的空闲资源量是否满足目标任务的资源需求。
若该多个并行任务的并行调度模式为理想并行模式,则调度器011可以直接基于该目标任务的资源需求确定目标计算节点。也即是,调度器011在调度该目标任务时,仅需确保异构集群中某个芯片架构的处理器的空闲资源量能够满足该目标任务的资源需求即可,而无需确保异构集群中某个芯片架构的处理器的空闲资源量之和满足该多个并行任务的资源需求之和。
示例的,假设该目标任务支持的三种芯片架构的优先级满足:X86>ARM>GPU。则调度器011可以按照X86、ARM和GPU的顺序,依次检测多个计算节点中每种芯片架构的处理器的空闲资源量是否满足目标任务的资源需求。
例如,调度器011可以先检测异构集群中X86架构的处理器的空闲资源量是否满足目标任务的资源需求。若X86架构的处理器的空闲资源量满足资源需求,则调度器011可以执行下述步骤1043a。若X86架构的处理器的空闲资源量不满足该资源需求,则调度器011可以继续检测异构集群中ARM架构的处理器的空闲资源量是否满足该资源需求。若ARM架构的处理器的空闲资源量满足资源需求,则调度器011可以执行下述步骤1043a。若ARM架构的处理器的空闲资源量不满足该资源需求,则调度器011可以继续检测异构集群中CPU架构的处理器的空闲资源量是否满足该资源需求。
步骤1043a、若检测到目标芯片架构的处理器的空闲资源量满足该资源需求,则将包含该目标芯片架构的处理器的一个计算节点确定为目标计算节点。
调度器011按照优先级由高到低的顺序,若检测到目标芯片架构的处理器的空闲资源量满足该资源需求,则可以将包含该目标芯片架构的处理器的一个计算节点确定为目标计算节点。例如,若调度器011检测到异构集群中X86架构的处理器的空闲资源量满足目标任务的资源需求,则可以将包含该X86架构的处理器的一个计算节点确定目标计算节点。该目标计算节点中该X86架构的处理器的空闲资源量满足该资源需求。
步骤1042b、按照优先级由高到低的顺序,依次检测多个计算节点中对应芯片架构的处理器的空闲资源之和是否满足该多个并行任务的资源需求之和。
若该多个并行任务的并行调度模式为同步并行模式,则调度器011可以确定该多个并行任务需同步执行。因此,调度器011在调度目标任务时,需确保异构集群中某个芯片架构的处理器的空闲资源量之和满足该多个并行任务的资源需求之和。也即是,调度器011需基于该多个并行任务的资源需求之和,从多个计算节点中确定出用于执行该目标任务的目标计算节点。
示例的,假设该目标任务支持的三种芯片架构的优先级满足:X86>ARM>GPU。则调度器011可以按照X86、ARM和GPU的顺序,依次检测多个计算节点中每种芯片架构的处理器的空闲资源量之和是否满足该多个并行任务的资源需求之和。
步骤1043b、若检测到目标芯片架构的处理器的空闲资源量之和满足该资源需求之和,则将包含该目标芯片架构的处理器的一个计算节点确定为目标计算节点。
调度器011按照优先级由高到低的顺序,若检测到该异构集群中目标芯片架构的处理器的空闲资源量之和需满足该多个并行任务的资源需求之和,则可以将包含该目标芯片架构的处理器的一个计算节点确定为目标计算节点。
例如,若调度器011检测到多个计算节点中ARM架构的处理器的空闲资源量之和满足多个并行任务的资源需求之和,则可以将包含该ARM架构的处理器的一个计算节点确定目标计算节点。该目标计算节点中ARM架构的处理器的空闲资源量满足该目标任务的资源需求。
可以理解的是,在上述步骤1043a和步骤1043b中,若调度器011检测到该多个计算节点中,存在至少两个满足该目标任务的执行条件的备选计算节点。则调度器011可以从该至少两个备选计算节点中随机选取一个作为目标计算节点。或者,该调度器011可以基于预先配置的资源调度策略,从该至少两个备选计算节点中选取一个作为目标计算节点。其中,满足目标任务的执行条件是指:计算节点包含目标芯片架构的处理器,且该处理器的空闲资源量满足该目标任务的资源需求。
示例的,参考图2,该调度器011可以包括任务管理和调度器0111,以及资源管理和调度器0112。参考图8,该任务管理和调度器0111接收到目标任务的调度需求信息后,可以基于该目标任务的资源需求,向资源管理和调度器0112发送资源调用请求。该资源管理和调度器0112进而可以基于预先配置的资源调度策略,为该目标任务分配资源,即从多个计算节点02中确定目标计算节点。如图2和图4所示,该资源调度策略可以包括:异构感知、优先级抢占、亲和反亲和、装箱算法或加速器共享等。
还可以理解的是,若该任务管理和调度器0111接收到了包括目标任务在内的多个任务,则在资源管理和调度器0112完成对该多个任务的资源调度后,该任务管理和调度器0111可以基于预先配置的任务调度策略对该多个任务进行任务调度。例如,参考图2和图4,该任务调度策略可以包括:有向无环图(directed acyclic graph,DAG)调度、优先级调度器或优先级调度等。
示例的,假设异构集群中各计算节点的芯片架构包括GPU、NPU和CPU,且该三种芯片架构的处理器的加速比为2:2:1。若任务管理和调度器0111接收到了100个并行任务,该100个并行任务的并行调度模式为理想并行模式,且当前异构集群中有10个GPU、10个NPU和100个CPU的资源空闲,其中计算节点A中有50个X86架构的CPU空闲,计算节点B中有50个ARM架构的CPU空闲)。则调度器011可以将20个并行任务调度至包含GPU的计算节点中执行,将20个并行任务调度至包含NPU的计算节点中执行,将30个并行任务调度至计算节点A中执行,并将30个并行任务调度至计算节点B中执行。其中,每个GPU和每个NPU均用于执行2个并行任务,每个X86架构的CPU和每个ARM架构的CPU均用于执行1个并行任务。
步骤105、调度器向该目标计算节点发送针对该目标任务的调度指令。
调度器011在确定出用于执行该目标任务的目标计算节点02后,即可向该目标计算节点02发送针对该目标任务的调度指令。该调度指令中可以携带有该目标任务的标识。该调度指令用于指示该目标计算节点02通过该目标任务的运行时插件,将该目标任务的中间表示编译为该目标芯片架构的可执行代码,并在该目标芯片架构的处理器中运行该可执行代码。
示例的,假设该调度器011接收到了N个并行任务(N为大于1的整数),则调度器011确定出用于执行每个并行任务的计算节点02后,如图5中的步骤S3所示,该调度器011可以向用于执行该N个并行任务的N个计算节点02分别发送调度指令。例如,参考图8,该调度器011中的任务管理和调度器0111可以向计算节点02中的任务层代理0212发送该调度指令。
步骤106、调度器向该目标计算节点发送该目标芯片架构的架构标识。
在本申请实施例中,由于异构集群中的一个或多个计算节点可以包括多种芯片架构的处理器,例如可以包括NPU和X86架构的CPU,或者可以包括GPU和X86架构的CPU。因此,为了便于目标计算节点确定用于运行该目标任务的处理器的芯片架构,该调度器还可以向目标计算节点发送该目标芯片架构的架构标识。
可选地,如图8所示,该调度器011中的资源管理和调度器0112确定出目标芯片架构后,可以向目标计算节点02中的资源层代理0211发送该目标芯片架构的架构标识。该资源层代理0211进而可以将该目标芯片架构的架构标识发送至任务层代理0212。
或者,该调度器011中的资源管理和调度器0112确定出目标芯片架构后,可以向任务管理和调度器0111发送该目标芯片架构的架构标识。该任务管理和调度器011进而可以将该目标芯片架构的架构标识发送至目标计算节点02中的任务层代理0212。
可以理解的是,该步骤106也可以在步骤105之前执行。或者,该步骤106可以与步骤105同步执行,例如,该调度器发送的调度指令中可以携带该目标芯片架构的架构标识。
步骤107、目标计算节点基于该调度指令,从该异构集群的文件管理器中获取该目标任务的中间表示、运行时插件以及输入数据。
参考图5中的步骤S4,目标计算节点02接收到该调度器011发送的针对目标任务的调度指令后,即可基于该调度指令中目标任务的标识,从文件管理器04中获取该目标任务的中间表示、运行时插件以及输入数据。
由于目标任务的中间表示、运行时插件和输入数据的数据量相对较大,因此可以通过异构集群中的文件管理器来存储该中间表示和运行时插件,由此能够降低对调度器的存储性能的要求。并且,由于调度器无需转发中间表示、运行时插件和输入数据,因此可以避免对其调度性能造成影响。
可选地,在上述步骤102中,该主机03中的加速库031也可以将该目标任务的中间表示、运行时插件以及输入数据中的至少一种数据直接发送至调度器011。相应的,在该步骤107中,该调度器011即可向该目标计算节点02发送上述至少一种数据,即目标计算节点02可以接收该调度器011发送的上述至少一种数据。
例如,参考图6,该异构集群也可以不包括文件管理器04。则在上述步骤102中,该主机03中的加速库031可以向该调度器011发送该目标任务的中间表示、运行时插件以及输入数据。相应的,在该步骤107中,该目标计算节点02即可接收该调度器011发送的该目标任务的中间表示、运行时插件以及输入数据。由于无需在异构集群中额外设置文件管理器,因此可以简化该异构集群的结构,降低异构集群的部署成本。
步骤108、目标计算节点基于该调度指令,通过该运行时插件将该中间表示编译为目标芯片架构的可执行代码。
在本申请实施例中,目标计算节点02获取到运行时插件后,可以运行该运行时插件。该运行时插件进而可以将该目标任务的中间表示编译为目标芯片架构的可执行代码。也即是,该运行时插件可以对该中间表示进行在线编译。参考图7可以看出,该运行时插件支持将中间表示编译为多种不同芯片架构的可执行代码,例如,运行时插件能够将中间表示编译为NPU、GPU、X86或ARM等架构的可执行代码。
示例的,参考图6,假设该目标计算节点为计算节点A,该目标芯片架构为X86架构,则该计算节点A可以在X86架构的处理器中运行该运行时插件。该运行时插件进而可以将该目标任务的中间表示编译为X86架构的可执行代码。或者,若该目标计算节点为计算节点B,该目标芯片架构为NPU架构,则该计算节点B可以在NPU中运行该运行时插件。该运行时插件进而可以将该目标任务的中间表示编译为NPU架构的可执行代码。
可选地,如图2和图8所示,目标计算节点02中的任务层代理0212接收到调度指令后,可以先通过运行时插件管理器启动任务服务实例,该任务服务实例中运行有该运行时插件。处于运行状态的运行时插件进而可以将中间表示编译为目标芯片架构的可执行代码。例如,参考图8,该处于运行状态的运行时插件可以从文件管理器04中获取该目标任务的中间表示,并对该中间表示进行编译,得到可执行代码。或者,该中间表示也可以由任务层代理0212从文件管理器04中获取并发送至该运行时插件。
步骤109、目标计算节点将该输入数据作为该可执行代码的输入,在该目标芯片架构的处理器中运行该可执行代码,得到该可执行代码的运行结果。
目标计算节点通过运行时插件将中间表示编译为目标芯片架构的可执行代码后,即可将该输入数据提供至该运行时插件。该运行时插件进而可以将该输入数据作为该可执行代码的输入,在该目标芯片架构的处理器中运行该可执行代码,得到该可执行代码的运行结果。
示例的,如图8所示,该目标计算节点02中的任务层代理0212在启动任务服务实例并运行该运行时插件之后,可以向该运行时插件提供输入数据。例如,该输入数据可以为输入矩阵A和B,该运行时插件运行该for循环内的map函数后,得到的运行结果即为矩阵相乘运算的运算结果。
可选地,在本申请实施例中,该运行时插件在对目标任务的中间表示进行编译得到可执行代码后,还可以缓存该目标任务的可执行代码。由此,后续再有同类型的目标任务要执行时,则无需再对该目标任务的中间表示进行在线编译,从而避免了在线编译引入的额外开销。
例如,该目标计算节点在接收到针对目标任务的调度指令后,若检测到本地已缓存该目标任务的可执行代码,且该可执行代码的芯片架构与调度器发送的目标芯片架构相同,则目标计算节点可以直接通过该运行时插件,将该目标任务的输入数据作为该可执行代码的输入,在该目标芯片架构的处理器中运行该可执行代码。
可以理解的是,不同计算节点02中执行的任务之间可以具有依赖关系,即分配至不同计算节点02的任务在执行过程中可能需要交互数据。因此,任务层代理0212启动的任务服务实例还具有与其他计算节点02中的任务层代理0212通信的功能,由此可以便于在任务执行过程中,从其他计算节点02中获取必要的数据。
步骤110、目标计算节点向该调度器发送该运行结果。
为了便于主机对该运行结果进行进一步的处理,参考图5中的步骤S5,该目标计算节点02可以向调度器011发送该运行结果。
步骤111、调度器向主机发送该运行结果。
继续参考图5中的步骤S5,调度器011接收到该运行结果后,即可通过网关05将该运行结果发送至主机中的加速库031,以便加速库031对该运行结果进行进一步的处理。
示例的,参考图5,假设该目标任务为N个并行任务中的一个,则用于执行该N个并行任务的N个计算节点02计算得到该运行结果后,可以分别向调度器011发送该运行结果。该调度器011进而可以将N个运行结果通过网关05发送至加速库031。该加速库031进而可以对接收到的N个运行结果进行归约处理。
可选地,如图6所示,异构集群中的管理节点01还可以包括历史信息收集模块012,该历史信息收集模块012可以用于收集并存储历史任务的调度信息和执行信息。
图10是本申请实施例提供的再一种任务调度方法的应用场景的示意图。如图10所示,该主机03可以包括CPU,该CPU用于运行加速库031,以对目标任务的源代码进行编译得到胖二进制文件。参考图10,该胖二进制文件包括主机代码和中间表示,该主机代码可以为CPU主机代码。
继续参考图10,该主机03中还可以运行有目标无关的设备插件框架以及自适应集群插件(adaptive cluster plugin)。例如,若该加速库031为OpenMP加速库,则该目标无关的设备插件框架可以为目标无关的封装器(target agnostic wrapper)。该目标无关的设备插件框架用于与该自适应集群插件对接,该自适应集群插件用于与分布式中间件交互。例如,该自适应集群插件可以通过调用中间件编程接口,向异构集群中的调度器011发送数据,以将该目标任务卸载至异构集群中执行。相应的,该自适应集群插件也可以称为卸载插件。
可以理解的是,本申请实施例提供的任务调度方法的步骤可以根据情况增加,也可以根据情况删除。例如,上述步骤103可以在步骤102之前执行。或者,若上述步骤102中各数据的发送对象为调度器,则该步骤102和步骤103也可以同步执行。又或者,若目标计算节点中仅包括一种芯片架构的处理器,则上述步骤106也可以根据情况删除。再或者,若该目标任务不为并行任务,则上述步骤1041、步骤1042b和步骤1043b也可以根据情况删除。
还可以理解的是,调度器接收到的多个并行任务(task)也可以称为一个作业(job),则本申请实施例提供的方法不仅可以实现单任务级别的任务调度,还可以实现作业级别的任务调度。
综上所述,本申请实施例提供了一种任务调度方法,目标计算节点可以获取到目标任务的中间表示和运行时插件。由于该中间表示是与处理器的芯片架构无关的代码,因此目标计算节点可以通过运行时插件将该中间表示编译为目标芯片架构的可执行代码,并在目标芯片架构的处理器中运行该可执行代码。相应的,异构集群中的调度器在调度目标任务时,不会受到该目标任务中已编译的可执行代码的架构的限制,而是可以基于异构集群中各计算节点的资源使用情况,灵活地确定用于执行该目标任务的计算节点。由此,可以确保各计算节点的负载较为均衡,有效提高异构集群的资源利用率。
并且,由于调度器无需根据任务中标记的可执行代码的架构,确定芯片架构与该架构相匹配的计算节点,因此可以有效降低资源管理和调度的复杂度,进而提高任务调度的效率。又由于无需主机提供多种不同架构的可执行代码,因此可以有效降低主机侧的运维成本和开发成本。
本申请实施例还提供了一种目标计算节点,该目标计算节点可以应用于上述实施例所提供的异构集群,且可以用于实现上述方法实施例中由目标计算节点执行的步骤。如图1、图2、图6、图6、以及图9所示,该异构集群包括调度器011和多个计算节点02,该多个计算节点02中至少两个计算节点02的芯片架构不同,该目标计算节点属于该多个计算节点02。参考图11,该目标计算节点还可以包括:
接收模块201,用于接收该调度器发送的针对目标任务的调度指令。该接收模块201的功能实现可以参考上述方法实施例中步骤105的相关描述。
获取模块202,用于获取该目标任务的中间表示以及该目标任务的运行时插件。该获取模块202的功能实现可以参考上述方法实施例中步骤107的相关描述。
处理模块203,用于基于该调度指令,通过该运行时插件将该中间表示编译为该目标芯片架构的可执行代码,并在该目标芯片架构的处理器中运行该可执行代码,该目标计算节点包括目标芯片架构的处理器。该处理模块203的功能实现可以参考上述方法实施例中步骤108的相关描述。
可选地,该获取模块202可以用于:接收该调度器发送的该目标任务的中间表示以及运行时插件;或者,基于该调度指令,从该异构集群的文件管理器中获取该目标任务的中间表示以及运行时插件。
可选地,该接收模块201还可以用于:接收该调度器发送的该目标芯片架构的架构标识。该接收模块201的功能实现可以参考上述方法实施例中步骤106的相关描述。
相应的,该处理模块203,可以基于该目标芯片架构的架构标识,通过该运行时插件将该中间表示编译为目标芯片架构的可执行代码。
可选地,该获取模块202,还可以用于获取该目标任务的输入数据。
该处理模块203,用于将该输入数据作为该可执行代码的输入,在该目标芯片架构的处理器中运行该可执行代码,得到该可执行代码的运行结果。该处理模块203的功能实现还可以参考上述方法实施例中步骤109的相关描述。
可选地,如图11所示,该目标计算节点还包括:
发送模块204,用于在该处理模块203得到该可执行代码的运行结果之后,向该调度器发送该运行结果。该发送模块204的功能实现还可以参考上述方法实施例中步骤110的相关描述。
可选地,该获取模块202可以用于:接收该调度器发送的该目标任务的输入数据;或者,基于该调度指令,从该异构集群的文件管理器中获取该目标任务的输入数据。
综上所述,本申请实施例提供了一种目标计算节点,该目标计算节点可以获取到目标任务的中间表示和运行时插件。由于该中间表示是与处理器的芯片架构无关的代码,因此目标计算节点可以通过运行时插件将该中间表示编译为目标芯片架构的可执行代码,并在目标芯片架构的处理器中运行该可执行代码。相应的,异构集群中的调度器在调度目标任务时,不会受到该目标任务中已编译的可执行代码的架构的限制,而是可以基于异构集群中各计算节点的资源使用情况,灵活地确定用于执行该目标任务的计算节点。由此,可以确保各计算节点的负载较为均衡,有效提高异构集群的资源利用率。
本申请实施例提供了一种调度器,该调度器可以应用于上述实施例提供的异构集群,例如可以应用于该异构集群中的管理节点01。并且,该调度器可以用于实现上述方法实施例中由调度器执行的步骤。参考图1、图2、图6、图6、以及图9,该异构集群还包括多个计算节点02,该多个计算节点02中至少两个计算节点02的芯片架构不同。如图12所示,该调度器可以包括:
接收模块301,用于接收待调度的目标任务的调度需求信息,该调度需求信息包括该目标任务的资源需求,以及该目标任务支持的至少两种芯片架构。该接收模块301的功能实现可以参考上述方法实施例中步骤103的相关描述。
确定模块302,用于基于该调度需求信息,从该多个计算节点中确定目标计算节点,该目标计算节点中目标芯片架构的处理器的空闲资源量满足该目标任务的资源需求,且该目标芯片架构属于该至少两种芯片架构。该确定模块302的功能实现可以参考上述方法实施例中步骤104的相关描述。
发送模块303,用于向该目标计算节点发送针对该目标任务的调度指令,该调度指令用于指示该目标计算节点通过该目标任务的运行时插件,将该目标任务的中间表示编译为该目标芯片架构的可执行代码,并在该目标芯片架构的处理器中运行该可执行代码。该发送模块303的功能实现可以参考上述方法实施例中步骤105的相关描述。
可选地,该调度需求信息还可以包括:该至少两种芯片架构的优先级;该确定模块302可以用于:
按照该至少两种芯片架构的优先级由高到低的顺序,依次检测该多个计算节点中对应芯片架构的处理器的空闲资源量是否满足该资源需求;
若检测到目标芯片架构的处理器的空闲资源量满足该资源需求,则将包含该目标芯片架构的处理器的一个计算节点确定为目标计算节点。
确定模块302的功能实现可以参考上述方法实施例中步骤1042a和步骤1043a的相关描述。
可选地,该发送模块303,还可以用于向该目标计算节点发送该目标芯片架构的架构标识。该发送模块303的功能实现还可以参考上述方法实施例中步骤106的相关描述。
可选地,该接收模块301,还可以用于接收该目标任务的中间表示和该目标任务的运行时插件。相应的,该发送模块303,还可以用于向该目标计算节点发送该目标任务的中间表示和该运行时插件。
可选地,该目标任务为多个并行任务中的一个并行任务,该调度需求信息还包括:该多个并行任务的并行调度模式;该确定模块302可以用于:
若该多个并行任务的并行调度模式为同步并行模式,则基于该多个并行任务的资源需求之和,从该多个计算节点中确定目标计算节点,该异构集群中该目标芯片架构的处理器的空闲资源量之和满足该多个并行任务的资源需求之和;
若该多个并行任务的并行调度模式为理想并行模式,则基于该目标任务的资源需求,从该多个计算节点中确定目标计算节点;
其中,同步并行模式是指该多个并行任务需同步执行,理想并行模式是指该多个并行任务无需同步执行。该确定模块302的功能实现还可以参考上述方法实施例中步骤1041,步骤1042b和步骤1043b的相关描述。
综上所述,本申请实施例提供了一种调度器,由于目标计算节点可以获取到目标任务的中间表示和运行时插件,且该中间表示是与处理器的芯片架构无关的代码,因此该目标计算节点可以通过运行时插件将该中间表示编译为目标芯片架构的可执行代码,并在目标芯片架构的处理器中运行该可执行代码。相应的,异构集群中的调度器在调度目标任务时,不会受到该目标任务中已编译的可执行代码的架构的限制,而是可以基于异构集群中各计算节点的资源使用情况,灵活地确定用于执行该目标任务的计算节点。由此,可以确保各计算节点的负载较为均衡,有效提高异构集群的资源利用率。
本申请实施例还提供了一种主机,该主机可以应用于上述实施例提供的任务调度系统,且可以用于实现上述方法实施例中由主机执行的步骤。参考图13,该主机可以包括:
编译模块401,用于对目标任务的源代码进行编译,得到该目标任务的中间表示和该目标任务的运行时插件。该编译模块401的功能实现可参考上述方法实施例中步骤101的相关描述。
第一发送模块402,用于发送该中间表示和该运行时插件。该第一发送模块402的功能实现可以参考上述方法实施例中步骤102的相关描述。
第二发送模块403,用于向异构集群中的调度器发送该目标任务的调度需求信息,该调度需求信息包括该目标任务的资源需求,以及该目标任务支持的至少两种芯片架构。
其中,该异构集群还包括多个计算节点,该多个计算节点中至少两个计算节点的芯片架构不同,该调度需求信息用于指示该调度器将该目标任务调度至该至少两个计算节点中的目标计算节点,该目标计算节点中目标芯片架构的处理器的空闲资源量满足该目标任务的资源需求,且该目标芯片架构属于该至少两种芯片架构,该运行时插件用于供该目标计算节点将该中间表示编译为该目标芯片架构的可执行代码。
第二发送模块403的功能实现可以参考上述方法实施例中步骤103的相关描述。
可选地,该第一发送模块402可以用于:
向该调度器发送该中间表示和该运行时插件;或者,向该异构集群中的文件管理器发送该中间表示和该运行时插件。
综上所述,本申请实施例提供了一种主机,该主机可以向目标计算节点提供目标任务的中间表示和运行时插件。由于该中间表示是与处理器的芯片架构无关的代码,因此目标计算节点可以通过运行时插件将该中间表示编译为目标芯片架构的可执行代码,并在目标芯片架构的处理器中运行该可执行代码。相应的,异构集群中的调度器在调度目标任务时,不会受到该目标任务中已编译的可执行代码的架构的限制,而是可以基于异构集群中各计算节点的资源使用情况,灵活地确定用于执行该目标任务的计算节点。由此,可以确保各计算节点的负载较为均衡,有效提高异构集群的资源利用率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的目标计算节点、调度器和主机中的各模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
应理解的是,本申请实施例提供的上述目标计算节点、调度器和主机均可以用专用集成电路(application-specific integrated circuit,ASIC)实现,或可编程逻辑器件(programmable logic device,PLD)实现,上述PLD可以是复杂程序逻辑器件(complexprogrammable logical device,CPLD),现场可编程门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
当然,也可以通过软件实现上述方法实施例提供的任务调度方法,当通过软件实现上述方法实施例提供的任务调度方法时,该目标计算节点、调度器和主机中均可以包括用于实现上述方法的软件模块。
本申请实施例还提供了一种计算机设备,该计算机设备可以应用于上述实施例提供的任务调度系统。该计算机设备可以为上述实施例提供的目标计算节点、调度器或者主机。参考图14,该计算机设备可以包括:处理器501、存储器502、网络接口503和总线504。其中,总线504用于连接处理器501、存储器502和网络接口503。通过网络接口503(可以是有线或者无线)可以实现与其他器件之间的通信连接。存储器502中存储有计算机程序5021,该计算机程序5021用于实现各种应用功能。
应理解,在本申请实施例中,处理器501可以是CPU,该处理器501还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、GPU或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。
存储器502可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
总线504除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线504。
处理器501被配置为执行存储器502中存储的计算机程序,处理器501通过执行该计算机程序5021来实现上述方法实施例所示的任务调度方法。
例如,若该计算机设备为目标计算节点,则该处理器501可以通过执行该计算机程序5021来实现上述方法实施例中由目标计算节点执行的步骤。若该计算机设备为调度器,则该处理器501可以通过执行该计算机程序5021来实现上述方法实施例中由调度器执行的步骤。若该计算机设备为主机,则该处理器501可以通过执行该计算机程序5021来实现上述方法实施例中由主机执行的步骤。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,该指令由处理器执行以实现上述方法实施例中应用于目标计算节点的任务调度方法,或者实现上述方法实施例中应用于调度器的任务调度方法,又或者实现上述方法实施例中应用于主机的任务调度方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机实现上述方法实施例中应用于目标计算节点的任务调度方法,或者实现上述方法实施例中应用于调度器的任务调度方法,又或者实现上述方法实施例中应用于主机的任务调度方法。
本申请实施例还提供了一种任务调度系统,如图1、图2和图10所示,该系统可以包括:主机03,调度器011,以及多个计算节点02,该多个计算节点02中至少两个计算节点02的芯片架构不同。
其中,该多个计算节点02中的至少一个计算节点为如上述实施例提供的目标计算节点,例如可以为图11或图14所示的目标计算节点。
该调度器011为如上述实施例提供的调度器,例如可以为图12或图14所示的调度器。
该主机03为如上述实施例提供的主机,例如可以为图13或图14所示的主机。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
本申请中术语“至少一个”的含义是指至少一个,本申请中术语“多个”的含义是指两个或两个以上。本文中术语“系统”和“网络”经常可互换使用。
以上所述,仅为本申请的可选实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (28)
1.一种任务调度方法,其特征在于,应用于异构集群中的目标计算节点,所述异构集群包括调度器和多个计算节点,所述多个计算节点中至少两个计算节点的芯片架构不同,所述目标计算节点属于所述多个计算节点;所述方法包括:
接收所述调度器发送的针对目标任务的调度指令;
获取所述目标任务的中间表示以及所述目标任务的运行时插件,所述中间表示是对所述目标任务的源代码进行编译得到的与芯片架构无关的代码;
基于所述调度指令,通过所述运行时插件将所述中间表示编译为目标芯片架构的可执行代码,所述目标计算节点包括所述目标芯片架构的处理器;
通过所述运行时插件在所述目标芯片架构的处理器中运行所述可执行代码。
2.根据权利要求1所述的方法,其特征在于,所述获取所述目标任务的中间表示以及所述目标任务的运行时插件,包括:
基于所述调度指令,从所述异构集群的文件管理器中获取所述目标任务的中间表示以及所述目标任务的运行时插件;
或者,接收所述调度器发送的所述目标任务的中间表示以及所述目标任务的运行时插件。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:接收所述调度器发送的所述目标芯片架构的架构标识;
所述通过所述运行时插件将所述中间表示编译为目标芯片架构的可执行代码,包括:
基于所述目标芯片架构的架构标识,通过所述运行时插件将所述中间表示编译为所述目标芯片架构的可执行代码。
4.根据权利要求1至3任一所述的方法,其特征在于,所述方法还包括:获取所述目标任务的输入数据;
所述通过所述运行时插件在所述目标芯片架构的处理器中运行所述可执行代码,包括:通过所述运行时插件将所述输入数据作为所述可执行代码的输入,在所述目标芯片架构的处理器中运行所述可执行代码,得到所述可执行代码的运行结果;
所述方法还包括:向所述调度器发送所述运行结果。
5.根据权利要求4所述的方法,其特征在于,所述获取所述目标任务的输入数据,包括:
基于所述调度指令,从所述异构集群的文件管理器中获取所述目标任务的输入数据;
或者,接收所述调度器发送的所述目标任务的输入数据。
6.一种任务调度方法,其特征在于,应用于异构集群中的调度器,所述异构集群还包括多个计算节点,所述多个计算节点中至少两个计算节点的芯片架构不同;所述方法包括:
接收待调度的目标任务的调度需求信息,所述调度需求信息包括所述目标任务的资源需求,以及所述目标任务支持的至少两种芯片架构;
基于所述调度需求信息,从所述多个计算节点中确定目标计算节点,所述目标计算节点中目标芯片架构的处理器的空闲资源量满足所述目标任务的资源需求,且所述目标芯片架构属于所述至少两种芯片架构;
向所述目标计算节点发送针对所述目标任务的调度指令,所述调度指令用于指示所述目标计算节点通过所述目标任务的运行时插件,将所述目标任务的中间表示编译为所述目标芯片架构的可执行代码,并在所述目标芯片架构的处理器中运行所述可执行代码,其中,所述中间表示是对所述目标任务的源代码进行编译得到的与芯片架构无关的代码。
7.根据权利要求6所述的方法,其特征在于,所述调度需求信息还包括:所述至少两种芯片架构的优先级;所述基于所述调度需求信息,从所述多个计算节点中确定目标计算节点,包括:
按照所述至少两种芯片架构的优先级由高到低的顺序,依次检测所述多个计算节点中对应芯片架构的处理器的空闲资源量是否满足所述资源需求;
若检测到目标芯片架构的处理器的空闲资源量满足所述资源需求,则将包含所述目标芯片架构的处理器的一个计算节点确定为目标计算节点。
8.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:
接收所述目标任务的中间表示和所述目标任务的运行时插件;
向所述目标计算节点发送所述中间表示和所述运行时插件。
9.根据权利要求6至8任一所述的方法,其特征在于,所述方法还包括:
向所述目标计算节点发送所述目标芯片架构的架构标识。
10.根据权利要求6至9任一所述的方法,其特征在于,所述目标任务为多个并行任务中的一个并行任务,所述调度需求信息还包括:所述多个并行任务的并行调度模式;
所述基于所述调度需求信息,从所述多个计算节点中确定目标计算节点,包括:
若所述多个并行任务的并行调度模式为同步并行模式,则基于所述多个并行任务的资源需求之和,从所述多个计算节点中确定目标计算节点,所述异构集群中所述目标芯片架构的处理器的空闲资源量之和满足所述多个并行任务的资源需求之和;
若所述多个并行任务的并行调度模式为理想并行模式,则基于所述目标任务的资源需求,从所述多个计算节点中确定目标计算节点;
其中,所述同步并行模式是指所述多个并行任务需同步执行,所述理想并行模式是指所述多个并行任务无需同步执行。
11.一种任务调度方法,其特征在于,所述方法包括:
对目标任务的源代码进行编译,得到所述目标任务的中间表示和所述目标任务的运行时插件,所述中间表示为与芯片架构无关的代码;
发送所述中间表示和所述运行时插件;
向异构集群中的调度器发送所述目标任务的调度需求信息,所述调度需求信息包括所述目标任务的资源需求,以及所述目标任务支持的至少两种芯片架构;
其中,所述异构集群还包括多个计算节点,所述多个计算节点中至少两个计算节点的芯片架构不同,所述调度需求信息用于指示所述调度器将所述目标任务调度至所述至少两个计算节点中的目标计算节点,所述目标计算节点中目标芯片架构的处理器的空闲资源量满足所述目标任务的资源需求,且所述目标芯片架构属于所述至少两种芯片架构,所述运行时插件用于供所述目标计算节点将所述中间表示编译为所述目标芯片架构的可执行代码。
12.根据权利要求11所述的方法,其特征在于,所述发送所述中间表示和所述运行时插件,包括:
向所述调度器发送所述中间表示和所述运行时插件;
或者,向所述异构集群中的文件管理器发送所述中间表示和所述运行时插件。
13.一种目标计算节点,其特征在于,应用于异构集群,所述异构集群包括调度器和多个计算节点,所述多个计算节点中至少两个计算节点的芯片架构不同,所述目标计算节点属于所述多个计算节点;所述目标计算节点还包括:
接收模块,用于接收所述调度器发送的针对目标任务的调度指令;
获取模块,用于获取所述目标任务的中间表示以及所述目标任务的运行时插件,所述中间表示是对所述目标任务的源代码进行编译得到的与芯片架构无关的代码;
处理模块,用于基于所述调度指令,通过所述运行时插件将所述中间表示编译为所述目标芯片架构的可执行代码,并在所述目标芯片架构的处理器中运行所述可执行代码,其中,所述目标计算节点包括所述目标芯片架构的处理器。
14.根据权利要求13所述的目标计算节点,其特征在于,所述获取模块,用于:
基于所述调度指令,从所述异构集群的文件管理器中获取所述目标任务的中间表示以及所述目标任务的运行时插件;
或者,接收所述调度器发送的所述目标任务的中间表示以及所述目标任务的运行时插件。
15.根据权利要求13或14所述的目标计算节点,其特征在于,所述接收模块,还用于接收所述调度器发送的所述目标芯片架构的架构标识;
所述处理模块,用于基于所述目标芯片架构的架构标识,通过所述运行时插件将所述中间表示编译为所述目标芯片架构的可执行代码。
16.根据权利要求13至15任一所述的目标计算节点,其特征在于,所述获取模块,还用于获取所述目标任务的输入数据;
所述处理模块,用于通过所述运行时插件将所述输入数据作为所述可执行代码的输入,在所述目标芯片架构的处理器中运行所述可执行代码,得到所述可执行代码的运行结果;
所述目标计算节点还包括:
发送模块,用于在所述处理模块得到所述可执行代码的运行结果之后,向所述调度器发送所述运行结果。
17.根据权利要求16所述的目标计算节点,其特征在于,所述获取模块,用于:
基于所述调度指令,从所述异构集群的文件管理器中获取所述目标任务的输入数据;
或者,接收所述调度器发送的所述目标任务的输入数据。
18.一种调度器,其特征在于,应用于异构集群,所述异构集群还包括多个计算节点,所述多个计算节点中至少两个计算节点的芯片架构不同;所述调度器包括:
接收模块,用于接收待调度的目标任务的调度需求信息,所述调度需求信息包括所述目标任务的资源需求,以及所述目标任务支持的至少两种芯片架构;
确定模块,用于基于所述调度需求信息,从所述多个计算节点中确定目标计算节点,所述目标计算节点中目标芯片架构的处理器的空闲资源量满足所述目标任务的资源需求,且所述目标芯片架构属于所述至少两种芯片架构;
发送模块,用于向所述目标计算节点发送针对所述目标任务的调度指令,所述调度指令用于指示所述目标计算节点通过所述目标任务的运行时插件,将所述目标任务的中间表示编译为所述目标芯片架构的可执行代码,并在所述目标芯片架构的处理器中运行所述可执行代码,所述中间表示是对所述目标任务的源代码进行编译得到的与芯片架构无关的代码。
19.根据权利要求18所述的调度器,其特征在于,所述调度需求信息还包括:所述至少两种芯片架构的优先级;所述确定模块,用于:
按照所述至少两种芯片架构的优先级由高到低的顺序,依次检测所述多个计算节点中对应芯片架构的处理器的空闲资源量是否满足所述资源需求;
若检测到目标芯片架构的处理器的空闲资源量满足所述资源需求,则将包含所述目标芯片架构的处理器的一个计算节点确定为目标计算节点。
20.根据权利要求18或19所述的调度器,其特征在于,所述接收模块,还用于接收所述目标任务的中间表示和所述目标任务的运行时插件;
所述发送模块,还用于向所述目标计算节点发送所述中间表示和所述运行时插件。
21.根据权利要求18至20任一所述的调度器,其特征在于,所述发送模块,还用于向所述目标计算节点发送所述目标芯片架构的架构标识。
22.根据权利要求18至21任一所述的调度器,其特征在于,所述目标任务为多个并行任务中的一个并行任务,所述调度需求信息还包括:所述多个并行任务的并行调度模式;
所述确定模块,用于:
若所述多个并行任务的并行调度模式为同步并行模式,则基于所述多个并行任务的资源需求之和,从所述多个计算节点中确定目标计算节点,所述异构集群中所述目标芯片架构的处理器的空闲资源量之和满足所述多个并行任务的资源需求之和;
若所述多个并行任务的并行调度模式为理想并行模式,则基于所述目标任务的资源需求,从所述多个计算节点中确定目标计算节点;
其中,所述同步并行模式是指所述多个并行任务需同步执行,所述理想并行模式是指所述多个并行任务无需同步执行。
23.一种主机,其特征在于,所述主机包括:
编译模块,用于对目标任务的源代码进行编译,得到所述目标任务的中间表示和所述目标任务的运行时插件,所述中间表示为与芯片架构无关的代码;
第一发送模块,用于发送所述中间表示和所述运行时插件;
第二发送模块,用于向异构集群中的调度器发送所述目标任务的调度需求信息,所述调度需求信息包括所述目标任务的资源需求,以及所述目标任务支持的至少两种芯片架构;
其中,所述异构集群还包括多个计算节点,所述多个计算节点中至少两个计算节点的芯片架构不同,所述调度需求信息用于指示所述调度器将所述目标任务调度至所述至少两个计算节点中的目标计算节点,所述目标计算节点中目标芯片架构的处理器的空闲资源量满足所述目标任务的资源需求,且所述目标芯片架构属于所述至少两种芯片架构,所述运行时插件用于供所述目标计算节点将所述中间表示编译为所述目标芯片架构的可执行代码。
24.根据权利要求23所述的主机,其特征在于,所述第一发送模块,用于:
向所述调度器发送所述中间表示和所述运行时插件;
或者,向所述异构集群中的文件管理器发送所述中间表示和所述运行时插件。
25.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,所述指令由处理器执行以实现如权利要求1至12任一所述的任务调度方法。
26.一种计算机设备,其特征在于,所述计算机设备包括:存储器,处理器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至12任一所述的任务调度方法。
27.一种任务调度系统,其特征在于,所述任务调度系统包括:如权利要求23或24所述的主机,如权利要求18至22任一所述的调度器,以及多个计算节点;
所述多个计算节点中至少一个计算节点为如权利要求13至17任一所述的目标计算节点。
28.一种任务调度系统,其特征在于,所述任务调度系统包括:主机,调度器,以及多个计算节点,所述多个计算节点中至少两个计算节点的芯片架构不同;
所述主机,用于对目标任务的源代码进行编译,得到所述目标任务的中间表示和所述目标任务的运行时插件,发送所述中间表示和所述运行时插件,以及向所述度器发送所述目标任务的调度需求信息,其中,所述中间表示为与芯片架构无关的代码,所述调度需求信息包括所述目标任务的资源需求,以及所述目标任务支持的至少两种芯片架构;
所述调度器,用于基于所述调度需求信息,从所述多个计算节点中确定目标计算节点,并向所述目标计算节点发送针对所述目标任务的调度指令,其中,所述目标计算节点中目标芯片架构的处理器的空闲资源量满足所述目标任务的资源需求,且所述目标芯片架构属于所述至少两种芯片架构;
所述目标计算节点,用于基于所述调度指令,通过所述运行时插件将所述中间表示编译为所述目标芯片架构的可执行代码,并通过所述运行时插件在所述目标芯片架构的处理器中运行所述可执行代码。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110167884.XA CN114911586A (zh) | 2021-02-07 | 2021-02-07 | 任务调度方法、装置及系统 |
PCT/CN2021/142532 WO2022166480A1 (zh) | 2021-02-07 | 2021-12-29 | 任务调度方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110167884.XA CN114911586A (zh) | 2021-02-07 | 2021-02-07 | 任务调度方法、装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114911586A true CN114911586A (zh) | 2022-08-16 |
Family
ID=82740836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110167884.XA Pending CN114911586A (zh) | 2021-02-07 | 2021-02-07 | 任务调度方法、装置及系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114911586A (zh) |
WO (1) | WO2022166480A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118034939A (zh) * | 2024-04-12 | 2024-05-14 | 无锡九方科技有限公司 | 基于动态i/o负载感知的并行任务调度方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117971498B (zh) * | 2024-03-28 | 2024-05-31 | 麒麟软件有限公司 | 计算集群中gpu资源的调度方法、电子设备和存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5339419A (en) * | 1990-06-25 | 1994-08-16 | Hewlett-Packard Company | ANDF compiler using the HPcode-plus compiler intermediate language |
US9740464B2 (en) * | 2014-05-30 | 2017-08-22 | Apple Inc. | Unified intermediate representation |
CN107111505B (zh) * | 2015-01-19 | 2020-07-14 | 华为技术有限公司 | 用于在并行异构系统上执行算法的系统和方法 |
US9983857B2 (en) * | 2015-06-16 | 2018-05-29 | Architecture Technology Corporation | Dynamic computational acceleration using a heterogeneous hardware infrastructure |
CN111045795A (zh) * | 2018-10-11 | 2020-04-21 | 浙江宇视科技有限公司 | 资源调度方法及装置 |
US11269639B2 (en) * | 2019-06-27 | 2022-03-08 | Intel Corporation | Methods and apparatus for intentional programming for heterogeneous systems |
CN110865814B (zh) * | 2019-10-30 | 2021-11-16 | 上海天数智芯半导体有限公司 | 一种支持异构计算核架构的编译器实现方法和系统 |
-
2021
- 2021-02-07 CN CN202110167884.XA patent/CN114911586A/zh active Pending
- 2021-12-29 WO PCT/CN2021/142532 patent/WO2022166480A1/zh active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118034939A (zh) * | 2024-04-12 | 2024-05-14 | 无锡九方科技有限公司 | 基于动态i/o负载感知的并行任务调度方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2022166480A1 (zh) | 2022-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9213529B2 (en) | Optimizing just-in-time compiling for a java application executing on a compute node | |
US9086924B2 (en) | Executing a distributed java application on a plurality of compute nodes | |
US8495603B2 (en) | Generating an executable version of an application using a distributed compiler operating on a plurality of compute nodes | |
US20180095738A1 (en) | Method, device, and system for creating a massively parallilized executable object | |
US20090271799A1 (en) | Executing A Distributed Java Application On A Plurality Of Compute Nodes | |
US8214814B2 (en) | Sharing compiler optimizations in a multi-node system | |
US8473935B2 (en) | Just-ahead-of-time compilation | |
US8122441B2 (en) | Sharing compiler optimizations in a multi-node system | |
US20080155197A1 (en) | Locality optimization in multiprocessor systems | |
US20090125611A1 (en) | Sharing loaded java classes among a plurality of nodes | |
US11630798B1 (en) | Virtualized multicore systems with extended instruction heterogeneity | |
WO2022166480A1 (zh) | 任务调度方法、装置及系统 | |
CN105975261B (zh) | 一种面向统一接口调用的运行时系统及运行方法 | |
WO2015032311A1 (zh) | 一种代码生成方法、编译器、调度方法、装置及调度系统 | |
CN112860396A (zh) | 一种基于分布式深度学习的gpu调度方法及系统 | |
US11573777B2 (en) | Method and apparatus for enabling autonomous acceleration of dataflow AI applications | |
US11435989B2 (en) | Thread-local return structure for asynchronous state machine | |
JP2023544911A (ja) | 並列量子コンピューティングのための方法及び装置 | |
CN114116150A (zh) | 一种任务调度方法、装置以及相关设备 | |
Plauth et al. | CloudCL: single-paradigm distributed heterogeneous computing for cloud infrastructures | |
US20120158651A1 (en) | Configuration of asynchronous message processing in dataflow networks | |
US11966726B2 (en) | Operating system (OS) scheduler and compiler for code generation optimization in a (simultaneous multi-threading) SMT enabled CPU | |
CN113190497B (zh) | 一种可重构处理器的任务处理方法及可重构处理器 | |
Kluge et al. | Building adaptive embedded systems by monitoring and dynamic loading of application module | |
CN117222980A (zh) | 一种任务调度方法和装置 |
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 |