掌桥专利:专业的专利平台
掌桥专利
首页

一种用于任务调度的异构计算终端

文献发布时间:2023-06-19 18:29:06


一种用于任务调度的异构计算终端

技术领域

本发明涉及边缘计算技术领域,具体而言,涉及一种用于任务调度的异构计算终端。

背景技术

工业和物联网行业的发展产生了许多细分的应用场景,在延时性要求较高的场景下,边缘计算成为解决这种需求的重要解决方案,然而单一的边缘计算处理器能力有限;若要提高其处理能力,成本相对高昂,针对单一场景下大量数据处理性价比不高,也很难满足计算密集型应用的低时延数据处理需求。

发明内容

为解决现有存在的技术问题,本发明实施例提供一种用于任务调度的异构计算终端。

本发明实施例提供了一种用于任务调度的异构计算终端,包括:处理单元和多个计算单元;

所述异构计算终端用于获取包含至少一个初始任务的初始任务集,根据当前待处理任务生成相应的任务调度策略;所述当前待处理任务为在当前时刻需要被处理的任务,并且在初始时刻,所述初始任务为当前待处理任务;所述任务调度策略包括所述当前待处理任务与目标计算单元之间的对应关系,所述目标计算单元为用于处理所述初始任务集的计算单元;

所述目标计算单元用于获取预设的数据库中存储的与所述目标计算单元具有对应关系的当前待处理任务所对应的目标升级程序,并基于所述目标升级程序进行升级;所述数据库包括每个所述计算单元所对应的升级程序;所述计算单元对应多个所述升级程序,且每个所述升级程序对应所述计算单元能够处理的一类任务;

所述目标计算单元还用于获取需要处理的目标任务,在升级后对所述目标任务进行处理,并将相应的处理结果发送至所述处理单元;

所述处理单元合并多个所述目标计算单元发送的所述处理结果,得到所述初始任务集的处理结果。

在一种可能的实现方式中,所述根据当前待处理任务生成相应的任务调度策略,包括:

在所述当前待处理任务的数量大于或等于当前目标计算单元的数量的情况下,基于最优匹配算法,将与所述当前目标计算单元的数量相一致的当前待处理任务分别与相应的所述当前目标计算单元建立对应关系;

所述当前目标计算单元为在当前时刻空闲且未与任何所述当前待处理任务建立对应关系的目标计算单元。

在一种可能的实现方式中,所述根据当前待处理任务生成相应的任务调度策略,包括:

在所述当前待处理任务的数量小于当前目标计算单元的数量的情况下,循环执行建立所述当前待处理任务与所述当前目标计算单元之间对应关系的过程,直至所述当前待处理任务的数量大于或等于当前目标计算单元的数量;所述当前目标计算单元为在当前时刻空闲且未与任何所述当前待处理任务建立对应关系的目标计算单元;

之后,基于最优匹配算法,将与所述当前目标计算单元的数量相一致的当前待处理任务分别与相应的所述当前目标计算单元建立对应关系;

其中,所述建立所述当前待处理任务与所述当前目标计算单元之间对应关系的过程,包括:

基于最优匹配算法,将所有所述当前待处理任务分别与相应数量的当前目标计算单元建立对应关系。

在一种可能的实现方式中,所述根据当前待处理任务生成相应的任务调度策略,包括:

在所述当前待处理任务的数量为1的情况下,将所述当前待处理任务与每个当前目标计算单元均建立对应关系;所述当前目标计算单元为在当前时刻空闲且未与任何所述当前待处理任务建立对应关系的目标计算单元。

在一种可能的实现方式中,所述根据当前待处理任务生成相应的任务调度策略,包括:

在多个目标计算单元均与同一当前待处理任务之间具有对应关系的情况下,将所述多个目标计算单元所对应的当前待处理任务分为与所述多个目标计算单元数量一致的子任务,所述子任务为相应的所述目标计算单元需要处理的目标任务。

在一种可能的实现方式中,所述将所述多个目标计算单元所对应的当前待处理任务分为与所述多个目标计算单元数量一致的子任务,包括:

对所述目标计算单元的性能参数进行优化,优化后的性能参数比优化前的性能参数具有更高的区分度;

将所述目标计算单元优化后的性能参数作为性能函数模型的输入,确定所述目标计算单元的性能值;所述性能函数模型表示计算单元的性能参数与计算单元的性能值之间的函数关系;

对所述多个目标计算单元中每个目标计算单元的性能值进行归一化处理,确定所述多个目标计算单元中每个目标计算单元的权重;

按照所述权重的大小对所述多个目标计算单元所对应的当前待处理任务进行分割,将所述当前待处理任务分为与所述多个目标计算单元数量一致的子任务;所述子任务的处理量与相应的权重之间具有正相关关系。

在一种可能的实现方式中,所述异构计算终端还用于:在所述目标计算单元处理完毕所分配的目标任务之后,在不存在当前待处理任务的情况下,将其他目标计算单元中的当前未完成任务的一部分作为处理完毕的目标计算单元的新目标任务;

所述当前未完成任务为在当前时刻所述其他目标计算单元所处理的目标任务中尚未被处理的任务。

在一种可能的实现方式中,所述将其他目标计算单元中的当前未完成任务的一部分作为处理完毕的目标计算单元的新目标任务,包括:

对所述其他目标计算单元以及n个所述处理完毕的目标计算单元的性能值进行归一化处理,确定所述其他目标计算单元以及n个所述处理完毕的目标计算单元的权重;

按照所述其他目标计算单元以及n个所述处理完毕的目标计算单元的权重的大小对所述当前未完成任务进行分割,将所述当前未完成任务分n+1个子任务,并将所述当前未完成任务所分出的子任务作为相应处理完毕的目标计算单元的新目标任务;所述当前未完成任务所分出的子任务的处理量与相应的权重之间具有正相关关系。

在一种可能的实现方式中,所述目标计算单元还用于,判断所述目标升级程序是否需要被固化,在需要的情况下,将所述目标升级程序写入所述目标计算单元的存储单元,在不需要的情况下,将所述目标升级程序写入所述目标计算单元的内存。

在一种可能的实现方式中,所述异构计算终端还用于在接收到用于变更所述初始任务集的任务变更指令时,向所述目标计算单元发出中断信号;

