CN113448692B - 分布式图计算的方法、装置、设备及存储介质 - Google Patents
分布式图计算的方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113448692B CN113448692B CN202010219704.3A CN202010219704A CN113448692B CN 113448692 B CN113448692 B CN 113448692B CN 202010219704 A CN202010219704 A CN 202010219704A CN 113448692 B CN113448692 B CN 113448692B
- Authority
- CN
- China
- Prior art keywords
- subtask
- data
- output
- task
- output data
- 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
- 238000000034 method Methods 0.000 title claims abstract description 41
- 230000005540 biological transmission Effects 0.000 claims description 37
- 238000012545 processing Methods 0.000 claims description 25
- 230000015654 memory Effects 0.000 claims description 18
- 230000003139 buffering effect Effects 0.000 claims description 12
- 238000004364 calculation method Methods 0.000 abstract description 24
- 238000010586 diagram Methods 0.000 description 11
- 230000002093 peripheral effect Effects 0.000 description 10
- 230000001133 acceleration Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000005192 partition Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 2
- 239000000919 ceramic Substances 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000013499 data model Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 239000010409 thin film Substances 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/465—Distributed object oriented systems
-
- 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
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)
- Information Transfer Systems (AREA)
Abstract
本申请公开了一种分布式图计算的方法、装置、设备及存储介质,属于图计算领域。该方法包括:确定所述目标任务的初始子任务;基于待执行的目标任务的各子任务之间的依赖关系,自初始子任务开始执行所述目标任务的各子任务;当所述目标任务的第一子任务执行完毕时,基于所述依赖关系,确定第一子任务下一步的第二子任务,确定第二子任务的输入数据所存储的第二设备,向第二设备发送任务继续执行通知,其中,所述任务继续执行通知中携带有第一子任务的输出数据和第二子任务的标识。本申请通过向其他执行图计算任务的设备发送需要执行任务的任务标识,能够使任务实现计算本地化,从而不需要在网络中传输大量的顶点数据,能够提高分布式图计算的效率。
Description
技术领域
本申请涉及图计算领域,特别涉及一种分布式图计算的方法、装置、设备及存储介质。
背景技术
图是用于表示对象之间关联关系的一种抽象数据结构,使用顶点和边进行描述:顶点表示对象,边表示对象之间存在关联。在一个图中,可以包括多个顶点,每个顶点可以与多个顶点相关联,其中任意两个相关联的顶点存在一个边,这样,可以形成一个网状的图数据结构。图计算便是以图作为数据模型来表达不同数据之间的问题,并解决数据之间的问题的一种计算。
在现有技术中,经常采用分布式图计算来解决一些较为复杂的图计算问题。进行分布式图计算,首先需要将一个复杂的图进行切分,分别存储在不同的设备上,然后在每个设备上存储有进行图计算的方法,当设备执行图计算方法时,当需要其他设备上存储的顶点数据时,可以向其他设备发送获取请求,收到获取请求的设备可以将相应的顶点数据,送给到该设备中,供该设备继续执行图计算任务。
在实现本申请的过程中,发明人发现现有技术至少存在以下问题:
由于每个顶点可以与多个顶点相关联,在进行分布式图计算的过程中,随着计算顶点的数量增加,存储子图的各个设备之间需要传输的顶点数据量可能呈指数上涨,容易造成传输数据的网络拥堵,导致图计算的效率低下。
发明内容
本申请实施例提供了一种分布式图计算的方法、装置、设备及存储介质,能够提高分布式图计算的效率。所述技术方案如下:
一方面,提供了一种分布式图计算的方法,所述方法应用于第一设备,包括:
确定所述目标任务的初始子任务;
基于待执行的目标任务的各子任务之间的依赖关系,自所述初始子任务开始执行所述目标任务的各子任务;
当所述目标任务的第一子任务执行完毕时,基于所述依赖关系,确定所述第一子任务下一步的第二子任务,确定所述第二子任务的输入数据所存储的第二设备,向所述第二设备发送任务继续执行通知,其中,所述任务继续执行通知中携带有所述第一子任务的输出数据和所述第二子任务的标识。
可选的,所述基于待执行的目标任务的各子任务之间的依赖关系,确定所述目标任务的至少一个初始子任务之前,所述方法还包括:
对应所述目标任务的各子任务建立输入缓存队列和输出缓存队列,其中,所述输出缓存队列用于缓存所属子任务的输出数据,所述输入缓存队列用于缓存所属子任务的上一步的子任务的输出数据。
可选的,所述方法还包括:
当所述目标任务的第三子任务的输出缓存队列中缓存的输出数据的数目达到预设的第一数目阈值时,停止执行所述第三子任务的处理;
当所述目标任务的第三子任务的输出缓存队列中缓存的输出数据的数目小于预设的第一数目阈值时,重新开始执行所述第三子任务的处理。
可选的,所述方法还包括:
当所述目标任务的第四子任务的输入缓存队列中缓存的输入数据的数目达到预设的第二数目阈值时,如果第四子任务前一步的第五子任务的输入数据存储于第一设备,则停止将所述第五子任务的输出缓存队列中的输出数据向所述第四子任务的输入缓存队列转移,如果第四子任务前一步的第五子任务的输入数据存储于第三设备,则向所述第三设备发送停止传输通知,其中,所述停止传输通知用于指示所述第三设备停止将所述第五子任务的输出缓存队列中的输出数据向所述第一设备传输;
当所述目标任务的第四子任务的输入缓存队列中缓存的输入数据的数目小于预设的第二数目阈值时,如果第四子任务前一步的第五子任务的输入数据存储于第一设备,则重新开始将所述第五子任务的输出缓存队列中的输出数据向所述第四子任务的输入缓存队列转移,如果第四子任务前一步的第五子任务的输入数据存储于第三设备,则向所述第三设备发送启动传输通知,其中,所述启动传输通知用于指示所述第三设备重新开始将所述第五子任务的输出缓存队列中的输出数据向所述第一设备传输。
可选的,所述方法还包括:
对于所述目标任务的第六子任务,在所述初始子任务开始执行时,启动预设时长的计时器;
如果在所述计时器的计时时长达到预设时长之前,所述第六子任务的输出缓存队列中输出数据的数据量达到预设的数据量阈值,则如果所述第六子任务的下一步的第七子任务的输入数据所存储的第四设备与所述第六子任务的输出数据所存储的第五设备相同,则将所述输出数据移动至所述第七子任务的输入缓存队列,如果所述第六子任务的下一步的第七子任务的输入数据所存储的第四设备与所述第六子任务的输出数据所存储的第五设备不同,则向所述第五设备发送携带有所述第六子任务的输出缓存队列中输出数据和所述第七子任务的标识的任务继续执行通知;
如果在所述计时器的计时时长达到预设时长时,所述第六子任务的输出缓存队列中输出数据的数据量未达到预设的数据量阈值,则如果所述第六子任务的下一步的第七子任务的输入数据所存储的第四设备与所述第六子任务的输出数据所存储的第五设备相同,则将所述输出数据移动至所述第七子任务的输入缓存队列,如果所述第六子任务的下一步的第七子任务的输入数据所存储的第四设备与所述第六子任务的输出数据所存储的第五设备不同,则向所述第五设备发送携带有所述第六子任务的输出缓存队列中输出数据和所述第七子任务的标识的任务继续执行通知。
另一方面,提供了一种分布式图计算的装置,所述装置应用于第一设备,包括:
确定模块,被配置为确定所述目标任务的初始子任务;
执行模块,被配置为基于待执行的目标任务的各子任务之间的依赖关系,自所述初始子任务开始执行所述目标任务的各子任务;
发送模块,被配置为当所述目标任务的第一子任务执行完毕时,基于所述依赖关系,确定所述第一子任务下一步的第二子任务,确定所述第二子任务的输入数据所存储的第二设备,向所述第二设备发送任务继续执行通知,其中,所述任务继续执行通知中携带有所述第一子任务的输出数据和所述第二子任务的标识。
可选的,所述装置还包括建立模块,被配置为:
对应所述目标任务的各子任务建立输入缓存队列和输出缓存队列,其中,所述输出缓存队列用于缓存所属子任务的输出数据,所述输入缓存队列用于缓存所属子任务的上一步的子任务的输出数据。
可选的,所述装置还包括控制模块,被配置为:
当所述目标任务的第三子任务的输出缓存队列中缓存的输出数据的数目达到预设的第一数目阈值时,停止执行所述第三子任务的处理;
当所述目标任务的第三子任务的输出缓存队列中缓存的输出数据的数目小于预设的第一数目阈值时,重新开始执行所述第三子任务的处理。
可选的,所述装置还包括第一发送子模块,被配置为:
当所述目标任务的第四子任务的输入缓存队列中缓存的输入数据的数目达到预设的第二数目阈值时,如果第四子任务前一步的第五子任务的输入数据存储于第一设备,则停止将所述第五子任务的输出缓存队列中的输出数据向所述第四子任务的输入缓存队列转移,如果第四子任务前一步的第五子任务的输入数据存储于第三设备,则向所述第三设备发送停止传输通知,其中,所述停止传输通知用于指示所述第三设备停止将所述第五子任务的输出缓存队列中的输出数据向所述第一设备传输;
当所述目标任务的第四子任务的输入缓存队列中缓存的输入数据的数目小于预设的第二数目阈值时,如果第四子任务前一步的第五子任务的输入数据存储于第一设备,则重新开始将所述第五子任务的输出缓存队列中的输出数据向所述第四子任务的输入缓存队列转移,如果第四子任务前一步的第五子任务的输入数据存储于第三设备,则向所述第三设备发送启动传输通知,其中,所述启动传输通知用于指示所述第三设备重新开始将所述第五子任务的输出缓存队列中的输出数据向所述第一设备传输。
可选的,所述装置还包括第二发送子模块,被配置为:
对于所述目标任务的第六子任务,在所述初始子任务开始执行时,启动预设时长的计时器;
如果在所述计时器的计时时长达到预设时长之前,所述第六子任务的输出缓存队列中输出数据的数据量达到预设的数据量阈值,则如果所述第六子任务的下一步的第七子任务的输入数据所存储的第四设备与所述第六子任务的输出数据所存储的第五设备相同,则将所述输出数据移动至所述第七子任务的输入缓存队列,如果所述第六子任务的下一步的第七子任务的输入数据所存储的第四设备与所述第六子任务的输出数据所存储的第五设备不同,则向所述第五设备发送携带有所述第六子任务的输出缓存队列中输出数据和所述第七子任务的标识的任务继续执行通知;
如果在所述计时器的计时时长达到预设时长时,所述第六子任务的输出缓存队列中输出数据的数据量未达到预设的数据量阈值,则如果所述第六子任务的下一步的第七子任务的输入数据所存储的第四设备与所述第六子任务的输出数据所存储的第五设备相同,则将所述输出数据移动至所述第七子任务的输入缓存队列,如果所述第六子任务的下一步的第七子任务的输入数据所存储的第四设备与所述第六子任务的输出数据所存储的第五设备不同,则向所述第五设备发送携带有所述第六子任务的输出缓存队列中输出数据和所述第七子任务的标识的任务继续执行通知。
再一方面,提供了一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上所述的分布式图计算的方法所执行的操作。
再一方面,提供了一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如上所述的分布式图计算的方法所执行的操作。
本申请实施例提供的技术方案带来的有益效果是:
通过将图计算任务进行划分成多个子任务,当子任务执行时需要的顶点数据在其他设备时,可以将子任务的任务标识和上一步的执行数据到其他设备,使子任务在其他设备上实现本地化计算,从而不需要在网络中传输大量的顶点数据,能够提高分布式图计算的效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种实施环境的示意图;
图2是本申请实施例提供的一种分布式图计算的方法的流程图;
图3是本申请实施例提供的子任务执行顺序示意图;
图4是本申请实施例提供的输入缓存队列和输出缓存队列的示意图;
图5是本申请实施例提供的子任务执行容器示意图;
图6是本申请实施例提供的任务调度模块的执行顺序图;
图7是本申请实施例提供的用于分布式图计算的装置结构示意图;
图8是本申请实施例提供的终端的结构示意图;
图9是本申请实施例提供的服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图1是本申请实施例提供的一种实施环境的示意图。参见图1,本申请实施例可以由多个设备完成,其中,设备可以是终端,也可以服务器。设备之间可以通过互联网或是局域网等进行连接。设备中还具有存储器和处理器,能够存储数据和任务执行程序,并能够根据任务执行程序对存储的数据进行处理。
图是用于表示对象之间关联关系的一种抽象数据结构,使用顶点和边进行描述:顶点表示对象,边表示对象之间的关系。在一个图中,可以包括多个顶点,每个顶点可以与多个顶点相关联,其中任意两个相关联的顶点存在一个边,这样,可以形成一个网状的图数据结构。图计算便是以图作为数据模型来表达不同数据之间的问题,并解决数据之间的问题的一种计算。而分布式图计算则是将一个图划分为多个图,分别存储在不同的设备中,每个设备中设置有执行图计算任务的方法,当所有设备中存储的子图的所有顶点都被处理之后,便可完成分布式图计算任务。其中,在分布式图计算的过程中,不同的图计算任务需要的执行数据(即顶点数据)可能不在本设备的子图上存储,此时需要向其他设备获取相应的顶点数据,因此,可能会导致设备之间需要传输大量的顶点数据,从而使设备之间的网络拥堵。采用本申请,可以不用在设备之间传输顶点数据,而是将需要执行的图计算任务的任务标识发送到存储相应顶点数据的设备,能够减少在设备之间的数据传输量。
图2是本申请实施例提供的一种分布式图计算的方法的流程图。在分布式图计算中,图被切分被多个子图存储在不同的设备中。参见图2,该实施例包括:
步骤201、确定目标任务的初始子任务。
在实施中,技术人员可以将图计算的任务(即目标任务)切分为多个子任务,例如,按照图中顶点之间的关系进行切分,通过指定顶点以及在顶点中存储的与,这样可以将图计算任务切分成多个子任务,如果将多个子任务看做是顶点,则多个子任务以及子任务之间的依赖关系可形成一个如图3所示的有向无环图。在存储多个子图的设备中,都可以存储有切分之后的子任务之间的依赖关系,以及子任务的执行方法。其中,多个子任务中包括初始子任务、中间子任务和终止子任务。图计算任务执行需要从初始子任务开始执行,初始子任务可以是一个或者是多个。初始子任务可以由技术人员进行设定,设备开始执行时图计算任务的多个子任务时,首先需要确定初始子任务,然后从初始子任务开始执行多个子任务。
步骤202、基于待执行的目标任务的各子任务之间的依赖关系,自初始子任务开始执行目标任务的各子任务。
在实施中,执行多个子任务的设备中存储着多个子任务之间的依赖关系,即对于每个子任务都存储有其上个子任务的任务标识和下个子任务的的标识,当初始子任务执行结束之后,可以根据依赖关系,确定在初始子任务之后执行的中间子任务。
可选的,对应目标任务的各子任务建立输入缓存队列和输出缓存队列,其中,输出缓存队列用于缓存所属子任务的输出数据,输入缓存队列用于缓存所属子任务的上一步的子任务的输出数据。
在实施中,可以在设备中,对图计算任务中的子任务设置建立输入缓存队列和输出缓存队列,其中,可以只对初始子任务设置输出缓存队列,对终止子任务建立输入缓存队列,对每个中间子任务同时建立输入缓存队列和输出缓存队列。如图4所示,对初始子任务设置的输出缓存队列,可以用于存储初始子任务的输出数据,即执行结果,对每个中间子任务的输入缓存队列可以用来存储中间子任务执行需要的输入数据,对每个中间子任务的输出缓存队列可以用来存储中间子任务的输出数据,即执行结果,对终止子任务设置的输入缓存队列,可以用于存储终止子任务执行需要的输入数据。
当初始子任务执行完之后,可以将初始子任务的执行结果存储在初始子任务对应的输出缓存队列中,然后根据依赖关系,确定下个需要执行的中间子任务。将初始子任务的执行结果,从初始子任务对应的输出缓存队列中,转移到下个需要执行的中间子任务对应的输入队列中,当中间子任务执行时,从该中间子任务对应的输入缓存队列中,获取初始子任务的执行结果,开始执行该中间子任务,当该中间子任务执行结束之后,则将该中间子任务的执行结果,存储到该中间子任务对应的输出缓存队列中,再次按照依赖关系,确定下个需要执行的子任务。
可选的,在设备中设置有任务调度模块,用于调度执行各子任务。
在实施中,在任务调度模块中包括子任务执行容器和执行线程池,可如图5所示。其中,子任务执行容器可以用于判断各个子任务是否可执行,若子任务可执行,则从子任务对应的输入缓存队列中,获取输入数据,并将子任务提交到执行线程池,当子任务执行结束之后,将该子任务的执行结果输入存储在该子任务对应的输出缓存队列中。执行线程池用于接收子任务执行容器提交上来的子任务和输入数据,对子任务开始执行。其中,判断子任务是否可执行的条件可如下:
对于初始子任务,如果初始子任务对应的输出缓存队列中的输出数据的数目没有超过对应的预设数值时,并且初始子任务对应的源数据还未被初始子任处理,则该初始子任务满足执行条件;
对于中间子任务,如果中间子任务对应的输出缓存队列中的输出数据的数目没有超过对应的预设数值时,并且该中间子任务对应的输入缓存队列中还有数据,则该中间子任务满足执行条件;
对于终止子任务,如果终止子任务对应的输入缓存队列中,存储有输入数据,则该终止自任务满足执行条件。
子任务执行容器可以轮询设备中的各个子任务是否满足执行条件,当子任务满足执行条件时,将该子任务对应的输入数据和任务标识提交到执行线程池,任务线程池开始执行该任务。
可选的,当子任务的执行条件不满足预设的执行条件时,可根据子任务对应的输出缓存队列的存储数据的情况进行如下处理:当目标任务的第三子任务的输出缓存队列中缓存的输出数据的数目达到预设的第一数目阈值时,停止执行第三子任务的处理;当目标任务的第三子任务的输出缓存队列中缓存的输出数据的数目小于预设的第一数目阈值时,重新开始执行第三子任务的处理。
其中,第三子任务可以是任意一个图计算任务的子任务。
在实施中,当子任务对应的输出缓存队列中缓存的输出数据的数目达到预设的第一数目阈值时,则任务执行容器不再将该子任务提交到执行线程池中;当子任务对应的输出缓存队列中缓存的输出数据的数目再次低于预设的第一数目阈值时,并且该子任务对应的输入缓存队列中存储有输入数据时,则任务执行容器再次将该子任务提交到执行线程池中。
步骤203、当目标任务的第一子任务执行完毕时,基于依赖关系,确定第一子任务下一步的第二子任务,确定第二子任务的输入数据所存储的第二设备,向第二设备发送任务继续执行通知,其中,任务继续执行通知中携带有第一子任务的输出数据和第二子任务的标识。
其中,第一子任务可以是任意一个图计算任务的子任务,第二子任务是第一子任务的下一个子任务。
在实施中,当子任务执行结束之后,根据子任务的依赖关系,确定该子任务的下一个子任务,并根据下一个子任务需要处理的顶点数据以及设备中存储的分区信息,确定执下一个子任务的设备,其中,执行下一个任务的设备可以是一个设备,也可以是多个设备,执行下一个任务的设备可以是执行该子任务的设备,也可以是其他的设备。当下个子任务需要处理的顶点数据在本设备存储时,则根据第一子任务的输出数据,执行下个子任务。当下个子任务需要处理的顶点数据不在本设备存储时,可以通过分区信息来确定下个子任务需要处理的顶点数据存储的设备,然后向对应的设备发送任务继续执行通知,在任务继续执行通知中携带有第一子任务的输出数据和第二子任务的标识。
可选的,可以在每个执行图计算任务的设备中设置有网络调度模块,用于发送和接收子任务执行的执行结果等数据。其中,网络调度模块包括接收端和发送端,每个设备的接收端和其他设备的发送端可以通过Netty连接,进行传输数据等。
其中,发送端用于轮询设备中的各个子任务的输出缓存队列,当子任务的输出缓存队列中,存在输出数据时,则获取输出缓存队列中的输出数据,若对应输出缓存队列的子任务的下个子任务的执行设备为本设备时,则将获取的输出数据下个子任务的输入队列。若对应输出缓存队列的子任务的下个子任务的执行设备为其他设备时,将输出数据,和下个子任务的任务标识进行打包成数据包,发送到对应的设备。
可选的,当子任务的输出缓存队列中的输出数据达到预设的内存阈值时,可将输出数据进行发包发送,则发送端相应的处理可以如下:对于目标任务的第六子任务,在初始子任务开始执行时,启动预设时长的计时器;如果在计时器的计时时长达到预设时长之前,第六子任务的输出缓存队列中输出数据的数据量达到预设的数据量阈值,则如果第六子任务的下一步的第七子任务的输入数据所存储的第四设备与第六子任务的输出数据所存储的第五设备相同,则将输出数据移动至第七子任务的输入缓存队列,如果第六子任务的下一步的第七子任务的输入数据所存储的第四设备与第六子任务的输出数据所存储的第五设备不同,则向第五设备发送携带有第六子任务的输出缓存队列中输出数据和第七子任务的标识的任务继续执行通知;如果在计时器的计时时长达到预设时长时,第六子任务的输出缓存队列中输出数据的数据量未达到预设的数据量阈值,则如果第六子任务的下一步的第七子任务的输入数据所存储的第四设备与第六子任务的输出数据所存储的第五设备相同,则将输出数据移动至第七子任务的输入缓存队列,如果第六子任务的下一步的第七子任务的输入数据所存储的第四设备与第六子任务的输出数据所存储的第五设备不同,则向第五设备发送携带有第六子任务的输出缓存队列中输出数据和第七子任务的标识的任务继续执行通知。
其中,第六子任务可以是任意一个图计算任务的子任务,第七子任务是第一子任务的下一步子任务。
在实施中,可以在设置一个计时器,计时器内设置有预设时长,可以在初始子任务开始执行之后计时器开始计时,在开始计时的预设时长之内,如果第六子任务对应的输出缓存队列中输出数据的数据量每次达到预设的数据量阈值时,可以先确定第六子任务的下一步的第七子任务的输入数据所存储的第四设备(即第七子任务需要处理的顶点数据的存储设备),是否与第六子任务的输入数据设备所存储的第五设备(即执行第六子任务的设备)为同一个设备,如果第四设备和第五设备为同一个设备,则将第六子任务的输出缓存队列中的输出数据转移到第七子任务对应的输入缓存队列中;如果第四设备和第五设备不是同一个设备,则通过第五设备中存储的分区信息,确定第四设备的地址信息,向第四设备发送任务执行通知,其中,任务执行通知可以又第六子任务的输出缓存队列中的输出数据和第七子任务的任务标识进行序列化,并进行数据压缩得到的。如果在计时器开始计时之后,达到了预设时长,但第六子任务对应的输出缓存队列中输出数据的数据量没有达到预设的数据量阈值时,同样可以将第六子任务输出缓存队列中输出数据发送到执行第七子任务的第四设备中,同样可以先确定第四设备和第五设备是否为同一个设备,相应的发送方式可以与上述第五设备向第四设备发送第六子任务的输出缓存队列中输出数据的方式相同此处不再赘述。
接收端用于接收发送端发送的任务执行通知,并将数据进行解压、反序列化,根据解压出的任务标识,将输出数据作为输入数据,放到对应的任务标识对应的输入缓存队列中,可如图6所示。
另外,接收端可以定期轮询设备中各子任务对应的输入缓存队列,当有子任务的输入缓存队列中的缓存的输入数据的数目达到预设的第二数目阈值时,则可以进行如下的处理:当目标任务的第四子任务的输入缓存队列中缓存的输入数据的数目达到预设的第二数目阈值时,如果第四子任务前一步的第五子任务的输入数据存储于第一设备,则停止将第五子任务的输出缓存队列中的输出数据向第四子任务的输入缓存队列转移,如果第四子任务前一步的第五子任务的输入数据存储于第三设备,则向第三设备发送停止传输通知,其中,停止传输通知用于指示第三设备停止将第五子任务的输出缓存队列中的输出数据向第一设备传输;当目标任务的第四子任务的输入缓存队列中缓存的输入数据的数目小于预设的第二数目阈值时,如果第四子任务前一步的第五子任务的输入数据存储于第一设备,则重新开始将第五子任务的输出缓存队列中的输出数据向第四子任务的输入缓存队列转移,如果第四子任务前一步的第五子任务的输入数据存储于第三设备,则向第三设备发送启动传输通知,其中,启动传输通知用于指示第三设备重新开始将第五子任务的输出缓存队列中的输出数据向第一设备传输。
其中,第四子任务可以是任意一个图计算任务的子任务,第五子任务是第四子任务的上一步子任务。
在实施中,当第四子任务的输入缓存队列中缓存的输入数据的数目达到预设的第二数目阈值时,则根据设备中存储的依赖关系,确定该子任务的上一步子任务,并根据第四子任务中处理的子图中的顶点数据,确定第四子任务的上一步子任务需要处理的顶点数据标识,再根据顶点数据标识,以及设备中存储的分区信息,确定执行上一步子任务(即第五子任务)的第三设备。如果确定的执行第五子任务的设备与执行执行第四子任务的设备为一个设备时,则停止将第五子任务的输出缓存队列中的输出数据向该子任务的输入缓存队列转移;如果确定的第三设备与执行第四子任务的设备不是同一个设备,则向第三设备发送停止传输通知,其中,停止传输通知中携带有第四子任务的任务标识、第五子任务的任务标识以及执行第四子任务的设备标识。当第四子任务的输入缓存队列中缓存的输入数据的数目小于预设的第二数目阈值时,如果第三设备与执行第四子任务的设备为一个设备时,则继续将第五子任务的输出缓存队列中的输出数据向该子任务的输入缓存队列转移;如果确定的第三设备与执行第四子任务的设备不是同一个设备,则向第三设备发送启动传输通知。其中,启动传输通知中携带第四子任务的任务标识、第五子任务的上的任务标识以及执行第四子任务的设备标识。
对应的,在进行图计算任务的设备中,为每个子任务的输出队列设置暂停计数模块,在暂停计数模块中设置有对应子任务的多个下一步子任务的任务标识,并且每个任务标识对应的暂停数值,其中,暂停数值默认为0。每个设备的发送端可以接收其他设备发送的停止传输通知和启动传输通知。当第三设备的发送端接收到其他设备发送的停止传输通知之后,可以根据停止传输通知中携带的多个任务标识和设备标识,为对应的子任务的输出队列设置的暂停计数模块中,对应的下一步子任务的任务标识的暂停数值加1,当第三设备的发送端接收到其他设备发送的启动传输通知之后,可以根据启动传输通知中携带的多个任务标识和设备标识,为对应的子任务的输出队列设置的暂停计数模块中,对应的下一步子任务的任务标识的暂停数值减1。对应的在上述发送端轮询输出缓存队列是否存在输出数据时,还可以轮训该输出缓存队列对应的暂停计数模块中每个任务标识对应的暂停数值是否为0,若不为0,则不向对应的设备发送输出数据。若为0,则从输出缓存队列中将获取输出数据,将输出数据和下个子任务的任务标识进行打包成数据包,发送到对应的设备中。
本申请实施例通过将分布式图计算任务进行划分成多个子任务,当子任务执行时需要的顶点数据在其他设备时,可以将子任务的任务标识和上一步的执行数据到其他设备,使子任务在其他设备上实现本地化计算,从而不需要在网络中传输大量的顶点数据,能够提高分布式图计算的效率。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
图7为本实施例提供了一种分布式图计算的装置结构示意图,所述装置可以是上述的第一设备、第二设备等等,参照图7,该装置包括:
确定模块710,被配置为确定所述目标任务的初始子任务;
执行模块720,被配置为基于待执行的目标任务的各子任务之间的依赖关系,自所述初始子任务开始执行所述目标任务的各子任务;
发送模块730,被配置为当所述目标任务的第一子任务执行完毕时,基于所述依赖关系,确定所述第一子任务下一步的第二子任务,确定所述第二子任务的输入数据所存储的第二设备,向所述第二设备发送任务继续执行通知,其中,所述任务继续执行通知中携带有所述第一子任务的输出数据和所述第二子任务的标识。
可选的,所述装置还包括建立模块,被配置为:
对应所述目标任务的各子任务建立输入缓存队列和输出缓存队列,其中,所述输出缓存队列用于缓存所属子任务的输出数据,所述输入缓存队列用于缓存所属子任务的上一步的子任务的输出数据。
可选的,所述装置还包括控制模块,被配置为:
当所述目标任务的第三子任务的输出缓存队列中缓存的输出数据的数目达到预设的第一数目阈值时,停止执行所述第三子任务的处理;
当所述目标任务的第三子任务的输出缓存队列中缓存的输出数据的数目小于预设的第一数目阈值时,重新开始执行所述第三子任务的处理。
可选的,所述装置还包括第一发送子模块,被配置为:
当所述目标任务的第四子任务的输入缓存队列中缓存的输入数据的数目达到预设的第二数目阈值时,如果第四子任务前一步的第五子任务的输入数据存储于第一设备,则停止将所述第五子任务的输出缓存队列中的输出数据向所述第四子任务的输入缓存队列转移,如果第四子任务前一步的第五子任务的输入数据存储于第三设备,则向所述第三设备发送停止传输通知,其中,所述停止传输通知用于指示所述第三设备停止将所述第五子任务的输出缓存队列中的输出数据向所述第一设备传输;
当所述目标任务的第四子任务的输入缓存队列中缓存的输入数据的数目小于预设的第二数目阈值时,如果第四子任务前一步的第五子任务的输入数据存储于第一设备,则重新开始将所述第五子任务的输出缓存队列中的输出数据向所述第四子任务的输入缓存队列转移,如果第四子任务前一步的第五子任务的输入数据存储于第三设备,则向所述第三设备发送启动传输通知,其中,所述启动传输通知用于指示所述第三设备重新开始将所述第五子任务的输出缓存队列中的输出数据向所述第一设备传输。
可选的,所述装置还包括第二发送子模块,被配置为:
对于所述目标任务的第六子任务,在所述初始子任务开始执行时,启动预设时长的计时器;
如果在所述计时器的计时时长达到预设时长之前,所述第六子任务的输出缓存队列中输出数据的数据量达到预设的数据量阈值,则如果所述第六子任务的下一步的第七子任务的输入数据所存储的第四设备与所述第六子任务的输出数据所存储的第五设备相同,则将所述输出数据移动至所述第七子任务的输入缓存队列,如果所述第六子任务的下一步的第七子任务的输入数据所存储的第四设备与所述第六子任务的输出数据所存储的第五设备不同,则向所述第五设备发送携带有所述第六子任务的输出缓存队列中输出数据和所述第七子任务的标识的任务继续执行通知;
如果在所述计时器的计时时长达到预设时长时,所述第六子任务的输出缓存队列中输出数据的数据量未达到预设的数据量阈值,则如果所述第六子任务的下一步的第七子任务的输入数据所存储的第四设备与所述第六子任务的输出数据所存储的第五设备相同,则将所述输出数据移动至所述第七子任务的输入缓存队列,如果所述第六子任务的下一步的第七子任务的输入数据所存储的第四设备与所述第六子任务的输出数据所存储的第五设备不同,则向所述第五设备发送携带有所述第六子任务的输出缓存队列中输出数据和所述第七子任务的标识的任务继续执行通知。
需要说明的是:上述实施例提供的分布式图计算的装置在进行分布式图计算时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的分布式图计算的装置与分布式图计算的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图8示出了本申请一个示例性实施例提供的终端800的结构框图。该终端800可以是上述的计算机设备,可以为:智能手机、平板电脑、MP3播放器(Moving Picture ExpertsGroup Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving PictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端800还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端800包括有:处理器801和存储器802。
处理器801可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器801可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器801也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器801可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器801还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器802可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器802还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器802中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器801所执行以实现本申请中方法实施例提供的分布式图计算的方法。
在一些实施例中,终端800还可选包括有:***设备接口803和至少一个***设备。处理器801、存储器802和***设备接口803之间可以通过总线或信号线相连。各个***设备可以通过总线、信号线或电路板与***设备接口803相连。具体地,***设备包括:射频电路804、触摸显示屏805、摄像头806、音频电路807、定位组件808和电源809中的至少一种。
***设备接口803可被用于将I/O(Input/Output,输入/输出)相关的至少一个***设备连接到处理器801和存储器802。在一些实施例中,处理器801、存储器802和***设备接口803被集成在同一芯片或电路板上;在一些其他实施例中,处理器801、存储器802和***设备接口803中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路804用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路804通过电磁信号与通信网络以及其他通信设备进行通信。射频电路804将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路804包括:天线***、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路804可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路804还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏805用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏805是触摸显示屏时,显示屏805还具有采集在显示屏805的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器801进行处理。此时,显示屏805还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏805可以为一个,设置终端800的前面板;在另一些实施例中,显示屏805可以为至少两个,分别设置在终端800的不同表面或呈折叠设计;在再一些实施例中,显示屏805可以是柔性显示屏,设置在终端800的弯曲表面上或折叠面上。甚至,显示屏805还可以设置成非矩形的不规则图形,也即异形屏。显示屏805可以采用LCD(LiquidCrystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件806用于采集图像或视频。可选地,摄像头组件806包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件806还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路807可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器801进行处理,或者输入至射频电路804以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端800的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器801或射频电路804的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路807还可以包括耳机插孔。
定位组件808用于定位终端800的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件808可以是基于美国的GPS(GlobalPositioning System,全球定位***)、中国的北斗***、俄罗斯的格雷纳斯***或欧盟的伽利略***的定位组件。
电源809用于为终端800中的各个组件进行供电。电源809可以是交流电、直流电、一次性电池或可充电电池。当电源809包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端800还包括有一个或多个传感器810。该一个或多个传感器810包括但不限于:加速度传感器811、陀螺仪传感器812、压力传感器813、指纹传感器814、光学传感器815以及接近传感器816。
加速度传感器811可以检测以终端800建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器811可以用于检测重力加速度在三个坐标轴上的分量。处理器801可以根据加速度传感器811采集的重力加速度信号,控制触摸显示屏805以横向视图或纵向视图进行用户界面的显示。加速度传感器811还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器812可以检测终端800的机体方向及转动角度,陀螺仪传感器812可以与加速度传感器811协同采集用户对终端800的3D动作。处理器801根据陀螺仪传感器812采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器813可以设置在终端800的侧边框和/或触摸显示屏805的下层。当压力传感器813设置在终端800的侧边框时,可以检测用户对终端800的握持信号,由处理器801根据压力传感器813采集的握持信号进行左右手识别或快捷操作。当压力传感器813设置在触摸显示屏805的下层时,由处理器801根据用户对触摸显示屏805的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器814用于采集用户的指纹,由处理器801根据指纹传感器814采集到的指纹识别用户的身份,或者,由指纹传感器814根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器801授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器814可以被设置终端800的正面、背面或侧面。当终端800上设置有物理按键或厂商Logo时,指纹传感器814可以与物理按键或厂商Logo集成在一起。
光学传感器815用于采集环境光强度。在一个实施例中,处理器801可以根据光学传感器815采集的环境光强度,控制触摸显示屏805的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏805的显示亮度;当环境光强度较低时,调低触摸显示屏805的显示亮度。在另一个实施例中,处理器801还可以根据光学传感器815采集的环境光强度,动态调整摄像头组件806的拍摄参数。
接近传感器816,也称距离传感器,通常设置在终端800的前面板。接近传感器816用于采集用户与终端800的正面之间的距离。在一个实施例中,当接近传感器816检测到用户与终端800的正面之间的距离逐渐变小时,由处理器801控制触摸显示屏805从亮屏状态切换为息屏状态;当接近传感器816检测到用户与终端800的正面之间的距离逐渐变大时,由处理器801控制触摸显示屏805从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图8中示出的结构并不构成对终端800的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图9是本申请实施例提供的一种服务器的结构示意图,该服务器900可以是上述的计算机设备,该服务器900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)901和一个或一个以上的存储器902,其中,所述存储器92中存储有至少一条指令,所述至少一条指令由所述处理器901加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由终端中的处理器执行以完成上述实施例中分布式图计算的方法。该计算机可读存储介质可以是非暂态的。例如,所述计算机可读存储介质可以是ROM(Read-OnlyMemory,只读存储器,)、RAM(Random Access Memory,随机存取存储器)、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (8)
1.一种分布式图计算的方法,其特征在于,所述方法应用于第一设备,所述方法包括:
确定目标任务的初始子任务;
对应所述目标任务的各子任务建立输入缓存队列和输出缓存队列,其中,所述输出缓存队列用于缓存所属子任务的输出数据,所述输入缓存队列用于缓存所属子任务的上一步的子任务的输出数据;
基于待执行的目标任务的各子任务之间的依赖关系,自所述初始子任务开始执行所述目标任务的各子任务;
当所述目标任务的第一子任务执行完毕时,基于所述依赖关系,确定所述第一子任务下一步的第二子任务,确定所述第二子任务的输入数据所存储的第二设备,向所述第二设备发送任务继续执行通知,其中,所述任务继续执行通知中携带有所述第一子任务的输出数据和所述第二子任务的标识;
当所述目标任务的第四子任务的输入缓存队列中缓存的输入数据的数目达到预设的第二数目阈值时,如果所述第四子任务前一步的第五子任务的输入数据存储于第一设备,则停止将所述第五子任务的输出缓存队列中的输出数据向所述第四子任务的输入缓存队列转移,如果所述第四子任务前一步的第五子任务的输入数据存储于第三设备,则向所述第三设备发送停止传输通知,其中,所述停止传输通知用于指示所述第三设备停止将所述第五子任务的输出缓存队列中的输出数据向所述第一设备传输;
当所述目标任务的第四子任务的输入缓存队列中缓存的输入数据的数目小于预设的第二数目阈值时,如果所述第四子任务前一步的第五子任务的输入数据存储于第一设备,则重新开始将所述第五子任务的输出缓存队列中的输出数据向所述第四子任务的输入缓存队列转移,如果所述第四子任务前一步的第五子任务的输入数据存储于第三设备,则向所述第三设备发送启动传输通知,其中,所述启动传输通知用于指示所述第三设备重新开始将所述第五子任务的输出缓存队列中的输出数据向所述第一设备传输。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述目标任务的第三子任务的输出缓存队列中缓存的输出数据的数目达到预设的第一数目阈值时,停止执行所述第三子任务的处理;
当所述目标任务的第三子任务的输出缓存队列中缓存的输出数据的数目小于预设的第一数目阈值时,重新开始执行所述第三子任务的处理。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对于所述目标任务的第六子任务,在所述初始子任务开始执行时,启动预设时长的计时器;
如果在所述计时器的计时时长达到预设时长之前,所述第六子任务的输出缓存队列中输出数据的数据量达到预设的数据量阈值,则如果所述第六子任务的下一步的第七子任务的输入数据所存储的第四设备与所述第六子任务的输出数据所存储的第五设备相同,则将所述输出数据移动至所述第七子任务的输入缓存队列,如果所述第六子任务的下一步的第七子任务的输入数据所存储的第四设备与所述第六子任务的输出数据所存储的第五设备不同,则向所述第五设备发送携带有所述第六子任务的输出缓存队列中输出数据和所述第七子任务的标识的任务继续执行通知;
如果在所述计时器的计时时长达到预设时长时,所述第六子任务的输出缓存队列中输出数据的数据量未达到预设的数据量阈值,则如果所述第六子任务的下一步的第七子任务的输入数据所存储的第四设备与所述第六子任务的输出数据所存储的第五设备相同,则将所述输出数据移动至所述第七子任务的输入缓存队列,如果所述第六子任务的下一步的第七子任务的输入数据所存储的第四设备与所述第六子任务的输出数据所存储的第五设备不同,则向所述第五设备发送携带有所述第六子任务的输出缓存队列中输出数据和所述第七子任务的标识的任务继续执行通知。
4.一种分布式图计算的装置,其特征在于,所述装置应用于第一设备,所述装置包括:
确定模块,被配置为确定目标任务的初始子任务;
建立模块,被配置为对应所述目标任务的各子任务建立输入缓存队列和输出缓存队列,其中,所述输出缓存队列用于缓存所属子任务的输出数据,所述输入缓存队列用于缓存所属子任务的上一步的子任务的输出数据;
执行模块,被配置为基于待执行的目标任务的各子任务之间的依赖关系,自所述初始子任务开始执行所述目标任务的各子任务;
发送模块,被配置为当所述目标任务的第一子任务执行完毕时,基于所述依赖关系,确定所述第一子任务下一步的第二子任务,确定所述第二子任务的输入数据所存储的第二设备,向所述第二设备发送任务继续执行通知,其中,所述任务继续执行通知中携带有所述第一子任务的输出数据和所述第二子任务的标识;
第一发送子模块,被配置为当所述目标任务的第四子任务的输入缓存队列中缓存的输入数据的数目达到预设的第二数目阈值时,如果所述第四子任务前一步的第五子任务的输入数据存储于第一设备,则停止将所述第五子任务的输出缓存队列中的输出数据向所述第四子任务的输入缓存队列转移,如果所述第四子任务前一步的第五子任务的输入数据存储于第三设备,则向所述第三设备发送停止传输通知,其中,所述停止传输通知用于指示所述第三设备停止将所述第五子任务的输出缓存队列中的输出数据向所述第一设备传输;当所述目标任务的第四子任务的输入缓存队列中缓存的输入数据的数目小于预设的第二数目阈值时,如果所述第四子任务前一步的第五子任务的输入数据存储于第一设备,则重新开始将所述第五子任务的输出缓存队列中的输出数据向所述第四子任务的输入缓存队列转移,如果所述第四子任务前一步的第五子任务的输入数据存储于第三设备,则向所述第三设备发送启动传输通知,其中,所述启动传输通知用于指示所述第三设备重新开始将所述第五子任务的输出缓存队列中的输出数据向所述第一设备传输。
5.根据权利要求4所述的装置,其特征在于,所述装置还包括控制模块,被配置为:
当所述目标任务的第三子任务的输出缓存队列中缓存的输出数据的数目达到预设的第一数目阈值时,停止执行所述第三子任务的处理;
当所述目标任务的第三子任务的输出缓存队列中缓存的输出数据的数目小于预设的第一数目阈值时,重新开始执行所述第三子任务的处理。
6.根据权利要求4所述的装置,其特征在于,所述装置还包括第二发送子模块,被配置为:
对于所述目标任务的第六子任务,在所述初始子任务开始执行时,启动预设时长的计时器;
如果在所述计时器的计时时长达到预设时长之前,所述第六子任务的输出缓存队列中输出数据的数据量达到预设的数据量阈值,则如果所述第六子任务的下一步的第七子任务的输入数据所存储的第四设备与所述第六子任务的输出数据所存储的第五设备相同,则将所述输出数据移动至所述第七子任务的输入缓存队列,如果所述第六子任务的下一步的第七子任务的输入数据所存储的第四设备与所述第六子任务的输出数据所存储的第五设备不同,则向所述第五设备发送携带有所述第六子任务的输出缓存队列中输出数据和所述第七子任务的标识的任务继续执行通知;
如果在所述计时器的计时时长达到预设时长时,所述第六子任务的输出缓存队列中输出数据的数据量未达到预设的数据量阈值,则如果所述第六子任务的下一步的第七子任务的输入数据所存储的第四设备与所述第六子任务的输出数据所存储的第五设备相同,则将所述输出数据移动至所述第七子任务的输入缓存队列,如果所述第六子任务的下一步的第七子任务的输入数据所存储的第四设备与所述第六子任务的输出数据所存储的第五设备不同,则向所述第五设备发送携带有所述第六子任务的输出缓存队列中输出数据和所述第七子任务的标识的任务继续执行通知。
7.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求1至权利要求3任一项所述的分布式图计算的方法所执行的操作。
8.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1至权利要求3任一项所述的分布式图计算的方法所执行的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010219704.3A CN113448692B (zh) | 2020-03-25 | 2020-03-25 | 分布式图计算的方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010219704.3A CN113448692B (zh) | 2020-03-25 | 2020-03-25 | 分布式图计算的方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113448692A CN113448692A (zh) | 2021-09-28 |
CN113448692B true CN113448692B (zh) | 2024-06-14 |
Family
ID=77806827
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010219704.3A Active CN113448692B (zh) | 2020-03-25 | 2020-03-25 | 分布式图计算的方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113448692B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114510339B (zh) * | 2022-04-20 | 2022-07-29 | 苏州浪潮智能科技有限公司 | 一种计算任务调度方法、装置、电子设备及可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101661386A (zh) * | 2009-09-24 | 2010-03-03 | 成都市华为赛门铁克科技有限公司 | 多硬件线程处理器及其业务处理方法 |
CN109711802A (zh) * | 2018-12-14 | 2019-05-03 | 深圳壹账通智能科技有限公司 | 项目信息处理方法、装置、计算机设备和存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102763086A (zh) * | 2012-01-18 | 2012-10-31 | 华为技术有限公司 | 分布式计算任务处理***和任务处理方法 |
CN103885856B (zh) * | 2014-03-10 | 2017-01-25 | 北京大学 | 一种基于消息再生机制的图计算容错方法及*** |
WO2016191760A1 (en) * | 2015-05-28 | 2016-12-01 | GraphSQL, Inc. | System and method for real-time graph-based recommendations |
US9960973B1 (en) * | 2015-12-22 | 2018-05-01 | EMC IP Holding Company LLC | Multi-tier storage system having a front-end storage tier facilitating efficient graph analytics computations |
CN110362387B (zh) * | 2018-04-11 | 2023-07-25 | 阿里巴巴集团控股有限公司 | 分布式任务的处理方法、装置、***和存储介质 |
CN110543359A (zh) * | 2019-07-03 | 2019-12-06 | 威富通科技有限公司 | 一种任务队列运行装置 |
-
2020
- 2020-03-25 CN CN202010219704.3A patent/CN113448692B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101661386A (zh) * | 2009-09-24 | 2010-03-03 | 成都市华为赛门铁克科技有限公司 | 多硬件线程处理器及其业务处理方法 |
CN109711802A (zh) * | 2018-12-14 | 2019-05-03 | 深圳壹账通智能科技有限公司 | 项目信息处理方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113448692A (zh) | 2021-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108304265B (zh) | 内存管理方法、装置及存储介质 | |
CN108762881B (zh) | 界面绘制方法、装置、终端及存储介质 | |
WO2020001564A1 (zh) | 一种处理任务的方法、装置及*** | |
CN111177137B (zh) | 数据去重的方法、装置、设备及存储介质 | |
CN110119305B (zh) | 任务执行方法、装置、计算机设备及存储介质 | |
CN110673944B (zh) | 执行任务的方法和装置 | |
CN109861966B (zh) | 处理状态事件的方法、装置、终端及存储介质 | |
WO2019071600A1 (zh) | 一种图像处理方法及装置 | |
CN113536063A (zh) | 信息处理方法、装置、设备及存储介质 | |
CN108401194B (zh) | 时间戳确定方法、装置和计算机可读存储介质 | |
CN112612539B (zh) | 数据模型卸载方法、装置、电子设备及存储介质 | |
CN113448692B (zh) | 分布式图计算的方法、装置、设备及存储介质 | |
CN111914985B (zh) | 深度学习网络模型的配置方法、装置及存储介质 | |
CN112118353A (zh) | 信息显示方法、装置、终端及计算机可读存储介质 | |
CN116700826A (zh) | 微件启动方法、装置、设备及计算机可读存储介质 | |
CN111275607A (zh) | 界面显示方法、装置、计算机设备及存储介质 | |
CN111708581B (zh) | 应用启动方法、装置、设备及计算机存储介质 | |
CN116842047A (zh) | 缓存更新方法、装置、设备及计算机可读存储介质 | |
CN110336881B (zh) | 执行业务处理请求的方法和装置 | |
CN108310767B (zh) | 信息展示方法、装置、设备及计算机可读存储介质 | |
WO2019128430A1 (zh) | 带宽确定方法、装置、设备及存储介质 | |
CN115037702B (zh) | 报文分发、数据发送方法及设备 | |
CN111381979B (zh) | 神经网络的开发验证方法、装置、***及存储介质 | |
CN112817768B (zh) | 动画处理方法、装置、设备及计算机可读存储介质 | |
CN113590877B (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 |