CN112035229A - 一种计算图处理方法、装置及存储介质 - Google Patents

一种计算图处理方法、装置及存储介质 Download PDF

Info

Publication number
CN112035229A
CN112035229A CN202010896146.4A CN202010896146A CN112035229A CN 112035229 A CN112035229 A CN 112035229A CN 202010896146 A CN202010896146 A CN 202010896146A CN 112035229 A CN112035229 A CN 112035229A
Authority
CN
China
Prior art keywords
task
node
task node
dependency relationship
nodes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010896146.4A
Other languages
English (en)
Inventor
王子一
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010896146.4A priority Critical patent/CN112035229A/zh
Publication of CN112035229A publication Critical patent/CN112035229A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例提供了一种计算图处理方法、装置及存储介质,其中方法包括:获取计算图,该计算图包括有序排列的多个任务节点,确定该多个任务节点中不存在依赖关系的目标任务节点,并将目标任务节点添加到节点队列中,该依赖关系包括全局依赖关系和与相邻的上游任务节点的直接依赖关系中的一种或两种,获取该多个任务节点中除目标任务节点之外的其他任务节点,并行执行该其他任务节点和节点队列包括的任务节点,可以准确找出计算图中不存在依赖关系的任务节点,并发执行这类任务节点,有效提升计算图的执行效率。

Description