所述目标计算单元响应于所述中断信号,继续处理所述目标任务,直至完整地处理了所述目标任务中的部分或全部,并发出处理完成信号;

所述异构计算终端响应于所述处理完成信号,并重新生成新的任务调度策略。

本发明实施例提供的用于任务调度的异构计算终端,为计算单元预先设置多种用于处理相应类型任务的升级程序,升级程序与能够处理的任务类型相匹配,异构计算终端在处理初始任务集时,能够生成任务调度策略,并向相应的目标计算单元分配需要由其处理的目标任务,该目标计算单元可以基于相应的目标升级程序实现升级,使得升级后的目标计算单元能够处理所分配的目标任务,实现任务调度及处理。该异构计算终端能够实现计算单元的在线升级,动态更新计算单元,极大拓展了硬件的计算单元的通用性;针对不同的任务可以生成不同的调度策略,计算单元能够动态提供较好的任务处理能力,可以提升异构计算终端的计算效率,适用于延时性要求较高的场景,在面对复杂任务时也具有较好的处理能力和处理效率。

附图说明

为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。

图1示出了异构计算系统的结构示意图;

图2示出了本发明实施例所提供的异构计算终端的一种工作流程图;

图3示出了本发明实施例所提供的异构计算终端的详细工作流程图;

图4示出了本发明实施例所提供的异构计算终端生成任务调度策略的流程示意图。

具体实施方式

对于延时性要求较高的场景,由于异构计算系统对计算资源利用率较高,其更适用于这种场景。异构计算系统是一种数据处理系统,参见图1所示,该异构计算系统包括处理单元和多个其他不同的计算单元。处理单元可以是中央处理单元(CPU)、数据处理单元(DPU)等,计算单元可以包括现场可编程门阵列(FPGA)的可编程集成电路(IC)、部分可编程IC、专用IC(ASIC)等。处理单元通过传输接口与其他的计算单元进行交互,其他的计算单元在架构上与处理单元不同。计算单元可以执行处理单元算力卸载的工作,并使计算结果用于处理单元。

但是,传统的异构计算系统中的计算单元只适用于处理部分任务,调度策略比较单一,对复杂数据的处理能力以及处理效率均较弱。本发明实施例提供一种基于该异构计算系统的异构计算终端,即该异构计算终端也包括处理单元和多个计算单元,其中,该异构计算终端利用升级程序提高计算单元的通用性,从而可以针对不同的任务生成不同的调度策略,使得该异构计算终端对各种数据均具有较好的处理能力和处理效率。

为方便描述,首先对本发明实施例所涉及的概念解释如下:

(1)任务:计算机术语,通过处理该任务可以得到所需的结果。例如,任务为计算功率值,处理该任务所得到的处理结果即为相应的功率值。

(2)初始任务:分发到该异构计算终端,需要由该异构计算终端处理的任务。

(3)初始任务集:包含所有初始任务的集合。该初始任务集可以包含一个初始任务,也可以包含多个初始任务,具体基于实际情况而定。

(4)当前待处理任务:在当前时刻需要处理的任务。在获取到初始任务的时刻,该初始任务也是当前待处理任务;换句话说,当前待处理任务的初始值为该初始任务。

(5)子任务:完整的任务中的一部分。初始任务、当前待处理任务一般均为完整的任务,相应地,该子任务可以是初始任务或当前待处理任务的一部分。

(6)目标任务:分配到相应的目标计算单元,且需要被该目标计算单元处理的任务。目标任务可以是某个当前待处理任务(完整的任务),也可以是某个当前待处理任务的一部分,例如,当前待处理任务的一个子任务。

(7)当前未完成任务:被目标计算单元所处理的目标任务中,在当前时刻仍未被处理的任务;当前未完成任务也是目标任务的一个子任务。例如,分配给目标计算单元的目标任务包含100组需要处理的数据,若在当前时刻,该目标计算单元已经处理了其中的40组数据,则剩余的60组数据即为当前时刻该目标计算单元所对应的当前未完成任务。

(8)目标计算单元:异构计算终端中用于处理该初始任务集的计算单元;例如,异构计算终端获取到初始任务集时,可以将当前空闲的计算单元均作为目标计算单元。目标计算单元的数量可以为一个,也可以为多个。

(9)当前目标计算单元:在当前时刻是空闲的,且未与任何当前待处理任务建立对应关系的目标计算单元。本领域技术人员可以理解,在当前时刻,若某目标计算单元A是一个当前目标计算单元,在将该目标计算单元A与某个当前待处理任务之间建立对应关系后,该目标计算单元A则不再是一个当前目标计算单元。此外,若当前需要处理的某个任务已经与某个目标计算单元建立了对应关系,只要目标计算单元还未处理该任务,则该任务仍是当前待处理任务。

(10)处理完毕的目标计算单元:把之前所分配的所有目标任务均处理完毕的目标计算单元。该目标计算单元在处理完分配给自己的所有目标任务后,其处于空闲状态,此时可以协助其他目标计算单元处理相应的任务。该处理完毕的目标计算单元也可以当做是当前目标计算单元。

下面结合本发明实施例中的附图对本发明实施例进行描述。应当理解,此处所描述的实施例仅用于说明和解释本发明实施例,并不用于限定本发明实施例。

本发明实施例提供了一种异构计算终端,该异构计算终端与现有成熟的异构计算系统具有相同的架构,该异构计算终端也包括如图1所示的处理单元和计算单元,且计算单元的数量为多个。例如,该异构计算终端可以为边缘计算终端,即可用于边缘计算。

其中,异构计算终端用于获取包含至少一个初始任务的初始任务集,根据当前待处理任务生成相应的任务调度策略;当前待处理任务为在当前时刻需要被处理的任务,并且在初始时刻,初始任务为当前待处理任务;任务调度策略包括当前待处理任务与目标计算单元之间的对应关系,目标计算单元为用于处理初始任务集的计算单元。

