CN112395282A - 一种图重构方法及装置 - Google Patents
一种图重构方法及装置 Download PDFInfo
- Publication number
- CN112395282A CN112395282A CN201910745534.XA CN201910745534A CN112395282A CN 112395282 A CN112395282 A CN 112395282A CN 201910745534 A CN201910745534 A CN 201910745534A CN 112395282 A CN112395282 A CN 112395282A
- Authority
- CN
- China
- Prior art keywords
- vertex
- graph
- machine
- subgraph
- vertices
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 97
- 235000008694 Humulus lupulus Nutrition 0.000 claims abstract description 6
- 238000000354 decomposition reaction Methods 0.000 claims description 48
- 238000004364 calculation method Methods 0.000 claims description 44
- 230000004927 fusion Effects 0.000 claims description 27
- 230000015654 memory Effects 0.000 claims description 21
- 238000003860 storage Methods 0.000 claims description 13
- 230000005540 biological transmission Effects 0.000 claims description 10
- 238000002156 mixing Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 4
- 239000000203 mixture Substances 0.000 claims description 4
- 238000004891 communication Methods 0.000 abstract description 33
- 238000004422 calculation algorithm Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 22
- 238000010586 diagram Methods 0.000 description 21
- 238000000547 structure data Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 20
- 238000012545 processing Methods 0.000 description 17
- 238000005516 engineering process Methods 0.000 description 16
- 238000004088 simulation Methods 0.000 description 12
- 238000005520 cutting process Methods 0.000 description 9
- 238000004458 analytical method Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- 238000007781 pre-processing Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 235000019800 disodium phosphate Nutrition 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 102000004169 proteins and genes Human genes 0.000 description 2
- 108090000623 proteins and genes Proteins 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000001550 time effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000009966 trimming Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Image Generation (AREA)
Abstract
本申请公开了一种图重构方法及装置,涉及通信技术领域,实现负载均衡、通信代价低以及执行时间短的图并行计算。所述方法包括:第一机器从子图的本地顶点集合中选取第一顶点;若第一顶点的度数小于或等于第一预设门限,第一机器将第一顶点以及本地顶点集合中第一顶点的预设跳数内的相邻顶点融合为超顶点;若第一顶点的度数大于或等于第二预设门限,第一机器将第一顶点复制得到N个子顶点,将第一机器的子图中第一顶点的边分为N份分别与N个子顶点连接。
Description
技术领域
本申请实施例涉及通信技术领域,尤其涉及一种图重构方法及装置。
背景技术
事物与事物之间彼此交互产生的数据,称之为图结构数据。图结构数据由顶点(也可称为节点)和边构成,不同的事物为不同的顶点,两个顶点之间的连接称为边。顶点连接到其他顶点的边数称为顶点的度数。图计算是基于图结构数据,研究分析客观世界里任何事物与事物之间的关系的过程。
近年来,随着互联网的高速发展,全球迈入大数据时代。随之也产生了海量的图结构数据。随着顶点越来越多,图的规模也越来越大,图计算往往无法只通过一台计算机(也可称为机器)计算,图并行计算系统通过多台计算机之间协调通信,共同进行图计算,以降低每个计算机的计算负载。在图并行计算系统中,图分解(Graph Partitioning)技术对于达到均衡计算负载同时降低通信代价非常重要。
目前的图分解技术有切边分点(Edge-Cut)、切点分边(Vertex-Cut)以及混合切分法。切边分点是以顶点为中心,把顶点平均分到每个机器。该图分解技术虽然降低了机器之间的协调通信代价,但却难以保证均衡的负载分配。由于图计算算法执行时间依赖于最后完成计算的机器,该图分解技术增加了图计算算法执行时间。切点分边把图中的边均衡分配到每个机器,保证每台机器的计算负载相近。该图分解技术虽然保证均衡的负载分配,但由于缺乏全局信息,使原本能单机处理的度低顶点强制被拆分复制到多台机器上,增加了机器与机器之间的协调通信,通信代价增加了图计算算法执行时间。混合切分法对度高的顶点采取切点分边(Vertex-Cut)原则,对度低的顶点采取切边分点(Edge-Cut)原则。以实现每台机器能分得均衡的负载,同时机器之间的通信代价也减少了。但要实现对不同顶点采取不同的分区函数,需要更大的协调开销,每个机器需要读取更多图信息,因此该图分解技术在提升图计算算法执行时间效果有限。
因此,图并行计算系统中兼顾负载均衡及降低机器之间的通信代价的前提下,如何缩短图计算算法的执行时间,成为亟待解决的问题。
发明内容
本申请提供一种图重构方法及装置,实现负载均衡、通信代价低以及执行时间短的图并行计算。
第一方面,本申请实施例提供一种图重构方法,该方法可以包括:第一机器从子图的本地顶点集合中选取第一顶点;其中,本地顶点集合包括第一机器的子图中未经过重构的所有顶点;第一顶点为本地顶点集合中任一个顶点;若第一顶点的度数小于或等于第一预设门限,第一机器将第一顶点以及本地顶点集合中第一顶点的预设跳数内的相邻顶点融合为超顶点;若第一顶点的度数大于或等于第二预设门限,第一机器将第一顶点复制得到N个子顶点,将第一机器的子图中第一顶点的边分为N份分别与N个子顶点连接;其中,N小于或等于第一机器所属的图计算系统中包含的机器总数量。
通过本申请提供的图重构方法,根据机器的子图中顶点的度数,将度低顶点融合,将度高顶点拆分,在保留图结构数据的原拓扑结构的前提下,保证重构后的图度数相当,这样一来,图并行计算时对重构后的图进行图分解,分配到每个机器的计算负荷在达到负载均衡的同时,由于保留了原拓扑结果因此不同机器间无需过多的通信,这样就可以缩短后续的图计算的执行时间。
其中,未经过重构的所有顶点,是指图计算系统中所有机器(包括但不限于第一机器)未进行融合或拆分的顶点。
需要说明的是,第一机器可以采用本申请提供的图重构方法,遍历其子图中所有顶点,完成第一机器的子图的重构。第一机器可以为图计算系统中任一个机器,本申请对此不进行具体限定。
结合第一方面,在一种可能的实现方式中,若第一机器将第一顶点以及本地顶点集合中第一顶点的预设跳数内的相邻顶点融合为超顶点,本申请提供的图重构方法还可以包括:第一机器向图计算系统中包括第一顶点的每个机器,分别发送融合指示,用于标记第一机器对第一顶点进行了融合操作,以避免其他机器对第一顶点的融合操作,有效避免冲突。
结合第一方面或上述任一种可能的实现方式中,在一种可能的实现方式中,若第一机器将第一顶点以及本地顶点集合中第一顶点的预设跳数内的相邻顶点融合为超顶点,本申请提供的图重构方法还可以包括:第一机器向图计算系统中包括超顶点中的顶点的每个机器,分别发送融合指示,用于标记第一机器对超顶点中的顶点进行了融合操作,有效避免冲突。
结合第一方面或上述任一种可能的实现方式,在另一种可能的实现方式中,若第一机器将第一顶点复制得到N个子顶点,将子图中第一顶点的边分为N份分别与N个子顶点连接,本申请提供的图重构方法还可以包括:第一机器向图计算系统中包括第一顶点的每个机器,分别发送拆分指示,用于标记第一机器对第一顶点进行了拆分操作,以避免其他机器对第一顶点的融合操作,有效避免冲突。
结合第一方面或上述任一种可能的实现方式,在另一种可能的实现方式中,若第一顶点的度数大于或等于第二预设门限,本申请提供的图重构方法还可以包括:第一机器向图计算系统中其他机器,分别发送拆分指示,用于标记第一机器对第一顶点进行了拆分操作,以通知图计算系统中其他机器参与第一顶点的计算。
结合第一方面或上述任一种可能的实现方式,在另一种可能的实现方式中,第一预设门限可以小于第二预设门限。以实现子图中度数居中的顶点可以不参与重构,提高重构效率。
结合第一方面或上述任一种可能的实现方式,在另一种可能的实现方式中,第一预设门限可以等于第二预设门限,以实现子图中所有顶点都参与重构,增加重构的效果。
结合第一方面或上述任一种可能的实现方式,在另一种可能的实现方式中,本申请提供的图重构方法还可以包括:第一机器对重构后的子图进行图分解;第一机器对分配给第一机器的计算负荷进行图计算,以完成图并行计算。本申请对于图分解以及图计算的方法不进行具体限定。
结合第一方面或上述任一种可能的实现方式,在另一种可能的实现方式中,第一机器对重构后的子图进行图分解,具体可以实现为:第一机器将重构的超顶点及其超顶点的边,分配给图计算系统中负荷最低的机器作为计算负荷。或者,第一机器将一个子顶点及其边分配给第一机器作为计算负荷,第一机器将该子顶点之外的其他N-1个子顶点及其边,分别分配给图计算系统中第一机器之外的N-1个机器作为计算负荷。实现了边重构边分解,提高了图计算的效率,有效缩短了图计算的执行时间。
结合第一方面或上述任一种可能的实现方式,在另一种可能的实现方式中,第一机器对重构后的子图进行图分解,具体可以实现为:第一机器将重构后的子图,执行切边分点或者切点分边或者混合切分。
结合第一方面或上述任一种可能的实现方式,在另一种可能的实现方式中,第一机器对分配给第一机器的计算负荷进行图计算,包括:第一机器对分配给第一机器的计算负荷,执行基于差值传输的图计算,提高计算效率,缩短执行时间。
结合第一方面或上述任一种可能的实现方式,在另一种可能的实现方式中,将子图中第一顶点的边分为N份,具体可以实现为:若子图中第一顶点的边为N的整数倍,将第一顶点的边等分为N份;若子图中第一顶点的边为N的非整数倍,将第一顶点的边分为N份,每份的边数为整数且两两差值最小,以实现尽量等分的目的。
第二方面,本申请实施例提供一种图重构装置,该装置可以包括选取单元、融合单元以及拆分单元。其中,选取单元用于从子图的本地顶点集合中选取第一顶点;其中,本地顶点集合包括该子图中未经过重构的所有顶点;第一顶点为本地顶点集合中任一个顶点;融合单元用于若第一顶点的度数小于或等于第一预设门限,将第一顶点以及本地顶点集合中第一顶点的预设跳数内的相邻顶点融合为超顶点;拆分单元用于若第一顶点的度数大于或等于第二预设门限,将第一顶点复制得到N个子顶点,将子图中第一顶点的边分为N份分别与N个子顶点连接;其中,N小于或等于所述装置所属的图计算系统中包含的机器总数量。
通过本申请提供的图重构装置,根据机器的子图中顶点的度数,将度低顶点融合,将度高顶点拆分,在保留图结构数据的原拓扑结构的前提下,保证重构后的图度数相当,这样一来,图并行计算时对重构后的图进行图分解,分配到每个机器的计算负荷在达到负载均衡的同时,由于保留了原拓扑结果因此不同机器间无需过多的通信,这样就可以缩短后续的图计算的执行时间。
需要说明的是,本申请第二方面提供的图重构装置,用于实现上述第一方面以及第一方面中任一种可能的实现方式提供的图重构方法,因此,本申请第二方面提供的图重构装置的具体实现,可以参照上述第一方面以及第一方面中任一种可能的实现方式提供的图重构方法的具体实现,此处不再进行赘述。
第三方面,本申请实施例提供了一种图重构装置,该图重构装置可以实现上述方法示例中的第一机器的功能,所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个上述功能相应的模块。该图重构装置可以以芯片的产品形态存在。
结合第三方面,在一种可能的实现方式中,该图重构装置的结构中包括处理器和收发器,该处理器被配置为支持该图重构装置执行上述方法中相应的功能。该收发器用于支持该图重构装置与其他设备之间的通信。该图重构装置还可以包括存储器,该存储器用于与处理器耦合,其保存该图重构装置必要的程序指令和数据。
第四方面,本申请实施例提供一种机器,该机器包括执行上述第一方面或第一方面的任一种可能的实现方式提供的图重构方法的图重构装置。
第五方面,本申请实施例提供一种图计算系统,包括两个或两个以上第四方面提供的机器。
第六方面,本申请实施例提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述任一方面或任一种可能的实现方式提供的图重构方法。
第七方面,本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一方面或任一种可能的实现方式提供的图重构方法。
其中,需要说明的是,上述各个方面中的任意一个方面的各种可能的实现方式,在方案不矛盾的前提下,均可以进行组合。
附图说明
图1为一种图计算框架的结构示意图;
图2为一种基于切边分点的图分解的场景示意图;
图3为一种基于切点分边的图分解的场景示意图;
图4为一种混合切分的图分解的场景示意图;
图5为一种图计算系统的结构示意图;
图6为本申请实施例提供的一种图重构装置的结构示意图;
图7为本申请实施例提供的另一种图重构装置的结构示意图;
图7a为本申请实施例提供的拓扑重构场景示意图;
图8为本申请实施例提供的一种图重构方法的流程示意图;
图9为一种图结构数据的示意图;
图10为本申请实施例提供的另一种图重构方法的流程示意图;
图11为本申请实施例提供的一种应用场景示意图;
图12a为本申请实施例提供的标准化执行时间的仿真结果示意图;
图12b为本申请实施例提供的复制因子的仿真结果示意图;
图12c为本申请实施例提供的平均网络输入输出容量的仿真示意图;
图13为本申请实施例提供的图分解计算花销比较效果示意图;
图14为本申请实施例提供的图计算执行时间对比效果示意图;
图15为本申请实施例提供的另一种图重构装置的结构示意图;
图16为本申请实施例提供的另一种图重构装置的结构示意图。
具体实施方式
本申请说明书和权利要求书及上述附图中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于限定特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
为了下述各实施例的描述清楚简洁,此处先对本文涉及的名词及相关技术做简要介绍。
图,是一种数据结构,也成为图结构数据,是描述事物与事物之间彼此交互产生的数据。图结构数据由顶点和边构成。其中,不同的事物为不同的顶点,两两事物发生交互产生对应的边。一个典型的图结构数据来自于社交网络,社交网络中的每个个体都是一个顶点,个体与个体之间发生的联系,则形成了边。图结构数据的应用场景还可以包括但不限于:社区发现、购物推荐、异常分析、网页排名、蛋白质分子分子等。
顶点(Vertex),也可以称为节点,是图结构数据中的事物。
度数,是顶点的属性,指连接到顶点的边数。
图计算,是对图结构数据进行分析研究,以获取客观世界里任何事物与事物之间的关系的算法。图计算的处理对象即为图结构数据。例如,在社交网络中,图计算的目的是定义个体与个体之间的关系密切程度,或者判断个体中群体的概念。图计算的应用场景可以包括但不限于:社交媒体(社区发现)、广告推荐(购物推荐)、知识图谱(异常分析)、互联网(网页排名)、计算生物(蛋白质分子分析)等。
机器,也称为计算机,或者计算机器,是图计算系统中用于执行图计算的设备。
图1展示了一个基本的图计算框架。如图1所示,输入图结构数据,经过图计算处理(机器学习数据挖掘或深度学习算法),输出顶点与顶点之间关系结果,用于后面的具体应用。
随着图结构数据中的顶点越来越多,图的规模也越来越大,图并行计算系统通过多台计算机之间协调通信完成图计算。图并行计算系统中在进行图计算之前,需先进行图分解,此处先对图分解的技术进行简单描述。
一种图分解技术,是在处理图分解时基于切边分点(Edge-Cut)原则,以顶点为中心,把顶点平均分到每个机器。图2示意了一种基于切边分点的图分解的场景。如图2所示,若采用切边分点的图分解,则顶点A及其相连的邻近信息被划分到同一个机器,顶点B及其相连的邻近信息被划分到同一个机器。由于分区函数的一致性,该技术的好处是降低了机器之间的协调通信代价。但是,该技术难以保证均衡的负载分配,从图2可见,当顶点邻近信息不平衡时,分到度低顶点(顶点A)的机器计算负载更低。分到度高顶点(顶点B)的机器计算复杂度更高。而图计算算法执行时间依赖于最后完成计算的机器,因此增加了图计算算法执行时间。
另一种图分解技术,是在处理图分解时基于切点分边(Vertex-Cut)原则,以均衡分边为主。通过把图中的边均衡分配到每台计算机器,保证每台机器的计算负载相近,该技术的好处是保证均衡的负载分配。图3示意了一种基于切点分边的图分解的场景。如图3所示,将顶点A、顶点B的边均衡分配,顶点A和顶点B被复制到多台机器上。该技术进行图分解后,尽管分解后的子图较为均衡,但增加了机器与机器之间的协调通信。由于缺乏全局信息,使原本能单机处理的度低顶点(顶点A)强制被拆分复制到多台机器上,机器之间协调更新图计算的信息,通信代价增加了图计算算法执行时间。
再一种图分解技术,是结合了前两种图分解技术各自的优点,在处理图分解时,度高的顶点采取切点分边(Vertex-Cut)原则,度低的顶点采取切边分点(Edge-Cut)原则。图4示意了一种混合切分的图分解的场景。如图4所示,顶点A和顶点C采用切点分边,顶点B采用切边分点。采用该技术,每台机器能分得均衡的负载,同时机器之间的通信代价也减少了。但该技术要实现对不同顶点采取不同的分区函数,需要更大的协调开销,在提升图计算算法执行时间效果有限。
本申请提供的图重构方法,可以应用于图5示意的图计算系统中。如图5所示,图计算系统包括图数据库,多个机器。每个机器从图数据库中读取各自的子图,进行图重构、图分解以及图计算,得到目标结果。
需要说明的是,图5仅是示意了一种图计算系统的架构,在实际应用中,本申请方案应用的图计算系统的规模可以根据实际配置,本申请实施例对此不进行具体限定。
需要说明的是,本申请附图中各个网元的实际产品形态可以根据实际需求配置,附图中只是举例示意了各个网元的类型,并不是对此的具体限定。
示例性的,图5示意的图计算系统,可应用于各大云服务器中,为社交关系分析、推荐、精准营销、舆情及社会化聆听、信息传播、防欺诈等具有丰富关系数据的场景提供图引擎服务。除此之外,图5示意的图计算系统还可部署在第五代移动通信(5th-Generation,5G)网络边缘计算设备中,服务需要图计算的5G业务场景。例如,图5示意的图计算系统可以简称为基于拓扑重构的高效图分解处理系统(topology refactorization,TopoX)。
下面结合附图,对本申请的实施例进行具体阐述。
一方面,本申请实施例提供一种图重构装置,用于执行本申请提供的图重构方法,该图重构装置可以部署于图5所示的图计算系统中的机器上。图6示出的是与本申请各实施例相关的一种图重构装置60。如图6所示,图重构装置60可以包括处理器601、存储器602以及收发器603。
下面结合图6对图重构装置60的各个构成部件进行具体的介绍:
其中,存储器602可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);或者非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);或者上述种类的存储器的组合,用于存储可实现本申请方法的应用程序、程序代码、配置文件或其他内容。
处理器601是图重构装置60的控制中心,可以是一个中央处理器(centralprocessing unit,CPU),也可以是特定集成电路(application specific integratedcircuit,ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路,例如:一个或多个微处理器(digital signal processor,DSP),或,一个或者多个现场可编程门阵列(field programmable gate array,FPGA)。
收发器603用于与其他设备之间通信以及数据传输。
具体的,处理器601通过运行或执行存储在存储器602内的软件程序和/或模块,以及调用存储在存储器602内的数据,执行如下功能:
从子图的本地顶点集合中选取第一顶点;其中,本地顶点集合包括第一机器的子图中未经过重构的所有顶点;第一顶点为本地顶点集合中任一个顶点;若第一顶点的度数小于或等于第一预设门限,将第一顶点以及本地顶点集合中第一顶点的预设跳数内的相邻顶点融合为超顶点;若第一顶点的度数大于或等于第二预设门限,第一机器将第一顶点复制得到N个子顶点,将子图中第一顶点的边分为N份分别与N个子顶点连接;其中,N小于或等于图重构装置60所属的图计算系统中包含的机器总数量。
一种可能的实现中,如图7所示,图重构装置60可以由预处理模块701、拓扑重构模块702、图分解模块703和图计算模块704。
具体的,当部署了图重构装置60的机器要处理大规模图计算时,图计算系统中的机器会并行读取大图中的不同子图到本地存储。预处理模块701进行初步的预处理操作得到本地拓扑信息,例如统计顶点的度,区分顶点等。
例如,机器可以按照预设规则读取大图的局部内容,得到各自的子图。该预设规则可以为从任一顶点开始向各个方向读取某一跳数,或者,该预设规则可以为大图中预先配置了不同机器的子图等。机器从大图中读取子图的具体方案,本申请实施例不进行具体限定。
拓扑重构模块702根据预处理模块701获取的信息,对所读取的子图进行拓扑重构,执行融合与拆分操作,并与相关机器交换信令避免潜在冲突。如图7a所示,拓扑重构模块702将部分度低的点(如S2)融合成超顶点(Super-vertex),将度高的点(如T1)拆分成子顶点(Sub-vertex)。
图分解模块703,对拓扑重构后的图进行图分解。图分解模块703支持现有的图分解方法,如切边分点,切点分边或混合切分。图分解模块703还可以采用更高效的图分解算法,例如Hybrid-BL算法。其中,Hybrid-BL算法基于混合切分的原则,根据本地机器负载信息直接分配超顶点和子顶点给对应机器,避免了全局协调开销。
图计算模块704,可以按照标准的收集应用分散(Gather-Apply-Scatter,GAS)模型对分布到各机器的计算负荷执行图计算。或者,图计算模块704可以针对满足阿贝尔群条件(Abelian group)的图,按照基于差值传输的基于差值传输的收集应用分散模型(Delta-based Gather-Apply-Scatter model,D-GAS)执行图计算。基于差值传输的D-GAS模型,只对发生状态更新的机器(如Machine1)进行差值传输,因此极大提高了通信效率。
需要说明的是,图7示意的图重构装置60的架构只是一种示例,并不是具体限定。
再一方面,本申请实施例提供一种图重构方法,该方法可以由图6或图7所示的图重构装置执行。图计算系统的中的每个机器执行图重构的方法内容相同,本申请实施例仅以第一机器执行图重构的过程为例进行描述,其他不再一一赘述。其中,第一机器为图计算系统的中任一机器。当部署了图重构装置的机器要处理大规模图计算时,图计算系统中的机器会并行读取大图中的不同子图到本地存储,并进行预处理得到子图的本地拓扑信息,之后执行本申请提供的图重构方法。如图8所示,本申请提供的图重构方法可以包括:
S801、第一机器从子图的本地顶点集合中选取第一顶点。
其中,本地顶点集合包括第一机器的子图中未经过重构的所有顶点。第一顶点为本地顶点集合中任一个顶点。
具体的,未经过重构的顶点,是指未进行融合也未进行拆分的顶点。进一步的,未经过重构的顶点,是指未经过第一机器或者其他机器融合或拆分的顶点。
可选的,在S801中,第一机器可以随机的任意选择第一顶点。或者,第一机器可以按照预设顺序从子图中选择第一顶点。当然,在S801中,第一机器也可以按照其他方案选择第一顶点,本申请实施例对此并不进行限定。
进一步的,S801中第一机器选取第一顶点后,根据本地拓扑信息中第一顶点的度数,选择对第一顶点执行的操作。具体的,若第一顶点的度数小于或等于第一预设门限,执行S802;若第一顶点的度数大于或等于第二预设门限,执行S803。
其中,第一预设门限可以小于或等于第二预设门限,对于第一预设门限与第二预设门限的具体取值,可以根据实际需求配置,本申请实施例对此不进行具体限定。
一种可能的实现中,当第一预设门限小于第二预设门限,若第一顶点的度数大于第一预设门限且小于第二预设门限,则对第一顶点的拓扑保持不变,并记录为已重构,从本地顶点集合中移除。
具体的,本地拓扑信息用于描述子图中顶点的度数。具体的,本地拓扑信息中可以直接为子图中每个顶点的度数。或者,本地拓扑信息中可以包括子图中每个顶点的进边表和出边表,以指示顶点的边数。当然,本申请实施例对于本地拓扑信息的具体内容不进行具体限定,可以根据实际需求配置。
其中,顶点的进边表是指子图中,与该顶点之间的边的方向指向该顶点的顶点集合。顶点的出边表是指子图中,与该顶点之间的边的方向指向对端的顶点集合。需要说明的是,对于无方向的图结构数据,可以根据实际需求配置边的方向,本申请实施例对此不进行限定。
示例性的,如图9所示的图结构数据,虚线框出来的是不同机器的子图。如图9所示,最左侧子图中顶点S1的进边表为{S1:B,C},出边表为{S1:A};中间子图中顶点A的进边表为{A:S1,S2},出边表为{A:T2};最右侧子图中顶点T1的进边表为{T1:A},出边表为{T1:M1,M2,M3}。
S802、第一机器将第一顶点以及本地顶点集合中第一顶点的预设跳数内的相邻顶点融合为超顶点。
其中,融合为超顶点,是指将要融合的顶点及其边作为一个整体,将这个整体看作一个顶点。
具体的,第一机器可以配置融合队列,用于存储计划进行融合的候选顶点。例如,在S802中,第一顶点以及本地顶点集合中第一顶点的预设跳数内的相邻顶点就可以加入融合队列中待融合。
其中,预设跳数的取值可以根据实际需求配置,本申请实施例对此不进行具体限定。
一种可能的实现中,在S802中,第一机器可以将第一顶点及其直连的相邻顶点加入融合队列,之后判断融合队列中第一顶点之外的每个顶点到达第一顶点的维度(即跳数)的最大值小于预设跳数,第一顶点再查找将下一跳的相邻顶点加入融合队列,直至融合队列中第一顶点之外的每个顶点到达第一顶点的维度(即跳数)的最大值等于预设跳数,或者融合队列中第一顶点之外的顶点中距离第一顶点最远的顶点是该子图的边界顶点。
需要说明的是,在执行S802时,若第一机器的子图中第一顶点到该子图的边界顶点之间的跳数小于预设跳数,则S802中第一机器将第一顶点以及本地顶点集合中第一顶点到子图的边界顶点间的顶点(包括边界顶点)融合为超顶点。
进一步的,在执行S802之后,第一机器的本地顶点集合中就不包含S802中融合的顶点。
进一步的,如图10所示,若第一机器执行了S802,本申请实施例提供的图重构方法还可以包括S802a或者S802b。
S802a、第一机器向图计算系统中包括第一顶点的每个机器,分别发送融合指示。
其中,融合指示可以包括第一顶点的标识,融合指示用于标记第一机器对第一顶点进行了融合操作。
S802b、第一机器向图计算系统中包括超顶点中的顶点的每个机器,分别发送融合指示。
其中,融合指示包括目标机器中包括的超顶点中的顶点标识,用于标记第一机器对超顶点中的顶点进行了融合操作。
示例性的,第一机器与其他机器可以采用传输控协议(transmission controlprotocol,TCP)进行传输通信。当然,第一机器与其他机器也可以采用其他协议通信,本申请对此不进行具体限定。
需要说明的是,S802a、S802b和S802的执行顺序不进行限定,图10中仅为示例。
S803、第一机器将第一顶点复制得到N个子顶点,将子图中第一顶点的边分为N份分别与N个子顶点连接。
其中,N小于或等于第一机器所属的图计算系统中包含的机器总数量。
具体的,在S803中,将子图中第一顶点的边分为N份,具体可以实现为:若子图中第一顶点的边为N的整数倍,将第一顶点的边等分为N份;若子图中第一顶点的边为N的非整数倍,将第一顶点的边分为N份,每份的边数为整数且两两差值最小。
示例性的,假设子图中第一顶点的边的数量为8,N为4,则S803中将第一顶点的边等分为4份,每份2个边。
示例性的,假设子图中第一顶点的边的数量为13,N为4,则S803中将第一顶点的边分为4份,每份分别为3、3、3、4个边。
进一步的,在执行S803之后,第一机器的本地顶点集合中就不包含第一顶点。
进一步的,如图10所示,若第一机器执行了S803,本申请实施例提供的图重构方法还可以包括S803a。
S803a、第一机器向图计算系统中第一机器之外的N-1个机器,分别发送拆分指示。
其中,拆分指示可以包括第一顶点的标识,拆分指示用于标记第一机器对第一顶点进行了拆分操作。
需要说明的是,S803a和S803的执行顺序不进行限定,图10中仅为示例。
通过本申请提供的图重构方法,根据机器的子图中顶点的度数,将度低顶点融合,将度高顶点拆分,在保留图结构数据的原拓扑结构的前提下,保证重构后的图度数相当,这样一来,图并行计算时对重构后的图进行图分解,分配到每个机器的计算负荷在达到负载均衡的同时,由于保留了原拓扑结果因此不同机器间无需过多的通信,这样就可以缩短后续的图计算的执行时间。
进一步的,如图10所示,本申请实施例提供的图重构方法还可以包括S804和S805。
S804、第一机器对重构后的子图进行图分解。
具体的,在S804中支持现有的图分解方法,如切边分点,切点分边或混合切分。S804中还可以采用更高效的图分解算法,例如布鲁格混合切分法(Hybrid-bregel,Hybrid-BL)算法。其中,Hybrid-BL算法基于混合切分的原则,根据本地机器负载信息直接分配超顶点和子顶点给对应机器,避免了全局协调开销。
例如,Hybrid-BL算法的具体内容可以包括:第一机器将超顶点及其超顶点的边,分配给图计算系统中负荷最低的机器作为计算负荷。或者,第一机器将一个子顶点及其边分配给第一机器作为计算负荷,第一机器将一个子顶点之外的其他N-1个子顶点及其边,分别分配给图计算系统中第一机器之外的N-1个机器作为计算负荷。
S805、第一机器对分配给第一机器的计算负荷进行图计算。
其中,S805中第一机器可以按照标准的GAS模型对分布到各机器的计算负荷执行图计算。或者,S805中第一机器可以针对满足阿贝尔群条件(Abelian group)的图,按照基于差值传输的D-GAS模型执行图计算。
下面通过具体示例,对本申请提供的图重构方法进行举例说明。
如图11所示的应用场景示意,图计算系统中包括3台机器,分别记录为机器1、机器2以及机器3,其各自的子图、本地拓扑信息如图11中的本地拓扑信息1所示。
机器1执行本申请的图重构方法,将顶点B加入融合队列作为待融合节点;机器2执行本申请的图重构方法,将顶点A和顶点S1加入融合队列作为待融合节点,并向机器1发送融合指示,避免机器1融合顶点S1;机器3执行本申请的图重构方法,对顶点T1执行拆分操作拆分为t1、t2、t3,分别与M1、M2、M3连接,并向机器1、机器2分别发送拆分指示,之后,机器1、机器2以及机器3的本地拓扑信息如图11中的本地拓扑信息2所示,机器1、机器2以及机器3的子图进行了重构。
需要说明的是,上述示例只是对图结构数据中一部分图进行图重构的过程进行示例说明,实际应用中,图结构数据规模庞大,循环执行本申请的图重构方法即可完成重构,本申请实施例对于重构过程不进行赘述。
本申请的方案极大避免了图分解操作带来的不均衡负载和过高通信代价,减少了处理图计算的执行时间,在仿真测试中最多能降低高达78.5%的执行时间。对本申请的方案通过云计算仿真平台进行了仿真实验,采用的数据集信息如下表1所示。
表1
表1中不同的数据集在两个不同的集群中进行仿真,两个集群介绍如下:
EC2集群:包含48台机器,每台机器的CPU是8Xeon E5-2676 v3 vCPUs,内存16吉字节(Gigabyte,GB),固态硬盘256GB,该集群仿真的数据集为数据集1和数据集2。
本地集群:包含9台机器,每台机器的CPU是6-core E5-2640,内存32GB,网盘是1吉比特每秒(GB per second,Gbps)网络接口控制器(network interface controller,NIC)。该集群仿真的数据集为数据集3,数据集4,数据集5,数据集6和数据集7。
下面从整体性能,图分解花销(本申请的图分解花销包括拓扑重构花销),图计算性能三方面进行评估。仿真的对比目标是通过运行网页排名(PageRank,PR)算法和连通分支(Connected Components,CC)算法,与现有技术PowerGraph(PG)算法,PowerLyra(PL)算法,Blogel-Hybrid(BH)算法比较。下文的仿真结果中,采用本申请的方案以及GAS模型记性图计算的过程记录为Topox,采用本申请的方案以及D-GAS模型记性图计算的过程记录为Topox(D-GAS)。
整体性能比较效果如图12a至图12c所示。其中,图12a为标准化执行时间的仿真结果示意,图12b为复制因子的仿真结果示意,图12c为平均网络输入输出容量(单位GB)的仿真结果示意。从图12a至图12c所示,本申请方案整体执行时间最少,同时所需要的复制因子最少,体现了更低的通信代价。
图分解计算花销比较效果如图13所示,本申请方案的入口时间非常接近PL技术。对比PG和BH,本申请方案和PL技术在入口时间大大降低,体现了图计算步骤时延低。
图计算执行时间对比效果如图14所示,与PL技术在GAS模型整体或各个模块上的执行时间,本申请方案所需时间更短。
上述主要从第一机器工作原理的角度对本申请实施例提供的方案进行了介绍。可以理解的是,上述第一机器为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。将第一机器中实现上述图重构方法的功能单元,称之为图重构装置。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对图重构装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图15示出了上述实施例中所涉及的第一机器中部署的图重构装置150的一种可能的结构示意图。该图重构装置150可以为第一机器本身,也可以为第一机器中的功能模块或者芯片,或者与第一机器匹配使用的装置。如图15所示,图重构装置150可以包括:选取单元1501、融合单元1502、拆分单元1503。选取单元1501用于执行图8中的过程S801;融合单元1502用于执行图8中的过程S802;拆分单元1503用于执行图8中的过程S803。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
进一步的,如图15所示,图重构装置150可以包括:发送单元1504、图分解单元1505、图计算单元1506。其中,发送单元1504用于执行图10中的过程S802a、S802b及S803a;图分解单元1505用于执行图10中的过程S804;图计算单元1506用于执行图10中的过程S805。
在采用集成的单元的情况下,图16示出了上述实施例中所涉及的第一机器中部署的图重构装置160的一种可能的结构示意图。该图重构装置160可以为第一机器本身,也可以为第一机器中的功能模块或者芯片,或者也可以为与第一机器匹配使用的装置。图重构装置160可以包括:处理模块1601、通信模块1602。处理模块1601用于对图重构装置160的动作进行控制管理。例如,处理模块1601用于执行图8中的过程S801、S802、S803以及图10中的过程S804、S805;处理模块1601还用于通过通信模块1602执行图10中的过程S802a、S802b及S803a。图重构装置160还可以包括存储模块1603,用于存储图重构装置160的程序代码和数据。
其中,处理模块1601可以为图6所示的图重构装置60的实体结构中的处理器601,可以是处理器或控制器。例如可以是CPU,通用处理器,DSP,ASIC,FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器601也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信模块1602可以为图6所示的图重构装置60的实体结构中的收发器603,通信模块1602可以是通信端口,或者可以是收发器、收发电路或通信接口等。或者,上述通信接口可以通过上述具有收发功能的元件,实现与其他设备的通信。上述具有收发功能的元件可以由天线和/或射频装置实现。存储模块1603可以是图6所示的图重构装置60的实体结构中的存储器602。
当处理模块1601为处理器,通信模块1602为收发器,存储模块1603为存储器时,本申请实施例图16所涉及的图重构装置160可以为图6所示的图重构装置60。
如前述,本申请实施例提供的图重构装置150或图重构装置160可以用于实施上述本申请各实施例实现的方法中第一机器的功能,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请各实施例。
作为本实施例的另一种形式,本申请实施例提供一种管理设备,包括意图处理装置40或者意图处理装置50。
作为本实施例的另一种形式,本申请实施例提供一种需求设备,包括意图处理装置60或者意图处理装置70。
作为本实施例的另一种形式,提供一种计算机可读存储介质,其上存储有指令,该指令被执行时执行上述方法实施例中的意图处理方法。
作为本实施例的另一种形式,提供一种包含指令的计算机程序产品,该指令被执行时执行上述方法实施例中的意图处理方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (17)
1.一种图重构方法,其特征在于,包括:
第一机器从子图的本地顶点集合中选取第一顶点;其中,所述本地顶点集合包括所述子图中未经过重构的所有顶点;所述第一顶点为所述本地顶点集合中任一个顶点;
若所述第一顶点的度数小于或等于第一预设门限,所述第一机器将所述第一顶点以及所述本地顶点集合中所述第一顶点的预设跳数内的相邻顶点融合为超顶点;
若所述第一顶点的度数大于或等于第二预设门限,所述第一机器将所述第一顶点复制得到N个子顶点,将所述子图中所述第一顶点的边分为N份分别与所述N个子顶点连接;其中,所述N小于或等于所述第一机器所属的图计算系统中包含的机器总数量。
2.根据权利要求1所述的方法,其特征在于,若所述第一机器将所述第一顶点以及所述本地顶点集合中所述第一顶点的预设跳数内的相邻顶点融合为超顶点,所述方法还包括:
所述第一机器向所述图计算系统中包括所述第一顶点的每个机器,分别发送融合指示,用于标记所述第一机器对所述第一顶点进行了融合操作。
3.根据权利要求1或2所述的方法,其特征在于,若所述第一机器将所述第一顶点复制得到N个子顶点,将所述子图中所述第一顶点的边分为N份分别与所述N个子顶点连接,所述方法还包括:
所述第一机器向所述图计算系统中所述第一机器之外的N-1个机器,分别发送拆分指示,用于标记所述第一机器对所述第一顶点进行了拆分操作。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
所述第一机器对重构后的所述子图进行图分解;
所述第一机器对分配给所述第一机器的计算负荷进行图计算。
5.根据权利要求4所述的方法,其特征在于,所述第一机器对重构后的所述子图进行图分解,包括:
所述第一机器将所述超顶点及其所述超顶点的边,分配给所述图计算系统中负荷最低的机器作为计算负荷;
或者,
所述第一机器将一个子顶点及其边分配给所述第一机器作为计算负荷,所述第一机器将所述一个子顶点之外的其他N-1个子顶点及其边,分别分配给所述图计算系统中所述第一机器之外的N-1个机器作为计算负荷。
6.根据权利要求4或5所述的方法,其特征在于,所述第一机器对分配给所述第一机器的计算负荷进行图计算,包括:
所述第一机器对分配给所述第一机器的计算负荷,执行基于差值传输的图计算。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述将所述子图中所述第一顶点的边分为N份,包括:
若所述子图中所述第一顶点的边为所述N的整数倍,将所述第一顶点的边等分为N份;
若所述子图中所述第一顶点的边为所述N的非整数倍,将所述第一顶点的边分为N份,每份的边数为整数且两两差值最小。
8.一种图重构装置,其特征在于,包括:
选取单元,用于从子图的本地顶点集合中选取第一顶点;其中,所述本地顶点集合包括所述子图中未经过重构的所有顶点;所述第一顶点为所述本地顶点集合中任一个顶点;
融合单元,用于若所述第一顶点的度数小于或等于第一预设门限,将所述第一顶点以及所述本地顶点集合中所述第一顶点的预设跳数内的相邻顶点融合为超顶点;
拆分单元,用于若所述第一顶点的度数大于或等于第二预设门限,将所述第一顶点复制得到N个子顶点,将所述子图中所述第一顶点的边分为N份分别与所述N个子顶点连接;其中,所述N小于或等于所述装置所属的图计算系统中包含的机器总数量。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
发送单元,用于若所述融合单元将所述第一顶点以及所述本地顶点集合中所述第一顶点的预设跳数内的相邻顶点融合为超顶点,向所述图计算系统中包括所述第一顶点的每个机器,分别发送融合指示,用于标记对所述第一顶点进行了融合操作。
10.根据权利要求8或9所述的装置,其特征在于,所述装置还包括:
发送单元,若所述拆分单元将所述第一顶点复制得到N个子顶点,将所述子图中所述第一顶点的边分为N份分别与所述N个子顶点连接,向所述图计算系统中所述装置所在的机器之外的N-1个机器,分别发送拆分指示,用于标记所述装置对所述第一顶点进行了拆分操作。
11.根据权利要求8-10任一项所述的装置,其特征在于,所述装置还包括:
图分解单元,用于对重构后的所述子图进行图分解;
图计算单元,用于对分配给所述装置的计算负荷进行图计算。
12.根据权利要求11所述的装置,其特征在于,所述图分解单元具体用于:
将所述超顶点及其所述超顶点的边,分配给所述图计算系统中负荷最低的机器作为计算负荷;
或者,
将一个子顶点及其边分配给所述装置作为计算负荷,将所述一个子顶点之外的其他N-1个子顶点及其边,分别分配给所述图计算系统中所述装置所在的机器之外的N-1个机器作为计算负荷。
13.根据权利要求11或12所述的装置,其特征在于,所述图计算单元具体用于:
对分配给所述装置的计算负荷,执行基于差值传输的图计算。
14.根据权利要求8-13任一项所述的装置,其特征在于,所述拆分单元具体用于:
若所述子图中所述第一顶点的边为所述N的整数倍,将所述第一顶点的边等分为N份;
若所述子图中所述第一顶点的边为所述N的非整数倍,将所述第一顶点的边分为N份,每份的边数为整数且两两差值最小。
15.一种机器,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序,其特征在于,所述处理器执行所述程序用于实现权利要求1-7中任一项所述的图重构方法。
16.一种计算机可读存储介质,其特征在于,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-7中任一项所述的图重构方法。
17.一种包含指令的计算机程序产品,其特征在于,当其在计算机上运行时,使得计算机执行如权利要求1-7中任一项所述的图重构方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910745534.XA CN112395282A (zh) | 2019-08-13 | 2019-08-13 | 一种图重构方法及装置 |
PCT/CN2020/107980 WO2021027745A1 (zh) | 2019-08-13 | 2020-08-07 | 一种图重构方法及装置 |
EP20851622.9A EP4012573A4 (en) | 2019-08-13 | 2020-08-07 | GRAPH RECONSTRUCTION METHOD AND DEVICE |
US17/667,302 US11914648B2 (en) | 2019-08-13 | 2022-02-08 | Graph refactorization method and graph refactorization apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910745534.XA CN112395282A (zh) | 2019-08-13 | 2019-08-13 | 一种图重构方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112395282A true CN112395282A (zh) | 2021-02-23 |
Family
ID=74570912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910745534.XA Pending CN112395282A (zh) | 2019-08-13 | 2019-08-13 | 一种图重构方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11914648B2 (zh) |
EP (1) | EP4012573A4 (zh) |
CN (1) | CN112395282A (zh) |
WO (1) | WO2021027745A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112883278A (zh) * | 2021-03-23 | 2021-06-01 | 西安电子科技大学昆山创新研究院 | 基于智慧社区大数据知识图谱的不良舆论传播抑制方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112395282A (zh) * | 2019-08-13 | 2021-02-23 | 华为技术有限公司 | 一种图重构方法及装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103699606B (zh) * | 2013-12-16 | 2017-03-01 | 华中科技大学 | 一种基于顶点切割与社区聚集的大规模图划分方法 |
US9734607B2 (en) * | 2014-09-10 | 2017-08-15 | Oracle International Corporation | Graph processing using a mutable multilevel graph representation |
US10169485B2 (en) * | 2015-09-04 | 2019-01-01 | International Business Machines Corporation | Dynamic partitioning of graph databases based on edge sampling |
US20170091342A1 (en) * | 2015-09-25 | 2017-03-30 | Intel Corporation | Technologies for automatic partitioning of large graphs |
US10810210B2 (en) * | 2017-05-12 | 2020-10-20 | Battelle Memorial Institute | Performance and usability enhancements for continuous subgraph matching queries on graph-structured data |
CN108804226B (zh) * | 2018-05-28 | 2021-09-03 | 中国人民解放军国防科技大学 | 一种用于分布式图计算的图分割划分方法 |
CN109033191A (zh) * | 2018-06-28 | 2018-12-18 | 山东科技大学 | 一种面向大规模幂律分布图的分割方法 |
WO2021012215A1 (zh) * | 2019-07-24 | 2021-01-28 | 华为技术有限公司 | 神经网络切分方法、预测方法及相关装置 |
CN112395282A (zh) * | 2019-08-13 | 2021-02-23 | 华为技术有限公司 | 一种图重构方法及装置 |
-
2019
- 2019-08-13 CN CN201910745534.XA patent/CN112395282A/zh active Pending
-
2020
- 2020-08-07 WO PCT/CN2020/107980 patent/WO2021027745A1/zh unknown
- 2020-08-07 EP EP20851622.9A patent/EP4012573A4/en active Pending
-
2022
- 2022-02-08 US US17/667,302 patent/US11914648B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112883278A (zh) * | 2021-03-23 | 2021-06-01 | 西安电子科技大学昆山创新研究院 | 基于智慧社区大数据知识图谱的不良舆论传播抑制方法 |
Also Published As
Publication number | Publication date |
---|---|
EP4012573A4 (en) | 2022-09-07 |
WO2021027745A1 (zh) | 2021-02-18 |
EP4012573A1 (en) | 2022-06-15 |
US20220156324A1 (en) | 2022-05-19 |
US11914648B2 (en) | 2024-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9372928B2 (en) | System and method for parallel search on explicitly represented graphs | |
CN112884086B (zh) | 模型训练方法、装置、设备、存储介质以及程序产品 | |
EP3014444A1 (en) | Computing connected components in large graphs | |
US11914648B2 (en) | Graph refactorization method and graph refactorization apparatus | |
WO2017076296A1 (zh) | 处理图数据的方法和装置 | |
Song et al. | Gaia scheduler: A kubernetes-based scheduler framework | |
CN112100450A (zh) | 一种图计算数据分割方法、终端设备及存储介质 | |
US20180341728A1 (en) | Distributable and Customizable Load-Balancing of Data-Associated Computation Via Partitions and Virtual Processes | |
CN113515672A (zh) | 数据处理方法、装置、计算机可读介质及电子设备 | |
Iverson et al. | Evaluation of connected-component labeling algorithms for distributed-memory systems | |
KR102326586B1 (ko) | 큰 규모 분산 행렬 곱 처리 방법 및 그 장치 | |
CN108833592A (zh) | 云主机调度器优化方法、装置、设备及存储介质 | |
Nigmetov et al. | Local-global merge tree computation with local exchanges | |
CN110609924A (zh) | 基于图数据的全量关系计算方法、装置、设备及存储介质 | |
Busch et al. | Sparse covers for planar graphs and graphs that exclude a fixed minor | |
CN115495056B (zh) | 分布式图计算系统和方法 | |
CN111581443A (zh) | 分布式图计算方法、终端、系统及存储介质 | |
CN106533720B (zh) | 网络服务请求的编译方法、编译装置和控制器 | |
US20180349528A1 (en) | Scalable Update Propagation Via Query Aggregations and Connection Migrations | |
Odendahl et al. | Optimized buffer allocation in multicore platforms | |
CN111240577A (zh) | 基于mpp数据库的数据多分片存储方法及装置 | |
Xiao et al. | QoS-awared replica placement techniques in data grid applications | |
CN114564253B (zh) | 任务创建方法、系统、电子设备及可读存储介质 | |
CN118170498B (zh) | 虚拟机的迁移方法、装置及相关设备 | |
CN115048553A (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 |