一种计算图处理方法、装置及存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种计算图处理方法、装置及存储介质。
背景技术
计算图是对业务逻辑的抽象表达。通常来讲,计算图由至少两个节点,一条有向边构成,不同节点对应不同的执行任务,边的方向代表了输入输出数据流向。节点之间通常存在执行顺序关系,即上下游依赖关系。
现有技术中,用户可以使用YAML\Json\ASL\XML等语言进行计算图的定义,包括定义服务、组件、接口之间的调用关系以及资源编排逻辑等,其中资源编排逻辑可以是顺序结构、分支结构、循环结构、并行结构等,以此形成对应业务的计算图,按照用户定义的任务节点顺序,调用相应的线程和句柄以串行或并行或组合方式来执行计算图,然而,目前在执行计算图中的各个任务节点时,通常是按照用户定义的顺序执行,这样容易导致任务执行时间耗时较长,影响任务执行效率。
发明内容
本发明实施例提供一种计算图处理方法、装置及存储介质,可以准确找出计算图中不存在依赖关系的任务节点,并发执行这类任务节点,有效提升计算图的执行效率。
第一方面,本发明实施例提供了一种计算图处理方法,所述方法包括:
获取计算图,所述计算图包括有序排列的多个任务节点;
确定所述多个任务节点中不存在依赖关系的目标任务节点,并将所述目标任务节点添加到节点队列中,所述依赖关系包括全局依赖关系和与相邻的上游任务节点的直接依赖关系中的一种或两种;
获取所述多个任务节点中除所述目标任务节点之外的其他任务节点;
并行执行所述其他任务节点和所述节点队列包括的任务节点。
第二方面,本发明实施例提供了一种计算图处理装置,所述装置包括:
获取模块,用于获取计算图,所述计算图包括有序排列的多个任务节点;
确定模块,用于确定所述多个任务节点中不存在依赖关系的目标任务节点,并将所述目标任务节点添加到节点队列中,所述依赖关系包括全局依赖关系和与相邻的上游任务节点的直接依赖关系中的一种或两种;
所述获取模块,还用于获取所述多个任务节点中除所述目标任务节点之外的其他任务节点;
执行模块,用于并行执行所述其他任务节点和所述节点队列包括的任务节点。
第三方面,本发明实施例提供了一种电子设备,所述电子设备包括处理器和存储装置,所述处理器和所述存储装置相互连接,所述存储装置用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,用于执行第一方面所述的计算图处理方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行,用以执行第一方面所述的计算图处理方法。
第五方面,本发明实施公开了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述第一方面所述的计算图处理方法。
本发明实施例中,可以获取计算图,该计算图包括有序排列的多个任务节点,确定该多个任务节点中不存在依赖关系的目标任务节点,并将目标任务节点添加到节点队列中,该依赖关系包括全局依赖关系和与相邻的上游任务节点的直接依赖关系中的一种或两种,获取该多个任务节点中除目标任务节点之外的其他任务节点,并行执行该其他任务节点和节点队列包括的任务节点,可以准确找出计算图中不存在依赖关系的任务节点,并发执行这类任务节点,有效提升计算图的执行效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本申请实施例提供的一种用户自定义执行顺序计算图的示意图;
图1b是本申请实施例提供的一种用户自定义执行顺序计算图的执行时间示意图;
图2是本申请实施例提供的一种计算图处理方法的步骤流程示意图;
图3是本申请实施例提供的另一种计算图处理方法的步骤流程示意图;
图4a是本申请实施例提供的一种计算图执行顺序的示意图;
图4b是本申请实施例提供的一种计算图实际执行时间的示意图;
图5是本发明实施例提供的一种计算图处理装置的结构示意图;
图6是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
云技术(Cloud technology)是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
云计算(cloud computing)指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。云计算是网格计算(Grid Computing)、分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算(Utility Computing)、网络存储(Network StorageTechnologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络技术发展融合的产物。
随着互联网、实时数据流、连接设备多样化的发展,以及搜索服务、社会网络、移动商务和开放协作等需求的推动,云计算迅速发展起来。不同于以往的并行分布式计算,云计算的产生从理念上将推动整个互联网模式、企业管理模式发生革命性的变革。
为方便描述,下面首先列举本申请实施例中的缩略语和关键术语定义。
编排:将各种服务、组件、接口进行组合的方法。
YAML:是一种可读性高,用来表达数据序列化的格式,常用于编写配置文件。
计算图:一种定义了服务、组件、接口之间上下游关系的图数据,是一种业务逻辑的抽象。
本发明实施例中所描述的电子设备具体可以是服务器等后台服务设备。其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
请参见图1a,图1a是本申请实施例提供的一种用户自定义执行计算图顺序的示意图。如图1a所示,该顺序结构包括一个开始触发节点、一个结束节点、8个任务节点和多条有向边,包含串行分支与并行分支结构。如果图1a中的任务节点6不依赖任何任务节点,但由于需要按照用户定义的顺序执行,其所在的分支执行路径为:开始节点→任务节点1→任务节点4→任务节点6→任务节点7→任务节点8→结束节点,用户将其定义在任务节点1与任务节点4之后执行,则必须等到其所有上游任务节点,即任务节点1和任务节点4执行完毕,此任务节点6才能开始执行。
为便于理解,进一步地,请参见图1b,是本申请实施例提供的一种用户自定义执行顺序计算图的执行时间示意图。如图1b所示,对应图1a每个任务节点相应的执行时间。可以发现,此计算图中最长路径为开始节点→任务节点1→任务节点4→任务节点6→任务节点7→任务节点8→结束节点,执行总耗时为22秒。任务节点6在串行执行分支中,其上游任务节点执行总时长为11秒,该任务节点在第11秒结束后开始执行,可以看出,严格按照用户定义的执行顺序容易导致任务执行时间耗时较长,影响任务执行效率。
为了解决目前存在的计算图执行时间耗时较长,影响任务执行效率的问题,本发明提供一种计算图处理方法,可以找出不存在依赖关系的任务节点,并行执行该任务节点以及计算图中的其他任务节点,可以提高计算图的执行效率。
请参见图2,是本发明实施例提供的一种计算图处理方法的流程示意图。该计算图处理方法包括如下步骤:
201、获取计算图,所述计算图包括有序排列的多个任务节点。
其中,该计算图是通过有向边连接有序的多个任务节点组成,不同任务节点有不同计算任务,有向边表示相邻节点之间数据的输入输出方向。该计算图是由用户通过YAML语言定义,并按照用户自定义顺序编排而成,包括有序排列的多个任务节点,每个任务节点在执行时可以调用定义好的服务、组件、接口等各种资源。
202、确定所述多个任务节点中不存在依赖关系的目标任务节点,并将所述目标任务节点添加到节点队列中。
其中,所述依赖关系包括全局依赖关系和与相邻的上游任务节点的直接依赖关系中的一种或两种。
其中,全局依赖关系可以包括但不限于全局参数的依赖,执行时间的依赖(必须在某个时间点之后开始执行),执行次序的依赖(必须在某个任务节点之后或者指定顺序开始执行),外部条件的依赖(需要外部服务触发某些事件)等。
需要说明的是,外部条件的依赖可以单独作为一种依赖关系,可称为外部条件依赖关系,当然外部条件的依赖也可以视为一种全局依赖关系,本发明实施例不做限定。
具体的,电子设备可以获取计算图中各个任务节点的相关配置参数,配置参数例如包括输入参数、输出参数、全局参数、执行规则限制参数、外部服务触发事件等,并根据这些参数中的一个或者多个找出不存在依赖关系的目标任务节点。
其中,执行规则限制参数用于对下游任务节点的执行进行限制。外部服务触发事件用于触发下游任务节点的执行。
203、获取所述多个任务节点中除所述目标任务节点之外的其他任务节点。
204、并行执行所述其他任务节点和所述节点队列包括的任务节点。
具体地,节点队列包括的任务节点和其他任务节点可以同步执行,电子设备依次从节点队列获取任务节点执行,同时按照计算图中用户定义的顺序执行其他任务节点。
本发明实施例中,电子设备可以确定计算图包括的多个任务节点中不存在依赖关系的目标任务节点,并将目标任务节点添加到节点队列中,该依赖关系包括全局依赖关系和与相邻的上游任务节点的直接依赖关系中的一种或两种,获取该多个任务节点中除目标任务节点之外的其他任务节点,并行执行该其他任务节点和节点队列包括的任务节点,从而在执行计算图时可以对用户定义的执行顺序进行自动优化,可以准确找出计算图中不存在依赖关系的任务节点,并发执行这类任务节点,有效提升计算图的执行效率。
请参见图3,是本发明实施例提供的另一种计算图处理方法的流程示意图。该计算图处理方法包括如下步骤:
301、获取计算图,所述计算图包括有序排列的多个任务节点。
其中,步骤301的具体实现可以参见前述实施例中步骤201的相关描述,此处不再赘述。
302、从所述多个任务节点中获取任务节点对,所述节点对包括上游任务节点和与所述上游任务节点相邻的下游任务节点。
303、判断所述下游任务节点是否存在全局依赖关系和与所述上游任务节点的直接依赖关系。
其中,全局依赖关系可以包括但不限于全局参数的依赖,执行时间的依赖(必须在某个时间点之后开始执行),执行次序的依赖(必须在某个任务节点之后或者指定顺序开始执行),外部条件的依赖(需要外部服务触发某些事件)等。
在一些可行的实施方式中,当某个任务节点既不满足全局依赖关系也不满足与上游任务节点的直接依赖关系,则确定该某个任务节点不存在依赖关系,通过全局依赖关系和直接依赖关系等多种依赖关系综合判断一个任务节点是否是不存在依赖关系的任务节点,可以提升判断结果的准确度,有助于计算图中各个任务节点的有序顺序执行。当然,还可以结合其他可能的潜在的依赖关系来综合判断一个任务节点是否是不存在依赖关系的任务节点,本发明实施例对使用的依赖关系的数量不做限定。
304、若所述下游任务节点不存在所述全局依赖关系以及所述直接依赖关系,则将所述下游任务节点作为不存在依赖关系的目标任务节点,并将所述目标任务节点添加到节点队列中。
具体的,电子设备可以将任意两个相邻的上游任务节点和下游任务节点组成任务节点对,针对任意一个任务节点对,判断下游任务节点是否存在全局依赖关系和与上游任务节点的直接依赖关系,若下游任务节点不存在全局依赖关系以及直接依赖关系,则将该下游任务节点作为不存在依赖关系的目标任务节点。
在一些可行的实施方式中,电子设备判断下游任务节点是否存在全局依赖关系和与上游任务节点的直接依赖关系的具体实现方式可以包括:电子设备可以利用任务节点的输入参数、输出参数判断与上游任务节点有无直接依赖关系,利用任务节点的全局参数、执行规则限制参数、外部服务触发事件等判断有无全局依赖关系。
例如,电子设备可以获取下游任务节点的输入参数和上游任务节点的输出参数,输入参数包括目标全局参数,如果从全局参数存储空间获取到该目标全局参数,则确定该下游任务节点不存在全局依赖关系,如果下游任务节点的输入参数不包括上游任务节点的输出参数,则确定下游任务节点不存在与该上游任务节点的直接依赖关系。
其中,全局参数存储空间用于存储计算图中的任务节点在执行时所需的全局参数,任务节点的全局参数的具体数据有些可以在初始化时设定,有些可以是由其他任务节点在执行时产生,并由该其他任务节点根据产生的数据对全局参数存储空间中相应的全局参数的具体数据进行设定。
又例如,电子设备还可以通过执行规则限制参数判断该下游任务节点有无全局依赖关系,如果该下游任务节点存在执行规则限制参数,则可以理解为该下游任务节点存在全局依赖关系,执行规则限制参数可以包括执行限制时间、执行限制顺序等,例如该下游任务节点的执行限制时间是必须在启动任务执行的第10秒以后才能开始执行,或者必须在某个节点执行完毕之后或者在特定的次序才能开始执行。
又例如,电子设备还可以通过外部服务触发事件判断该下游任务节点有无全局依赖关系,如果该下游任务节点存在外部服务触发事件,则可以理解为该下游任务节点存在全局依赖关系。
在一些可行的实施方式中,电子设备可以利用多个参数共同判断下游任务节点是否存在全局依赖关系。该多个参数可以是全局参数、执行规则限制参数、外部服务触发事件中的两个或三个,例如可以通过全局参数、执行规则限制参数、外部服务触发事件这三个参数来判断,则只有从全局参数存储空间能够获取到下游任务节点的全局参数,并且该下游任务节点不存在执行规则限制参数以及外部服务触发事件时,才可以确定该下游任务节点不存在全局依赖关系,通多参数综合判断一个任务节点是否存在全局依赖关系,可以提升判断结果的准确度。
其中,对于利用任务节点的输入参数、输出参数判断与上游任务节点有无直接依赖关系,利用任务节点的全局参数判断有无全局依赖关系的情况,具体可以通过如下所示的依赖判断函数DependencyJudge()来实现,依赖判断函数的输入参数是一个节点对(Node1、Node2)以及全局参数(Context),其中,Node1是上游节点,Node2是与Node1相邻的下游节点。
当Node2的全局变量满足,即能够从全局参数存储空间获取到Node2所需的目标全局参数,且Node2的输入参数不包括Node1的任何一个输出参数,表明Node2与Node1不存在直接依赖关系,且Node2也不存在全局依赖关系,则DependencyJudge()返回结果为真(true),表示Node2不存在依赖关系。
如果从全局参数存储空间无法获取到Node2所需的目标全局参数,也就是说目标全局参数需要其他任务节点提供,则表示Node2存在全局依赖关系;如果Node2的输入参数包括Node1的任何一个输出参数,则表示Node2与Node1存在直接依赖关系,只要Node2存在全局依赖关系和直接依赖关系中的任意一个,则DependencyJudge()返回结果为假(false),表示Node2存在依赖关系。
Figure BDA0002658512920000101
Figure BDA0002658512920000111
305、获取所述多个任务节点中除所述目标任务节点之外的其他任务节点。
306、并行执行所述其他任务节点和所述节点队列包括的任务节点。
具体地,节点队列包括的任务节点和其他任务节点可以同步执行,电子设备依次从节点队列获取任务节点执行,同时按照计算图中用户定义的顺序执行其他任务节点。
举例来说,如图1a所示,对于任务节点4、任务节点6这一任务节点对,如果任务节点6的输入参数不包括任务节点4的任意一个输出参数,则确定任务节点6与任务节点4不存在直接依赖关系,如果任务节点6的输入参数不包括全局参数或者所需的全局参数可以从全局参数存储空间直接获取到,则确定任务节点6不存在全局依赖关系,如果都满足,则确定任务节点6不存在依赖关系,并可以将任务节点6添加到执行队列中,使得任务节点6可以与任务节点1并行执行,而不必等待任务节点1、任务节点4都执行完毕才可以开始执行。
307、在并行执行所述其他任务节点和所述节点队列包括的任务节点的过程中,从所述其他任务节点中获取未被执行的任务节点,所述未被执行的任务节点存在所述全局依赖关系,且不存在与相邻的上游任务节点的直接依赖关系。
308、若确定所述未被执行的任务节点的所述全局依赖关系解除,则将所述未被执行的任务节点添加到所述节点队列中。
具体的,电子设备在并行执行节点队列包括的任务节点和其他任务节点的过程中,可以从该其他任务节点获取未被执行的任务节点,其中,未被执行的任务节点存在全局依赖关系,且不存在与上游的相邻任务节点的直接依赖关系,则可以利用判断该未被执行的任务节点的全局依赖关系是否解除,如果全局依赖关系解除,则可以将该未被执行的任务节点添加到节点队列中,使得该未被执行的任务节点得以优先执行,进一步节省了计算图的执行时间,提升执行效率。
其中,可以通过调用以下执行计算图函数RunGraph()来并行执行节点队列包括的任务节点和计算图中的其他任务节点。
Figure BDA0002658512920000121
Figure BDA0002658512920000131
执行计算图函数的总体实现可以包括:启动执行之前,将所有任务节点视为白节点(whiteNodes),即未被执行的任务节点,遍历计算图,获取所有任务节点对,调用依赖判断函数DependencyJudge()找出所有不存在依赖关系的任务节点s.next,并通过q.add()函数将任务节点s.next添加到节点队列q中,然后并行执行计算图里的其他任务节点和节点队列包括的任务节点。在执行过程中,还可以从该其他任务节点中获取未被执行的任务节点,如果未被执行的任务节点存在全局依赖关系,且不存在与上游的相邻任务节点的直接依赖关系,则可以再次调用依赖判断函数DependencyJudge()判断该未被执行的任务节点的全局依赖关系是否解除,如果全局依赖关系解除,则可以将该未被执行的任务节点添加到节点队列q中,使得该未被执行的任务节点得以优先执行,进一步节省了计算图的执行时间,提升执行效率。
举例来说,假设图1a中的任务节点6与与任务节点4不存在直接依赖关系,且任务节点6不存在全局依赖关系,任务节点7与与任务节点6存在直接依赖关系,且任务节点7不存在全局依赖关系,则可以将任务节点6、7加入节点队列中,实际的执行顺序如图4a所示,即任务节点6可以与任务节点1并行执行,而不必等待任务节点1、任务节点4都执行完毕才开始执行,任务节点6、任务节点7组成一个新的分支执行路径:开始节点→任务节点6→任务节点7→任务节点8→结束节点。可以看出,与图1a的执行路径相比,执行的顺序结构有所改变,任务节点6只需要开始节点的触发,就可以和任务节点1并发执行。
进一步地,请参见图4b,是本申请实施例提供的一种计算图实际执行时间示意图,可以看出,调整执行顺序后,最长路径为开始节点→任务节点1→任务节点4→任务节点8→结束节点,执行总耗时为12秒,相比于图1b中的最长路径执行耗时22秒,执行总耗时缩减了10秒,效率提升了83%。
在一些可行的实施方式中,在并行执行节点队列包括的任务节点和其他任务节点的过程中,对于只存在全局依赖关系的未被执行的任务节点,可以判断该未被执行的任务节点的全局依赖关系是否解除,具体可以判断当前是否可以从全局参数存储空间获取到所需的全局参数,或者执行规则限制参数是否已经满足,例如执行限制时间是否已经达到,执行限制顺序是否已经满足,或者,外部服务触发事件是否已经发生,如果确定全局依赖关系解除,则可以将该未被执行的任务节点添加到节点队列中,使得该未被执行的任务节点得以优先执行,进一步节省了计算图的执行时间,提升执行效率。例如,如图1a所示,任务节点6与任务节点4不存在直接依赖关系,但存在全局依赖关系,假设任务节点6的全局参数需要任务节点2来提供,任务节点2执行需要3秒,任务节点4执行需要5秒,则在节点的执行过程中,可以判断任务节点2是否已经执行完毕,如果已经执行完毕,则任务节点6所需的全局参数可以由任务节点2提供,也即是说任务节点6所需的全局参数得到满足,可以认为任务节点6的全局依赖关系此时解除了,则可以将任务节点6添加到节点队列中,使得任务节点6得以优先执行,而不必按照用户定义好的顺序(即等待任务节点4执行完毕再执行任务节点6),从而进一步节省了计算图的执行时间,提升执行效率。
本发明实施例中,电子设备可以从计算图包括的多个任务节点中获取任务节点对,节点对包括上游任务节点和与上游任务节点相邻的下游任务节点,从全局依赖关系和与上游任务节点的直接依赖关系综合判断下游任务节点是否存在依赖关系,如果不存在全局依赖关系以及直接依赖关系,则并行执行该下游任务节点和其他任务节点,从而可以准确找出计算图中不存在依赖关系的任务节点,并发执行这类任务节点,有效提升计算图的执行效率。进一步的,在并行执行过程中,对于只存在全局依赖关系的未被执行的任务节点,可以判断该未被执行的任务节点的全局依赖关系是否解除,如果解除,则可以将该未被执行的任务节点也添加到节点队列中,使得该未被执行的任务节点得以优先执行,进一步节省了计算图的执行时间以及提升执行效率。
请参见图5,是本发明实施例的一种计算图处理装置的结构示意图。所述装置包括:
获取模块501,用于获取计算图,所述计算图包括有序排列的多个任务节点;
确定模块502,用于确定所述多个任务节点中不存在依赖关系的目标任务节点,并将所述目标任务节点添加到节点队列中,所述依赖关系包括全局依赖关系和与相邻的上游任务节点的直接依赖关系中的一种或两种;
所述获取模块501,还用于获取所述多个任务节点中除所述目标任务节点之外的其他任务节点;
执行模块503,用于并行执行所述其他任务节点和所述节点队列包括的任务节点。
可选的,所述确定模块502,具体用于:
从所述多个任务节点中获取任务节点对,所述节点对包括上游任务节点和与所述上游任务节点相邻的下游任务节点;
判断所述下游任务节点是否存在全局依赖关系和与所述上游任务节点的直接依赖关系;
若所述下游任务节点不存在所述全局依赖关系以及所述直接依赖关系,则将所述下游任务节点作为不存在依赖关系的目标任务节点。
可选的,所述确定模块502,具体用于:
获取所述下游任务节点的输入参数和所述上游任务节点的输出参数,所述输入参数包括目标全局参数;
若从全局参数存储空间获取到所述目标全局参数,则确定所述下游任务节点不存在全局依赖关系;
若所述下游任务节点的输入参数不包括所述上游任务节点的输出参数,则确定所述下游任务节点不存在与所述上游任务节点的直接依赖关系。
可选的,所述全局参数存储空间用于存储所述计算图中的任务节点在执行时所需的全局参数。
可选的,所述确定模块502,还用于若不存在所述下游任务节点的执行规则限制参数,则确定所述下游任务节点不存在全局依赖关系,所述执行规则限制参数用于对所述下游任务节点的执行进行限制。
可选的,所述执行规则限制参数包括执行限制时间和执行限制顺序的一种或多种。
可选的,所述确定模块502,还用于若不存在所述下游任务节点的外部服务触发事件,则确定所述下游任务节点不存在全局依赖关系,所述外部服务触发事件用于触发所述下游任务节点的执行。
可选的,所述获取模块501,还用于在并行执行所述其他任务节点和所述节点队列包括的任务节点的过程中,从所述其他任务节点中获取未被执行的任务节点,所述未被执行的任务节点存在所述全局依赖关系,且不存在与相邻的上游任务节点的直接依赖关系;
所述确定模块502,还用于若确定所述未被执行的任务节点的所述全局依赖关系解除,则将所述未被执行的任务节点添加到所述节点队列中。
需要说明的是,本发明实施例的计算图处理装置的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
请参见图6,是本发明实施例的一种电子设备的结构示意图,本发明实施例的所述电子设备包括供电模块等结构,并包括处理器601、存储装置602以及网络接口603。所述处理器601、存储装置602以及网络接口603之间可以交互数据。
所述存储装置602可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储装置602也可以包括非易失性存储器(non-volatilememory),例如快闪存储器(flash memory),固态硬盘(solid-state drive,SSD)等;所述存储装置602还可以包括上述种类的存储器的组合。
所述处理器601可以是中央处理器601(central processing unit,CPU)。在一个实施例中,所述处理器601还可以是图形处理器601(Graphics Processing Unit,GPU)。所述处理器601也可以是由CPU和GPU的组合。在一个实施例中,所述存储装置602用于存储程序指令。所述处理器601可以调用所述程序指令,执行如下操作:
获取计算图,所述计算图包括有序排列的多个任务节点;
确定所述多个任务节点中不存在依赖关系的目标任务节点,并将所述目标任务节点添加到节点队列中,所述依赖关系包括全局依赖关系和与相邻的上游任务节点的直接依赖关系中的一种或两种;
获取所述多个任务节点中除所述目标任务节点之外的其他任务节点;
并行执行所述其他任务节点和所述节点队列包括的任务节点。
可选的,所述处理器601,具体用于:
从所述多个任务节点中获取任务节点对,所述节点对包括上游任务节点和与所述上游任务节点相邻的下游任务节点;
判断所述下游任务节点是否存在全局依赖关系和与所述上游任务节点的直接依赖关系;
若所述下游任务节点不存在所述全局依赖关系以及所述直接依赖关系,则将所述下游任务节点作为不存在依赖关系的目标任务节点。
可选的,所述处理器601,具体用于:
获取所述下游任务节点的输入参数和所述上游任务节点的输出参数,所述输入参数包括目标全局参数;
若从全局参数存储空间获取到所述目标全局参数,则确定所述下游任务节点不存在全局依赖关系;
若所述下游任务节点的输入参数不包括所述上游任务节点的输出参数,则确定所述下游任务节点不存在与所述上游任务节点的直接依赖关系。
可选的,所述全局参数存储空间用于存储所述计算图中的任务节点在执行时所需的全局参数。
可选的,所述处理器601,还用于若不存在所述下游任务节点的执行规则限制参数,则确定所述下游任务节点不存在全局依赖关系,所述执行规则限制参数用于对所述下游任务节点的执行进行限制。
可选的,所述执行规则限制参数包括执行限制时间和执行限制顺序的一种或多种。
可选的,所述处理器601,还用于若不存在所述下游任务节点的外部服务触发事件,则确定所述下游任务节点不存在全局依赖关系,所述外部服务触发事件用于触发所述下游任务节点的执行。
可选的,所述处理器601,还用于在并行执行所述其他任务节点和所述节点队列包括的任务节点的过程中,从所述其他任务节点中获取未被执行的任务节点,所述未被执行的任务节点存在所述全局依赖关系,且不存在与相邻的上游任务节点的直接依赖关系,若确定所述未被执行的任务节点的所述全局依赖关系解除,则将所述未被执行的任务节点添加到所述节点队列中。
具体实现中,本发明实施例中所描述的处理器601、存储装置602以及网络接口603可执行本发明实施例图2或图3提供的一种计算图处理方法的相关实施例中所描述的实现方式,也可执行本发明实施例图5提供的一种计算图处理装置的相关实施例中所描述的实现方式,在此不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序包括一条或一条以上指令,可存储于一计算机存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法的实施例中所执行的步骤。
以上所揭露的仅为本申请部分实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (10)

1.一种计算图处理方法,其特征在于,包括:
获取计算图,所述计算图包括有序排列的多个任务节点;
确定所述多个任务节点中不存在依赖关系的目标任务节点,并将所述目标任务节点添加到节点队列中,所述依赖关系包括全局依赖关系和与相邻的上游任务节点的直接依赖关系中的一种或两种;
获取所述多个任务节点中除所述目标任务节点之外的其他任务节点;
并行执行所述其他任务节点和所述节点队列包括的任务节点。
2.根据权利要求1所述方法,其特征在于,所述确定所述多个任务节点中不存在依赖关系的目标任务节点,包括:
从所述多个任务节点中获取任务节点对,所述节点对包括上游任务节点和与所述上游任务节点相邻的下游任务节点;
判断所述下游任务节点是否存在全局依赖关系和与所述上游任务节点的直接依赖关系;
若所述下游任务节点不存在所述全局依赖关系以及所述直接依赖关系,则将所述下游任务节点作为不存在依赖关系的目标任务节点。
3.根据权利要求2所述方法,其特征在于,所述判断所述下游任务节点是否存在全局依赖关系和与所述上游任务节点的直接依赖关系,包括:
获取所述下游任务节点的输入参数和所述上游任务节点的输出参数,所述输入参数包括目标全局参数;
若从全局参数存储空间获取到所述目标全局参数,则确定所述下游任务节点不存在全局依赖关系;
若所述下游任务节点的输入参数不包括所述上游任务节点的输出参数,则确定所述下游任务节点不存在与所述上游任务节点的直接依赖关系。
4.根据权利要求3所述方法,其特征在于,所述全局参数存储空间用于存储所述计算图中的任务节点在执行时所需的全局参数。
5.根据权利要求3或4所述方法,其特征在于,所述方法还包括:
若不存在所述下游任务节点的执行规则限制参数,则确定所述下游任务节点不存在全局依赖关系,所述执行规则限制参数用于对所述下游任务节点的执行进行限制。
6.根据权利要求5所述方法,其特征在于,所述执行规则限制参数包括执行限制时间和执行限制顺序的一种或多种。
7.根据权利要求3所述方法,其特征在于,所述方法还包括:
若不存在所述下游任务节点的外部服务触发事件,则确定所述下游任务节点不存在全局依赖关系,所述外部服务触发事件用于触发所述下游任务节点的执行。
8.根据权利要求1~7中任一项所述方法,其特征在于,所述方法还包括:
在并行执行所述其他任务节点和所述节点队列包括的任务节点的过程中,从所述其他任务节点中获取未被执行的任务节点,所述未被执行的任务节点存在所述全局依赖关系,且不存在与相邻的上游任务节点的直接依赖关系;
若确定所述未被执行的任务节点的所述全局依赖关系解除,则将所述未被执行的任务节点添加到所述节点队列中。
9.一种计算图处理装置,其特征在于,所述装置包括:
获取模块,用于获取计算图,所述计算图包括有序排列的多个任务节点;
确定模块,用于确定所述多个任务节点中不存在依赖关系的目标任务节点,并将所述目标任务节点添加到节点队列中,所述依赖关系包括全局依赖关系和与相邻的上游任务节点的直接依赖关系中的一种或两种;
所述获取模块,还用于获取所述多个任务节点中除所述目标任务节点之外的其他任务节点;
执行模块,用于并行执行所述其他任务节点和所述节点队列包括的任务节点。
10.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行,用以执行如权利要求1-8任一项所述的计算图处理方法。
CN202010896146.4A 2020-08-31 2020-08-31 一种计算图处理方法、装置及存储介质 Pending CN112035229A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010896146.4A CN112035229A (zh) 2020-08-31 2020-08-31 一种计算图处理方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010896146.4A CN112035229A (zh) 2020-08-31 2020-08-31 一种计算图处理方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN112035229A true CN112035229A (zh) 2020-12-04

Family

ID=73587205

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010896146.4A Pending CN112035229A (zh) 2020-08-31 2020-08-31 一种计算图处理方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN112035229A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113050951A (zh) * 2021-03-31 2021-06-29 上海天旦网络科技发展有限公司 基于计算图的协议描述和解码方法
CN113052707A (zh) * 2021-04-30 2021-06-29 中国工商银行股份有限公司 一种应用投产方法、装置、计算机设备和存储介质
WO2024051270A1 (zh) * 2023-05-08 2024-03-14 之江实验室 任务执行的方法、装置、存储介质及电子设备

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113050951A (zh) * 2021-03-31 2021-06-29 上海天旦网络科技发展有限公司 基于计算图的协议描述和解码方法
CN113052707A (zh) * 2021-04-30 2021-06-29 中国工商银行股份有限公司 一种应用投产方法、装置、计算机设备和存储介质
WO2024051270A1 (zh) * 2023-05-08 2024-03-14 之江实验室 任务执行的方法、装置、存储介质及电子设备

Similar Documents

Publication Publication Date Title
US9401835B2 (en) Data integration on retargetable engines in a networked environment
CN112035229A (zh) 一种计算图处理方法、装置及存储介质
CN113535367B (zh) 任务调度方法及相关装置
US9256460B2 (en) Selective checkpointing of links in a data flow based on a set of predefined criteria
EP3021217A1 (en) Distributed analysis and attribution of source code
CN102223398B (zh) 一种部署在云计算环境中部署服务的方法
CN111221643B (zh) 任务处理方法和任务处理装置
US20120284730A1 (en) System to provide computing services
US20200034196A1 (en) Optimizing simultaneous startup or modification of inter-dependent machines with specified priorities
CN103065221A (zh) 基于bpel的多学科协同优化流程建模与调度的方法和系统
Mukherjee et al. Determining QoS of WS-BPEL compositions
CN114691658A (zh) 一种数据回溯方法、装置、电子设备及存储介质
US9880860B2 (en) Automatic return to synchronization context for asynchronous computations
CN111124644B (zh) 任务调度资源的确定方法、装置及系统
US8972997B2 (en) Work item processing in distributed applications
US9229980B2 (en) Composition model for cloud-hosted serving applications
CN116932147A (zh) 流式作业处理方法、装置、电子设备及介质
CN116662039A (zh) 基于共享内存的工业信息并行检测方法、装置及介质
CN114697398B (zh) 数据处理方法、装置、电子设备、存储介质及产品
CN110908644A (zh) 状态节点的配置方法、装置、计算机设备和存储介质
CN116126719A (zh) 接口测试方法、装置、电子设备及存储介质
CN111290868B (zh) 任务处理方法、装置和系统以及流程引擎
Diez Dolinski et al. Distributed simulation of P systems by means of map-reduce: first steps with Hadoop and P-Lingua
Truong et al. Conceptualizing and programming hybrid services in the cloud
CN112817573B (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