目标计算单元用于获取预设的数据库中存储的与目标计算单元具有对应关系的当前待处理任务所对应的目标升级程序,并基于目标升级程序进行升级;数据库包括每个计算单元所对应的升级程序;计算单元对应多个升级程序,且每个升级程序对应计算单元能够处理的一类任务。该目标计算单元还用于获取需要处理的目标任务,在升级后对目标任务进行处理,并将相应的处理结果发送至处理单元。其中,目标任务为分配至相应目标计算单元的任务。

处理单元合并多个目标计算单元发送的处理结果,得到初始任务集的处理结果。

本发明实施例中,异构计算终端包含多个计算单元,在需要处理某个任务集(即初始任务集)时,可以将其中的部分(或者,全部)计算单元作为能够处理该任务集的目标计算单元,由所有的目标计算单元对该任务集中的任务进行处理。并且,该异构计算终端可以生成相应的任务调度策略,以能够向每个目标计算单元分配相应的人物。其中,可以由处理单元生成该任务调度策略;或者,该异构计算终端也可以包括任务调度系统,由该任务调度系统生成任务调度策略,并实现对目标计算单元的调度。

具体地,以由该任务调度系统生成任务调度策略为例,参见图2所示,该异构计算终端的工作原理具体包括以下步骤S201-S207:

步骤S201:任务调度系统获取包含至少一个初始任务的初始任务集。

步骤S202:任务调度系统生成任务调度策略。

本发明实施例中,在获取到初始任务集的初始时刻(即,该初始时刻为获取到初始任务集的时刻),可以一次性生成任务调度策略,之后不再更改或调整对该初始任务集的任务调度策略,即该任务调度系统可以根据该初始任务集生成任务调度策略。

或者,由于初始任务集中可能包含多个初始任务,不同的计算单元的处理效率也可能不同,在不同时刻,可以基于当前需要处理的任务实时更新任务调度策略。具体地,本发明实施例将当前时刻需要被处理的任务称为“当前待处理任务”;在不同的时刻,上述的“当前时刻”也是不同的,并且在不同的当前时刻,可以根据所有的当前待处理任务生成相应的任务调度策略。例如,在获取到初始任务集的初始时刻,该初始时刻也是当前时刻,初始任务集中的初始任务均还未被计算单元处理,所有的初始任务均是需要被处理的任务,故所有的初始任务也均是当前待处理任务。因此,在初始时刻,可根据所有的初始任务(即初始任务集)生成相应的任务调度策略(该过程与上述一次性生成任务调度策略相同);在该初始时刻之后的某个时刻,若此时存在当前待处理任务,可以继续生成相应的任务调度策略。

本发明实施例中,在生成任务调度策略之前,还需要先确定哪些计算单元用于处理该初始任务集,即需要确定哪些计算单元是目标计算单元。例如,在初始时刻,可以将当前空闲的所有计算单元均作为目标计算单元;或者,也可以由异构计算终端自行分配目标计算单元,本实施例对此不做限定。

在确定目标计算单元后,即可生成用于向目标计算单元分配任务的任务调度策略。本发明实施例中,该任务调度策略至少包括当前待处理任务与目标计算单元之间的对应关系,相应地,可以将当前待处理任务中的部分或全部分配给具有对应关系的目标计算单元,由该目标计算单元处理相应的任务。其中,一般情况下,一个计算单元只能处理一个任务,故在本发明实施例中,一个目标计算单元只能与一个当前待处理任务建立对应关系;但是,一个当前待处理任务可以与多个目标计算单元建立对应关系,即一个当前待处理任务可以被分为多份任务(即子任务),每一份任务由不同的目标计算单元处理。因此,该当前待处理任务与目标计算单元之间的对应关系可以是一对一的对应关系,也可以是一对多的对应关系,具体可基于实际情况而定。

步骤S203:基于该任务调度策略,任务调度系统向相应的目标计算单元分配需要由该目标计算单元处理的目标任务。

本发明实施例中,可以基于当前待处理任务与目标计算单元之间的对应关系向每个目标计算单元分配相应的目标任务,该目标任务可以是相对应的全部当前待处理任务,也可以是相对应的当前待处理任务中的一部分。例如,若当前待处理任务与目标计算单元之间为一一对应关系,则可以将全部的当前待处理任务分配给相应的目标计算单元;或者,若当前待处理任务与目标计算单元之间为多对一的对应关系,则可以将当前待处理任务的一部分分配给相应的目标计算单元。

本领域技术人员可以理解,上述步骤S201-S203也可由处理单元执行,本发明实施例以由任务调度系统执行为例进行说明。

步骤S204:目标计算单元基于需要处理的目标任务,获取数据库中相应的目标升级程序。

传统的计算单元功能比较单一,而在本发明实施例中,预先为每个每个计算单元设置多个升级程序,每个升级程序用于处理相应类型的任务;例如,该升级程序具体可以包括能够快速处理相应类型任务的算法程序。本发明实施例将该异构计算终端中所有计算单元的升级程序均存储在相应的数据库中。当计算单元需要处理某一类任务时,利用相应的升级程序进行升级,使得升级后的计算单元可以处理该类任务;基于不同的升级程序,该计算单元能够处理不同类型的任务,该计算单元可以随时升级随时计算,计算单元具有通用性,在面对复杂任务的情况下也可以充分利用计算单元的处理资源,实现对各类复杂任务的智能调度处理。

具体地,目标计算单元能够从该数据库中获取与该目标计算单元具有对应关系的当前待处理任务所对应的升级程序,即目标升级程序。如上述步骤S204所示,目标计算单元基于需要处理的目标任务,获取数据库中相应的目标升级程序。其中,目标计算单元可以主动从数据库中获取目标升级程序;或者,任务调度系统可以将目标升级程序写入相应的目标计算单元,目标计算单元被动接收目标升级程序,本实施例对此不做限定。在不同的方案中,可以在不同的时间节点将目标任务下发至目标计算单元,本发明实施例中,先向目标计算单元下发目标任务,目标计算单元后升级。

