CN116680063A - 任务调度方法、装置、计算系统、电子设备和存储介质 - Google Patents
任务调度方法、装置、计算系统、电子设备和存储介质 Download PDFInfo
- Publication number
- CN116680063A CN116680063A CN202310969232.7A CN202310969232A CN116680063A CN 116680063 A CN116680063 A CN 116680063A CN 202310969232 A CN202310969232 A CN 202310969232A CN 116680063 A CN116680063 A CN 116680063A
- Authority
- CN
- China
- Prior art keywords
- task
- subtasks
- determining
- computing
- execution cost
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 105
- 238000012545 processing Methods 0.000 claims abstract description 23
- 230000006870 function Effects 0.000 claims description 105
- 230000004913 activation Effects 0.000 claims description 54
- 230000015654 memory Effects 0.000 claims description 48
- 238000004364 calculation method Methods 0.000 claims description 24
- 238000012549 training Methods 0.000 claims description 15
- 238000005457 optimization Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 7
- 238000007667 floating Methods 0.000 claims description 7
- 238000007781 pre-processing Methods 0.000 claims description 3
- 238000001125 extrusion Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 11
- 239000000872 buffer Substances 0.000 description 7
- 238000004891 communication Methods 0.000 description 7
- 239000004973 liquid crystal related substance Substances 0.000 description 4
- 238000003062 neural network model Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 239000013598 vector Substances 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000008033 biological extinction Effects 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/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
- G06F9/5038—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 considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- 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
Abstract
本申请公开了一种任务调度方法、装置、计算系统、电子设备和存储介质,涉及计算机技术领域,其中方法包括:获取计算任务,并将所述计算任务分解为多个子任务;基于各个子任务之间的执行依赖关系,将所述多个子任务分配至不同的任务流;基于各个子任务的执行代价预测值,对各个任务流中的子任务进行动态规划,确定各个子任务在对应的任务流中的执行顺序;基于各个子任务对应的任务流,以及各个子任务在对应的任务流中的执行顺序,以实现任务调度。本申请公开的方法、装置和系统,提高了计算系统中的任务调度效率,提高了计算系统的资源利用率,提高了计算系统的整体处理性能。
Description
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种任务调度方法、装置、计算系统、电子设备和存储介质。
背景技术
近年来,随着大数据应用的数据处理量激增,使得对于计算系统的性能要求越来越高。现有的计算系统多采用分布式架构,包含了多种不同类型的异构处理器。这些异构处理器以不同的组合方式构成了物理上的计算节点,每个计算节点又包含了多种不同介质类型的内存组合。
每个计算节点由于处理器和内存的不同,在计算性能和内存容量等方面存在较大的差异,这些差异导致计算系统中运行的大数据应用在任务调度方面存在资源分配复杂性高、数据亲和性不足等问题,使得计算系统的任务调度效率较低,资源利用率较低。
因此,如何提高计算系统的任务调度效率和资源利用率成为业界亟待解决的技术问题。
发明内容
本申请提供一种任务调度方法、装置、计算系统、电子设备和存储介质,用于解决如何提高计算系统的任务调度效率和资源利用率的技术问题。
本申请提供一种任务调度方法,包括:
获取计算任务,并将所述计算任务分解为多个子任务;
基于各个子任务之间的执行依赖关系,将所述多个子任务分配至不同的任务流;
基于各个子任务的执行代价预测值,对各个任务流中的子任务进行动态规划,确定各个子任务在对应的任务流中的执行顺序;
基于各个子任务对应的任务流,以及各个子任务在对应的任务流中的执行顺序,以实现任务调度。
在一些实施例中,所述基于各个子任务之间的执行依赖关系,将所述多个子任务分配至不同的任务流,包括:
以所述计算任务对应的子任务为顶点,以所述计算任务对应的子任务之间的执行依赖关系为边,构建所述计算任务对应的有向图;
确定所述计算任务对应的有向图的最小等价图;
基于所述最小等价图,确定所述计算任务对应的二分图;
基于所述二分图的最大匹配中的顶点以及顶点之间的边,将所述计算任务对应的有向图中的顶点划分为多个集合;
将属于同一集合的顶点对应的子任务分配至同一任务流。
在一些实施例中,所述基于所述二分图的最大匹配中的顶点以及顶点之间的边,将所述计算任务对应的有向图中的顶点划分为多个集合,包括:
将所述二分图的最大匹配中通过匹配边依次连接的顶点划分至同一集合。
在一些实施例中,所述基于各个子任务之间的执行依赖关系,将所述多个子任务分配至不同的任务流之后,所述方法还包括:
确定所述计算任务对应的多个任务流;
确定计算系统中的处理器,以及各个处理器中的计算单元;
基于各个处理器中的计算单元,确定所述计算系统中的计算单元;
将所述多个任务流分配至所述计算系统中不同的计算单元。
在一些实施例中,所述确定计算系统中的处理器,以及各个处理器中的计算单元,包括:
在所述处理器的类型为中央处理器的情况下,将所述中央处理器中的内核作为计算单元;
在所述处理器的类型为图形处理器的情况下,将所述图形处理器中的流处理器作为计算单元。
在一些实施例中,所述基于各个子任务的执行代价预测值,对各个任务流中的子任务进行动态规划,确定各个子任务在对应的任务流中的执行顺序,包括:
确定目标任务流;
以所述目标任务流中各个子任务的执行代价预测值之和最小为目标,对各个子任务的执行顺序进行动态规划,确定所述目标任务流对应的任务调度队列;
基于所述任务调度队列,确定各个子任务在所述目标任务流中的执行顺序。
在一些实施例中,所述以所述目标任务流中各个子任务的执行代价预测值之和最小为目标,对各个子任务的执行顺序进行动态规划,确定所述目标任务流对应的任务调度队列,包括:
以所述目标任务流中的各个子任务为顶点,以所述目标任务流中的各个子任务之间的执行依赖关系为边,确定所述目标任务流对应的有向图;
将所述目标任务流对应的有向图确定为当前待规划有向图的初始值;
确定当前待规划有向图;
对所述当前待规划有向图中的顶点进行枚举,将所述当前待规划有向图划分为多个尾段以及所述尾段对应的非尾段;所述非尾段与所述尾段之间的边均从所述非尾段中的顶点处开始且在所述尾段的顶点处结束;
从所述多个尾段中确定目标尾段;所述目标尾段中顶点对应的子任务的执行代价预测值和所述目标尾段对应的非尾段中顶点对应的子任务的执行代价预测值之和最小;
将所述目标尾段中顶点对应的子任务添加至所述目标任务流对应的任务调度队列的头部;
基于所述目标尾段对应的非尾段,确定下一待规划有向图;
在所述下一待规划有向图中的顶点为空的情况下,返回所述目标任务流对应的任务调度队列。
在一些实施例中,各个子任务的执行代价预测值是基于如下步骤确定的:
确定待预测子任务中的多个程序指令;
基于各个程序指令以及所述待预测子任务对应的目标计算单元,确定各个程序指令对应的执行代价影响特征;
将各个程序指令对应的执行代价影响特征输入至执行代价预测模型,得到所述执行代价预测模型输出的各个程序指令对应的执行代价预测值;
基于各个程序指令对应的执行代价预测值,确定所述待预测子任务的执行代价预测值。
在一些实施例中,所述基于各个程序指令以及所述待预测子任务对应的目标计算单元,确定各个程序指令对应的执行代价影响特征,包括:
基于各个程序指令调用浮点数运算的次数和/或整数运算的次数,确定各个程序指令对应的算术运算特征;
基于各个程序指令对所述目标计算单元中缓存区的访问特征,确定各个程序指令对应的缓存访问特征;
基于各个程序指令的优化原语,确定各个程序指令对应的程序优化特征;
基于所述目标计算单元的处理器的性能参数,确定各个程序指令对应的处理器影响特征;
基于所述目标计算单元为各个程序指令分配的内存空间大小,确定各个程序指令对应的内存影响特征;
基于各个程序指令对应的所述算术运算特征、所述缓存访问特征、所述程序优化特征、所述处理器影响特征和所述内存影响特征中的至少一种,确定各个程序指令对应的执行代价影响特征。
在一些实施例中,所述执行代价预测模型是基于多层感知器构建的。
在一些实施例中,所述多层感知器包括多个线性层和多个激活函数层。
在一些实施例中,所述多层感知器包括依次连接的第一线性层、第二线性层、第三线性层、第一激活函数层、第四线性层、第二激活函数层、第五线性层、第三激活函数层、第六线性层和第四激活函数层。
在一些实施例中,所述第一激活函数层、所述第二激活函数层和所述第三激活函数层的激活函数为线性整流函数;所述第四激活函数层的激活函数为挤压函数。
在一些实施例中,所述执行代价预测模型是基于如下步骤训练得到的:
获取多个样本程序指令,以及各个样本程序指令对应的执行代价真实值;
将所述多个样本程序指令划分为多个批次;
基于各个批次的样本程序指令以及各个样本程序指令对应的执行代价真实值,对初始模型进行训练,得到所述执行代价预测模型。
在一些实施例中,所述执行代价预测模型的损失函数是基于所述样本程序指令的执行代价预测值与执行代价真实值之间的均方误差,以及所述样本程序指令的执行代价预测值与执行代价真实值之间的相对误差确定的。
在一些实施例中,所述执行代价预测模型的损失函数是基于如下步骤确定的:
确定各个批次的样本程序指令的置信度系数;
基于各个批次的样本程序指令的执行代价预测值与执行代价真实值之差,以及各个批次的样本程序指令的置信度系数,确定所述执行代价预测模型的均方误差损失函数;
基于各个批次的样本程序指令的执行代价预测值与执行代价真实值的比值的对数,以及各个批次的样本程序指令的置信度系数,确定所述执行代价预测模型的相对误差损失函数;
基于各个批次对应的均方误差损失函数和相对误差损失函数,确定所述执行代价预测模型的损失函数。
在一些实施例中,所述确定各个批次的样本程序指令的置信度系数,包括:
基于各个批次的样本程序指令对应的执行代价真实值的标准差,确定各个批次的样本程序指令的置信度系数。
本申请提供一种任务调度装置,包括:
预处理模块,用于获取计算任务,并将所述计算任务分解为多个子任务;
任务流分配模块,用于基于各个子任务之间的执行依赖关系,将所述多个子任务分配至不同的任务流;
动态规划模块,用于基于各个子任务的执行代价预测值,对各个任务流中的子任务进行动态规划,确定各个子任务在对应的任务流中的执行顺序;
调度模块,用于基于各个子任务对应的任务流,以及各个子任务在对应的任务流中的执行顺序,以实现任务调度。
本申请提供一种计算系统,包括多个计算服务器,以及所述的任务调度装置;
所述计算服务器,与所述任务调度装置连接,用于基于计算任务的任务调度结果,执行所述计算任务。
在一些实施例中,所述计算服务器包括至少一个处理器组合和至少一个内存组合;
所述处理器组合中至少两个处理器的类型不同;
所述内存组合中至少两个内存的类型不同。
本申请提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的任务调度方法。
本申请提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的任务调度方法。
本申请提供的任务调度方法、装置、计算系统、电子设备和存储介质,将计算任务分割为多个子任务;根据各个子任务之间的执行依赖关系,将多个子任务分配至不同的任务流;根据各个子任务的执行代价预测值,对各个任务流中的子任务进行动态规划,确定各个子任务在对应的任务流中的执行顺序;根据各个子任务对应的任务流,以及各个子任务在对应的任务流中的执行顺序,以实现任务调度;通过将计算任务的子任务分配至不同的任务流可以最大程度地提高任务的并行性,通过在各个任务流中对各个子任务的执行顺序进行动态规划可以更细粒度地对任务进行优化调度,提高了计算系统中的任务调度效率,提高了计算系统的资源利用率,提高了计算系统的整体处理性能。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的任务调度方法的流程示意图;
图2是本申请提供的任务流分配方法的流程示意图;
图3是本申请提供的尾段划分方法的示意图;
图4是本申请提供的任务调度中的阶段示意图;
图5是本申请提供的调度内核模块的运行示意图;
图6是本申请提供的多层感知器的结构示意图;
图7是本申请提供的任务调度装置的结构示意图;
图8是本申请提供的计算系统的结构示意图;
图9是本申请提供的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
基于采用分布式混合内存池的多异构处理器的计算系统,会同时处理众多计算任务,每个计算任务又可以被划分为许多独立的子任务。任务调度就是要将这些计算任务分配至计算系统中的计算节点,具体到计算节点中的处理器来处理。可以采用顺序的调度方法或者采用贪婪的调度方法,在计算系统中进行任务调度。
采用顺序的调度方法,由于是根据任务优先级或者任务接收先后确定任务顺序的顺序任务调度,并未充分考虑任务的并行性,而在满足子任务依赖性的前提下,顺序执行子任务会导致计算资源利用率降低,系统的整体性能不高。
采用贪婪的调度方法,一个贪婪的任务调度急于把更多的子任务放在整个任务的早期阶段执行,而后期阶段的子任务操作较少,导致后期阶段的计算资源利用率降低。在设备上同时执行过多的子任务可能会导致资源竞争问题,从而损害整体性能。
由此可知,这些方法存在的共性问题是计算系统的资源利用率较低,任务的整体吞吐延迟较高,任务的处理效率较低。
为了解决上述技术问题,图1是本申请提供的任务调度方法的流程示意图,如图1所示,该方法包括步骤110、步骤120、步骤130和步骤140。
步骤110、获取计算任务,并将计算任务分解为多个子任务。
具体地,本申请实施例提供的任务调度方法的执行主体可以为任务调度装置。该装置可以通过软件实现,例如运行在计算系统中的任务调度程序;也可以为计算系统中执行任务调度方法的装置,例如服务器等。
计算任务可以是数据计算任务等,例如金融交易计算任务或者科学仿真计算任务等。子任务是指计算任务中分解出来的任务单元。可以根据计算任务的任务内容,将计算任务分解为多个子任务。
本申请实施例中对于任务调度装置同时处理的计算任务的数量不作具体限定。
步骤120、基于各个子任务之间的执行依赖关系,将多个子任务分配至不同的任务流。
具体地,执行依赖关系是指子任务之间的关联关系。也就是说,一个子任务的执行依赖于另一个子任务的执行。对计算任务进行分解后所得到的多个子任务,有的子任务之间存在执行依赖关系,有的子任务之间不存在执行依赖关系。
任务流是指分配至各并行计算单元的子任务的集合。可以将具有执行依赖关系的子任务划分至同一任务流。在同一任务流中,由于子任务之间存在依赖关系,各个子任务所生成的数据可以快速流转,或者所采用的计算操作可以紧密衔接。通过将子任务分配至一个任务流中进行处理,将其作为一个整体进行执行,可以合理地组织各个子任务的执行流程,加速计算过程,减少计算资源的消耗,减少子任务之间的资源竞争和执行延迟时间。
步骤130、基于各个子任务的执行代价预测值,对各个任务流中的子任务进行动态规划,确定各个子任务在对应的任务流中的执行顺序。
具体地,执行代价是指执行子任务所消耗的时间资源、计算资源、存储资源等。例如执行代价可以用执行时间、计算资源使用量和内存空间使用量等来表示。
执行代价的影响因素包括子任务所对应的程序语言的复杂程度。例如,程序语言越复杂,消耗的时间资源和计算资源越多,子任务的执行代价越大。
执行代价预测值是指对子任务的执行代价的预测结果。可以根据子任务本身所具有的程序语言的复杂程度,对子任务的执行代价进行预测,得到执行代价预测值。
可以以各个任务流中的子任务的执行代价预测值最小为优化目标,采用动态规划的方法对各个子任务在对应的任务流中的执行顺序进行调整,得到最优的子任务执行顺序。
步骤140、基于各个子任务对应的任务流,以及各个子任务在对应的任务流中的执行顺序,以实现任务调度。
具体地,确定了计算任务的各个子任务对应的任务流,可以为任务流分配至计算系统中的各个处理器。确定了各个子任务在对应的任务流中的执行顺序,可以在任务流对应的处理器中按照执行顺序执行各个子任务。
本申请实施例提供的任务调度方法,将计算任务分割为多个子任务;根据各个子任务之间的执行依赖关系,将多个子任务分配至不同的任务流;根据各个子任务的执行代价预测值,对各个任务流中的子任务进行动态规划,确定各个子任务在对应的任务流中的执行顺序;根据各个子任务对应的任务流,以及各个子任务在对应的任务流中的执行顺序,以实现任务调度;通过将计算任务的子任务分配至不同的任务流可以最大程度地提高任务的并行性,通过在各个任务流中对各个子任务的执行顺序进行动态规划可以更细粒度地对任务进行优化调度,提高了计算系统中的任务调度效率,提高了计算系统的资源利用率,提高了计算系统的整体处理性能。
需要说明的是,本申请每一个实施方式可以自由组合、调换顺序或者单独执行,并不需要依靠或依赖固定的执行顺序。
在一些实施例中,步骤120包括:
以计算任务对应的子任务为顶点,以计算任务对应的子任务之间的执行依赖关系为边,构建计算任务对应的有向图;
确定计算任务对应的有向图的最小等价图;
基于最小等价图,确定计算任务对应的二分图;
基于二分图的最大匹配中的顶点以及顶点之间的边,将计算任务对应的有向图中的顶点划分为多个集合;
将属于同一集合的顶点对应的子任务分配至同一任务流。
具体地,对计算任务分配任务流,需要满足最大化并发执行和最小化同步数量这两个目标。
最大化并发执行是一种优化策略,其目的是为了增加计算系统资源被充分利用的机会。同步是指不同任务流之间的子任务进行数据同步,也可以称为跨任务流同步。由于同步妨碍了后续子任务的快速启动,因此在保持最大化执行并发的同时,需要产生理论上最小的任务同步数量。
为了满足上述两个目标,需要通过一种方法,能够满足最多的计算任务或者子任务可以同时被计算单元(处理任务流)并行处理,即找到计算单元和任务流之间的最优配对方式,使得配对的数量达到最大。该问题可以通过图理论中的二分图最大匹配方法来解决。
与常见的二分图不同,本申请实施例提供的方法中的二分图中的两个顶点集合由原图中所有顶点组成,而不是常见二分图中由顶点分割成的两个互不相交的子集。这是因为本申请实施例中的任务调度涉及多个有序计算任务节点(计算单元),且不同任务涉及的计算任务节点数量也并不相同。
可以对计算任务分解后的子任务用有向图来表示。对于计算任务,可以以计算任务对应的子任务为顶点V,以计算任务对应的子任务之间的执行依赖关系为边E,构建计算任务对应的有向图。边的方向为从被依赖的子任务的顶点指向依赖的子任务的顶点。
可以构建多个任务流,/>为任务流的数量,/>为任务流的集合,/>为第/>个任务流,/>。将子任务分配至不同的任务流的问题,可以等价于需要找到一个映射函数/>,如果/>,/>和/>为不同子任务对应的顶点,并且/>和之间没有依赖关系,即两者之间没有确定性的执行顺序,那么/>,即这两个节点被分配到不同的计算流上。
下面以计算任务可以分解为7个子任务为例,对任务流分配方法进行说明。图2是本申请提供的任务流分配方法的流程示意图,如图2所示,该方法可以分为四个步骤。
步骤210、确定计算任务对应的有向图的最小等价图。
对于计算任务对应的有向图,/>,此处/>。可以求解其对应的最小等价图/>,其中,/>为最小等价图中的边。
最小等价图(Minimum Equivalent Graph,MEG)是原始有向图的一个子图,与原始有向图相比,具有相同的节点集和最小的边集,与原始有向图保持相同的可达性关系。对于原始有向图来说,其对应的最小等价图是唯一的,并且可以在多项式时间内构造实现。
步骤220、根据最小等价图确定计算任务对应的二分图,以及二分图的最大匹配。
可以根据最小等价图确定计算任务对应的二分图。,/>,/>。/>是有向图的顶点集V中的第/>个顶点/>在顶点集/>中的表示,/>。/>是有向图的顶点集V中的第/>个顶点/>在顶点集/>中的表示,/>。/>表示二分图B中的一个匹配边。/>表示最小等价图中的边。
在图论中,一个匹配(matching)是一个边的集合,其中任意两条边都没有公共顶点。一个图所有匹配中,所含匹配边数最多的匹配,称为这个图的最大匹配。二分图B的最大匹配M,即包括最大数量的边的匹配。二分图的最大匹配可以通过Ford-Fulkerson算法来计算。
该步骤在图中对应的虚线为二分图的最大匹配中的匹配边,实线表示其他的边。
步骤230、根据二分图的最大匹配中的顶点以及顶点之间的边,将计算任务对应的有向图中的顶点划分为多个集合。
二分图的最大匹配中的匹配边所连接的顶点/>和/>,分别对应顶点/>和/>,将这些顶点进行合并,得到一个集合。同理,可以将计算任务对应的有向图中的顶点划分为多个集合。
步骤240、将属于同一集合的顶点对应的子任务分配至同一任务流。
属于同一集合的节点被映射到同一个任务流,而属于不同集合的节点被映射到不同的任务流。图中的7个子任务分别被划分为了3个任务流,第一任务流对应,第二任务流对应/>,第三任务流对应/>。
没有执行依赖关系的子任务一定在不同的任务流上,例如、/>和/>这些顶点对应的子任务;但并不是所有任务流上的子任务一定都没有依赖关系,例如/>和/>、/>和这些顶点对应的子任务。
上述方法所构建的任务流分配满足前述的两个目标是基于以下3个推论。
推论1:当且仅当映射函数(也称为流分配)满足在最小等价图/>上的最大逻辑并发时,流分配/>满足有向图G上的最大逻辑并发。同样,对于满足最大逻辑并发的任何流分配/>,G在上所需的最小同步数等于在/>上所需的最小同步数。
推论2:从二分图B的匹配集到满足上最大逻辑并发的流分配集存在一对一的对应关系。事实上是由上述方法中的步骤230和步骤240构建的。
推论3:对于二分图B的任何匹配m,相应的流分配所需的最小同步数是,其中/>为二分图B中边的数量(从/>得到的二分图B和/>具有相同的边/>),/>为二分图B的任何一个匹配m的匹配边数量。
由上述三个推论可以得到,对于二分图B的最大匹配M,是满足最大逻辑并发的流分配,并且满足流分配之间需要的同步次数最少。原因如下:
基于推论1,可以推导出所需的流分配由而不是G得到。由推论2可知/>是具有最大逻辑并发性的流分配。现在假设存在一个流分配/>满足最大逻辑并发且同步次数严格少于/>。由推论2和推论3可知,/>。流分配/>对应的B的某个匹配/>,使得/>,即/>。然而,由于M是二分图B的最大匹配,即/>,因此该不等式与M的定义是矛盾的。因此,对于二分图B的最大匹配M,/>是一个满足最大逻辑并发性的流分配,并且在满足最大逻辑并发性的流分配中需要最小的同步次数。
本申请实施例提供的任务调度方法,根据各个子任务之间的执行依赖关系构建有向图,在有向图中根据二分图的最大匹配的方法,将多个子任务分配至不同的任务流,最大化了任务的并发数量,最小化了不同任务流之间的同步次数,提高了计算系统中的任务调度效率。
在一些实施例中,基于二分图的最大匹配中的顶点以及顶点之间的边,将计算任务对应的有向图中的顶点划分为多个集合,包括:
将二分图的最大匹配中通过匹配边依次连接的顶点划分至同一集合。
具体地,例如,/>和/>通过两个匹配边依次连接,则可以将其划分至同一集合。
本申请实施例提供的任务调度方法,在二分图的最大匹配中将匹配边依次连接的顶点划分至同一集合,提高了任务流划分的准确性。
在一些实施例中,步骤120之后还包括:
确定计算任务对应的多个任务流;
确定计算系统中的处理器,以及各个处理器中的计算单元;
基于各个处理器中的计算单元,确定计算系统中的计算单元;
将多个任务流分配至计算系统中不同的计算单元。
具体地,可以将一个任务流分配至一个独立的计算单元进行处理。计算单元是指具有独立处理能力的内核或者流处理器等。在一个处理器中,计算单元可以并行执行计算任务。内核可以为物理核或者逻辑核等。
在进行任务流分配时,可以先确定计算任务对应的任务流的数量,以及执行计算任务中的处理器,以及每个处理器中的计算单元的数量,进一步地确定计算系统中的计算单元的数量。然后将多个任务流分配至不同的计算单元。
本申请实施例提供的任务调度方法,将多个任务流分配至计算系统中不同的计算单元,由不同的计算单元并发执行,提高了计算系统中的任务调度效率,提高了计算系统的资源利用率。
在一些实施例中,确定计算系统中的处理器,以及各个处理器中的计算单元,包括:
在处理器的类型为中央处理器的情况下,将中央处理器中的内核作为计算单元;
在处理器的类型为图形处理器的情况下,将图形处理器中的流处理器作为计算单元。
具体地,计算系统中的处理器可能是异构处理器,可能包括中央处理器(CentralProcessing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)、其他类型的处理器和加速器等。
如果计算系统中存在中央处理器,则可以将中央处理器中的单个内核作为一个计算单元;如果计算系统中存在图形处理器,则可以将图形处理器中的单个流处理器(StreamProcessor,SP)作为一个计算单元。
本申请实施例提供的任务调度方法,对计算系统中的计算单元进行了划分,提高了计算系统的资源利用率。
在一些实施例中,步骤130包括:
确定目标任务流;
以目标任务流中各个子任务的执行代价预测值之和最小为目标,对各个子任务的执行顺序进行动态规划,确定目标任务流对应的任务调度队列;
基于任务调度队列,确定各个子任务在目标任务流中的执行顺序。
具体地,目标任务流为需要对子任务的执行顺序进行动态规划的任务流。
在进行动态规划时,可以将各个子任务的执行代价预测值之和最小作为动态规划的目标,对各个子任务的执行顺序进行调整,生成目标任务流对应的任务调度队列。任务调度队列将各个子任务按照动态规划后的执行顺序进行排列。
本申请实施例提供的任务调度方法,在对任务进行流分配后,分配到同一任务流的任务是具有很多计算任务的子任务的集合,可以对分配到同一任务流的任务或者子任务进行细粒度调度,以进一步提高同一任务流中任务的并行性,提高系统资源的利用率。
在一些实施例中,以目标任务流中各个子任务的执行代价预测值之和最小为目标,对各个子任务的执行顺序进行动态规划,确定目标任务流对应的任务调度队列,包括:
以目标任务流中的各个子任务为顶点,以目标任务流中的各个子任务之间的执行依赖关系为边,确定目标任务流对应的有向图;
将目标任务流对应的有向图确定为当前待规划有向图的初始值;
确定当前待规划有向图;
对当前待规划有向图中的顶点进行枚举,将当前待规划有向图划分为多个尾段以及尾段对应的非尾段;非尾段与尾段之间的边均从非尾段中的顶点处开始且在尾段的顶点处结束;
从多个尾段中确定目标尾段;目标尾段中顶点对应的子任务的执行代价预测值和目标尾段对应的非尾段中顶点对应的子任务的执行代价预测值之和最小;
将目标尾段中顶点对应的子任务添加至目标任务流对应的任务调度队列的头部;
基于目标尾段对应的非尾段,确定下一待规划有向图;
在下一待规划有向图中的顶点为空的情况下,返回目标任务流对应的任务调度队列。
具体地,可以采用在图理论中的搜索方法,对目标任务流中各个子任务的执行顺序进行动态规划。尾段是指按照有向图中边的方向来看,处于最末位置的顶点的集合。
以目标任务流中的各个子任务为顶点,以目标任务流中的各个子任务之间的执行依赖关系为边,确定目标任务流对应的有向图。
图3是本申请提供的尾段划分方法的示意图,如图3所示,有向图中的顶点集V可以包括/>,a,b,c,d和e,每个顶点分别对应一个子任务。可以将有向图/>划分为/>和两部分(S为state缩写,在动态规划中常用来表示状态)。其中,/>和/>之间的所有边都从/>开始,并在/>结束。这样的/>被称为V的尾段。
V的尾段可以有很多种。在V的最优任务调度中,最后一个阶段的子任务必须是V的一个尾段。可以通过枚举顶点的方法列举出V的所有尾段,并将原问题转换为/>找到最优任务调度的子问题。整个有向图可以通过递归地应用这种尾段划分方法来进行任务调度。
在该图中,(a)部分表示所有的子任务构成的有向图。(b)部分的是V的尾段。然而(c)部分中/>不是V的尾段,因为从b到e有一条边(/>到/>)。可以通过递归地选择有向图剩余部分来划分尾段,如(d)部分所示,其中/>是/>的尾段。
此处的阶段是指计算系统中的任务将其子任务划分为不同的阶段,不同的阶段按照顺序执行,同一阶段的子任务按照一定的并行化策略执行。这仅仅是目标任务流的一个可能的任务调度。图4是本申请提供的任务调度中的阶段示意图,如图4所示,将目标任务流对应的有向图中的子任务的调度划分为四个阶段,其中第一阶段包含顶点对应的子任务,第二阶段包含顶点a和b对应的子任务,第三阶段包含顶点c和d对应的子任务,第四阶段包含顶点e对应的子任务。
如果定义S是顶点集V的子集。令为S的最优任务调度的执行代价,为/>的执行代价,/>为/>的执行代价。动态规划调度方法的状态转移函数可以表示为:
其中,为S的一个尾段,/>是目标任务流的最优任务调度的执行代价。,/>为空集。/>
根据上述基本思路,对各个子任务的执行顺序进行动态规划的方法可以通过三个模块来实现,分别为任务调度模块、调度内核模块和代价预测模块。
任务调度模块将一个任务流的有向图作为输入,并返回找到的最佳任务调度策略。调度内核模块实现动态规划算法,为有向图中的子图寻找最佳任务调度策略。代价预测模块评估计算子任务在当前计算单元的执行代价。
一、任务调度模块
任务调度模块主要用于确定当前待规划有向图,并返回一个最优的任务调度策略。任务调度策略可以通过任务调度队列的方式来体现。
任务调度模块通过不断地调用调度内核模块来实现动态规划。当前待规划有向图为需要输入的调用参数。当前待规划有向图的初始值为目标任务流对应的有向图。
任务调度模块可以设置全局变量来存储S的最优任务调度的执行代价,设置变量/>来存储S的最优任务调度中的尾段。
设置一个空列表作为任务调度队列的初始值,表示任务调度的初始状态,令S表示G中V的子集。通过查询S的最后一个尾段/>,并把它放在当前任务调度队列的头部。
二、调度内核模块
调度内核模块是基于动态规划的细粒度任务调度的核心模块。它以V的一个子集作为状态,递归地实现动态规划算法。它将当前递归运算中的S作为输入,并返回S所有任务调度中的最小执行代价。
具体来看,该模块对当前待规划有向图中的顶点进行枚举,将当前待规划有向图划分为多个尾段以及尾段对应的非尾段/>。显然,非尾段与尾段之间的边均从非尾段中的顶点处开始且在尾段的顶点处结束。
在此过程中,调度内核模块可能会被相同的S多次调用,对于重复调用,会缓存之前的结果以避免重复计算。
在枚举了S的所有可能的尾段,并通过和/>记录了S的最小执行代价和相应的最后阶段/>。
从所有可能的尾段确定目标尾段。目标尾段中顶点对应的子任务的执行代价预测值和目标尾段对应的非尾段中顶点对应的子任务的执行代价预测值之和最小。
然后将目标尾段中顶点对应的子任务添加至目标任务流对应的任务调度队列的头部。
将目标尾段对应的非尾段,更新为下一待规划有向图,继续进行递归调用。
直到下一待规划有向图中的顶点为空,即S为空集,则得到了目标任务流对应的任务调度队列。
三、代价预测模块
代价预测模块评估计算尾段中的子任务在当前计算单元的执行代价/>。这里可以采用机器学习的方法,设计一个神经网络模型评价计算尾段/>中的子任务的执行代价。
图5是本申请提供的调度内核模块的运行示意图,如图5所示,假设有向图中的顶点集V可以包括a,b和c,每个顶点分别对应一个子任务。需要对a,b和c对应的子任务进行动态规划。
任务调度过程中的状态和状态之间的转移如图中所示。这里状态表示要调度的子任务,转移表示状态之间的依赖关系(图中的边)。从状态到状态/>(空集,不含顶点)的任何路径都对应一个任务的调度。
从有向图中的所有子任务开始,状态。对于每个状态S,调度内核模块枚举S的所有尾段/>。S的代价包含两部分:作为尾段的/>的代价和非尾段/>的代价。/>的代价通过代价模型预测得到,/>的最优代价通过递归求解子问题得到。注意,本方法会记住每个状态的代价结果,以避免冗余计算。例如,对于同一状态/>,而后续步骤可以直接得到它的代价,因为它之前已经被计算过了。调度内核模块将代价和尾段存储在状态的最优调度中。在完成动态规划过程后,可以使用任务调度列表中存储的子任务来构造整个有向图的最优调度。最终找到的最优任务调度如图中实线所示。
本申请实施例提供的任务调度方法,以目标任务流中各个子任务的执行代价预测值之和最小为目标,对各个子任务的执行顺序进行动态规划,确定目标任务流对应的任务调度队列,提高了计算系统中的任务调度效率,提高了计算系统的资源利用率,提高了计算系统的整体处理性能。
在一些实施例中,各个子任务在对应的任务流中的执行代价预测值是基于如下步骤确定的:
确定待预测子任务中的多个程序指令;
基于各个程序指令以及待预测子任务对应的任务流对应的目标计算单元,确定各个程序指令对应的执行代价影响特征;
将各个程序指令对应的执行代价影响特征输入至执行代价预测模型,得到执行代价预测模型输出的各个程序指令对应的执行代价预测值;
基于各个程序指令对应的执行代价预测值,确定待预测子任务的执行代价预测值。
具体地,待预测子任务在对应的任务流中的执行代价预测值,是由待预测子任务对应的程序指令确定的。程序指令可以通过程序语句体现。
执行代价影响特征是对子任务的执行代价会产生影响的特征。任务执行过程会影响计算单元、存储系统和缓存层次结构以及处理器的多核利用率。因此,可以根据各个程序指令的指令复杂程度,以及待预测子任务对应的任务流对应的目标计算单元的硬件配置,确定各个程序指令对应的执行代价影响特征。
执行代价影响特征包括类别特征和数值特征等。使用独热(one-hot)编码来编码类别特征。执行代价影响特征可以采用128个字节的特征向量来表示。
可以根据神经网络模型来构建执行代价预测模型。将各个程序指令对应的执行代价影响特征输入至执行代价预测模型,就可以得到执行代价预测模型输出的各个程序指令对应的执行代价预测值。对各个程序指令对应的执行代价预测值进行累加,可以得到待预测子任务的执行代价预测值。
本申请实施例提供的任务调度方法,通过构建执行代价预测模型来对子任务在对应的任务流中的执行代价进行预测,提高了执行代价预测的准确性。
在一些实施例中,基于各个程序指令以及待预测子任务对应的任务流对应的目标计算单元,确定各个程序指令对应的执行代价影响特征,包括:
基于各个程序指令调用浮点数运算的次数和/或整数运算的次数,确定各个程序指令对应的算术运算特征;
基于各个程序指令对目标计算单元中缓存区的访问特征,确定各个程序指令对应的缓存访问特征;
基于各个程序指令的优化原语,确定各个程序指令对应的程序优化特征;
基于目标计算单元的处理器的性能参数,确定各个程序指令对应的处理器影响特征;
基于目标计算单元为各个程序指令分配的内存空间大小,确定各个程序指令对应的内存影响特征;
基于各个程序指令对应的算术运算特征、缓存访问特征、程序优化特征、处理器影响特征和内存影响特征中的至少一种,确定各个程序指令对应的执行代价影响特征。
具体地,程序指令对应的程序语句中包含了很多向量和标量。在程序运行时,这些向量和标量会调用浮点数运算和整数运算。根据各个程序指令调用浮点数运算的次数和/或整数运算的次数,可以确定各个程序指令对应的算术运算特征。
可以根据各个程序指令对目标计算单元中缓存区的访问特征,确定各个程序指令对应的缓存访问特征。访问特征用于表示程序指令对缓存区的访问行为方面的特征。
例如,虽然不同的程序指令可以访问不同数量的缓存区,但最多只对6个缓存区进行特征提取。如果一条指令访问的缓存区少于6个,则可以将特征值填充0。如果一条指令访问的缓存区多于6个,则删除较小的缓存区。设计这些特征是为了让模型能够预测一个程序的执行是否可以利用缓存,以及对缓存的访问级别和访问效率。
缓存访问特征具体可以包括:(1)访问类型,例如读、写、读和写等;(2)字节总数,例如该指令访问的总字节数;(3)唯一字节数,该指令访问的唯一(不重复)的字节总数;(4)缓存行,该指令访问的缓存行总数;(5)唯一缓存行,该指令访问的唯一(不重复)的缓存行总数;(6)重用距离,例如循环迭代次数与总访问字节数之间的数据重用距离;(7)重用计数,例如发生数据重用的次数;(8)跨步,例如数据访问的步距等;(9)按可重用划分的字节访问数等,例如字节总数与重用计数的比值、唯一字节数与重用计数的比值、缓存行与重用计数的比值、唯一缓存行与重用计数的比值等。
可以根据各个程序指令的优化原语,确定各个程序指令对应的程序优化特征。优化原语是指采用向量化、并行、展开等程序优化方法对程序指令对应的程序语句进行优化后得到的处理结果。
例如,使用向量化的程序代码和语句来可以用来替代循环结构,在程序设计和执行效率方面较有优势。程序优化特征可以为向量化相关特征,包括最内层的向量化循环的长度、所有向量化循环长度的乘积、向量化循环的数量和其他特征如展开相关特征,并行化相关特性等。
可以根据目标计算单元的处理器的性能参数,确定各个程序指令对应的处理器影响特征。处理器的性能参数包括软件编程架构、核心利用率(并行任务数量与计算单元核心数量的比值)、计算强度曲线(浮点运算操作数量与计算访存数据的字节数的比值)等。
可以根据目标计算单元为各个程序指令分配的内存空间大小,确定各个程序指令对应的内存影响特征。例如目标计算单元为该指令的输出缓冲区分配的缓冲区的大小、分配和释放的内存数量等。
其他特征还可以包括影响程序性能的辅助开销,例如并行化计算时唤醒线程所需的上下文切换数量、外层循环的数量、外层循环长度的乘积等。
可以从算术运算特征、缓存访问特征、程序优化特征、处理器影响特征和内存影响特征中选择至少一种或者几种特征进行组合,确定各个程序指令对应的执行代价影响特征。
本申请实施例提供的任务调度方法,从多个角度确定程序指令对应的执行代价影响特征,提高了执行代价预测的准确性。
在一些实施例中,执行代价预测模型是基于多层感知器构建的。
具体地,多层感知器(Multilayer Perceptron,MLP)是一种前馈人工神经网络模型,其将输入的多个数据集映射到单一的输出的数据集上。
本申请实施例提供的任务调度方法,通过引入神经网络模型对子任务的执行代价进行预测,提高了执行代价预测的准确性。
在一些实施例中,多层感知器包括多个线性层和多个激活函数层。
具体地,线性层(linear layer)又称为全连接层,其每一个神经元与上一个神经元相连实现对前一层的线性组合,作用是实现对前一层的线性组合或线性变换。激活函数层(activation layer)对特征继续非线性变换,赋予多层神经网络具有深度的意义。
本申请实施例提供的任务调度方法,通过线性层和激活函数层的组合,可以实现对各个程序指令对应的执行代价影响特征的提取,提高了执行代价预测的准确性。
在一些实施例中,多层感知器包括依次连接的第一线性层、第二线性层、第三线性层、第一激活函数层、第四线性层、第二激活函数层、第五线性层、第三激活函数层、第六线性层和第四激活函数层。
具体地,图6是本申请提供的多层感知器的结构示意图,如图6所示,本申请实施例中用于构建执行代价预测模型的多层感知器包括6个线性层和4个激活函数层。
其中,中间的3个线性层(第三线性层、第四线性层和第五线性层)之后都连接一个激活函数层。在实际训练过程中,对于前面的2个线性层(第一线性层和第二线性层),如果在后面连接一个激活函数层,会丢失部分细粒度特征信息,导致后端无法回复细粒度特征或者后端恢复代价较高。因此,前面的2个线性层后未连接激活函数层。
本申请实施例提供的任务调度方法,通过线性层和激活函数层的合理组合,既实现了可以有效地提取程序指令对应的执行代价影响特征,又避免了损失细粒度特征,降低预测的精度,提高了执行代价预测的准确性。
在一些实施例中,第一激活函数层、第二激活函数层和第三激活函数层的激活函数为线性整流函数;第四激活函数层的激活函数为挤压函数。
具体地,线性整流函数(Linear rectification function,ReLU)作为激活函数,可以更加有效率实现梯度下降,避免了梯度爆炸和梯度消失的问题。挤压函数(Squashingfunction)又称为Sigmoid函数,可以将输出结果限制在0到1之间,便于进行概率预测。
在模型前端的线性层后连接ReLU激活层,这需要前端线性层设置较大维度,同时整个模型也需要增加网络深度,才有可能在模型后端保持较好的细粒度特征。模型后端的最后一层线性层同样没有连接ReLU,与前端线性层后没有连接ReLU激活层的道理相似,同样会损失细粒度特征,降低预测的精度。
本申请实施例提供的任务调度方法,通过在模型的中间线性层后设置基于线性整流函数构建的激活函数层,可以有效地避免梯度消失,在模型的最后一层线性层设置基于挤压函数构建的激活函数层,可以加快运算,便于实现概率预测等,提高了执行代价预测的准确性。
在一些实施例中,执行代价预测模型是基于如下步骤训练得到的:
获取多个样本程序指令,以及各个样本程序指令对应的执行代价真实值;
将多个样本程序指令划分为多个批次;
基于各个批次的样本程序指令以及各个样本程序指令对应的执行代价真实值,对初始模型进行训练,得到执行代价预测模型。
具体地,可以采用分批次训练的方法,对初始模型进行训练,得到执行代价预测模型。初始模型可以采用多层感知器等神经网络模型。
首先需要获取多个样本程序指令,采用执行延迟作为执行代价。例如可以随机生成多个任务,每个任务包含一定的样本程序指令,对每个任务进行多次基准测试,记录相应的运行时间,确定各个样本程序指令对应的执行代价真实值。
其次将这些任务对应的样本程序指令划分为多个批次。根据各个批次的样本程序指令以及各个样本程序指令对应的执行代价真实值,对初始模型进行训练。将样本程序指令输入初始模型,得到各个样本程序指令对应的执行代价预测值,根据真实值与预测值之间的差异对初始模型的参数进行调整,得到执行代价预测模型。
本申请实施例提供的任务调度方法,采用样本分批次进行模型训练的方法,可以减少计算系统的内存消耗,加快训练速度,增加随机性,有利于模型的泛化,可以提高模型预测的准确性。
在一些实施例中,执行代价预测模型的损失函数是基于样本程序指令的执行代价预测值与执行代价真实值之间的均方误差,以及样本程序指令的执行代价预测值与执行代价真实值之间的相对误差确定的。
具体地,为了确保执行代价预测模型的输出不会具有较大的偏差,可以使用均方误差(Mean Square Error,MSE)和相对误差的组合构建模型训练的损失函数。
对均方误差项施加一个相对误差可以加速模型训练过程的收敛,同时最终模型的预测精度也更加准确。究其原因,均方误差项没有考虑误差的符号问题,在最终的损失函数中加入一个相对误差会更加精确考虑误差方向。
本申请实施例提供的任务调度方法,采用均方误差和相对误差进行结合的方式构建模型的损失函数,可以加速模型训练过程的收敛,提高模型的预测精度。
在一些实施例中,执行代价预测模型的损失函数是基于如下步骤确定的:
确定各个批次的样本程序指令的置信度系数;
基于各个批次的样本程序指令的执行代价预测值与执行代价真实值之差,以及各个批次的样本程序指令的置信度系数,确定执行代价预测模型的均方误差损失函数;
基于各个批次的样本程序指令的执行代价预测值与执行代价真实值的比值的对数,以及各个批次的样本程序指令的置信度系数,确定执行代价预测模型的相对误差损失函数;
基于各个批次对应的均方误差损失函数和相对误差损失函数,确定执行代价预测模型的损失函数。
具体地,执行代价预测模型是采用样本进行分批次进行训练后得到的,对于每一批次的样本,可以设置每一批次的置信度系数。置信度系数用于表示数据样本真实值的可靠性的置信度,对于损失函数的影响程度。例如样本真实值越可靠,置信度系数越大;样本真实值越不可靠,置信度系数越小。
相对误差可以采用执行代价预测值与执行代价真实值的比值的对数来表示。
执行代价预测模型的损失函数可以表示为:
其中,L为损失函数,为样本批次总数,/>为样本批次的序号,/>为第/>批次样本程序指令的执行代价预测值,/>为第/>批次样本程序指令的执行代价真实值,/>为第/>批次的置信度系数。
本申请实施例提供的任务调度方法,所构建的损失函数,可以加速模型训练过程的收敛,提高模型的预测精度。
在一些实施例中,确定各个批次的样本程序指令的置信度系数,包括:
基于各个批次的样本程序指令对应的执行代价真实值的标准差,确定各个批次的样本程序指令的置信度系数。
具体地,置信度系数相当于衰减因子,如果当前批次的真实值可靠,置信度较高,则通过当前批次得到的预测值和真实值所计算的均方误差和相对误差在损失函数中的影响程度也比较大,衰减较小;如果当前批次的真实值不可靠,置信度较低,则通过当前批次得到的预测值和真实值所计算的均方误差和相对误差在损失函数中的影响程度也比较小,相当于发生了比较大的衰减。
增加置信度系数是为了考虑真实值的可信度,使得最终训练模型的预测值更加准确。置信度系数可以通过真实值的标准差来确定,用公式表示为:
其中,D为置信度系数,为样本程序指令对应的执行代价真实值的标准差,K为对样本程序指令对应的执行代价进行测量的总次数,k为测量次数的序号,/>为第k次测量得到的样本程序指令对应的执行代价真实值,M为K次测量后得到的样本程序指令对应的执行代价真实值的均值。
执行代价真实值的标准差越大,执行代价真实值越不可靠,置信度系数也就越小;执行代价真实值的标准差越小,执行代价真实值越可靠,置信度系数也就越大。
本申请实施例提供的任务调度方法,通过执行代价真实值的标准差确定样本批次的置信度系数,采用可靠的真实值,提高了模型的预测准确性。
在一些实施例中,可以采用最小化平均等待时间、最小化平均响应时间和最大化资源利用率对任务调度结果进行评价。
具体地,平均等待时间指从任务提交作业到开始作业之间的平均时间间隔。平均响应时间是任务提交时间和工作完成时间之间的平均时间间隔,等于等待时间加上作业执行时间。
资源利用率是指每种资源类型(算力、内存)的平均利用率,可以用公式表示为:
其中,为第d种资源类型的平均利用率,/>为计算单元m在时间t内对于第d种资源类型的使用量,T为总时间,/>为整个计算系统对第d种资源类型的总使用量。
下面对本申请实施例提供的装置进行描述,下文描述的装置与上文描述的方法可相互对应参照。
图7是本申请提供的任务调度装置的结构示意图,如图7所示,该装置700包括:
预处理模块710,用于获取计算任务,并将计算任务分解为多个子任务;
任务流分配模块720,用于基于各个子任务之间的执行依赖关系,将多个子任务分配至不同的任务流;
动态规划模块730,用于基于各个子任务的执行代价预测值,对各个任务流中的子任务进行动态规划,确定各个子任务在对应的任务流中的执行顺序;
调度模块740,用于基于各个子任务对应的任务流,以及各个子任务在对应的任务流中的执行顺序,以实现任务调度。
本申请实施例提供的任务调度装置,将计算任务分割为多个子任务;根据各个子任务之间的执行依赖关系,将多个子任务分配至不同的任务流;根据各个子任务的执行代价预测值,对各个任务流中的子任务进行动态规划,确定各个子任务在对应的任务流中的执行顺序;根据各个子任务对应的任务流,以及各个子任务在对应的任务流中的执行顺序,以实现任务调度;通过将计算任务的子任务分配至不同的任务流可以最大程度地提高任务的并行性,通过在各个任务流中对各个子任务的执行顺序进行动态规划可以更细粒度地对任务进行优化调度,提高了计算系统中的任务调度效率,提高了计算系统的资源利用率,提高了计算系统的整体处理性能。
在一些实施例中,任务流分配模块用于:
以计算任务对应的子任务为顶点,以计算任务对应的子任务之间的执行依赖关系为边,构建计算任务对应的有向图;
确定计算任务对应的有向图的最小等价图;
基于最小等价图,确定计算任务对应的二分图;
基于二分图的最大匹配中的顶点以及顶点之间的边,将计算任务对应的有向图中的顶点划分为多个集合;
将属于同一集合的顶点对应的子任务分配至同一任务流。
在一些实施例中,任务流分配模块用于:
将二分图的最大匹配中通过匹配边依次连接的顶点划分至同一集合。
在一些实施例中,该装置还包括:
计算单元确定模块,用于确定计算任务对应的多个任务流;
确定计算系统中的处理器,以及各个处理器中的计算单元;
基于各个处理器中的计算单元,确定计算系统中的计算单元;
将多个任务流分配至计算系统中不同的计算单元。
在一些实施例中,计算单元确定模块用于:
在处理器的类型为中央处理器的情况下,将中央处理器中的内核作为计算单元;
在处理器的类型为图形处理器的情况下,将图形处理器中的流处理器作为计算单元。
在一些实施例中,动态规划模块用于:
确定目标任务流;
以目标任务流中各个子任务的执行代价预测值之和最小为目标,对各个子任务的执行顺序进行动态规划,确定目标任务流对应的任务调度队列;
基于任务调度队列,确定各个子任务在目标任务流中的执行顺序。
在一些实施例中,动态规划模块用于:
以目标任务流中的各个子任务为顶点,以目标任务流中的各个子任务之间的执行依赖关系为边,确定目标任务流对应的有向图;
将目标任务流对应的有向图确定为当前待规划有向图的初始值;
确定当前待规划有向图;
对当前待规划有向图中的顶点进行枚举,将当前待规划有向图划分为多个尾段以及尾段对应的非尾段;非尾段与尾段之间的边均从非尾段中的顶点处开始且在尾段的顶点处结束;
从多个尾段中确定目标尾段;目标尾段中顶点对应的子任务的执行代价预测值和目标尾段对应的非尾段中顶点对应的子任务的执行代价预测值之和最小;
将目标尾段中顶点对应的子任务添加至目标任务流对应的任务调度队列的头部;
基于目标尾段对应的非尾段,确定下一待规划有向图;
在下一待规划有向图中的顶点为空的情况下,返回目标任务流对应的任务调度队列。
在一些实施例中,该装置还包括:
执行代价预测模块,用于确定待预测子任务中的多个程序指令;
基于各个程序指令以及待预测子任务对应的目标计算单元,确定各个程序指令对应的执行代价影响特征;
将各个程序指令对应的执行代价影响特征输入至执行代价预测模型,得到执行代价预测模型输出的各个程序指令对应的执行代价预测值;
基于各个程序指令对应的执行代价预测值,确定待预测子任务的执行代价预测值。
在一些实施例中,执行代价预测模块用于:
基于各个程序指令调用浮点数运算的次数和/或整数运算的次数,确定各个程序指令对应的算术运算特征;
基于各个程序指令对目标计算单元中缓存区的访问特征,确定各个程序指令对应的缓存访问特征;
基于各个程序指令的优化原语,确定各个程序指令对应的程序优化特征;
基于目标计算单元的处理器的性能参数,确定各个程序指令对应的处理器影响特征;
基于目标计算单元为各个程序指令分配的内存空间大小,确定各个程序指令对应的内存影响特征;
基于各个程序指令对应的算术运算特征、缓存访问特征、程序优化特征、处理器影响特征和内存影响特征中的至少一种,确定各个程序指令对应的执行代价影响特征。
在一些实施例中,执行代价预测模型是基于多层感知器构建的。
在一些实施例中,多层感知器包括多个线性层和多个激活函数层。
在一些实施例中,多层感知器包括依次连接的第一线性层、第二线性层、第三线性层、第一激活函数层、第四线性层、第二激活函数层、第五线性层、第三激活函数层、第六线性层和第四激活函数层。
在一些实施例中,第一激活函数层、第二激活函数层和第三激活函数层的激活函数为线性整流函数;第四激活函数层的激活函数为挤压函数。
在一些实施例中,该装置还包括:
模型训练模块,用于获取多个样本程序指令,以及各个样本程序指令对应的执行代价真实值;
将多个样本程序指令划分为多个批次;
基于各个批次的样本程序指令以及各个样本程序指令对应的执行代价真实值,对初始模型进行训练,得到执行代价预测模型。
在一些实施例中,执行代价预测模型的损失函数是基于样本程序指令的执行代价预测值与执行代价真实值之间的均方误差,以及样本程序指令的执行代价预测值与执行代价真实值之间的相对误差确定的。
在一些实施例中,该装置还包括:
损失确定模块,用于确定各个批次的样本程序指令的置信度系数;
基于各个批次的样本程序指令的执行代价预测值与执行代价真实值之差,以及各个批次的样本程序指令的置信度系数,确定执行代价预测模型的均方误差损失函数;
基于各个批次的样本程序指令的执行代价预测值与执行代价真实值的比值的对数,以及各个批次的样本程序指令的置信度系数,确定执行代价预测模型的相对误差损失函数;
基于各个批次对应的均方误差损失函数和相对误差损失函数,确定执行代价预测模型的损失函数。
在一些实施例中,损失确定模块用于:
基于各个批次的样本程序指令对应的执行代价真实值的标准差,确定各个批次的样本程序指令的置信度系数。
图8是本申请提供的计算系统的结构示意图,如图8所示,该系统800包括多个计算服务器810,以及上述实施例中的任务调度装置700。
计算服务器810,与任务调度装置700连接,用于基于计算任务的任务调度结果,执行计算任务。
本申请实施例提供的计算系统,通过任务调度装置进行任务调度,提高了计算系统中的任务调度效率,提高了计算系统的资源利用率,提高了计算系统的整体处理性能。
在一些实施例中,计算服务器包括至少一个处理器组合和至少一个内存组合;
处理器组合中至少两个处理器的类型不同;
内存组合中至少两个内存的类型不同。
具体地,本申请实施例中的计算系统是基于内存池化多引擎异构计算系统。计算系统中的处理器可能是异构处理器(异构计算引擎),可能包括中央处理器(CentralProcessing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)、其他类型的处理器和加速器等不同类型的处理器组合。
这些异构处理器以不同的组合方式构成物理上的计算服务器。每个计算服务器包含动态随机存取存储器(Dynamic Random Access Memory,DRAM)、存储级内存(StorageClass Memory,SCM)、非易失存储器(Non-volatile Memory,NVM)等不同介质类型的内存组合。每一个处理器从本地、机架内、远端的不同介质内存中读取数据的延迟是确定性的而且已知的。多引擎异构计算系统会持续接收待处理计算任务,根据系统的任务调度和数据放置策略协同系统计算任务的高效完成。
图9是本申请提供的电子设备的结构示意图,如图9所示,该电子设备可以包括:处理器(Processor)910、通信接口(Communications Interface)920、存储器(Memory)930和通信总线(Communications Bus)940,其中,处理器910,通信接口920,存储器930通过通信总线940完成相互间的通信。处理器910可以调用存储器930中的逻辑命令,以执行上述实施例中所述的方法,例如:
获取计算任务,并将计算任务分解为多个子任务;基于各个子任务之间的执行依赖关系,将多个子任务分配至不同的任务流;基于各个子任务的执行代价预测值,对各个任务流中的子任务进行动态规划,确定各个子任务在对应的任务流中的执行顺序;基于各个子任务对应的任务流,以及各个子任务在对应的任务流中的执行顺序,以实现任务调度。
此外,上述的存储器中的逻辑命令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干命令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例提供的电子设备中的处理器可以调用存储器中的逻辑指令,实现上述方法,其具体的实施方式与前述方法实施方式一致,且可以达到相同的有益效果,此处不再赘述。
本申请实施例还提供一种计算机可读的存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的方法。
其具体的实施方式与前述方法实施方式一致,且可以达到相同的有益效果,此处不再赘述。
本申请实施例提供一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现如上述方法。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (22)
1.一种任务调度方法,其特征在于,包括:
获取计算任务,并将所述计算任务分解为多个子任务;
基于各个子任务之间的执行依赖关系,将所述多个子任务分配至不同的任务流;
基于各个子任务的执行代价预测值,对各个任务流中的子任务进行动态规划,确定各个子任务在对应的任务流中的执行顺序;
基于各个子任务对应的任务流,以及各个子任务在对应的任务流中的执行顺序,以实现任务调度。
2.根据权利要求1所述的任务调度方法,其特征在于,所述基于各个子任务之间的执行依赖关系,将所述多个子任务分配至不同的任务流,包括:
以所述计算任务对应的子任务为顶点,以所述计算任务对应的子任务之间的执行依赖关系为边,构建所述计算任务对应的有向图;
确定所述计算任务对应的有向图的最小等价图;
基于所述最小等价图,确定所述计算任务对应的二分图;
基于所述二分图的最大匹配中的顶点以及顶点之间的边,将所述计算任务对应的有向图中的顶点划分为多个集合;
将属于同一集合的顶点对应的子任务分配至同一任务流。
3.根据权利要求2所述的任务调度方法,其特征在于,所述基于所述二分图的最大匹配中的顶点以及顶点之间的边,将所述计算任务对应的有向图中的顶点划分为多个集合,包括:
将所述二分图的最大匹配中通过匹配边依次连接的顶点划分至同一集合。
4.根据权利要求1所述的任务调度方法,其特征在于,所述基于各个子任务之间的执行依赖关系,将所述多个子任务分配至不同的任务流之后,所述方法还包括:
确定所述计算任务对应的多个任务流;
确定计算系统中的处理器,以及各个处理器中的计算单元;
基于各个处理器中的计算单元,确定所述计算系统中的计算单元;
将所述多个任务流分配至所述计算系统中不同的计算单元。
5.根据权利要求4所述的任务调度方法,其特征在于,所述确定计算系统中的处理器,以及各个处理器中的计算单元,包括:
在所述处理器的类型为中央处理器的情况下,将所述中央处理器中的内核作为计算单元;
在所述处理器的类型为图形处理器的情况下,将所述图形处理器中的流处理器作为计算单元。
6.根据权利要求1所述的任务调度方法,其特征在于,所述基于各个子任务的执行代价预测值,对各个任务流中的子任务进行动态规划,确定各个子任务在对应的任务流中的执行顺序,包括:
确定目标任务流;
以所述目标任务流中各个子任务的执行代价预测值之和最小为目标,对各个子任务的执行顺序进行动态规划,确定所述目标任务流对应的任务调度队列;
基于所述任务调度队列,确定各个子任务在所述目标任务流中的执行顺序。
7.根据权利要求6所述的任务调度方法,其特征在于,所述以所述目标任务流中各个子任务的执行代价预测值之和最小为目标,对各个子任务的执行顺序进行动态规划,确定所述目标任务流对应的任务调度队列,包括:
以所述目标任务流中的各个子任务为顶点,以所述目标任务流中的各个子任务之间的执行依赖关系为边,确定所述目标任务流对应的有向图;
将所述目标任务流对应的有向图确定为当前待规划有向图的初始值;
确定当前待规划有向图;
对所述当前待规划有向图中的顶点进行枚举,将所述当前待规划有向图划分为多个尾段以及所述尾段对应的非尾段;所述非尾段与所述尾段之间的边均从所述非尾段中的顶点处开始且在所述尾段的顶点处结束;
从所述多个尾段中确定目标尾段;所述目标尾段中顶点对应的子任务的执行代价预测值和所述目标尾段对应的非尾段中顶点对应的子任务的执行代价预测值之和最小;
将所述目标尾段中顶点对应的子任务添加至所述目标任务流对应的任务调度队列的头部;
基于所述目标尾段对应的非尾段,确定下一待规划有向图;
在所述下一待规划有向图中的顶点为空的情况下,返回所述目标任务流对应的任务调度队列。
8.根据权利要求1所述的任务调度方法,其特征在于,各个子任务的执行代价预测值是基于如下步骤确定的:
确定待预测子任务中的多个程序指令;
基于各个程序指令以及所述待预测子任务对应的目标计算单元,确定各个程序指令对应的执行代价影响特征;
将各个程序指令对应的执行代价影响特征输入至执行代价预测模型,得到所述执行代价预测模型输出的各个程序指令对应的执行代价预测值;
基于各个程序指令对应的执行代价预测值,确定所述待预测子任务的执行代价预测值。
9.根据权利要求8所述的任务调度方法,其特征在于,所述基于各个程序指令以及所述待预测子任务对应的目标计算单元,确定各个程序指令对应的执行代价影响特征,包括:
基于各个程序指令调用浮点数运算的次数和/或整数运算的次数,确定各个程序指令对应的算术运算特征;
基于各个程序指令对所述目标计算单元中缓存区的访问特征,确定各个程序指令对应的缓存访问特征;
基于各个程序指令的优化原语,确定各个程序指令对应的程序优化特征;
基于所述目标计算单元的处理器的性能参数,确定各个程序指令对应的处理器影响特征;
基于所述目标计算单元为各个程序指令分配的内存空间大小,确定各个程序指令对应的内存影响特征;
基于各个程序指令对应的所述算术运算特征、所述缓存访问特征、所述程序优化特征、所述处理器影响特征和所述内存影响特征中的至少一种,确定各个程序指令对应的执行代价影响特征。
10.根据权利要求8所述的任务调度方法,其特征在于,所述执行代价预测模型是基于多层感知器构建的。
11.根据权利要求10所述的任务调度方法,其特征在于,所述多层感知器包括多个线性层和多个激活函数层。
12.根据权利要求11所述的任务调度方法,其特征在于,所述多层感知器包括依次连接的第一线性层、第二线性层、第三线性层、第一激活函数层、第四线性层、第二激活函数层、第五线性层、第三激活函数层、第六线性层和第四激活函数层。
13.根据权利要求12所述的任务调度方法,其特征在于,所述第一激活函数层、所述第二激活函数层和所述第三激活函数层的激活函数为线性整流函数;所述第四激活函数层的激活函数为挤压函数。
14.根据权利要求8所述的任务调度方法,其特征在于,所述执行代价预测模型是基于如下步骤训练得到的:
获取多个样本程序指令,以及各个样本程序指令对应的执行代价真实值;
将所述多个样本程序指令划分为多个批次;
基于各个批次的样本程序指令以及各个样本程序指令对应的执行代价真实值,对初始模型进行训练,得到所述执行代价预测模型。
15.根据权利要求14所述的任务调度方法,其特征在于,所述执行代价预测模型的损失函数是基于所述样本程序指令的执行代价预测值与执行代价真实值之间的均方误差,以及所述样本程序指令的执行代价预测值与执行代价真实值之间的相对误差确定的。
16.根据权利要求15所述的任务调度方法,其特征在于,所述执行代价预测模型的损失函数是基于如下步骤确定的:
确定各个批次的样本程序指令的置信度系数;
基于各个批次的样本程序指令的执行代价预测值与执行代价真实值之差,以及各个批次的样本程序指令的置信度系数,确定所述执行代价预测模型的均方误差损失函数;
基于各个批次的样本程序指令的执行代价预测值与执行代价真实值的比值的对数,以及各个批次的样本程序指令的置信度系数,确定所述执行代价预测模型的相对误差损失函数;
基于各个批次对应的均方误差损失函数和相对误差损失函数,确定所述执行代价预测模型的损失函数。
17.根据权利要求16所述的任务调度方法,其特征在于,所述确定各个批次的样本程序指令的置信度系数,包括:
基于各个批次的样本程序指令对应的执行代价真实值的标准差,确定各个批次的样本程序指令的置信度系数。
18.一种任务调度装置,其特征在于,包括:
预处理模块,用于获取计算任务,并将所述计算任务分解为多个子任务;
任务流分配模块,用于基于各个子任务之间的执行依赖关系,将所述多个子任务分配至不同的任务流;
动态规划模块,用于基于各个子任务的执行代价预测值,对各个任务流中的子任务进行动态规划,确定各个子任务在对应的任务流中的执行顺序;
调度模块,用于基于各个子任务对应的任务流,以及各个子任务在对应的任务流中的执行顺序,以实现任务调度。
19.一种计算系统,其特征在于,包括多个计算服务器,以及权利要求18所述的任务调度装置;
所述计算服务器,与所述任务调度装置连接,用于基于计算任务的任务调度结果,执行所述计算任务。
20.根据权利要求19所述的计算系统,其特征在于,所述计算服务器包括至少一个处理器组合和至少一个内存组合;
所述处理器组合中至少两个处理器的类型不同;
所述内存组合中至少两个内存的类型不同。
21.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至17任一项所述的任务调度方法。
22.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至17任一项所述的任务调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310969232.7A CN116680063B (zh) | 2023-08-03 | 2023-08-03 | 任务调度方法、装置、计算系统、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310969232.7A CN116680063B (zh) | 2023-08-03 | 2023-08-03 | 任务调度方法、装置、计算系统、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116680063A true CN116680063A (zh) | 2023-09-01 |
CN116680063B CN116680063B (zh) | 2023-11-03 |
Family
ID=87791307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310969232.7A Active CN116680063B (zh) | 2023-08-03 | 2023-08-03 | 任务调度方法、装置、计算系统、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116680063B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117130873A (zh) * | 2023-10-26 | 2023-11-28 | 中国证券登记结算有限责任公司 | 一种任务监控的方法和装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107291536A (zh) * | 2017-05-23 | 2017-10-24 | 南京邮电大学 | 一种云计算环境下应用任务流调度方法 |
CN109522108A (zh) * | 2018-10-30 | 2019-03-26 | 西安交通大学 | 一种基于Kernel合并的GPU任务调度系统及方法 |
CN109711802A (zh) * | 2018-12-14 | 2019-05-03 | 深圳壹账通智能科技有限公司 | 项目信息处理方法、装置、计算机设备和存储介质 |
CN110489223A (zh) * | 2019-08-26 | 2019-11-22 | 北京邮电大学 | 一种异构集群中任务调度方法、装置及电子设备 |
CN110597611A (zh) * | 2019-09-19 | 2019-12-20 | 中国银行股份有限公司 | 任务调度方法及装置 |
CN111427681A (zh) * | 2020-02-19 | 2020-07-17 | 上海交通大学 | 边缘计算中基于资源监控的实时任务匹配调度系统和方法 |
CN115794358A (zh) * | 2023-02-06 | 2023-03-14 | 天翼云科技有限公司 | 云工作流任务调度方法、装置、电子设备和存储介质 |
CN116185588A (zh) * | 2023-01-31 | 2023-05-30 | 深圳派氪司科技有限公司 | 一种任务调度方法、装置、电子设备及可读存储介质 |
CN116501503A (zh) * | 2023-06-27 | 2023-07-28 | 上海燧原科技有限公司 | 负载任务的架构映射方法、装置、计算机设备及介质 |
-
2023
- 2023-08-03 CN CN202310969232.7A patent/CN116680063B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107291536A (zh) * | 2017-05-23 | 2017-10-24 | 南京邮电大学 | 一种云计算环境下应用任务流调度方法 |
CN109522108A (zh) * | 2018-10-30 | 2019-03-26 | 西安交通大学 | 一种基于Kernel合并的GPU任务调度系统及方法 |
CN109711802A (zh) * | 2018-12-14 | 2019-05-03 | 深圳壹账通智能科技有限公司 | 项目信息处理方法、装置、计算机设备和存储介质 |
CN110489223A (zh) * | 2019-08-26 | 2019-11-22 | 北京邮电大学 | 一种异构集群中任务调度方法、装置及电子设备 |
CN110597611A (zh) * | 2019-09-19 | 2019-12-20 | 中国银行股份有限公司 | 任务调度方法及装置 |
CN111427681A (zh) * | 2020-02-19 | 2020-07-17 | 上海交通大学 | 边缘计算中基于资源监控的实时任务匹配调度系统和方法 |
CN116185588A (zh) * | 2023-01-31 | 2023-05-30 | 深圳派氪司科技有限公司 | 一种任务调度方法、装置、电子设备及可读存储介质 |
CN115794358A (zh) * | 2023-02-06 | 2023-03-14 | 天翼云科技有限公司 | 云工作流任务调度方法、装置、电子设备和存储介质 |
CN116501503A (zh) * | 2023-06-27 | 2023-07-28 | 上海燧原科技有限公司 | 负载任务的架构映射方法、装置、计算机设备及介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117130873A (zh) * | 2023-10-26 | 2023-11-28 | 中国证券登记结算有限责任公司 | 一种任务监控的方法和装置 |
CN117130873B (zh) * | 2023-10-26 | 2024-01-26 | 中国证券登记结算有限责任公司 | 一种任务监控的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN116680063B (zh) | 2023-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Fowers et al. | A configurable cloud-scale DNN processor for real-time AI | |
US10970623B2 (en) | System and method for training artificial intelligence systems using a sima based processor | |
WO2021057713A1 (zh) | 用多核处理器实现神经网络模型拆分方法及相关产品 | |
CN111738434B (zh) | 在异构处理单元上执行深度神经网络的方法 | |
US20200249998A1 (en) | Scheduling computation graph heterogeneous computer system | |
US11243816B2 (en) | Program execution on heterogeneous platform | |
CN110704360B (zh) | 一种基于异构fpga数据流的图计算优化方法 | |
JP7078758B2 (ja) | 機械学習モデルを改良して局所性を改善させること | |
CN111104120B (zh) | 神经网络编译方法、系统及相应异构计算平台 | |
US11609792B2 (en) | Maximizing resource utilization of neural network computing system | |
CN113748399B (zh) | 在异构计算资源上调度计算图的方法、装置及可读介质 | |
CN116680063B (zh) | 任务调度方法、装置、计算系统、电子设备和存储介质 | |
CN109918182A (zh) | 虚拟化技术下的多gpu任务调度方法 | |
CN113037800B (zh) | 作业调度方法以及作业调度装置 | |
CN112764893B (zh) | 数据处理方法和数据处理系统 | |
Wang et al. | An efficient and non-intrusive GPU scheduling framework for deep learning training systems | |
US20140143524A1 (en) | Information processing apparatus, information processing apparatus control method, and a computer-readable storage medium storing a control program for controlling an information processing apparatus | |
CN114503125A (zh) | 结构化剪枝方法、系统和计算机可读介质 | |
KR20210148586A (ko) | 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 가속기 시스템 | |
US20220076095A1 (en) | Multi-level sparse neural networks with dynamic rerouting | |
Jeon et al. | Parallel exact inference on a CPU-GPGPU heterogenous system | |
CN110955529B (zh) | 内存资源静态部署系统及方法 | |
CN110825514A (zh) | 人工智能芯片以及用于人工智能芯片的指令执行方法 | |
CN115016938A (zh) | 一种基于强化学习的计算图自动划分方法 | |
CN114626516A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |