CN110991127A - 任务执行方法、装置、计算机设备及存储介质 - Google Patents
任务执行方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN110991127A CN110991127A CN201910989462.3A CN201910989462A CN110991127A CN 110991127 A CN110991127 A CN 110991127A CN 201910989462 A CN201910989462 A CN 201910989462A CN 110991127 A CN110991127 A CN 110991127A
- Authority
- CN
- China
- Prior art keywords
- task
- node
- execution
- stack
- original
- 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
Images
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种任务执行方法、装置、计算机设备及存储介质,其中,该任务执行方法包括:获取任务执行指令,任务执行指令包括任务标识;基于任务标识,获取对应的目标任务流;基于结点依赖关系表,将所有原始任务结点形成具有依赖关系的结点链队列;按队列顺序遍历结点链队列,将任务状态为任务待完成状态的原始任务结点作为待处理任务结点,并将待处理任务结点进行入栈操作,形成结点执行栈;基于结点执行栈进行任务执行操作,获取有效信息流。该任务执行方法可将目标任务流中的至少两个原始任务形成有序的结点执行栈,并依序执行该结点执行栈中的每一待处理任务结点,可提高任务执行效率。
Description
技术领域
本发明涉及软件中间件领域,尤其涉及一种任务执行方法、装置、计算机设备及存储介质。
背景技术
FPGA(Field-Programmable Gate Array,现场可编程门阵列)设计是由一系列具有依赖关系的原始任务结点组成的,每个原始任务结点均定义了不同类型的任务状态。典型的用以控制FPGA设计实施的方式是以树形结构组织管理所有原始任务结点形成的任务流,以及原始任务结点之间的依赖关系,以集成GUI(Graphical User Interface,图形用户接口)。但上述设计实施方式耦合性较高,难以支持批量化实施和命令控制台操作,且逻辑控制复杂,仅适合单一轻量化的FPGA设计,已经不适合当前复杂FPGA设计的需求。如何提高批量FPGA设计的任务分配及执行效率,同时保证逻辑控制精简和耦合性较低,成为亟待解决的问题。
发明内容
本发明实施例提供一种任务执行方法、装置、计算机设备及存储介质,以解决提高批量FPGA设计的任务分配及执行效率,同时保证逻辑控制精简和耦合性较低的问题。
一种任务执行方法,包括:
获取任务执行指令,任务执行指令包括任务标识;
基于任务标识,获取对应的目标任务流,目标任务流包括至少两个原始任务结点、结点依赖关系表和每一原始任务结点对应的任务状态;
基于结点依赖关系表,将所有原始任务结点形成具有依赖关系的结点链队列;
按队列顺序遍历结点链队列,将任务状态为任务待完成状态的原始任务结点作为待处理任务结点,并将待处理任务结点进行入栈操作,形成结点执行栈;
基于结点执行栈进行任务执行操作,获取有效信息流。
一种任务执行装置,包括:
获取执行指令模块,用于获取任务执行指令,任务执行指令包括任务标识;
获取目标任务模块,用于基于任务标识,获取对应的目标任务流,目标任务流包括至少两个原始任务结点、结点依赖关系表和每一原始任务结点对应的任务状态;
形成链队列模块,用于基于结点依赖关系表,将所有原始任务结点形成具有依赖关系的结点链队列;
形成执行栈模块,用于按队列顺序遍历结点链队列,将任务状态为任务待完成状态的原始任务结点作为待处理任务结点,并将待处理任务结点进行入栈操作,形成结点执行栈;
获取信息流模块,用于基于结点执行栈进行任务执行操作,获取有效信息流。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任务执行方法。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述任务执行方法。
上述任务执行方法、装置、计算机设备及存储介质,通过将目标任务流中的至少两个原始任务结点按依赖关系表形成结点链队列,并将结点链队列中的任务状态为待完成状态的任务任务结点进行提取并依次入栈,形成结点执行栈,并执行该结点执行栈,可将目标任务流中的至少两个原始任务结点形成结点执行栈并依序执行该结点执行栈中的每一待处理任务结点,可提高任务执行效率;同时,依序对结点执行栈中的每一待处理任务结点进行执行,每个待处理任务结点都是独立的任务,可有效降低FPGA批量任务流中每一待处理任务结点之间的耦合性,提升执行FPGA批量任务流的逻辑精简性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中任务执行方法的应用环境示意图;
图2是本发明一实施例中任务执行方法的流程图;
图3是本发明一实施例中任务执行方法的系统架构示意图;
图4是本发明一实施例中任务执行方法的另一流程图;
图5是本发明一实施例中任务执行方法的另一流程图;
图6是本发明一实施例中任务执行方法的另一流程图;
图7是本发明一实施例中任务执行方法的另一流程图;
图8是本发明一实施例中任务执行方法的另一流程图;
图9是本发明一实施例中任务执行装置的示意图;
图10是本发明一实施例中计算机设备的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的任务执行方法,可应用在如图1的应用环境中,该任务执行方法应用在任务执行系统中,该任务执行系统包括客户端和服务器,客户端与服务器通过网络进行通信,用于实现对FPGA(Field-Programmable Gate Array,现场可编程门阵列)中的任务流结点进行任务分配和任务执行。其中,客户端又称为用户端,是指与服务器相对应,为客户提供本地服务的程序。客户端可安装在但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备上,用于与用户进行人机交互。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
该任务执行系统中配置用于实现任务分配的中间件,以辅助快速执行任务。中间件是一种独立的系统软件或服务程序,是连接两个独立系统的桥梁,引入中间件可以在隐藏底层信息架构中复杂操作的同时,将消息流发送给上层信息架构。在任务执行系统中引用中间件技术,用于将上层与底层进行隔离,使得上层与底层分开维护,提高可维护性,并且上层与底层隔离,可以起到降低耦合性的效果。在使用中间件技术前,上层和底层的信息传递是一种直接耦合方式,上层需要底层的执行反馈后才能进行其它任务,当底层执行一个任务的时间值过大时,上层只能干巴巴的等着。引入中间件后,上层将任务交给中间件后可以去做其它事情,任务执行完后中间件会负责反馈,使得上层和底层能够同时进行各自的任务而不会相互牵连。
在一实施例中,如图2所示,提供一种任务执行方法,以该方法应用在图1中的服务器为例进行说明,具体包括如下步骤:
S10.获取任务执行指令,任务执行指令包括任务标识。
其中,任务执行指令是客户端向服务器发送的,用于请求服务器执行任务标识对应的任务的指令。其中,任务标识是服务器用以区分不同任务流的标识,比如可采用数字、字母或者数字或字母的结合等,此处不做具体限定。由于任务执行系统中设置用于实现任务分配的中间件,因此,服务器所获取的任务执行指令可以控制启动中间件,以使其进行任务分配,从而有助于快速执行任务标识对应的任务。
本实施例中,该任务执行指令可以是用户通过客户端提供的图形用户接口触发的,也可以是TCL命令控制台触发的,用于控制执行任务标识对应的目标任务流的指令。TCL(tool command language,工具命令语言)语言可提供通用的编程能力,且TCL函数库携带的接口可用于扩展合适的命令集,以解决特定领域的问题。
步骤S10中,服务器通过接受客户端发送的任务执行指令,以便获取其中的任务标识,基于该任务标识可定位到准确的待执行的目标任务流,简单快捷。
进一步地,本申请采用TCL函数库提供的接口实现任务执行系统,利于提升系统健壮性。在软件工程中系统健壮性是指系统遭受到恶意输入时不应该表现的恐慌。本发明中使用的TCL语言可为用户提供了由TCL提供的保护壳,能够较好地甄别并处理客户端输入的恶意代码,而避免出现程序崩溃等情况。
具体地,可通过使用TCL的扩充命令和内建命令,实现对FPGA设计的批量化操作,使得FPGA设计可以进行大批量实施。其中,扩充命令和内建命令都属于TCL命令。内建命令是TCL的库中已经拥有的命令,如puts命令用来打印一个字符串。扩充命令是自定义的一些命令,如run_pnr运行布局绕线流程,这个命令TCL自有的库中是没有的,需要根据实际应用自己创建。批量化操作的条件是要有全套的操作TCL命令,而这些TCL命令都会扩充提供。可以理解地,用户可通过TCL提供的扩充命令和内建命令对应的接口,编写脚本以实现批量化操作,例如,通过循环语句来循环执行不同的工程。
S20.基于任务标识,获取对应的目标任务流,目标任务流包括至少两个原始任务结点、结点依赖关系表和每一原始任务结点对应的任务状态。
其中,目标任务流携带与任务标识匹配的带有至少两个原始任务结点的任务流。结点依赖关系是任意两个原始任务结点之间的执行先后顺序关系。比如,A结点依赖B结点,表明只有在B结点对应的任务被执行完毕后,A结点才可基于B结点的任务执行结果执行A结点对应的任务。
原始任务结点是构成目标任务流的任务结点,每个原始任务结点对应结点信息,比如该结点的当前数值等;每个原始任务结点还包括结点状态,用以表示当前的任务结点对应的任务是否被执行完毕。可以理解地,结点状态至少包括任务完成状态和任务待完成状态。进一步地,任务待完成状态可具体包括任务失败或任务过期等指定状态,此处不作具体限定,用户可基于实际情况进行具体设定。任务完成状态也可具体包括任务成功等指定状态。
步骤S20中,服务器可基于任务标识获取目标任务流,便于后续可将目标任务流中的多个原始任务结点在中间件中形成有序的原始任务结点,利于后续服务器可基于中间件快速分别目标任务流中应执行的所有任务。
具体地,以硬件描述语言所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,实现具有依赖关系的任务流中的多个原始任务结点,是现代IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。而如何在FPGA上高效执行目标任务流中的每个原始任务结点,也即本申请将要解决的问题。
S30.基于结点依赖关系表,将所有原始任务结点形成具有依赖关系的结点链队列。
其中,结点链队列是将所有原始任务结点按两两之间的执行依赖顺序进行排序后获得的队列。比如,ABCDE,若依赖关系为顺序依赖关系(即前一个原始任务结点是依赖后一个原始任务结点的关系),则说明A任务执行需依赖B,B任务执行需依赖C任务,以此类推,直至最后的队尾结点为E,也即只有先完成E任务,才可向前依次完成每个链队列中的原始任务结点。
S40.按队列顺序遍历结点链队列,将任务状态为任务待完成状态的原始任务结点作为待处理任务结点,并将待处理任务结点进行入栈操作,形成结点执行栈。
其中,队列顺序是每一原始任务结点在结点链队列中的排序先后顺序,一般采用从队首到队尾的顺序。
入栈操作为将任务待完成状态的待处理任务结点依据在结点链队列中的提取顺序添加到初始执行栈的动作。可以理解地,栈(stack)又名堆栈,是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算,这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
具体地,举例说明步骤S40的实现过程:
结点链队列:
A(任务待完成状态)
B(任务完成状态)
C(任务待完成状态)
D(任务待完成状态)
E(任务完成状态)
F(任务待完成状态)
G(任务完成状态)
服务器采用switch指令按队列顺序遍历上述结点链队列后,提取任务状态为任务待完成状态的待处理任务结点:ACDF,按序将ACDF进入入栈操作,得到如下结点执行栈:
F(栈顶)
D
C
A(栈底)
也即该结点执行栈的栈顶为待处理任务结点F。
步骤S40中,服务器可提取任务状态为任务待完成状态的待处理任务结点,并按序将每一待处理任务结点进入入栈操作结点执行栈,将最初的无序的所有原始任务结点转换为有序的可执行的结点执行栈,便于后续服务器可批量快速地执行该结点执行栈中的每个待执行任务,加快任务执行效率。服务器将任务状态为任务待完成状态的原始任务结点形成结点链队列后再形成结点执行栈,也即构造中间件的过程。在系统中构造完成中间件即实现顶层和底层的逻辑分离,相较于采用上层和底层直接贴合的旧方式,分离模式的系统可维护性要优于整体维护性。另外,中间件可协同TCL函数接口在接收到恶意参数时进行容错判断,进一步提升系统健壮性。
S50.基于结点执行栈进行任务执行操作,获取有效信息流。
其中,有效信息流是服务器对结点任务栈中每个待处理任务结点进行处理后得到的任务处理结果形成的信息流。进一步地,服务器还可基于客户端的设置的信息查看条件,将结点链队列中每一原始任务结点对应的结点信息按该信息查看条件进行筛选,作为有效信息流等,此处不作具体限定。
步骤S50中,服务器可基于客户端的设定获取有效信息流反馈给客户端,可有效提高客户端的信息查看效率,避免提供冗余信息。
本实施例提供的任务执行方法,如图3所示,服务器接收客户端通过TCL命令控制台发送的任务执行指令,可在多个FPGA批量任务流中获取目标任务流,并将目标任务流中的至少两个原始任务结点按依赖关系表在中间件中形成结点链队列,并将结点链队列中的任务状态为待完成状态的任务任务结点进行提取并依次入栈,形成结点执行栈,并执行该结点执行栈。服务器基于目标任务流中的至少两个原始任务,最终可形成有序的结点执行栈,并依序执行该结点执行栈中的每一待处理任务结点,可提高任务执行效率;同时,依序对结点执行栈中的每一待处理任务结点进行执行,每个待处理任务结点都是独立的任务,可有效降低FPGA批量任务流中每一待处理任务结点之间的耦合性,提升执行FPGA批量任务流的逻辑精简性。
在一实施例中,当服务器完成步骤S20后,可激活虚拟的中间件,也即激活初始状态的初始链队列和初始执行栈。其中,初始链队列和初始执行栈都是数据为空的队列和栈。服务器可为初始链队列和初始执行栈建立闲置线程,当中间件被激活时,服务器可直接快速地激活上述初始链队列和初始执行栈对应的闲置线程为工作线程,以减少临时建立初始链队列和初始执行栈对应的工作线程的时间,加快中间件的启动速度,减少系统耗损。
在一实施例中,如图4所示,步骤S50中,即基于结点执行栈进行任务执行操作,获取有效信息流,具体包括如下步骤:
S51.对结点执行栈进行弹栈,获取栈顶对应的待处理任务结点作为当前任务结点,执行当前任务结点,获取任务执行结果。
其中,弹栈是获取结点执行栈栈顶的待处理任务结点的操作,比如当前栈为ABCD,栈顶为A,则服务器获取A的动作即为弹栈。任务执行结果即对当前任务结点进行处理后获得的结果。
本实施例中,对结点执行栈进行弹栈,将每次弹出的一个待处理任务结果确定为当前任务结果,采用Switch语句确定该当前任务结点对应的任务流程,然后,调用与该任务流程相对应的接口执行这个任务流程,从而获取接口返回的任务执行结果。由于任务流程对具有单向依赖的特性,而结点执行栈中的所有待处理任务结点从栈项到栈底具有单向依赖性,因此,需要依序对结点执行栈进行弹栈,直至结点执行栈为空栈。
步骤S51中,服务器可快速对结点执行栈进行弹栈并执行当前任务结点,获取任务执行结果,以推进整体目标任务流的任务完成效率。
S52.采用任务执行结果,更新结点链队列中当前任务结点对应的结点信息,并将当前任务结点对应的任务状态更新为任务完成状态。
其中,结点信息是结点链队列中每个原始任务结点对应的结点任务记录信息,比如原始任务结点对应的执行动作是“将数字3和数字2进行相加”,则该原始任务结点执行完任务后获得的结点信息是两个数据的相加结果“5”。并且,服务器根据结点执行栈中的每个当前任务结点对应的任务执行结果,更新当前任务结点对应的任务状态为任务完成状态,以实时更新当前任务结点对应的任务状态。
步骤S52中,服务器可基于任务执行结果更新结点链队列中当前任务结点对应的结点信息,保持结点链队列的数据实时性。
S53.若结点执行栈为空栈,则基于结点链队列形成有效信息流。
具体地,当结点执行栈为空栈时,说明服务器已将所有待处理任务结点对应的任务执行完毕,此时,服务器可基于结点链队列中每个原始任务结点对应的结点信息形成最新的有效信息流,便于后续客户端发起查看有效信息流的请求时,服务器可及时提取该有效信息流。
进一步地,若结点执行栈不为空栈,则服务器重复执行对结点执行栈进行弹栈,获取栈顶对应的待处理任务结点作为当前任务结点,执行当前任务结点,获取任务执行结果的步骤,直至结点执行栈形成空栈。
步骤S51至S53中,服务器可快速对结点执行栈进行弹栈并执行当前任务结点,获取任务执行结果,以推进整体目标任务流的任务完成效率。服务器可基于任务执行结果更新结点链队列中当前任务结点对应的结点信息,保持结点链队列的数据实时性。服务器可基于结点链队列中每个原始任务结点对应的结点信息形成最新的有效信息流,便于后续客户端发起查看有效信息流的请求时,服务器可及时提取该有效信息流。
在一实施例中,如图5所示,步骤S30中,即基于结点依赖关系表,将所有原始任务结点形成具有依赖关系的结点链队列,具体包括如下步骤:
S31.从结点依赖关系表中,获取任意两个原始任务结点的依赖关系。
举例说明步骤S31的实现过程,比如,服务器读取结点依赖关系表得到原始任务结点ABC中的两两依赖关系为:
A依赖C,C依赖B;
进一步地,当原始任务结点过多时,服务器还可给每一原始任务结点基于依赖关系进行关系编号,以便后续基于该关系编号进行排序,以迅速获得结点链队列。继续基于上述举例进行说明,服务器可给A编号1,C编号2,B编号3等,此处不作具体限定。
步骤S31中,服务器可获取任意两个原始任务结点的依赖关系,为后续形成具有依赖关系的结点链队列形成数据基础。
S32.依据任意两个原始任务结点的依赖关系,将所有原始任务结点形成具有依赖关系的结点链队列。
具体地,继续以步骤S31中的举例进行说明,服务器可直接基于ABC中的两两依赖关系形成结点链队列:ACB,也可基于每个原始链队列对应的关系编号得到结点链队列ACB。
步骤S32中,服务器可将目标任务流中批量无序的至少两个原始任务结点经排序后形成具有依赖关系的结点链队列,利于服务器后续基于该结点链队列中的结点依赖关系,快速获取待处理任务结点。
步骤S31至S32中,服务器可获取任意两个原始任务结点的依赖关系,为后续形成具有依赖关系的结点链队列形成数据基础。服务器可将目标任务流中批量无序的至少两个原始任务结点经排序后形成具有依赖关系的结点链队列,利于服务器后续基于该结点链队列中的结点依赖关系,快速获取待处理任务结点。
在一实施例中,如图6所示,步骤S32中,即依据任意两个原始任务结点的依赖关系,将所有原始任务结点形成具有依赖关系的结点链队列,具体包括如下步骤:
S321.若依赖关系为顺序依赖关系,则将初始的原始任务结点作为结点链队列的队首。
其中,顺序依赖关系为前一结点依赖后一结点的关系,比如,AB,则为A依赖与B。
步骤S321中,服务器将顺序依赖关系中的初始的原始任务结点作为结点链队列的队首,形成具有顺序依赖关系的结点链队列,便于服务器快速从队首到队列遍历该结点链队列获取对应的待处理任务结点。
S322.若依赖关系为逆序依赖关系,则将最终的原始任务结点作为结点链队列的队首。
可以理解地,逆序依赖关系则为后一结点依赖前一结点的关系,此时,AB则为B依赖与A。步骤S322是步骤S321的相对步骤,原理相同,为了避免赘述此处不再进行进一步说明。
步骤S321至S321中,服务器按顺序依赖关系中或逆序依赖关系,形成具有依赖关系的结点链队列,便于服务器快速遍历该结点链队列获取对应的待处理任务结点。
在一实施例中,如图7所示,步骤S10中,即获取任务执行指令,具体包括如下步骤:
S11.基于任务配置界面,获取任务配置请求,任务配置请求包括任务标识。
其中,任务配置界面是服务器基于TCL语言搭建的便于客户端查看的任务配置界面,优选可为图形任务配置界面,用以使用户通过该任务配置界面设定任务配置请求,也即执行目标任务流的指令。可以理解地,客户端上显示该任务配置界面,用户可在任务配置界面上输入任务标识,以便服务器根据该任务标识,在批量FPGA任务流中定位出准确的目标任务流。
步骤S11中,服务器可接收客户端发送的任务标识,以在批量FPGA任务流中快速获取准确的目标任务流。
S12.采用工具命令语言对任务标识进行处理,获取任务执行指令。
于本实施例中,工具命令语言可为TCL语言,因TCL语言可提供通用的编程能力,且TCL函数库携带的接口可用于扩展合适的命令集,以解决特定领域的问题。
即任务执行指令为服务器基于TCL语言提供的接口对任务标识进行处理,以形成的可以激活中间件的任务指令。
步骤S12中,服务器可采用TCL语言提供通用的编程能力的接口形成可激活中间件的任务执行指令,以便将目标任务流在中间件中进行分配,有效降低目标任务流中每个原始任务结点的结点耦合性。
步骤S11至S12中,服务器可接收客户端发送的任务配置请求,根据该任务配置请求中的任务标识,以便服务器根据任务标识在批量FPGA任务流中快速获取准确的目标任务流。服务器可采用TCL语言提供通用的编程能力的接口形成可激活中间件的任务指令,以便将目标任务流在中间件中进行分配,有效降低目标任务流中每个原始任务结点之间的结点耦合性。
在一实施例中,如图8所示,步骤S50之后,即在基于结点执行栈进行任务执行操作,获取有效信息流之后,该任务执行方法还具体包括如下步骤:
S501.将有效信息流发送给触发任务执行指令的客户端。
步骤S501中,服务器可依据客户端的请求将有效信息流反馈给客户端,以便客户端及时获取目标任务流的实时执行结果。
S502.恢复结点执行栈和结点链队列为初始状态。
步骤S502中,服务器可将结点执行栈和结点链队列恢复为初始状态,以便及时清除冗余信息,并为下一目标任务流的执行作数据准备。
步骤S501至S502中,服务器可依据客户端的请求将有效信息流反馈给客户端,以便客户端及时获取目标任务流的实时执行结果。服务器可将结点执行栈和结点链队列恢复为初始状态,以便及时清除冗余信息,并为下一目标任务流的执行作数据准备。
本实施例提供的任务执行方法,如图3所示,服务器接收客户端通过TCL命令控制台发送的任务执行指令,可在多个FPGA批量任务流中获取目标任务流,并将目标任务流中的至少两个原始任务结点按依赖关系表在中间件中形成结点链队列,并将结点链队列中的任务状态为待完成状态的任务任务结点进行提取并依次入栈,形成结点执行栈,并执行该结点执行栈。服务器基于目标任务流中的至少两个原始任务,最终可形成有序的结点执行栈,并依序执行该结点执行栈中的每一待处理任务结点,可提高任务执行效率;同时,依序对结点执行栈中的每一待处理任务结点进行执行,每个待处理任务结点都是独立的任务,可有效降低FPGA批量任务流中每一待处理任务结点之间的耦合性,提升执行FPGA批量任务流的逻辑精简性。
服务器可快速对结点执行栈进行弹栈并执行当前任务结点,获取任务执行结果,以推进整体目标任务流的任务完成效率。服务器可基于任务执行结果更新结点链队列中当前任务结点对应的结点信息,保持结点链队列的数据实时性。服务器可基于结点链队列中每个原始任务结点对应的结点信息形成最新的有效信息流,便于后续客户端发起查看有效信息流的请求时,服务器可及时提取该有效信息流。
服务器可获取任意两个原始任务结点的依赖关系,为后续形成具有依赖关系的结点链队列形成数据基础。服务器可将目标任务流中批量无序的每个原始任务结点经排序后形成具有依赖关系的结点链队列,利于服务器后续基于该结点链队列快速获取待处理任务结点。
服务器按顺序依赖关系中或逆序依赖关系,形成具有依赖关系的结点链队列,便于服务器快速遍历该结点链队列获取对应的待处理任务结点。
服务器可接收客户端发送的任务标识,以在批量FPGA任务流中快速获取准确的目标任务流。服务器可采用TCL语言提供通用的编程能力和接口激活中间件,将目标任务流在中间件中进行分配,有效降低目标任务流中每个原始任务结点之间的结点耦合性。
服务器可依据客户端的请求将有效信息流反馈给客户端,以便客户端及时获取目标任务流的实时执行结果。服务器可将结点执行栈和结点链队列恢复为初始状态,以便及时清除冗余信息,并为下一目标任务流的执行作数据准备。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种任务执行装置,该任务执行装置与上述实施例中任务执行方法一一对应。如图9所示,该任务执行装置包括获取执行指令模块10、获取目标任务模块20、形成链队列模块30、形成执行栈模块40和获取信息流模块50。各功能模块详细说明如下:
获取执行指令模块10,用于获取任务执行指令,所述任务执行指令包括任务标识。
获取目标任务模块20,用于基于所述任务标识,获取对应的目标任务流,所述目标任务流包括至少两个原始任务结点、结点依赖关系表和每一所述原始任务结点对应的任务状态。
形成链队列模块30,用于基于所述结点依赖关系表,将所有所述原始任务结点形成具有依赖关系的结点链队列。
形成执行栈模块40,用于按队列顺序遍历所述结点链队列,将所述任务状态为任务待完成状态的所述原始任务结点作为待处理任务结点,并将所述待处理任务结点进行入栈操作,形成结点执行栈。
获取信息流模块50,用于基于所述结点执行栈进行任务执行操作,获取有效信息流。
优选地,该获取信息流模块50,包括:
获取执行结果单元51,用于对所述结点执行栈进行弹栈,获取栈顶对应的所述待处理任务结点作为当前任务结点,执行所述当前任务结点,获取任务执行结果。
更新结点信息单元52,用于采用所述任务执行结果,更新所述结点链队列中所述当前任务结点对应的结点信息,并将所述当前任务结点对应的任务状态更新为任务完成状态。
形成信息流单元53,用于若所述结点执行栈为空栈,则基于所述结点链队列形成有效信息流。
优选地,该形成链队列模块30包括:
获取依赖关系单元31,用于从所述结点依赖关系表中,获取任意两个原始任务结点的依赖关系。
形成结点链队列单元32,用于依据任意两个所述原始任务结点的依赖关系,将所有所述原始任务结点形成具有依赖关系的结点链队列。
优选地,该形成结点链队列单元32包括:
顺序关系子单元321,用于若所述依赖关系为顺序依赖关系,则将初始的所述原始任务结点作为所述结点链队列的队首。
逆序关系子单元322,用于若所述依赖关系为逆序依赖关系,则将最终的所述原始任务结点作为所述结点链队列的队首。
优选地,该获取执行指令模块10包括:
获取配置请求子单元11,用于基于任务配置界面,获取任务配置请求,所述任务配置请求包括任务标识。
获取执行指令子单元12,用于采用工具命令语言对任务标识进行处理,获取任务执行指令。
优选地,该任务执行装置还包括:
发送信息流模块501,用于将所述有效信息流发送给触发所述任务执行指令的客户端。
恢复初始状态模块502,用于恢复所述结点执行栈和所述结点链队列为初始状态。
关于任务执行装置的具体限定可以参见上文中对于任务执行方法的限定,在此不再赘述。上述任务执行装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于任务执行方法相关的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种任务执行方法。
在一实施例中,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例任务执行方法,例如图2所示S10至步骤S50。或者,处理器执行计算机程序时实现上述实施例中任务执行装置的各模块/单元的功能,例如图9所示模块10至模块50的功能。为避免重复,此处不再赘述。
在一实施例中,提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例任务执行方法,例如图2所示S10至步骤S50。或者,该计算机程序被处理器执行时实现上述装置实施例中任务执行装置中各模块/单元的功能,例如图9所示模块10至模块50的功能。为避免重复,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种任务执行方法,其特征在于,包括:
获取任务执行指令,所述任务执行指令包括任务标识;
基于所述任务标识,获取对应的目标任务流,所述目标任务流包括至少两个原始任务结点、结点依赖关系表和每一所述原始任务结点对应的任务状态;
基于所述结点依赖关系表,将所有所述原始任务结点形成具有依赖关系的结点链队列;
按队列顺序遍历所述结点链队列,将所述任务状态为任务待完成状态的所述原始任务结点作为待处理任务结点,并将所述待处理任务结点进行入栈操作,形成结点执行栈;
基于所述结点执行栈进行任务执行操作,获取有效信息流。
2.如权利要求1所述的任务执行方法,其特征在于,所述基于所述结点执行栈进行任务执行操作,获取有效信息流,包括:
对所述结点执行栈进行弹栈,获取栈顶对应的所述待处理任务结点作为当前任务结点,执行所述当前任务结点,获取任务执行结果;
采用所述任务执行结果,更新所述结点链队列中所述当前任务结点对应的结点信息,并将所述当前任务结点对应的任务状态更新为任务完成状态;
若所述结点执行栈为空栈,则基于所述结点链队列形成有效信息流。
3.如权利要求1所述的任务执行方法,其特征在于,所述基于所述结点依赖关系表,将所有所述原始任务结点形成具有依赖关系的结点链队列,包括:
从所述结点依赖关系表中,获取任意两个原始任务结点的依赖关系;
依据任意两个所述原始任务结点的依赖关系,将所有所述原始任务结点形成具有依赖关系的结点链队列。
4.如权利要求3所述的任务执行方法,其特征在于,所述依据任意两个原始任务结点的依赖关系,将所有所述原始任务结点形成具有依赖关系的结点链队列,包括:
若所述依赖关系为顺序依赖关系,则将初始的所述原始任务结点作为所述结点链队列的队首;
若所述依赖关系为逆序依赖关系,则将最终的所述原始任务结点作为所述结点链队列的队首。
5.如权利要求1所述的任务执行方法,其特征在于,所述获取任务执行指令,包括:
基于任务配置界面,获取任务配置请求,所述任务配置请求包括任务标识;
采用工具命令语言对所述任务标识进行处理,获取任务执行指令。
6.如权利要求1所述的任务执行方法,其特征在于,在所述基于所述结点执行栈进行任务执行操作,获取有效信息流之后,所述任务执行方法还包括:
将所述有效信息流发送给触发所述任务执行指令的客户端;
恢复所述结点执行栈和所述结点链队列为初始状态。
7.一种任务执行装置,其特征在于,包括:
获取执行指令模块,用于获取任务执行指令,所述任务执行指令包括任务标识;
获取目标任务模块,用于基于所述任务标识,获取对应的目标任务流,所述目标任务流包括至少两个原始任务结点、结点依赖关系表和每一所述原始任务结点对应的任务状态;
形成链队列模块,用于基于所述结点依赖关系表,将所有所述原始任务结点形成具有依赖关系的结点链队列;
形成执行栈模块,用于按队列顺序遍历所述结点链队列,将所述任务状态为任务待完成状态的所述原始任务结点作为待处理任务结点,并将所述待处理任务结点进行入栈操作,形成结点执行栈;
获取信息流模块,用于基于所述结点执行栈进行任务执行操作,获取有效信息流。
8.如权利要求7所述的任务执行装置,其特征在于,所述获取信息流模块,包括:
获取执行结果单元,用于对所述结点执行栈进行弹栈,获取栈顶对应的所述待处理任务结点作为当前任务结点,执行所述当前任务结点,获取任务执行结果;
更新结点信息单元,用于采用所述任务执行结果,更新所述结点链队列中所述当前任务结点对应的结点信息,并将所述当前任务结点对应的任务状态更新为任务完成状态;
形成信息流单元,用于若所述结点执行栈为空栈,则基于所述结点链队列形成有效信息流。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述任务执行方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述任务执行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910989462.3A CN110991127B (zh) | 2019-10-17 | 2019-10-17 | 任务执行方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910989462.3A CN110991127B (zh) | 2019-10-17 | 2019-10-17 | 任务执行方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110991127A true CN110991127A (zh) | 2020-04-10 |
CN110991127B CN110991127B (zh) | 2021-01-19 |
Family
ID=70082130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910989462.3A Active CN110991127B (zh) | 2019-10-17 | 2019-10-17 | 任务执行方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110991127B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988362A (zh) * | 2021-05-14 | 2021-06-18 | 南京蓝洋智能科技有限公司 | 一种任务处理方法、装置、电子设备及存储介质 |
CN113051019A (zh) * | 2021-03-31 | 2021-06-29 | 北京和信融慧信息科技有限公司 | 流程任务执行管控方法、装置以及设备 |
WO2022001541A1 (zh) * | 2020-06-28 | 2022-01-06 | 上海望友信息科技有限公司 | 一种协同编程方法、装置、系统及电子设备、存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102006610A (zh) * | 2010-12-24 | 2011-04-06 | 南京大学 | 一种物联网系统中节点的动态调整方法 |
CN105159783A (zh) * | 2015-10-09 | 2015-12-16 | 上海瀚之友信息技术服务有限公司 | 一种系统任务分配方法 |
CN105159768A (zh) * | 2015-09-09 | 2015-12-16 | 浪潮集团有限公司 | 一种任务管理方法及云数据中心管理平台 |
US10002029B1 (en) * | 2016-02-05 | 2018-06-19 | Sas Institute Inc. | Automated transfer of neural network definitions among federated areas |
CN108446175A (zh) * | 2018-03-12 | 2018-08-24 | 平安普惠企业管理有限公司 | 任务处理方法、装置、计算机设备和存储介质 |
CN110297711A (zh) * | 2019-05-16 | 2019-10-01 | 平安科技(深圳)有限公司 | 批量数据处理方法、装置、计算机设备及存储介质 |
CN110489086A (zh) * | 2019-07-25 | 2019-11-22 | 广东高云半导体科技股份有限公司 | 流程执行控制方法、装置、计算机设备及存储介质 |
-
2019
- 2019-10-17 CN CN201910989462.3A patent/CN110991127B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102006610A (zh) * | 2010-12-24 | 2011-04-06 | 南京大学 | 一种物联网系统中节点的动态调整方法 |
CN105159768A (zh) * | 2015-09-09 | 2015-12-16 | 浪潮集团有限公司 | 一种任务管理方法及云数据中心管理平台 |
CN105159783A (zh) * | 2015-10-09 | 2015-12-16 | 上海瀚之友信息技术服务有限公司 | 一种系统任务分配方法 |
US10002029B1 (en) * | 2016-02-05 | 2018-06-19 | Sas Institute Inc. | Automated transfer of neural network definitions among federated areas |
CN108446175A (zh) * | 2018-03-12 | 2018-08-24 | 平安普惠企业管理有限公司 | 任务处理方法、装置、计算机设备和存储介质 |
CN110297711A (zh) * | 2019-05-16 | 2019-10-01 | 平安科技(深圳)有限公司 | 批量数据处理方法、装置、计算机设备及存储介质 |
CN110489086A (zh) * | 2019-07-25 | 2019-11-22 | 广东高云半导体科技股份有限公司 | 流程执行控制方法、装置、计算机设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
刘其成等: "分布式软件体系结构风格", 《软件体系结构与设计实用教材》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022001541A1 (zh) * | 2020-06-28 | 2022-01-06 | 上海望友信息科技有限公司 | 一种协同编程方法、装置、系统及电子设备、存储介质 |
CN113051019A (zh) * | 2021-03-31 | 2021-06-29 | 北京和信融慧信息科技有限公司 | 流程任务执行管控方法、装置以及设备 |
CN112988362A (zh) * | 2021-05-14 | 2021-06-18 | 南京蓝洋智能科技有限公司 | 一种任务处理方法、装置、电子设备及存储介质 |
CN112988362B (zh) * | 2021-05-14 | 2022-12-30 | 南京蓝洋智能科技有限公司 | 一种任务处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110991127B (zh) | 2021-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110991127B (zh) | 任务执行方法、装置、计算机设备及存储介质 | |
CN110389900B (zh) | 一种分布式数据库集群测试方法、装置及存储介质 | |
CN109194538B (zh) | 基于分布式协调的测试方法、装置、服务器及存储介质 | |
CN112463144B (zh) | 分布式存储的命令行服务方法、系统、终端及存储介质 | |
CN110489086B (zh) | 流程执行控制方法、装置、计算机设备及存储介质 | |
CN110162344B (zh) | 一种隔离限流的方法、装置、计算机设备及可读存储介质 | |
CN104391777B (zh) | 基于Linux操作系统的云平台及其运行监控方法和装置 | |
US20190324760A1 (en) | Transaction Processing Method and Apparatus | |
CN110750315B (zh) | Android系统中的类加载方法、装置、设备和存储介质 | |
CN114780080A (zh) | 一种微前端集成方法、装置及监控方法 | |
US20220237090A1 (en) | Autonomous organization and role selection of homogenous workers | |
CN111884834A (zh) | 基于zookeeper的分布式系统升级方法、系统和计算机设备 | |
CN105930190B (zh) | 一种基于操作系统的程序自启动方法和装置 | |
CN109976886A (zh) | 内核远程切换方法及装置 | |
CN113190371B (zh) | 一种任务补偿方法、装置、电子设备及可读存储介质 | |
JP2006285474A (ja) | 並列計算機及びその制御方法 | |
JP5906705B2 (ja) | テストシステム、テスト方法、及び、プログラム | |
CN110650101A (zh) | 一种cifs网络带宽的优化方法、装置和介质 | |
CN114281473A (zh) | 云平台测试环境管理方法、系统、终端及存储介质 | |
CN112367205B (zh) | 一种对http调度请求的处理方法及调度系统 | |
CN110928672B (zh) | 一种任务编排方法、装置、设备及存储介质 | |
CN113806309A (zh) | 基于分布式锁的元数据删除方法、系统、终端及存储介质 | |
CN112035721A (zh) | 一种爬虫集群监控方法、装置、存储介质及计算机设备 | |
CN110134502A (zh) | 任务处理方法、装置、系统、计算机设备和存储介质 | |
CN103150236A (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 |