可选地,目标计算单元还用于,判断目标升级程序是否需要被固化,在需要的情况下,将目标升级程序写入目标计算单元的存储单元,在不需要的情况下,将目标升级程序写入目标计算单元的内存,例如RAM(随机存取存储器)等。本发明实施例中,若目标计算单元需要长时间处理某一类型的任务,例如目标任务的处理量较大,此时可以考虑对目标升级程序进行固化的操作,即将目标升级程序写入目标计算单元的存储单元,此时可以向固化升级程序的目标计算单元分配更多的算法核心,提高处理效率。具体地,升级程序中除了包含一些配置之外,还包含相应的算法核心,该算法核心指针对给定算法基于计算单元特性(如数据精度、数据结构、框架设计等)进行优化的运算模块,是能大幅加快算法计算速度的模块;对于不同的任务类型,其对应不同的算法核心,该算法核心能够加快对该类任务的处理速度。其中,固化的优势在于目标计算单元内能够部署更多的算法核心(能够部署更多的算法核心的原因在于存储单元的存储空间更大,而RAM受限于价格、稳定性等因素,其存储空间相较会很小),固化一般适用于短时间内不需要多频次升级的计算单元。

步骤S205:目标计算单元基于该目标升级程序进行升级,并在升级后对目标任务进行处理。

目标计算单元在获取到目标升级程序之后,即可基于该目标升级程序进行升级,使得升级后的目标计算单元能够处理相应的目标任务。其中可选地,在目标计算单元不能处理与目标计算单元具有对应关系的当前待处理任务时(即目标计算单元不能处理所分配的目标任务时),执行上述步骤S204;相反地,若目标计算单元当前能够处理该目标任务,例如目标计算单元当前所使用的升级程序即为目标升级程序,此时目标计算单元不需要重复获取目标升级程序,也不需要重复升级。

步骤S206:目标计算单元将相应的处理结果发送至处理单元。

步骤S207:处理单元合并多个目标计算单元发送的处理结果,得到初始任务集的处理结果。

本发明实施例中,每个目标计算单元处理完毕相应的目标任务后,将处理结果发送至处理单元,该处理单元整合所有目标计算单元的处理结果,从而可以得到最终的处理结果,即该初始任务集的处理结果。其中,处理单元在接收到处理结果时,可以先进行任务校验,在校验完成后再合并所有的处理结果;并且,可以将该初始任务集的处理结果传至相应的数据库进行存储,该数据库可以是存储有每个计算单元所对应的升级程序的数据库,也可以是其他数据库,本实施对此不做限定。

本发明实施例提供的一种异构计算终端,为计算单元预先设置多种用于处理相应类型任务的升级程序,升级程序与能够处理的任务类型相匹配,异构计算终端在处理初始任务集时,能够生成任务调度策略,并向相应的目标计算单元分配需要由其处理的目标任务,该目标计算单元可以基于相应的目标升级程序实现升级,使得升级后的目标计算单元能够处理所分配的目标任务,实现任务调度及处理。该异构计算终端能够实现计算单元的在线升级,动态更新计算单元,极大拓展了硬件的计算单元的通用性;针对不同的任务可以生成不同的调度策略,计算单元能够动态提供较好的任务处理能力,可以提升异构计算终端的计算效率,适用于延时性要求较高的场景,在面对复杂任务时也具有较好的处理能力和处理效率。

可选地,当前待处理任务自身具有相应的特征,例如,该当前待处理任务为初始任务,该初始任务的特征包括:初始任务数量、每个初始任务的任务类型、每个初始任务的优先级等;可以基于当前待处理任务本身的特征来生成相应的任务调度策略,例如,生成当前待处理任务与目标计算单元之间的对应关系。

本发明实施例中,在某个时刻,计算单元一般只能处理一个任务,故计算单元只与一个任务之间具有对应关系,当前待处理任务的数量会影响任务调度策略。例如,初始任务集中的初始任务数量是不定的,对于不同的初始任务集,其可能包含不同数量的初始任务,在确定初始任务与目标计算单元之间的对应关系时,需要基于初始任务的数量而定。

并且,为了充分利用计算单元的处理资源,若当前时刻存在空闲的目标计算单元,且还存在该目标计算单元能够处理的任务(例如当前时刻还未处理完所有的初始任务集),则需要向该空闲的目标计算单元分配任务,例如需要建立该空闲的目标计算单元与某个任务之间的对应关系。本发明实例中,在当前时刻,若某个目标计算单元当前并未处理任务,即其是空闲的;若该目标计算单元已经与某个当前待处理任务之间建立了对应关系,则该目标计算单元后续需要将该当前待处理任务的全部或一部分作为目标任务进行处理,此时不需要再为该目标计算单元建立对应关系;相反地,若该目标计算单元是空闲的,且其没有与任何当前待处理任务建立对应关系,则该目标计算单元处于任务等待状态,可以将该目标计算单元与某个当前待处理任务建立对应关系。为方便描述,本发明实施例将在当前时刻空闲且未与任何当前待处理任务建立对应关系的目标计算单元称为“当前目标计算单元”。

具体地,异构计算终端所执行的“根据当前待处理任务生成相应的任务调度策略”的过程可以包括以下步骤A1:

步骤A1:在当前待处理任务的数量大于或等于当前目标计算单元的数量的情况下,基于最优匹配算法,将与当前目标计算单元的数量相一致的当前待处理任务分别与相应的当前目标计算单元建立对应关系;该当前目标计算单元为在当前时刻空闲且未与任何当前待处理任务建立对应关系的目标计算单元。

本发明实施例中,若当前待处理任务的数量大于或等于当前目标计算单元的数量,即需要处理的任务数量不少于可用的目标计算单元的数量,由于目标计算单元在一个时刻只能处理一个任务,故本发明实施例为所有的当前目标计算单元分配完整的当前待处理任务。具体地,基于最优匹配算法,从所有的当前待处理任务中选取与当前目标计算单元数量相一致的当前待处理任务,并将选取出的当前待处理任务分配至相应的当前目标计算单元,选取出的每个当前待处理任务与唯一的一个当前目标计算单元之间具有对应关系,相应地,分配至该当前目标计算单元的目标任务是与该当前目标计算单元具有对应关系的完整的当前待处理任务。其中,该最优匹配算法可以为拍卖算法等,本实施例对此不做限定。

