CN113886053B - 一种任务调度方法、装置和用于任务调度的装置 - Google Patents
一种任务调度方法、装置和用于任务调度的装置 Download PDFInfo
- Publication number
- CN113886053B CN113886053B CN202111453560.9A CN202111453560A CN113886053B CN 113886053 B CN113886053 B CN 113886053B CN 202111453560 A CN202111453560 A CN 202111453560A CN 113886053 B CN113886053 B CN 113886053B
- Authority
- CN
- China
- Prior art keywords
- priority
- transition
- library
- tasks
- 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.)
- Active
Links
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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了一种任务调度方法、装置和用于任务调度的装置。其中的方法包括:确定待调度的各任务以及各任务之间的依赖关系;根据所述各任务以及各任务之间的依赖关系,构建有向图;所述有向图中的节点表示待调度的任务,所述有向图中节点之间的有向边表示任务之间的依赖关系;根据所述有向图中的节点构建优先Petri网中的库所,以及根据所述有向图中的有向边构建优先Petri网中的变迁,并设置各变迁的优先级,得到优先Petri网;按照所述优先Petri网中各变迁的优先级,执行所述优先Petri网进行任务调度。本发明实施例可以实现循环任务的调度,可以提高分布式任务并发调度的可行性和高效性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种任务调度方法、装置和用于任务调度的装置。
背景技术
目前,任务调度方法主要采用两种模式。一种是基于树的调度模式,另一种是基于图的调度模式。
基于树的调度模式是用树结构描述待调度的任务,树结构中的节点可以描述串行/并行任务。然而,树结构仅用于描述任务之间的调度关系,如果需要描述任务之间的依赖关系则需要增加额外的细节信息。
基于图的调度模式是用图结构描述待调度的任务,图结构中的边可以描述任务之间的依赖关系。然而,图结构是一种静态的描述结构,只能描述任务之间的依赖关系,如果图中存在环(也即存在循环计算任务)则无法进行调度。
发明内容
本发明实施例提供一种任务调度方法、装置和用于任务调度的装置,可以实现循环任务的调度,可以提高分布式任务并发调度的可行性和高效性。
为了解决上述问题,本发明实施例公开了一种任务调度方法,所述方法包括:
确定待调度的各任务以及各任务之间的依赖关系;
根据所述各任务以及各任务之间的依赖关系,构建有向图;所述有向图中的节点表示待调度的任务,所述有向图中节点之间的有向边表示任务之间的依赖关系;
根据所述有向图中的节点构建优先Petri网中的库所,以及根据所述有向图中的有向边构建优先Petri网中的变迁,并设置各变迁的优先级,得到优先Petri网;
按照所述优先Petri网中各变迁的优先级,执行所述优先Petri网进行任务调度。
可选地,所述按照所述优先Petri网中各变迁的优先级,执行所述优先Petri网进行任务调度,包括:
执行起始库所对应的任务,并对所述起始库所初始化n个令牌,n为所述起始库所的出边个数;
在所述优先Petri网中确定可激活的变迁,所述可激活的变迁的每个输入库所都拥有令牌;
在所述可激活的变迁中确定优先级最高的为目标变迁;
激活所述目标变迁,所述目标变迁的输入库所消耗令牌,以及所述目标变迁的输出库所产生令牌;
在所述优先Petri网中确定目标库所,并执行所述目标库所对应的任务;所述目标库所存在至少一个已被激活的输入变迁,且所述目标库所拥有令牌;
当所述优先Petri网中不存在可激活的变迁时,任务调度结束。
可选地,所述设置各变迁的优先级,包括:
初始化所述优先Petri网中各变迁的优先级为默认优先级;
在所述优先Petri网中确定第一库所,所述第一库所包括至少两个输出变迁;
在所述至少两个输出变迁中确定第一变迁;
在所述第一库所对应的任务中,通过调用预设的第三接口修改所述第一变迁的优先级。
可选地,所述预设的第三接口包括定位函数和设置函数,所述通过调用预设的第三接口修改所述第一变迁的优先级,包括:
通过调用所述定位函数,在所述优先Petri网中定位所述第一变迁;
通过调用所述设置函数,将所述第一变迁的优先级修改为目标优先级。
可选地,所述根据所述有向图中的节点构建优先Petri网中的库所,以及根据所述有向图中的有向边构建优先Petri网中的变迁,包括:
在所述有向图中确定第一节点,所述第一节点的入边个数为0;
将所述第一节点构建为优先Petri网中的起始库所;
对于所述有向图中除所述第一节点外的任一节点,将其构建为所述优先Petri网中的一个库所,并在构建的各库所的所有入边插入一个变迁;
在已构建的优先Petri网中确定第二库所,所述第二库所包括至少两个入边,且所述至少两个入边中存在至少一个位于环内的入边;
断开位于所述环内的入边上的变迁,并在所述位于所述环内的入边上插入一个新的变迁。
可选地,所述根据所述各任务以及各任务之间的依赖关系,构建有向图,包括:
通过预设的第一接口创建待调度的各任务,以及通过预设的第二接口描述各任务之间的依赖关系;
根据所述第一接口创建的各任务构建有向图中的节点,以及根据所述第二接口描述的依赖关系构建有向图中节点之间的有向边,得到有向图。
另一方面,本发明实施例公开了一种任务调度装置,所述装置包括:
关系确定模块,用于确定待调度的各任务以及各任务之间的依赖关系;
图构建模块,用于根据所述各任务以及各任务之间的依赖关系,构建有向图;所述有向图中的节点表示待调度的任务,所述有向图中节点之间的有向边表示任务之间的依赖关系;
网络转换模块,用于根据所述有向图中的节点构建优先Petri网中的库所,以及根据所述有向图中的有向边构建优先Petri网中的变迁,并设置各变迁的优先级,得到优先Petri网;
任务调度模块,用于按照所述优先Petri网中各变迁的优先级,执行所述优先Petri网进行任务调度。
可选地,所述任务调度模块,包括:
初始执行子模块,用于执行起始库所对应的任务,并对所述起始库所初始化n个令牌,n为所述起始库所的出边个数;
激活确定子模块,用于在所述优先Petri网中确定可激活的变迁,所述可激活的变迁的每个输入库所都拥有令牌;
目标确定子模块,用于在所述可激活的变迁中确定优先级最高的为目标变迁;
目标激活子模块,用于激活所述目标变迁,所述目标变迁的输入库所消耗令牌,以及所述目标变迁的输出库所产生令牌;
目标执行子模块,用于在所述优先Petri网中确定目标库所,并执行所述目标库所对应的任务;所述目标库所存在至少一个已被激活的输入变迁,且所述目标库所拥有令牌;
调度结束子模块,用于当所述优先Petri网中不存在可激活的变迁时,任务调度结束。
可选地,所述网络转换模块,包括:
优先级初始化子模块,用于初始化所述优先Petri网中各变迁的优先级为默认优先级;
第一库所确定子模块,用于在所述优先Petri网中确定第一库所,所述第一库所包括至少两个输出变迁;
第一变迁确定子模块,用于在所述至少两个输出变迁中确定第一变迁;
优先级修改子模块,用于在所述第一库所对应的任务中,通过调用预设的第三接口修改所述第一变迁的优先级。
可选地,所述预设的第三接口包括定位函数和设置函数,所述优先级修改子模块,包括:
定位单元,用于通过调用所述定位函数,在所述优先Petri网中定位所述第一变迁;
修改单元,用于通过调用所述设置函数,将所述第一变迁的优先级修改为目标优先级。
可选地,所述网络转换模块,包括:
第一节点确定子模块,用于在所述有向图中确定第一节点,所述第一节点的入边个数为0;
第一构建子模块,用于将所述第一节点构建为优先Petri网中的起始库所;
第二构建子模块,用于对于所述有向图中除所述第一节点外的任一节点,将其构建为所述优先Petri网中的一个库所,并在构建的各库所的所有入边插入一个变迁;
第二库所确定子模块,用于在已构建的优先Petri网中确定第二库所,所述第二库所包括至少两个入边,且所述至少两个入边中存在至少一个位于环内的入边;
变迁断开插入子模块,用于断开位于所述环内的入边上的变迁,并在所述位于所述环内的入边上插入一个新的变迁。
可选地,所述图构建模块,包括:
接口描述子模块,用于通过预设的第一接口创建待调度的各任务,以及通过预设的第二接口描述各任务之间的依赖关系;
图构建子模块,用于根据所述第一接口创建的各任务构建有向图中的节点,以及根据所述第二接口描述的依赖关系构建有向图中节点之间的有向边,得到有向图。
再一方面,本发明实施例公开了一种用于任务调度的装置,包括有存储器,以及一个以上程序,其中一个以上程序存储于存储器中,且经配置以由一个以上处理器执行所述一个以上程序,所述一个以上程序包含用于进行如前述一个或多个所述的任务调度方法的指令。
又一方面,本发明实施例公开了一种机器可读介质,其上存储有指令,当所述指令由装置的一个或多个处理器执行时,使得装置执行如前述一个或多个所述的任务调度方法。
又一方面,一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中,且适于由处理器读取并执行,以使得具有所述处理器的计算机设备执行如前述一个或多个所述的任务调度方法。
本发明实施例包括以下优点:
本发明实施例对于分布式任务中待调度的各任务,首先根据各任务以及各任务之间的依赖关系,构建有向图;然后将构建的有向图转换为优先Petri网,并设置所述优先Petri网中各变迁的优先级;最后,按照所述优先Petri网中各变迁的优先级,执行所述优先Petri网进行任务调度。在任务调度过程中,通过变迁的优先级可以控制变迁的激活顺序,进而可以控制任务的执行顺序,从而可以实现循环任务的调度。本发明实施例通过优先Petri网实现对分布式任务的并发调度,相对于基于树的调度模式,无需在优先Petri网中增加额外的细节信息,可以提高减少开发成本。相对于基于图的调度模式,本发明实施例可以实现循环任务的调度,可以提高分布式任务并发调度的可行性和高效性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的一种任务调度方法实施例的步骤流程图;
图2是对示例1中待调度的各节点构建得到的有向图;
图3是对示例2中待调度的各节点构建得到的有向图;
图4是将示例1中的有向图转换为优先Petri网的网络结构示意图;
图5是本发明的一种任务调度装置实施例的结构框图;
图6是本发明的一种用于任务调度的装置800的框图;
图7是本发明的一些实施例中服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中的术语“和/或”用于描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本发明实施例中术语“多个”是指两个或两个以上,其它量词与之类似。
方法实施例
参照图1,示出了本发明的一种任务调度方法实施例的步骤流程图,具体可以包括如下步骤:
步骤101、确定待调度的各任务以及各任务之间的依赖关系;
步骤102、根据所述各任务以及各任务之间的依赖关系,构建有向图;所述有向图中的节点表示待调度的任务,所述有向图中节点之间的有向边表示任务之间的依赖关系;
步骤103、根据所述有向图中的节点构建优先Petri网中的库所,以及根据所述有向图中的有向边构建优先Petri网中的变迁,并设置各变迁的优先级,得到优先Petri网;
步骤104、按照所述优先Petri网中各变迁的优先级,执行所述优先Petri网进行任务调度。
本发明实施例可应用于任务调度场景,尤其地,可应用于分布式任务的并发调度场景。一个示例中,所述分布式任务可以为联邦学习任务,该联邦学习任务可以由多个任务组成,不同任务可以在不同计算引擎上执行,不同任务之间需要进行调度,以协同完成联邦学习任务。在分布式任务的并发调度场景中,由于资源具有分布、异构、动态、自治等特点,并发调度更加复杂,迫切需要更加有效的图形工具以辅助并发调度的过程,提高并发调度的可行性和高效性。需要说明的是,上述联邦学习任务仅作为一种示例性说明,本发明实施例对待调度的任务类型不做限制。
由于优先Petri网是有向图的结构,因此可以利用优先Petri网描述分布式任务中各任务之间的依赖关系。此外,利用优先Petri网中的库所和变迁可以描述任务的动态过程,这使得存在环(循环任务)的调度描述成为了可能。再者,优先Petri网中可以定义各变迁被激活的优先级,进而可以通过设置变迁的优先级实现控制分布式任务中各任务的调度顺序,从而实现对循环任务的调度。
本发明实施例通过优先Petri网实现对分布式任务的并发调度。对于分布式任务中待调度的各任务,本发明实施例首先根据各任务以及各任务之间的依赖关系,构建有向图;然后将构建的有向图转换为优先Petri网,并设置所述优先Petri网中各变迁的优先级;最后,按照所述优先Petri网中各变迁的优先级,执行所述优先Petri网进行任务调度。在任务调度过程中,通过变迁的优先级可以控制变迁的激活顺序,进而可以控制分布式任务中各任务的执行顺序,从而可以实现对循环任务的调度。
一个示例中,对于一个联邦学习任务,其中包含一个循环训练任务,该循环训练任务存在最后一个步骤指向第一个步骤的有向边,从而形成了一个环。本发明实施例可以通过设置变迁的优先级控制变迁的激活顺序,从而控制在该循环训练任务满足循环结束条件之前,最后一个步骤的任务重复指向第一个步骤的任务,从而实现对循环任务的调度。
在本发明的一种可选实施例中,所述根据所述各任务以及各任务之间的依赖关系,构建有向图,可以包括:
通过预设的第一接口创建待调度的各任务,以及通过预设的第二接口描述各任务之间的依赖关系;
根据所述第一接口创建的各任务构建有向图中的节点,以及根据所述第二接口描述的依赖关系构建有向图中节点之间的有向边,得到有向图。
本发明实施例预先定义了一种基于预设语言的应用编程接口(API),利用该API可以定义优先Petri网的网络结构,从而可以利用该优先Petri网的网络结构实现对分布式任务的并发调度模式进行建模。
所述预设语言可以是任意的编程语言,如Python语言、Java语言等。
本发明实施例提供的应用编程接口可以包括静态接口和动态接口。其中,静态接口可以包括第一接口和第二接口,第一接口可用于描述待调度的任务;第二接口可用于描述待调度的任务之间的依赖关系。动态接口可以包括第三接口,第三接口可用于设置变迁的优先级。例如,在任务调度之前,通过第三接口初始化各变迁的优先级为默认优先级,以及在任务调度的过程中通过第三接口修改变迁的优先级以改变任务调度的顺序。
示例性地,本发明实施例用create_task表示第一接口,可选地,所述第一接口的定义可以如下:task = create_task(task_func, task_name, task_param)。其中,第一接口create_task可以包括task_func、task_name、task_param三个参数,第一个参数task_func是任务的实现代码,第二个参数task_name是任务的名称,第三个参数task_param是执行任务所需的参数。
示例1中,通过第一接口create_task创建如下5个待调度的任务(task1、task2、task3、task4、task5):
task1 = create_task(task_func, task_name, task_param)
task2 = create_task(task_func, task_name, task_param)
task3 = create_task(task_func, task_name, task_param)
task4 = create_task(task_func, task_name, task_param)
task5 = create_task(task_func, task_name, task_param)
可选地,本发明实施例通过重载位运算符定义了第二接口。例如,第二接口用位运算符“>>”表示。
示例1中,通过第二接口描述上述5个任务之间的依赖关系如下:
task1>> task2 >> task3 >> task5
task1 >> task4 >> task5
task3 >> task2
示例1中,task1>> task2,表示任务task1与任务task2之间存在task2的完成依赖于task1的完成的依赖关系。也即,在任务task1完成之后才可以执行任务task2。任务task1与任务task2之间的依赖关系,在有向图中可以用一条从task1的节点指向task2的节点的有向边表示。同样地,task2 >> task3,表示在有向图中,存在一条从task2的节点指向task3的节点的有向边。
根据第一接口描述的各任务可以构建有向图中的节点,以及根据第二接口描述的各任务之间的依赖关系可以构建有向图中节点之间的有向边,进而可以得到构建的有向图。
参照图2,示出了对示例1中待调度的各节点构建得到的有向图。
示例2中,假设分布式任务为横向逻辑回归任务。该分布式任务中有两个计算参与方。该分布式任务包括如下6个待调度的任务:task_init、send_param、train_p1、train_p2、aggregate、save_param。其中,任务task_init为在密文上进行参数(权重)的初始化。任务send_param为在密文上将参数发送到各计算方。任务train_p1和train_p2分别为两个计算参与方在本地使用数据集进行权重的更新。任务aggregate为在密文上对参数进行聚合。任务save_param为在密文上对参数进行保存,代表任务结束。
示例2中,通过第一接口create_task创建上述6个待调度的任务如下:
task_init = create_task(init_func, “task_init”, {“engine”: “cipher”})
send_param = create_task(send_func, “send_param”, {“engine”:“cipher”})
train_p1 = create_task(train_func, “train_p1”, {“engine”: “python”,“party”: “p1”})
train_p2 = create_task(train_func, “train_p2”, {“engine”: “python”,“party”: “p2”})
aggregate = create_task(agg_func, “aggregate”, {“engine”: “cipher”})
save_param = create_task(save_func, “save_param”, {“engine”:“cipher”})
示例2中,通过第二接口描述上述6个任务之间的依赖关系如下:
task_init>>send_param
send_param>>train_p1
send_param>>train_p2
train_p1>>aggregate
train_p2>>aggregate
aggregate>>send_param
aggregate>>save_param
参照图3,示出了对示例2中待调度的各节点构建得到的有向图。
本发明实施例在构建得到有向图之后,将有向图转换为优先Petri网。具体地,根据所述有向图中的节点构建优先Petri网中的库所,以及根据所述有向图中的有向边构建优先Petri网中的变迁,并设置各变迁的优先级,得到优先Petri网。
本发明实施例中主要以示例1为例,说明本发明的任务调度过程。参照图4,示出了将示例1中的有向图转换为优先Petri网的网络结构示意图。如图4所示的优先Petri网中,包括如下库所:P1、P2、P3、P4、P5,每个库所对应一个任务,如P1对应task1,P2对应task2,P3对应task3,P4对应task4,P5对应task5;图4所示的优先Petri网中包括如下变迁:T1、T2、T3、T4、T5。通过控制优先Petri网中激活的变迁,可以控制优先Petri网中各库所对应的任务的执行顺序。
如图4所示的优先Petri网,由于图2所示的有向图中存在环结构(task2和task3形成环结构),因此,将图2所示的有向图转换为优先Petri网之后,该优先Petri网的网络结构中也存在环结构,该环结构可以表示循环任务。
进一步地,本发明实施例可以提供一种任务调度系统,该任务调度系统可以执行本发明实施例的任务调度方法。该任务调度系统可以提供统一的API。在具体实施中,可以对待调度的分布式任务进行分析处理,确定待调度的各任务以及各任务之间的依赖关系,利用该任务调度系统提供的API构建有向图,再通过该任务调度系统将该有向图转换为优先Petri网进行任务调度。
在本发明的一种可选实施例中,所述根据所述有向图中的节点构建优先Petri网中的库所,以及根据所述有向图中的有向边构建优先Petri网中的变迁,可以包括:
步骤S11、在所述有向图中确定第一节点,所述第一节点的入边个数为0;
步骤S12、将所述第一节点构建为优先Petri网中的起始库所;
步骤S13、对于所述有向图中除所述第一节点外的任一节点,将其构建为所述优先Petri网中的一个库所,并在构建的各库所的所有入边插入一个变迁;
步骤S14、在已构建的优先Petri网中确定第二库所,所述第二库所包括至少两个入边,且所述至少两个入边中存在至少一个位于环内的入边;
步骤S15、断开位于所述环内的入边上的变迁,并在所述位于所述环内的入边上插入一个新的变迁。
在本发明实施例中,每个库所对应一个任务。在每个库所的所有入边上插入一个变迁,该变迁可以作为控制其指向的任务的执行条件。例如,当且仅当某个库所存在至少一个已被激活的输入变迁(库所的输入变迁指该库所入边上的变迁),且该库所拥有令牌时,才会执行该库所对应的任务。由此,本发明实施例构建的优先Petri网通过库所表示待调度的任务,通过变迁控制任务的执行条件,可以为动态对分布式任务进行并发调度提供实现基础。
需要说明的是,本发明实施例在将有向图转换为优先Petri网的过程中,在已构建的优先Petri网中确定第二库所,所述第二库所包括至少两个入边,且所述至少两个入边中存在至少一个入边位于环内。断开位于所述环内的入边上的变迁,并在位于所述环内的入边上插入一个新的变迁。
例如,在将图2所示的有向图转换为优先Petri网时,task1的入边个数为0,确定task1为第一节点,将task1构建为优先Petri网中的起始库所,如记为P1。task1的出边个数为2,则对起始库所P1初始化2个令牌(token)。对于剩余节点task2、task3、task4、task5,分别构建一个库所,如记为P2、P3、P4、P5。在构建的各库所的所有入边插入一个变迁,例如,对于库所P2,其只有一条入边,则在该入边插入一个变迁,如记为T1。同理,在库所P4的入边上插入一个变迁,如记为T2。以此类推,对每个库所的所有入边插入一个变迁。对于库所P5,其有两条入边,则在这两条入边插入一个变迁,如记为T5。在该示例中,库所P2包括两个入边,且有一个入边位于环内(P3指向P2的入边位于环内),因此确定库所P2为第二库所。在将图2所示的有向图转换为优先Petri网的过程中,原本是将P2的两个入边上插入了一个变迁。但是由于P2存在一个位于环内的入边(P3指向P2的入边),因此,断开该入边上插入的一个变迁,并在该入边上插入一个新的变迁。如图4所示,转换后得到的优先Petri网中,P2的两个入边上分别插入了变迁T1和T3。
按照上述步骤S11~步骤S15,可以将图2所示的有向图转换为图4所示的优先Petri网。
在将有向图转换为优先Petri网之后,可以设置各变迁的优先级,以控制各变迁被激活的顺序,进而控制任务调度的顺序。一个优选实施例中,某个库所对应的任务可以被调度执行的条件为:该库所的所有输入变迁中存在任一被激活的变迁,且该库所拥有令牌。进一步地,本发明实施例可以通过控制变迁的优先级控制变迁被激活的顺序。例如,在初始时,可以初始化优先Petri网中各变迁具有相同的优先级。在优先Petri网中出现分支任务时,可以通过修改分支中变迁的优先级,控制分支中变迁被激活的顺序,进而控制分支任务被调度的顺序。
在本发明的一种可选实施例中,所述按照所述优先Petri网中各变迁的优先级,执行所述优先Petri网进行任务调度,可以包括:
步骤S21、执行起始库所对应的任务,并对所述起始库所初始化n个令牌,n为所述起始库所的出边个数;
步骤S22、在所述优先Petri网中确定可激活的变迁,所述可激活的变迁的每个输入库所都拥有令牌;
步骤S23、在所述可激活的变迁中确定优先级最高的为目标变迁;
步骤S24、激活所述目标变迁,所述目标变迁的输入库所消耗令牌,以及所述目标变迁的输出库所产生令牌;
步骤S25、在所述优先Petri网中确定目标库所,并执行所述目标库所对应的任务;所述目标库所存在至少一个已被激活的输入变迁,且所述目标库所拥有令牌;
步骤S26、当所述优先Petri网中不存在可激活的变迁时,任务调度结束。
对于一个变迁,该变迁的输入库所指该变迁入边上的库所,该变迁的输出库所指该变迁出边上的库所。例如对于图4中的变迁T1,T1的输入库所为P1,T1的输出库所为P2。
对于一个库所,该库所的输入变迁指该库所入边上的变迁,该库所的输出变迁指该库所出边上的变迁。例如对于图4中的库所P3,P3的输入变迁为T4,P3的输出变迁包括T3和T5。
在本发明实施例中,如果一个变迁的每个输入库所都拥有令牌(Token),该变迁即为可激活的变迁。对于一个可激活的变迁,若其优先级为当前可激活的变迁中优先级最高的,则该变迁被激活。被激活的变迁的输入库所消耗令牌,同时,被激活的变迁的输出库所产生令牌。
在本发明实施例中,一个库所对应的任务可以被执行的条件为:该库所存在至少一个已被激活的输入变迁,且该库所拥有令牌。
以图4为例说明本发明的任务调度过程。首先执行起始库所P1对应的任务,并对该起始库所初始化2个令牌(起始库所P1的出边个数为2)。起始库所P1对应的任务执行完成后,判断是否存在可激活的变迁。此时,P1拥有2个token。由于变迁T1只有一个输入库所(P1),且该输入库所(P1)拥有token,因此,T1为可激活的变迁。同理,此时变迁T2也为可激活的变迁。T1和T2的优先级相同,则同时激活T1和T2,T1的输入库所(P1)消耗1个token,T1的输出库所(P2)产生1个token。T2的输入库所(P1)消耗1个token,T2的输出库所(P4)产生1个token。对于库所P4,存在输入变迁(T1)已被激活,且库所P4拥有token,因此可以确定库所P4为目标库所,可以执行库所P4对应的任务。对于库所P2,存在输入变迁T1已被激活,且库所P2拥有token,因此可以确定库所P2为目标库所,可以执行库所P2对应的任务。也即,在库所P1对应的任务执行完成之后,可以并发调度执行库所P2和库所P4对应的任务。库所P2或者库所P4对应的任务执行完成后,继续判断是否存在可激活的变迁。此时,库所P2拥有1个token,库所P4拥有1个token。变迁T4为可激活的变迁,激活变迁T4,T4的输入库所(P2)消耗1个token,T4的输出库所(P3)产生1个token。此时P3为目标库所,执行库所P3对应的任务。库所P3对应的任务执行完成后,继续判断是否存在可激活的变迁。此时,库所P3拥有1个token,库所P4拥有1个token,变迁T3和变迁T5均为可激活的变迁,由于在循环结束条件到达前,变迁T3的优先级大于变迁T5的优先级,因此,确定T3为目标变迁,激活变迁T3,T3的输入库所(P3)消耗1个token,T3的输出库所(P2)产生1个token。此时库所P2为目标库所,执行库所P2对应的任务。库所P2对应的任务执行完成后,继续判断是否存在可激活的变迁。此时,库所P2拥有1个token,可以确定T4为可激活的变迁,激活变迁T4,执行库所P3对应的任务。如此循环执行库所P2对应的任务和库所P3对应的任务,直到满足循环结束条件时,变迁T5的优先级大于变迁T3的优先级,此时激活变迁T5,T5的输入库所(P3和P4)各消耗1个token,T5的输出库所(P5)产生1个token。此时P5为目标库所,执行库所P5对应的任务。库所P2对应的任务执行完成后,继续判断是否存在可激活的变迁,此时无可激活的变迁,调度结束。
在本发明的一种可选实施例中,所述设置各变迁的优先级,可以包括:
初始化所述优先Petri网中各变迁的优先级为默认优先级;
在所述优先Petri网中确定第一库所,所述第一库所包括至少两个输出变迁;
在所述至少两个输出变迁中确定第一变迁;
在所述第一库所对应的任务中,通过调用预设的第三接口修改所述第一变迁的优先级。
一个示例中,在任务调度之前,可以初始化各变迁的优先级为默认优先级。需要说明的是,本发明实施例对优先级的表示形式不做限制。本发明实施例中以自然数表示优先级为例,如默认优先级为0,0为最低的优先级。
第一库所包括至少两个输出变迁,也即,第一库所对应至少两个分支任务,在第一库所对应的任务执行完成时,需要确定至少两个分支任务是可以同时并发调度,还是需要先后调度。如果需要先后调度,则在所述第一库所的至少两个输出变迁中确定第一变迁。第一变迁指需要修改优先级的变迁,通过修改第一变迁的优先级,可以控制先调度哪个分支任务。
本发明实施例可以通过调用预设的第三接口修改所述第一变迁的优先级。本发明实施例对第三接口的具体形式不做限制,第三接口可以是基于预设语言的应用编程接口。
以图4所示的优先Petri网为例,库所P2对应的任务和库所P4对应的任务可以并发调度,因此,无需修改变迁T1和T2的优先级。库所P3包括两个输出变迁,在库所P3对应的任务执行一次后,需要选择执行库所P2对应的任务还是执行库所P5对应的任务。库所P2对应的任务和库所P3对应的任务构成一个循环任务,在循环结束条件到达之前,库所P3对应的任务执行完成之后,需要执行库所P2对应的任务;在循环结束条件到达时,库所P3对应的任务执行完成之后,需要执行库所P5对应的任务。
因此,可以确定库所P3为第一库所,在第一库所(P3)对应的任务中,通过调用预设的第三接口修改所述第一变迁的优先级,以控制或改变任务调度的顺序(或方向)。具体地,可以在第一库所(P3)对应的任务中增加一个条件判断,判断当前是否满足循环结束条件(如判断阈值是否达标)。若不满足循环结束条件(如阈值不达标),则可以确定第一变迁为T3,通过调用预设的第三接口修改第一变迁(T3)的优先级,使得其优先级高于T5的优先级,如修改T3的优先级为1。由此可以控制任务调度的方向走向库所P2对应的任务,从而实现循环任务的调度。当库所P3对应的任务再次执行完成时,继续判断是否满足循环结束条件,如果不满足循环结束条件,则保持T3的优先级高于T5的优先级不变,继续执行循环操作;如果满足循环结束条件(如阈值达标),则可以确定第一变迁为T5,通过调用预设的第三接口修改第一变迁(T5)的优先级,使得其优先级高于T3的优先级,如修改T5的优先级为2。由此可以控制任务调度的方向走向库所P5对应的任务,从而结束循环任务的调度,继续执行后续其他任务的调度过程。
在本发明的一种可选实施例中,所述预设的第三接口可以包括定位函数和设置函数,所述通过调用预设的第三接口修改所述第一变迁的优先级,可以包括:
通过调用所述定位函数,在所述优先Petri网中定位所述第一变迁;
通过调用所述设置函数,将所述第一变迁的优先级修改为目标优先级。
定位函数可用于定位第一变迁,第一变迁指需要修改优先级的变迁。设置函数用于将第一变迁的优先级修改为目标优先级。在任务执行过程中可以根据需要对第一变迁的优先级进行动态调整,从而实现对任务调度流程的动态调整。
示例性地,所述定位函数可以为get_transaction(InNode,OutNode)。定位函数get_transaction可以包括InNode和OutNode两个输入参数,这两个输入参数分别表示第一变迁的输入库所(InNode)和第一变迁的输出库所(OutNode),通过这两个参数可以在优先Petri网中唯一确定一个变迁。
示例性地,所述设置函数可以为set_priority(LevelValue)。设置函数set_priority可以包括LevelValue一个输入参数,该输入参数表示目标优先级的值。
以图4所示的优先Petri网为例,可以在库所P3对应的任务中增加如下控制条件:
if不满足循环结束条件
T3 = get_transaction([task3], [task2])
T3.set_priority(1)
elseif满足循环结束条件
T5 = get_transaction([task3, task4], [task5])
T5.set_priority(2)
综上,本发明实施例对于分布式任务中待调度的各任务,首先根据各任务以及各任务之间的依赖关系,构建有向图;然后将构建的有向图转换为优先Petri网,并设置所述优先Petri网中各变迁的优先级;最后,按照所述优先Petri网中各变迁的优先级,执行所述优先Petri网进行任务调度。在任务调度过程中,通过变迁的优先级可以控制变迁的激活顺序,进而可以控制任务的执行顺序,从而可以实现循环任务的调度。本发明实施例通过优先Petri网实现对分布式任务的并发调度,相对于基于树的调度模式,无需在优先Petri网中增加额外的细节信息,可以提高减少开发成本。相对于基于图的调度模式,本发明实施例可以实现循环任务的调度,可以提高分布式任务并发调度的可行性和高效性。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
装置实施例
参照图5,示出了本发明的一种任务调度装置实施例的结构框图,所述装置可以包括:
关系确定模块501,用于确定待调度的各任务以及各任务之间的依赖关系;
图构建模块502,用于根据所述各任务以及各任务之间的依赖关系,构建有向图;所述有向图中的节点表示待调度的任务,所述有向图中节点之间的有向边表示任务之间的依赖关系;
网络转换模块503,用于根据所述有向图中的节点构建优先Petri网中的库所,以及根据所述有向图中的有向边构建优先Petri网中的变迁,并设置各变迁的优先级,得到优先Petri网;
任务调度模块504,用于按照所述优先Petri网中各变迁的优先级,执行所述优先Petri网进行任务调度。
可选地,所述任务调度模块,包括:
初始执行子模块,用于执行起始库所对应的任务,并对所述起始库所初始化n个令牌,n为所述起始库所的出边个数;
激活确定子模块,用于在所述优先Petri网中确定可激活的变迁,所述可激活的变迁的每个输入库所都拥有令牌;
目标确定子模块,用于在所述可激活的变迁中确定优先级最高的为目标变迁;
目标激活子模块,用于激活所述目标变迁,所述目标变迁的输入库所消耗令牌,以及所述目标变迁的输出库所产生令牌;
目标执行子模块,用于在所述优先Petri网中确定目标库所,并执行所述目标库所对应的任务;所述目标库所存在至少一个已被激活的输入变迁,且所述目标库所拥有令牌;
调度结束子模块,用于当所述优先Petri网中不存在可激活的变迁时,任务调度结束。
可选地,所述网络转换模块,包括:
优先级初始化子模块,用于初始化所述优先Petri网中各变迁的优先级为默认优先级;
第一库所确定子模块,用于在所述优先Petri网中确定第一库所,所述第一库所包括至少两个输出变迁;
第一变迁确定子模块,用于在所述至少两个输出变迁中确定第一变迁;
优先级修改子模块,用于在所述第一库所对应的任务中,通过调用预设的第三接口修改所述第一变迁的优先级。
可选地,所述预设的第三接口包括定位函数和设置函数,所述优先级修改子模块,包括:
定位单元,用于通过调用所述定位函数,在所述优先Petri网中定位所述第一变迁;
修改单元,用于通过调用所述设置函数,将所述第一变迁的优先级修改为目标优先级。
可选地,所述网络转换模块,包括:
第一节点确定子模块,用于在所述有向图中确定第一节点,所述第一节点的入边个数为0;
第一构建子模块,用于将所述第一节点构建为优先Petri网中的起始库所;
第二构建子模块,用于对于所述有向图中除所述第一节点外的任一节点,将其构建为所述优先Petri网中的一个库所,并在构建的各库所的所有入边插入一个变迁;
第二库所确定子模块,用于在已构建的优先Petri网中确定第二库所,所述第二库所包括至少两个入边,且所述至少两个入边中存在至少一个位于环内的入边;
变迁断开插入子模块,用于断开位于所述环内的入边上的变迁,并在所述位于所述环内的入边上插入一个新的变迁。
可选地,所述图构建模块,包括:
接口描述子模块,用于通过预设的第一接口创建待调度的各任务,以及通过预设的第二接口描述各任务之间的依赖关系;
图构建子模块,用于根据所述第一接口创建的各任务构建有向图中的节点,以及根据所述第二接口描述的依赖关系构建有向图中节点之间的有向边,得到有向图。
本发明实施例对于分布式任务中待调度的各任务,首先根据各任务以及各任务之间的依赖关系,构建有向图;然后将构建的有向图转换为优先Petri网,并设置所述优先Petri网中各变迁的优先级;最后,按照所述优先Petri网中各变迁的优先级,执行所述优先Petri网进行任务调度。在任务调度过程中,通过变迁的优先级可以控制变迁的激活顺序,进而可以控制任务的执行顺序,从而可以实现循环任务的调度。本发明实施例通过优先Petri网实现对分布式任务的并发调度,相对于基于树的调度模式,无需在优先Petri网中增加额外的细节信息,可以提高减少开发成本。相对于基于图的调度模式,本发明实施例可以实现循环任务的调度,可以提高分布式任务并发调度的可行性和高效性。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本发明实施例提供了一种用于任务调度的装置,包括有存储器,以及一个以上的程序,其中一个以上程序存储于存储器中,且经配置以由一个以上处理器执行所述一个以上程序包含用于进行以下操作的指令:确定待调度的各任务以及各任务之间的依赖关系;根据所述各任务以及各任务之间的依赖关系,构建有向图;所述有向图中的节点表示待调度的任务,所述有向图中节点之间的有向边表示任务之间的依赖关系;根据所述有向图中的节点构建优先Petri网中的库所,以及根据所述有向图中的有向边构建优先Petri网中的变迁,并设置各变迁的优先级,得到优先Petri网;按照所述优先Petri网中各变迁的优先级,执行所述优先Petri网进行任务调度。
图6是根据一示例性实施例示出的一种用于任务调度的装置800的框图。例如,装置800可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图6,装置800可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,音频组件810,输入/输出(I/ O)的接口812,传感器组件814,以及通信组件816。
处理组件802通常控制装置800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。
存储器804被配置为存储各种类型的数据以支持在设备800的操作。这些数据的示例包括用于在装置800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件806为装置800的各种组件提供电力。电源组件806可以包括电源管理系统,一个或多个电源,及其他与为装置800生成、管理和分配电力相关联的组件。
多媒体组件808包括在所述装置800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当设备800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(MIC),当装置800处于操作模式,如呼叫模式、记录模式和语音信息处理模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。
I/ O接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件814包括一个或多个传感器,用于为装置800提供各个方面的状态评估。例如,传感器组件814可以检测到设备800的打开/关闭状态,组件的相对定位,例如所述组件为装置800的显示器和小键盘,传感器组件814还可以搜索装置800或装置800一个组件的位置改变,用户与装置800接触的存在或不存在,装置800方位或加速/减速和装置800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件816被配置为便于装置800和其他设备之间有线或无线方式的通信。装置800可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件816还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频信息处理(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置800可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器804,上述指令可由装置800的处理器820执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
图7是本发明的一些实施例中服务器的结构示意图。该服务器1900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processingunits,CPU)1922(例如,一个或一个以上处理器)和存储器1932,一个或一个以上存储应用程序1942或数据1944的存储介质1930(例如一个或一个以上海量存储设备)。其中,存储器1932和存储介质1930可以是短暂存储或持久存储。存储在存储介质1930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1922可以设置为与存储介质1930通信,在服务器1900上执行存储介质1930中的一系列指令操作。
服务器1900还可以包括一个或一个以上电源1926,一个或一个以上有线或无线网络接口1950,一个或一个以上输入输出接口1958,一个或一个以上键盘1956,和/或,一个或一个以上操作系统1941,例如Windows ServerTM,Mac OS XTM,UnixTM, LinuxTM,FreeBSDTM等等。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由装置(服务器或者终端)的处理器执行时,使得装置能够执行图1所示的任务调度方法。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由装置(服务器或者终端)的处理器执行时,使得装置能够执行前文图1所对应实施例中任务调度方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机程序产品或者计算机程序实施例中未披露的技术细节,请参照本申请方法实施例的描述。
此外,需要说明的是:本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或者计算机程序可以包括计算机指令,该计算机指令可以存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器可以执行该计算机指令,使得该计算机设备执行前文图1所对应实施例中任务调度方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机程序产品或者计算机程序实施例中未披露的技术细节,请参照本申请方法实施例的描述。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
以上对本发明所提供的一种任务调度方法、一种任务调度装置和一种用于任务调度的装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (12)
1.一种任务调度方法,其特征在于,所述方法包括:
确定待调度的各任务以及各任务之间的依赖关系;
根据所述各任务以及各任务之间的依赖关系,构建有向图;所述有向图中的节点表示待调度的任务,所述有向图中节点之间的有向边表示任务之间的依赖关系;
根据所述有向图中的节点构建优先Petri网中的库所,以及根据所述有向图中的有向边构建优先Petri网中的变迁,并设置各变迁的优先级,得到优先Petri网;
按照所述优先Petri网中各变迁的优先级,执行所述优先Petri网进行任务调度;
所述根据所述有向图中的节点构建优先Petri网中的库所,以及根据所述有向图中的有向边构建优先Petri网中的变迁,包括:
在所述有向图中确定第一节点,所述第一节点的入边个数为0;
将所述第一节点构建为优先Petri网中的起始库所;
对于所述有向图中除所述第一节点外的任一节点,将其构建为所述优先Petri网中的一个库所,并在构建的各库所的所有入边插入一个变迁;
在已构建的优先Petri网中确定第二库所,所述第二库所包括至少两个入边,且所述至少两个入边中存在至少一个位于环内的入边;
断开位于所述环内的入边上的变迁,并在所述位于所述环内的入边上插入一个新的变迁。
2.根据权利要求1所述的方法,其特征在于,所述按照所述优先Petri网中各变迁的优先级,执行所述优先Petri网进行任务调度,包括:
执行起始库所对应的任务,并对所述起始库所初始化n个令牌,n为所述起始库所的出边个数;
在所述优先Petri网中确定可激活的变迁,所述可激活的变迁的每个输入库所都拥有令牌;
在所述可激活的变迁中确定优先级最高的为目标变迁;
激活所述目标变迁,所述目标变迁的输入库所消耗令牌,以及所述目标变迁的输出库所产生令牌;
在所述优先Petri网中确定目标库所,并执行所述目标库所对应的任务;所述目标库所存在至少一个已被激活的输入变迁,且所述目标库所拥有令牌;
当所述优先Petri网中不存在可激活的变迁时,任务调度结束。
3.根据权利要求1所述的方法,其特征在于,所述设置各变迁的优先级,包括:
初始化所述优先Petri网中各变迁的优先级为默认优先级;
在所述优先Petri网中确定第一库所,所述第一库所包括至少两个输出变迁;
在所述至少两个输出变迁中确定第一变迁;
在所述第一库所对应的任务中,通过调用预设的第三接口修改所述第一变迁的优先级。
4.根据权利要求3所述的方法,其特征在于,所述预设的第三接口包括定位函数和设置函数,所述通过调用预设的第三接口修改所述第一变迁的优先级,包括:
通过调用所述定位函数,在所述优先Petri网中定位所述第一变迁;
通过调用所述设置函数,将所述第一变迁的优先级修改为目标优先级。
5.根据权利要求1所述的方法,其特征在于,所述根据所述各任务以及各任务之间的依赖关系,构建有向图,包括:
通过预设的第一接口创建待调度的各任务,以及通过预设的第二接口描述各任务之间的依赖关系;
根据所述第一接口创建的各任务构建有向图中的节点,以及根据所述第二接口描述的依赖关系构建有向图中节点之间的有向边,得到有向图。
6.一种任务调度装置,其特征在于,所述装置包括:
关系确定模块,用于确定待调度的各任务以及各任务之间的依赖关系;
图构建模块,用于根据所述各任务以及各任务之间的依赖关系,构建有向图;所述有向图中的节点表示待调度的任务,所述有向图中节点之间的有向边表示任务之间的依赖关系;
网络转换模块,用于根据所述有向图中的节点构建优先Petri网中的库所,以及根据所述有向图中的有向边构建优先Petri网中的变迁,并设置各变迁的优先级,得到优先Petri网;
任务调度模块,用于按照所述优先Petri网中各变迁的优先级,执行所述优先Petri网进行任务调度;
所述网络转换模块,包括:
第一节点确定子模块,用于在所述有向图中确定第一节点,所述第一节点的入边个数为0;
第一构建子模块,用于将所述第一节点构建为优先Petri网中的起始库所;
第二构建子模块,用于对于所述有向图中除所述第一节点外的任一节点,将其构建为所述优先Petri网中的一个库所,并在构建的各库所的所有入边插入一个变迁;
第二库所确定子模块,用于在已构建的优先Petri网中确定第二库所,所述第二库所包括至少两个入边,且所述至少两个入边中存在至少一个位于环内的入边;
变迁断开插入子模块,用于断开位于所述环内的入边上的变迁,并在所述位于所述环内的入边上插入一个新的变迁。
7.根据权利要求6所述的装置,其特征在于,所述任务调度模块,包括:
初始执行子模块,用于执行起始库所对应的任务,并对所述起始库所初始化n个令牌,n为所述起始库所的出边个数;
激活确定子模块,用于在所述优先Petri网中确定可激活的变迁,所述可激活的变迁的每个输入库所都拥有令牌;
目标确定子模块,用于在所述可激活的变迁中确定优先级最高的为目标变迁;
目标激活子模块,用于激活所述目标变迁,所述目标变迁的输入库所消耗令牌,以及所述目标变迁的输出库所产生令牌;
目标执行子模块,用于在所述优先Petri网中确定目标库所,并执行所述目标库所对应的任务;所述目标库所存在至少一个已被激活的输入变迁,且所述目标库所拥有令牌;
调度结束子模块,用于当所述优先Petri网中不存在可激活的变迁时,任务调度结束。
8.根据权利要求6所述的装置,其特征在于,所述网络转换模块,包括:
优先级初始化子模块,用于初始化所述优先Petri网中各变迁的优先级为默认优先级;
第一库所确定子模块,用于在所述优先Petri网中确定第一库所,所述第一库所包括至少两个输出变迁;
第一变迁确定子模块,用于在所述至少两个输出变迁中确定第一变迁;
优先级修改子模块,用于在所述第一库所对应的任务中,通过调用预设的第三接口修改所述第一变迁的优先级。
9.根据权利要求8所述的装置,其特征在于,所述预设的第三接口包括定位函数和设置函数,所述优先级修改子模块,包括:
定位单元,用于通过调用所述定位函数,在所述优先Petri网中定位所述第一变迁;
修改单元,用于通过调用所述设置函数,将所述第一变迁的优先级修改为目标优先级。
10.根据权利要求6所述的装置,其特征在于,所述图构建模块,包括:
接口描述子模块,用于通过预设的第一接口创建待调度的各任务,以及通过预设的第二接口描述各任务之间的依赖关系;
图构建子模块,用于根据所述第一接口创建的各任务构建有向图中的节点,以及根据所述第二接口描述的依赖关系构建有向图中节点之间的有向边,得到有向图。
11.一种用于任务调度的装置,其特征在于,包括有存储器,以及一个以上程序,其中一个以上程序存储于存储器中,且经配置以由一个以上处理器执行所述一个以上程序,所述一个以上程序包含用于进行如权利要求1至5中任一所述的任务调度方法的指令。
12.一种机器可读介质,其上存储有指令,当所述指令由装置的一个或多个处理器执行时,使得装置执行如权利要求1至5中任一所述的任务调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111453560.9A CN113886053B (zh) | 2021-12-01 | 2021-12-01 | 一种任务调度方法、装置和用于任务调度的装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111453560.9A CN113886053B (zh) | 2021-12-01 | 2021-12-01 | 一种任务调度方法、装置和用于任务调度的装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113886053A CN113886053A (zh) | 2022-01-04 |
CN113886053B true CN113886053B (zh) | 2022-03-04 |
Family
ID=79016211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111453560.9A Active CN113886053B (zh) | 2021-12-01 | 2021-12-01 | 一种任务调度方法、装置和用于任务调度的装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113886053B (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0769842B2 (ja) * | 1989-02-13 | 1995-07-31 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 資源の相互排他制御方法及びシステム |
FR2873830B1 (fr) * | 2004-07-30 | 2008-02-22 | Commissariat Energie Atomique | Procede d'ordonnancement de traitement de taches et dispositif pour mettre en oeuvre le procede |
CN109902403A (zh) * | 2019-03-06 | 2019-06-18 | 哈尔滨理工大学 | 一种基于Petri网和启发式值的综合调度方法 |
CN110554909A (zh) * | 2019-09-06 | 2019-12-10 | 腾讯科技(深圳)有限公司 | 任务的调度处理方法、装置及计算机设备 |
-
2021
- 2021-12-01 CN CN202111453560.9A patent/CN113886053B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113886053A (zh) | 2022-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105955765B (zh) | 应用预加载方法及装置 | |
JP6189000B2 (ja) | アプリケーションのインストールパッケージの処理方法、装置、プログラム及び記録媒体 | |
CN112217990B (zh) | 任务调度方法、任务调度装置及存储介质 | |
CN115237613B (zh) | 一种多方安全计算任务调度方法、装置和可读存储介质 | |
CN113032112A (zh) | 资源调度方法及装置、电子设备和存储介质 | |
CN114968594B (zh) | 任务处理方法、装置、电子设备和存储介质 | |
CN107463372B (zh) | 一种数据驱动的页面更新方法和装置 | |
CN112116095A (zh) | 一种多任务学习模型训练的方法及相关装置 | |
CN111258952A (zh) | 一种数据存储控制方法、装置及存储介质 | |
CN111078325A (zh) | 应用程序运行方法、装置、电子设备及存储介质 | |
EP3425533A1 (en) | Displaying page | |
CN113886053B (zh) | 一种任务调度方法、装置和用于任务调度的装置 | |
CN112486658A (zh) | 一种任务调度方法、装置和用于任务调度的装置 | |
CN115098262B (zh) | 一种多神经网络任务处理方法及装置 | |
CN110704030A (zh) | 接口配置信息生成方法、装置、电子设备及存储介质 | |
CN116048757A (zh) | 任务处理方法、装置、电子设备和存储介质 | |
CN111259675B (zh) | 基于神经网络计算的方法和装置 | |
CN109491655A (zh) | 一种输入事件处理方法及装置 | |
CN113268325A (zh) | 一种调度任务的方法、装置及存储介质 | |
CN109725966B (zh) | 一种模式转换方法、装置、终端设备及存储介质 | |
CN114090303A (zh) | 软件模块调度方法、装置、电子设备、存储介质及产品 | |
CN108984294B (zh) | 资源调度方法、装置及存储介质 | |
CN113867992B (zh) | 调用链资源隔离方法、装置、存储介质和电子设备 | |
CN115086232B (zh) | 任务处理及数据流生成方法和装置 | |
CN111176841B (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 |