例如,当前待处理任务的数量为M,当前目标计算单元的数量为N。若M=N,则可以基于最优匹配算法直接建立当前待处理任务与当前目标计算单元之间的一一对应关系。若M>N,则可以基于最优匹配算法,从M个当前待处理任务中选取N个,将这N个当前待处理任务分别分配至N个当前目标计算单元,N个当前待处理任务与N个当前目标计算单元之间为一一对应关系;此时,还存在M-N个当前待处理任务未建立对应关系,由于之前的N个当前目标计算单元已经与某个任务建立了对应关系,其不再处于等待状态,即此时不存在当前目标计算单元(当前目标计算单元的数量为零),需要等待出现新的当前目标计算单元时再处理剩余的M-N个当前待处理任务。

例如,在初始时刻,当前待处理任务为初始任务,当前目标计算单元为所确定的用于处理初始任务集的目标计算单元,若初始任务的数量大于或等于目标计算单元的数量,则可基于步骤A1为初始任务与目标计算单元建立对应关系。若初始任务的数量M大于目标计算单元的数量N,则可以在部分目标计算单元处理完毕后,再处理剩余的M-N个初始任务。

可选地,异构计算终端所执行的“根据当前待处理任务生成相应的任务调度策略”的过程可以包括以下步骤B1-B2:

步骤B1:在当前待处理任务的数量小于当前目标计算单元的数量的情况下,循环执行建立当前待处理任务与当前目标计算单元之间对应关系的过程,直至当前待处理任务的数量大于或等于当前目标计算单元的数量;当前目标计算单元为在当前时刻空闲且未与任何当前待处理任务建立对应关系的目标计算单元;

其中,上述步骤B1中“建立当前待处理任务与当前目标计算单元之间对应关系的过程”具体包括步骤B11:

步骤B11:基于最优匹配算法,将所有当前待处理任务分别与相应数量的当前目标计算单元建立对应关系。

步骤B2:在步骤B1之后,基于最优匹配算法,将与当前目标计算单元的数量相一致的当前待处理任务分别与相应的当前目标计算单元建立对应关系。

本发明实施例中,若当前待处理任务的数量小于当前目标计算单元的数量,为充分利用所有的当前目标计算单元,需要将一个当前待处理任务分配给多个当前目标计算单元,即在分配后,至少有一个目标计算单元对应多个当前待处理任务。其中,通过循环执行建立对应关系的过程(即循环执行上述步骤B11)来确定当前待处理任务与当前目标计算单元之间一对多的对应关系。

具体地,当前待处理任务的数量为M,当前目标计算单元的数量为N,且M<N。此时第一次执行上述“建立当前待处理任务与当前目标计算单元之间对应关系的过程”,即第一次执行步骤B11,将M个当前待处理任务分别与相应数量的当前目标计算单元(即M个当前目标计算单元)建立对应关系,由于这几个当前目标计算单元已经建立的对应关系,在执行步骤B11之后其不再是当前目标计算单元,故当前目标计算单元的数量变为N-M。若此时当前待处理任务的数量仍然小于当前目标计算单元的数量,即M<N-M,则第二次执行步骤B11,自后当前目标计算单元的数量变为N-2M。若此时当前待处理任务的数量大于或等于当前目标计算单元的数量,即M≥N-2M,则循环结束,之后执行步骤B2;相反地,若此时当前待处理任务的数量仍然小于当前目标计算单元的数量,即M<N-2M,则继续执行下一轮的步骤B11,直至当前待处理任务的数量大于或等于当前目标计算单元的数量,并在之后执行步骤B2。

其中,在循环结束时,当前待处理任务的数量大于或等于当前目标计算单元的数量,与上述步骤A1相似,基于最优匹配算法,将与当前目标计算单元的数量相一致的当前待处理任务分别与相应的当前目标计算单元建立对应关系。与上述步骤A1的处理结果不同的是,由于在步骤B1中已经将所有的当前待处理任务与相应的目标计算单元建立的对应关系,故基于本发明实施例提供的步骤B1-B2,可以为所有当前待处理任务建立对应关系,不存在尚未建立对应关系的当前待处理任务。

例如,在初始时刻,当前待处理任务为初始任务,当前目标计算单元为所确定的用于处理初始任务集的目标计算单元,若初始任务的数量M=5,目标计算单元的数量N=14,则可第一次执行上述步骤B11,之后,当前目标计算单元的数量变为14-5=9,此时当前待处理任务的数量仍然小于当前目标计算单元的数量,故第二次执行上述步骤B11,之后,当前目标计算单元的数量变为9-5=4,此时循环过程结束,之后执行步骤B2,即将5个初始任务中的四个与剩余的最后四个目标计算单元之间建立对应关系。最终,其中四个初始任务均与三个目标计算单元建立了对应关系,剩余一个初始任务与两个目标计算单元建立了对应关系。

其中,若当前待处理任务的数量为1,在当前目标计算单元的数量为多个的情况下,也可按照上述步骤B1-B2确定相应的任务调度策略;但是,由于此时循环执行的过程(即上述步骤B11)本质上是选择哪一当前目标计算单元与该当前待处理任务建立对应关系,该过程可以直接基于最优匹配算法实现。具体地,异构计算终端所执行的“根据当前待处理任务生成相应的任务调度策略”的过程可以包括以下步骤C1:

步骤C1:在当前待处理任务的数量为1的情况下,将当前待处理任务与每个当前目标计算单元均建立对应关系;该当前目标计算单元为在当前时刻空闲且未与任何当前待处理任务建立对应关系的目标计算单元。

本发明实施例中,若当前待处理任务的数量大于1,则可基于实际情况按照上述步骤A1或者步骤B1-B2执行;若当前待处理任务的数量为1,则可以按照上述步骤C1执行,若当前目标计算单元的数量为多个,此时确定的当前待处理任务与目标计算单元之间的对应关系为一对多的对应关系。

此外,本领域技术人员可以理解,若当前时刻不存在当前目标计算单元,即当前目标计算单元的数量为零,此时没有可用的计算单元,不需要生成任务调度策略,即不需要执行上述步骤A1、步骤B1-B2、或者步骤C1。

本发明实施例中,若目标计算单元与当前待处理任务之间为一一对应关系,如上所述,可以将完整的当前待处理任务作为相应目标计算单元的目标任务。若目标计算单元与当前待处理任务之间为多对一的对应关系,即一个当前待处理任务与多个目标计算单元之间具有对应关系,本发明实施例对该当前待处理任务进行分割。具体地,异构计算终端所执行的“根据当前待处理任务生成相应的任务调度策略”的过程包括以下步骤D1:

步骤D1:在多个目标计算单元均与同一当前待处理任务之间具有对应关系的情况下,将多个目标计算单元所对应的当前待处理任务分为与多个目标计算单元数量一致的子任务,子任务为相应的目标计算单元需要处理的目标任务。

本发明实施例中,若多个目标计算单元均与同一当前待处理任务之间具有对应关系,例如,基于上述步骤B1-B2或者步骤C1等所确定目标计算单元与当前待处理任务之间的对应关系可能是多对一的对应关系,在这种情况下,基于这些目标计算单元的数量,将该当前待处理任务分为相同数量的子任务,使得多个子任务与这些目标计算单元之间是一一对应的,进而可以将这些子任务作为相应目标计算单元的目标任务,即目标计算单元的目标任务是该当前待处理任务的一部分。此时,任务调度策略除了包括当前待处理任务与目标计算单元之间的对应关系之外,还可以包括当前待处理任务所分出来的子任务与目标计算单元之间的对应关系。

例如,对于某个当前待处理任务S,其与n个目标计算单元之间具有对应关系,此时可以将该当前待处理任务S分为n个子任务,例如,以s

可选地,目标计算单元也具有相应的性能参数,例如目标计算单元的IP核数量、功耗等,可以基于每个目标计算单元的性能参数(以及当前待处理任务本身的特征)确定当前待处理任务与目标计算单元之间的对应关系,例如,基于最优匹配算法确定应当将某个当前待处理任务分配至哪一性能参数的目标计算单元。此外,本发明实施例还基于目标计算单元的性能参数对任务进行划分,具体地,上述步骤D1“将多个目标计算单元所对应的当前待处理任务分为与多个目标计算单元数量一致的子任务”可以包括步骤D11-D14:

步骤D11:对目标计算单元的性能参数进行优化,优化后的性能参数比优化前的性能参数具有更高的区分度。

本发明实施例中,每个计算单元本身具有相应的性能参数。例如,该性能参数可以包括计算单元的时钟频率、IP核(知识产权核)数量、功耗等;具体地,计算单元处理不同类型的任务时,其所对应的性能参数也可能是不同的;具体地,目标计算单元的性能参数可以包括该目标计算单元处理相应目标任务时选取的时钟频率、处理该目标任务时能够存放的IP核数量、处理该目标任务时的功耗等。

并且,本发明实施例中,目标计算单元的性能参数用于确定该目标计算单元的性能值,由于部分目标计算单元的性能参数之间差异较小,本发明实施例对原本的性能参数进行优化,使得优化后的性能参数具有更高的区分度;在基于优化后的性能参数确定目标计算单元的性能值时,能得到区分程度更大的性能值,即不同目标计算单元的性能值差异较大,能够更准确地区分不同性能的计算单元。

具体地,设其中一个目标计算单元的第i种性能参数为p

步骤D12:将目标计算单元优化后的性能参数作为性能函数模型的输入,确定目标计算单元的性能值;性能函数模型表示计算单元的性能参数与计算单元的性能值之间的函数关系。

本发明实施例中,用性能函数模型表示计算单元的性能参数与其性能值之间的关系,该性能函数模型本质上是一个函数关系,不同的计算单元可以使用同一个性能函数模型。例如,计算单元的性能参数包括时钟频率CLK、IP核数量IP

步骤D13:对多个目标计算单元中每个目标计算单元的性能值进行归一化处理,确定多个目标计算单元中每个目标计算单元的权重。

步骤D14:按照权重的大小对多个目标计算单元所对应的当前待处理任务进行分割,将当前待处理任务分为与多个目标计算单元数量一致的子任务;子任务的处理量与相应的权重之间具有正相关关系。

本发明实施例中,对于与同一个当前待处理任务之间具有对应关系的多个目标计算单元,对这些目标计算单元的性能值进行归一化处理,归一化处理后的性能值即可作为相应目标计算单元的权重;一般情况,这些目标计算单元的权重之和为1,相应地,每个权重可以表示所占的比例。在分割当前待处理任务时,可以按照这些权重的大小分割该当前待处理任务,权重越大,所分割出来的任务越多,即所分割的子任务对应的处理量越大,子任务的处理量与相应的权重之间具有正相关关系;例如,子任务的处理量与相应的权重之间为正比例关系。在分割得到多个子任务后,即可将每个子任务分配至相应的目标计算单元。

本发明实施例提供的异构计算终端,在当前时刻,基于当前待处理任务以及当前目标计算单元的数量,有针对性地生成相应的任务调度策略,使得任务调度策略适用于当前时刻所对应的场景;并且,每个空前的目标计算单元(即当前目标计算单元)均能得到有效利用,可以有效利用计算单元的处理资源,处理效率较高。此外,对目标计算单元的性能参数进行优化后再确定其性能值,可以得到区分更明显的性能值,能够更好地分割当前待处理任务。

可选地,若当前时刻不存在当前待处理任务,说明所有的任务均已分配完毕,此时不需要再生成任务调度策略。或者,若当前时刻虽然不存在当前待处理任务,但初始任务集还未被完全处理完毕,且存在当前目标计算单元,即存在空闲的目标计算单元,此时也可继续生成任务调度策略。具体地,该异构计算终端还用于执行以下步骤E1:

步骤E1:在目标计算单元处理完毕所分配的目标任务之后,在不存在当前待处理任务的情况下,将其他目标计算单元中的当前未完成任务的一部分作为处理完毕的目标计算单元的新目标任务;当前未完成任务为在当前时刻其他目标计算单元所处理的目标任务中尚未被处理的任务。

本发明实施例中,在目标计算单元A处理完毕所分配的目标任务之后,例如,在上述步骤S206之后,在当前时刻(即目标计算单元A已处理完毕所分配的目标任务所对应的时刻),若处该目标计算单元A之外的其他目标计算单元仍然在处理分配给自己的目标任务,即初始任务集还未被处理完毕,此时可以将其他目标计算单元中尚未处理的一部分任务分配至该目标计算单元A。为方便描述,本发明实施例将在当前时刻其他目标计算单元所处理的目标任务中尚未被处理的部分任务称为“当前未完成任务”,该当前未完成任务是其他目标计算单元的目标任务中的一部分。本发明实施例将该当前未完成任务中的一部分分配给目标计算单元A,该部分任务是目标计算单元A新的目标任务,即新目标任务,当前未完成任务中的其余任务仍然由该其他目标计算单元处理。其中,在多个目标计算单元均存在还未处理完毕的剩余任务时,可以选择复杂度最高(例如,剩余处理量最多)的目标计算单元中的剩余任务作为该当前未完成任务。

此外,若向目标计算单元A所分配的新目标任务与其之前最近处理的目标任务具有不同的任务类型,则该目标计算单元A还需要获取与该新目标任务对应的升级程序,并进行升级,以能够处理该新目标任务。

可选地,上述步骤E1分配当前未完成任务的过程,本质上也是分割该当前未完成任务的过程,与上述步骤D11-D14相似,上述步骤E1中“将其他目标计算单元中的当前未完成任务的一部分作为处理完毕的目标计算单元的新目标任务”的过程具体可以包括:

步骤E11:对其他目标计算单元以及n个处理完毕的目标计算单元的性能值进行归一化处理,确定其他目标计算单元以及n个处理完毕的目标计算单元的权重。

本发明实施例中,目标计算单元的性能值可以是固定值,此时只需要执行一次确定目标计算单元的性能值,例如,执行一次上述步骤D1-D12。或者,若目标计算单元的性能参数与需要处理的目标任务的任务类型相关,则目标计算单元每升级一次,均需要确定该目标计算单元的性能值。在确定目标计算单元的性能值后,即可对n个处理完毕的目标计算单元以及当前未完成任务所对应的其他目标计算单元(共n+1个目标计算单元)的性能值进行归一化处理,从而可以确定n+1个目标计算单元的权重。

步骤E12:按照其他目标计算单元以及n个处理完毕的目标计算单元的权重的大小对当前未完成任务进行分割,将当前未完成任务分n+1个子任务,并将当前未完成任务所分出的子任务作为相应处理完毕的目标计算单元的新目标任务;当前未完成任务所分出的子任务的处理量与相应的权重之间具有正相关关系。

如上述步骤D14相似,基于这n+1个目标计算单元的权重对当前未完成任务进行分割,将该当前未完成任务分割为n+1个子任务,每个子任务对应相应的权重,也对应相应的目标计算单元,进而可以将其中n个子任务分配给相应的处理完毕的目标计算单元,其中1个子任务仍然由该其他目标计算单元处理。

本发明实施例中,在目标计算单元处理完毕后,可以继续向其分配其他目标计算单元需要处理的未完成任务,即当前未完成任务的一部分,从而可以利用多个目标计算单元处理该当前未完成任务,可以进一步提高计算单元的利用率,能够进一步提高处理效率。

此外可选地,本发明实施例提供的异构计算终端还可适用于任务中断等发生任务变更的情况。具体地,该异构计算终端(例如,处理单元,或者任务调度系统等)还用于在接收到用于变更初始任务集的任务变更指令时,向目标计算单元发出中断信号。目标计算单元响应于中断信号,继续处理目标任务,直至完整地处理了目标任务中的部分或全部,并发出处理完成信号。异构计算终端响应于处理完成信号,并重新生成新的任务调度策略。

本发明实施例中,异构计算终端在收到任务变更指令时,例如,该任务变更指令可以是新任务添加、任务减少、任务中断等指令,可以中断处理任务。例如,处理单元收到任务变更指令时,通知任务调度系统待命,并向计算单元发出中断信号;其中,可以向所有的目标计算单元发出中断信号,也可以向相关的部分目标计算单元发出中断信号,本实施例对此不做限定。

目标计算单元收到中断信号后,若立即停止处理,则可能导致任务处理异常;本发明实施例中,目标计算单元收到中断信号后并不立即停止处理,而是继续处理目标任务,直至完整地处理了目标任务中的部分或全部。例如,分配至该目标计算单元的目标任务是多组的数据,若该目标计算单元已经处理完了某一组数据,并即将处理下一组数据时,可认为该目标计算单元完整地处理了目标任务中的一部分;相应地,若目标计算单元当前正在处理某一组数据时收到了中断信号,该目标计算单元继续处理该组数据,直至该组数据被处理完毕。

下面通过一个实施例详细介绍该异构计算终端的工作过程。参见图3所示,该异构计算终端的工作过程具体包括步骤S301-S310。

步骤S301:任务调度系统获取需要处理的初始任务集。

步骤S302:任务调度系统根据该初始任务集生成相应的任务调度策略。

步骤S303:任务调度系统实时对目标计算单元发起轮询,确定处于等待状态的目标计算单元。

其中,该处于等待状态的目标计算单位为当前目标计算单元,即其当前空闲,且当前未与任一任务建立对应关系。

步骤S304:任务调度系统从数据库中获取每个当前目标计算单元对应的目标升级程序,并将目标升级程序写入相应的当前目标计算单元。

步骤S305:目标计算单元判断是否需要固化。若需要,继续步骤S306,否则继续步骤S307。

步骤S306:将目标升级程序写入目标计算单元的存储单元,之后继续执行步骤S308。

步骤S307:将目标升级程序写入目标计算单元的内存,之后继续执行步骤S308。

步骤S308:任务调度系统向目标计算单元分发相应的目标任务,并实时监督。

其中,任务调度系统可以实时监督当前是否存在当前目标计算单元,是否存在当前待处理任务,是否存在以处理完毕的目标计算单元等。

步骤S309:目标计算单元将相应的处理结果发送至处理单元。

步骤S310:处理单元合并多个目标计算单元发送的处理结果,得到初始任务集的处理结果。

其中,任务调度系统可以基于当前时刻的情况实时包含生成当前待处理任务与当前目标计算单元的任务调度策略,例如上述步骤S302或者上述步骤S308中实时生成任务调度策略。具体地,参见图4所示,生成任务调度策略的过程具体包括步骤S401-S410:

步骤S401:确定初始任务集。

步骤S402:确定在当前时刻,当前待处理任务的数量M以及当前目标计算单元的数量N。

其中,在获取到初始任务集的初始时刻,即当前时刻为初始时刻,当前待处理任务的数量为初始任务的数量,当前目标计算单元的数量为所有目标计算单元的数量。在其他的当前时刻,数量M和N基于实际情况而定。其中,当前目标计算单元的数量N≠0;若N=0,则不需要执行该生成任务调度策略的过程,即不需要继续执行后续步骤。

步骤S403:判断M

步骤S404:基于最优匹配算法,将M个当前待处理任务分别与相应的M个当前目标计算单元建立对应关系,之后继续步骤S402。

步骤S405:基于最优匹配算法,将N个当前待处理任务分别与相应的N个当前目标计算单元建立对应关系,之后继续步骤S406。

本发明实施例中,若当前待处理任务的数量M小于当前目标计算单元的数量N,则可执行上述步骤B11,即步骤S404所示,将M个(即所有)当前待处理任务与相应的M个当前目标计算单元建立对应关系,此时还存在N-M个当前目标计算单元,并重新执行上述步骤S402,从而可以形成循环。

相反地,若当前待处理任务的数量M大于或等于当前目标计算单元的数量N,即M≥N,例如,初始任务的数量大于目标计算单元的总数量,此时可以执行步骤S405,即为每个当前目标计算单元分配当前待处理任务,该步骤S405与上述步骤A1相似。或者,经过执行一次或多次步骤S404,当前目标计算单元的数量N会发生变换,若当前目标计算单元的数量N小于或等于该当前待处理任务的数量M,则也执行该步骤S405,此时,该步骤S405与上述步骤B2相似。

步骤S406:判断是否多个目标计算单元对应同一个当前待处理任务,若是,则继续步骤S407,否则继续步骤S408。

步骤S407:将多个目标计算单元所对应的当前待处理任务分为与多个目标计算单元数量一致的子任务,将该子任务作为目标任务分发至相应的目标计算单元。

本发明实施例中,若多个目标计算单元对应同一个当前待处理任务,则可将该当前待处理任务进行分割,例如,可以基于上述步骤D11-D14实现分割。

可选地,在上述步骤S403之前(或之后)判断当前待处理任务的数量是否为1,即判断M是否为1。若是,则说明当前只有一个任务需要处理,例如,初始任务集中只包含一个初始任务,此时可以直接对该唯一的任务进行分割,即直接执行步骤S407。

步骤S408:将完整的当前待处理任务作为目标任务分发至相应的目标计算单元。

本发明实施例中,若初始任务集中初始任务的数量大于目标计算单元的数量,则会为目标计算单元与初始任务之间建立一一对应关系,此时不存在多个目标计算单元对应同一个初始任务的情况,故此时可以将完整的当前待处理任务作为目标任务分发至相应的目标计算单元。

并且,在步骤S407、S408之后,目标计算单元即可处理相应的目标任务,并在处理完毕后将相应的处理结果发送至处理单元。

步骤S409:在存在当前目标计算单元时,判断是否存在当前待处理任务,若是,继续执行步骤S402,否则继续执行步骤S410。

步骤S410:在初始任务集未被处理完毕的情况下,将其他目标计算单元中的当前未完成任务的一部分作为当前目标计算单元的新目标任务。

本发明实施例中,在步骤S407或S408之后,若当前还存在当前目标计算单元,则说明某个或某些目标计算单元已处理完毕之前分配的目标任务,此时的当前目标计算单元也是处理完毕的目标计算单元。在这种情况下,若当前仍然存在当前待处理任务,则重新执行步骤S402,以建立二者之间的对应关系。例如,若初始任务集的初始任务数量M大于目标计算单元的数量N,则在执行一次上述步骤S405、S408后,仍然还存在M-N个初始任务未被处理,这M-N个初始任务仍然是当前待处理任务,此时重新执行步骤S402,相当于将这M-N个初始任务作为新的初始任务集再次生成任务调度策略。

若当前不存在当前待处理任务,则说明所有的初始任务都被分配至相应的目标计算单元进行处理,但此时存在可用的目标计算单元,即当前目标计算单元;若其他目标计算单元还没有处理完毕,即存在当前未完成任务,则如上述步骤S410所示,可以将该当前未完成任务的一部分分发至该此时的当前目标计算单元。其中,在初始任务集未被全部处理之前,可以一直执行上述步骤S401-S410。

本发明实施例提供的一种异构计算终端,为计算单元预先设置多种用于处理相应类型任务的升级程序,升级程序与能够处理的任务类型相匹配,异构计算终端在处理初始任务集时,能够生成任务调度策略,并向相应的目标计算单元分配需要由其处理的目标任务,该目标计算单元可以基于相应的目标升级程序实现升级,使得升级后的目标计算单元能够处理所分配的目标任务,实现任务调度及处理。该异构计算终端能够实现计算单元的在线升级,动态更新计算单元,极大拓展了硬件的计算单元的通用性;针对不同的任务可以生成不同的调度策略,计算单元能够动态提供较好的任务处理能力,可以提升异构计算终端的计算效率,适用于延时性要求较高的场景,在面对复杂任务时也具有较好的处理能力和处理效率。

在当前时刻,基于当前待处理任务以及当前目标计算单元的数量,有针对性地生成相应的任务调度策略,使得任务调度策略适用于当前时刻所对应的场景;并且,每个空前的目标计算单元(即当前目标计算单元)均能得到有效利用,可以有效利用计算单元的处理资源,处理效率较高。此外,对目标计算单元的性能参数进行优化后再确定其性能值,可以得到区分更明显的性能值,能够更好地分割当前待处理任务。并且,在目标计算单元处理完毕后,可以继续向其分配其他目标计算单元需要处理的未完成任务,即当前未完成任务的一部分,从而可以利用多个目标计算单元处理该当前未完成任务,可以进一步提高计算单元的利用率,能够进一步提高处理效率。

以上所述,仅为本发明实施例的具体实施方式,但本发明实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明实施例披露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明实施例的保护范围之内。因此,本发明实施例的保护范围应以权利要求的保护范围为准。

相关技术
  • 一种跨异构计算引擎的大数据任务调度方法、设备及介质
  • 一种基于异构计算的任务调度方法及装置
技术分类

06120115586809