图划分方法、装置及计算机可读存储介质与流程

文档序号:24160128发布日期:2021-03-05 15:37阅读:91来源:国知局
图划分方法、装置及计算机可读存储介质与流程

[0001]
本申请涉及图计算领域,特别是涉及一种图划分方法、装置及计 算机可读存储介质。


背景技术:

[0002]
随着物联网、移动互联网和云计算等新兴信息技术的快速发展, 以社交网络和电子商务为代表的新型应用得到广泛使用。这些应用不 断产生大规模数据,且数据元素间通常有复杂关联关系,这些大规模 且具有关联关系的数据可用图进行建模,称这样的数据为图大数据, 简称大图。例如,截至2018年6月,全球最大的社交平台facebook 拥有20亿用户和1万亿个好友关系;最大的web链接图公开数据集 page中包含35亿个网页和1280亿个超链接。这些大图蕴含巨大价值, 单机因性能有限,难以胜任价值挖掘任务,借助云计算、机群等并行 计算系统开展并行处理是当前主要解决方案。其中,图划分是大图并 行处理的首要步骤。
[0003]
图划分,简单来说,就是按照某种策略将大图划分为若干个“大 小”满足一定约束条件的子图。设图g
i
=(v
i
,e
i
)(1≤i≤k)是图g=(v, e)的子图,v和e分别为图的顶点和连接边的集合,v
i
和e
i
分别为子 图g
i
的顶点和连接边的集合,π
k
={g1,g2,

,g
k
}为图g的一个k 路划分,当且仅当j∈[1,k]且i≠j,均有: e
i
∩e
j
={e
ij
|π(v
i
)=i,π(v
j
)=j,i≠j};其中,π(v
i
)表示划分后顶 点v
i
所属的子图编号。划分后各子图顶点数是否均衡、子图间割边数 多少对后期图大数据处理阶段的效率有着至关重要的影响:顶点数越 均衡、割边数越少,在一定程度上意味着映射到各计算节点的负载越 均衡、节点间通信代价越低、处理效率越高;反之,则处理效率越低。
[0004]
图划分问题就是要找到一个均衡性最好,同时割边数最少的划 分。该问题是经典的np难问题,相关技术中往往采用启发式方法, 如可采用流式划分方法,可在图大数据由大容量磁盘阵列加载至分布 式图计算系统的过程中完成划分,具有单趟、轻便和不依赖图全局信 息等特点。该方法流程如图1所示:左侧是存储在大规模存储阵列上 待划分的大图g=(v,e);中间的加载器以顶点为单位读取数据并传递 给划分器;划分器根据一定规则决定每个顶点应的“流向”,也即将其 分配至哪个子图上;最后当数据加载完毕时,g被划分为k个子图, 每个子图分配到由k个计算节点通过高速互连网络组成的并行计算系 统中的一个节点。不妨设τ时刻g的k路划分,其中表示τ时刻子图g
i
的状态。τ+1时刻,划分器对由加载器新读取的顶 点v
g
,基于当前已积累的“划分决策信息”即此时的划分按照某 种启发式规则,决定v
g
最终应该“流”向哪个子图。初始时刻即τ=0, 当所有顶点加载完毕即τ=|v|时,划分结束, 为最终划分结果。
[0005]
基于上述图划分框架设计的典型流式启发式规则有lineardeterministic greedy、fennel和onflyp,它们取得了较好的性能。 但是,从图1不难发现,这类方法由于采
用单加载器-单划分器架构, 图数据的加载速度和划分速度有限,容易成为系统的性能瓶颈。例如, 相关技术研究了powergraph图计算系统中grid和hdrf流式划分方 法的性能,结果表明划分时间分别占到图计算任务pagerank总运行 时间的58.5%和75.3%。同时,这类方法多隐含地假定执行图计算任 务的并行计算系统是同构的,即每个计算节点的性能相同,为每个节 点分配相同数目的图顶点或连接边,以期提高各节点任务负载均衡程 度,进而提高大图并行分布处理效率。但是随着计算机硬件技术进步 和非同步升级,并行计算系统中计算节点配置、性能不一定相同,所 以上述假设并不合适,从而基于该隐含条件的图划分结果并不准确。
[0006]
鉴于此,如何并行地将大图划分为一系列顶点数或连接边数满足 任意比例关系的子图,在提高大图划分效率和并行处理效率的基础上, 提升图划分准确度,是所属领域技术人员需要解决的技术问题。


技术实现要素:

[0007]
本申请提供了一种图划分方法、装置及计算机可读存储介质,可 并行地将大图划分为一系列顶点数或连接边数满足任意比例关系的子 图,不仅可提高大图划分效率和并行处理效率,还可有效提升图划分 准确度。
[0008]
为解决上述技术问题,本发明实施例提供以下技术方案:
[0009]
本发明实施例一方面提供了一种图划分方法,包括:
[0010]
预先根据并行计算系统的各计算节点的计算性能按照预设度量 机制确定图划分规则,以将待划分图数据成比例地分配至各计算节点;
[0011]
根据图顶点数和加载线程数确定各加载线程的数据读取范围,同 时调用多个加载线程以顶点为单位并行读取所述待划分图数据,并将 各加载线程读取的图顶点数据传递给相应的划分线程;
[0012]
基于当前时刻已经划分好的图数据、按照所述图划分规则确定各 划分线程中每个图顶点数据所属子图,并基于子图与计算节点间的对 应关系将各图顶点数据划分至相应计算节点。
[0013]
可选的,所述根据并行计算系统的各计算节点的计算性能按照预 设度量机制确定图划分规则包括:
[0014]
根据所述并行计算系统的各计算节点的处理速度,调用比例计算 关系式计算节点分配比例关系;
[0015]
根据所述节点分配比例关系按照预设度量机制计算各计算节点 分配图数据的期望值;
[0016]
根据所述期望值和图数据分配实际值确定所述图划分规则;
[0017]
其中,所述比例计算关系式为:
[0018][0019]
式中,k'为所述并行计算系统中计算节点总数,s
i
为第i个计算节 点的处理速度,γ
k'
为第k'个计算节点的分配图数据的比例值。
[0020]
可选的,所述预设度量机制为图顶点个数,所述根据所述节点分 配比例关系按照预设度量机制计算各计算节点分配图数据的期望值, 并根据所述期望值确定所述图划分规则包括:
[0021]
根据所述待划分图的图顶点总数和所述节点分配比例关系计算 各子图分配到图顶点个数的期望值;
[0022]
根据各子图的实际顶点数和相应的顶点数的期望值确定所述图 划分规则。
[0023]
可选的,所述预设度量机制为图任务负载,所述根据所述节点分 配比例关系按照预设度量机制计算各计算节点分配图数据的期望值包 括:
[0024]
调用图任务负载计算关系式计算所述待划分图上执行图算法的 图任务负载;
[0025]
根据所述图任务负载和所述节点分配比例关系计算各计算节点 分配到的图任务负载的期望值;
[0026]
根据各计算节点上已分配子图对应的实际图任务负载和相应的 图任务负载的期望值确定所述图划分规则;
[0027]
其中,所述图任务负载计算关系式为:
[0028]
load(g,alg)=a(|v|-r)
α
+b(|e|-s)
β
+clog((|v|-r)
·
(|e|-s)+1)+d;
[0029]
式中,load(g,alg)为所述图任务负载,|v|为所述待划分图的图 顶点总数,|e|为所述待划分图的连接边总数,a、α、r、b、s、β、 c、d为实数域的参数。
[0030]
可选的,所述调用多个加载线程以顶点为单位并行读取待划分图 数据包括:
[0031]
预先将待划分图按照邻接表的形式存储至存储磁盘阵列中;
[0032]
调用多个加载线程按照预设数据读取顺序以顶点为单位并行读 取所述待划分图数据;
[0033]
其中,所述预设数据读取顺序为广度优先顺序或深度优先顺序或 随机顺序;第i个加载线程读取所述邻接表中第行到第 行的图数据,i∈[1,k],|v|为所述待划分图的顶点数,k为 加载线程总数。
[0034]
可选的,所述基于当前时刻已经划分好的图数据,同时调用各划 分线程按照所述图划分规则确定各顶点所属子图包括:
[0035]
预先为每个划分线程分配相应的缓冲区,以用于存储传递给相应 划分线程的图顶点数据;
[0036]
对当前划分线程,若所述当前划分线程对应缓存区的剩余空间容 量为0,基于当前时刻已经划分好的图数据,按照所述图划分规则将 所述当前划分线程中的所有图顶点数据划分至相应子图中。
[0037]
可选的,所述基于子图与计算节点间的对应关系将各图顶点数据 划分至相应计算节点之后,还包括:
[0038]
预先基于广义平衡偏斜因子、割边比和划分时间生成图划分结果 评价标准;
[0039]
调用所述图划分结果评价标准生成当前图划分结果的分析报告;
[0040]
所述广义平衡偏斜因子ρ为所述割边比λ为λ=|e
cut
|/|e|;n为所述待划分图的子图总数, vertex(g
i
)为第i个子图g
i
的实际顶点
数,vertex
e
(g
i
)为第i个子图g
i
的顶点数的期望值,|e|为所述待划分图的连接边总数,e
cut
为图划分 过程产生的所有割边的集合。
[0041]
本发明实施例另一方面提供了一种图划分装置,包括:
[0042]
规则预设置模块,用于预先根据并行计算系统的各计算节点的计 算性能按照预设度量机制确定图划分规则,以将待划分图数据成比例 地分配至各计算节点;
[0043]
图数据并行读取模块,用于根据图顶点数和加载线程数确定各加 载线程的数据读取范围,同时调用多个加载线程以顶点为单位并行读 取所述待划分图数据,并将各加载线程读取的图顶点数据传递给相应 的划分线程;
[0044]
图划分模块,用于基于当前时刻已经划分好的图数据、按照所述 图划分规则确定各划分线程中每个图顶点数据所属子图,并基于子图 与计算节点间的对应关系将各图顶点数据划分至相应计算节点;
[0045]
划分决策模块,用于根据当前时刻各划分线程的图划分结果更新 上一时刻的划分决策信息,并在划分线程请求时,将更新后的划分决 策信息发送至各划分线程;所述划分决策信息为当前时刻已经划分好 的图数据。
[0046]
本发明实施例还提供了一种图划分装置,包括处理器,所述处理 器用于执行存储器中存储的计算机程序时实现如前任一项所述图划分 方法的步骤。
[0047]
本发明实施例最后还提供了一种计算机可读存储介质,所述计算 机可读存储介质上存储有图划分程序,所述图划分程序被处理器执行 时实现如前任一项所述图划分方法的步骤。
[0048]
本申请提供的技术方案的优点在于,根据并行计算系统各计算节 点计算性能的比例关系,采用多线程读取图数据和图顶点数据多线程 划分图,可并行地、流式地将大图划分为多个子图并分配给相应节点, 每个节点分配到的子图的顶点数或连接边数与其计算能力大小相匹 配,可提高图划分的准确度和有效性;由于采用多线程进行数据读取 和顶点划分,划分效率明显提高;因实施任意比例划分,可充分利用 并行计算系统资源,实现了并行地将大图划分为一系列顶点数或连接 边数满足任意比例关系的子图,有效提高大图划分效率和并行处理效 率。
[0049]
此外,本发明实施例还针对图划分方法提供了相应的实现装置及 计算机可读存储介质,进一步使得所述方法更具有实用性,所述装置 及计算机可读存储介质具有相应的优点。
[0050]
应当理解的是,以上的一般描述和后文的细节描述仅是示例性 的,并不能限制本公开。
附图说明
[0051]
为了更清楚的说明本发明实施例或相关技术的技术方案,下面将 对实施例或相关技术描述中所需要使用的附图作简单的介绍,显而易 见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普 通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附 图获得其他的附图。
[0052]
图1为本发明实施例提供的现有技术中的一个示例性应用场景的 框架示意图;
[0053]
图2为本发明实施例提供的一种图划分方法的流程示意图;
[0054]
图3为本发明实施例提供的一种用于拟合图任务负载度量关系式 中参数的训练数据集的流程示意图;
[0055]
图4为本发明实施例提供的一个示例性应用场景的框架示意图;
[0056]
图5为本发明实施例提供另一种用于拟合图任务负载度量关系式 中参数的训练数据集的流程示意图;
[0057]
图6为本发明实施例提供的图划分装置的一种具体实施方式结构 图;
[0058]
图7为本发明实施例提供的图划分装置的另一种具体实施方式结 构图。
具体实施方式
[0059]
为了使本技术领域的人员更好地理解本发明方案,下面结合附图 和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施 例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中 的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得 的所有其他实施例,都属于本发明保护的范围。
[0060]
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第 二”、“第三”“第四”等是用于区别不同的对象,而不是用于描述特定 的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于 覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系 统、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列 出的步骤或单元。
[0061]
在介绍了本发明实施例的技术方案后,下面详细的说明本申请的 各种非限制性实施方式。
[0062]
首先参见图2,图2为本发明实施例提供的一种图划分方法的流 程示意图,本发明实施例可包括以下内容:
[0063]
s201:预先根据并行计算系统的各计算节点的计算性能按照预设 度量机制确定图划分规则,以将待划分图数据成比例地分配至各计算 节点。
[0064]
可以理解的是,并行计算系统具有多个计算节点,各计算节点的 计算性能可相同,也可不同,实际上即使配置相同的两个计算节点, 随着使用时长和运行业务的不同,计算性能也不会完全相同,并行计 算系统的各计算节点通过互联网络彼此相连接,各计算节点共同对接 收的图大数据进行并行分布处理,这就需要将一个图大数据拆分为多 个子图以分配至多个计算节点中,为了充分利用各计算节点,图大数 据拆分子图的个数不小于并行计算系统的计算节点的总数。度量机制 即为衡量各计算节点分配图数据的标准,度量机制可为但并不限制于 图顶点数、图连接边数和图任务负载。图划分规则用于指导划分线程 将接收到的图顶点数据分配至与计算能力相匹配的计算节点上,以期 提高各节点的广义负载均衡程度,提高大图并行处理效率。
[0065]
举例来说,将分蛋糕类比为图划分,蛋糕为待划分图,分蛋糕的 人类比为计算节点,每个人分的那份蛋糕类比为子图,在进行蛋糕划 分时,要将它分给k个食量不同的人即计算节点,每人一份小蛋糕即 获得1个子图,要求尽可能公平地分配,即保证食量大的人分多些, 食量少的人分少些,公平性只是众多分配目标中的一个,可以是其他 的,这个公平性原则相当于本申请的图划分规则。本步骤中确定任意 比例关系相当于k个人的食量大小比例大小;图与子图的度量机制相 当于分蛋糕时按照什么度量标准划分,比如蛋糕的体积
或重量如何计 算,体积和重量都是度量机制;图划分准则即划分的过程如何实施, 是目标导向的,比如分蛋糕时追求的公平性。该目标就决定了在划分 时候,尽量减少期望值和实际值之间的差异程度。任意比例关系、度 量机制互相独立,图划分规则在制定过程中需要利用任意比例关系和 度量机制,也就是说,任意比例关系和度量机制为图划分规则的依赖 因素,但二者并并限制划分规则如何实施。
[0066]
s202:根据图顶点数和加载线程数确定各加载线程的数据读取范 围,同时调用多个加载线程以顶点为单位并行读取待划分图数据,并 将各加载线程读取的图顶点数据传递给相应的划分线程。
[0067]
本申请的加载线程总数与拆分的子图总数可相同,也可不相同, 加载线程总数可与计算节点总数相同,也可不相同。作为一种可选的 实施方式,加载线程总数、拆分子图总数和计算节点个数可均相同, 这样可以更加高效、便捷的处理图大数据也即本步骤中的的待划分图。 加载线程和划分线程相一一对应,加载线程用于从待划分图中读取图 数据并将读取的图数据传递给划分线程,划分线程对接收到的图数据 进行划分,所谓划分,也即将接收到的图数据分配至哪个子图,如果 子图和计算节点一一对应,也即将接收到的图数据分配给哪个计算节 点进行处理。其中,各加载线程可按照特定顺序如广度优先、深度优 先和随机顺序等以顶点为单位并行地读取存储在大规模存储阵列上的 图数据。
[0068]
s203:基于当前时刻已经划分好的图数据、按照图划分规则确定 各划分线程中每个图顶点数据所属子图,并基于子图与计算节点间的 对应关系将各图顶点数据划分至相应计算节点。
[0069]
在该步骤中,系统调用各划分线程执行图顶点数据的分配功能, 对于子图总数和计算节点相同的场景,一个计算节点负责处理一个子 图,划分线程将图顶点分配至子图,也相当于分配至计算节点上。而 对于子图个数和计算节点不同的场景,为图顶点确定所属子图后,基 于子图与计算节点的一个对应关系,将该图顶点数据分配至相应的计 算节点。在对图大数据进行划分时,划分出子图个数会预先根据计算 节点的计算性能设置好,且会设置每个子图放到那个计算节点处理的 对应关系。
[0070]
可以理解的是,当前时刻已经划分好的图数据实时变化,为了便 于描述,可将当前时刻已经划分好的图数据称为划分决策信息,划分 决策信息随时间不断变化,当划分决策信息更新后,将更新后的划分 决策信息发送给所有划分线程。划分线程在接收到加载线程传递的图 顶点数据对图顶点数据进行分配时可先发送划分决策信息请求,系统 也可在接收到划分决策信息请求后将当前时刻的划分决策信息反馈给 相应划分线程,所属领域技术人员可根据实际情况选择所需方式。
[0071]
在本发明实施例提供的技术方案中,根据并行计算系统各计算节 点计算性能的比例关系,采用多线程读取图数据和图顶点数据多线程 划分图,可并行地、流式地将大图划分为多个子图并分配给相应节点, 每个节点分配到的子图的顶点数或连接边数与其计算能力大小相匹 配,可提高图划分的准确度和有效性;由于采用多线程进行数据读取 和顶点划分,划分效率明显提高;因实施任意比例划分,可充分利用 并行计算系统资源,实现了并行地将大图划分为一系列顶点数或连接 边数满足任意比例关系的子图,有效提高大图划分效率和并行处理效 率。
[0072]
在上述实施例中,对于如何制定图划分规则并不做限定,本实施 例中给出图划分
规则的一种确定方法,可包括如下步骤:
[0073]
根据并行计算系统的各计算节点的处理速度,调用比例计算关系 式计算节点分配比例关系;根据节点分配比例关系按照预设度量机制 计算各计算节点分配图数据的期望值;根据期望值和图数据分配实际 值确定图划分规则;
[0074]
其中,比例计算关系式为:
[0075][0076]
式中,k'为并行计算系统中计算节点总数,s
i
为第i个计 算节点的处理速度,γ
k'
为第k'个计算节点的分配图数据的比例值,s 可通过执行graph500基准测试程序得到。
[0077]
在本实施例中,可以计算节点的处理速度作为衡量计算节点性能 的表征参数,并行计算系统由k'个处理节点p1,p2,

,p
k
'通过网络 互连,处理速度可分别记为s1,s2,

,s
k
',例如可满足s1≤s2≤

≤s
k
'。 期望值的计算与采用的度量机制相关,本申请分别以图顶点数和图任 务负载作为度量机制阐述图划分规则的确定方式,可包括下述内容:
[0078]
作为一种可选的实施方式,预设度量机制为图顶点个数,根据节 点分配比例关系按照预设度量机制计算各计算节点分配图数据的期望 值,并根据期望值确定图划分规则的过程可包括:
[0079]
根据待划分图的图顶点总数和节点分配比例关系计算各子图分 配到图顶点个数的期望值;根据各子图的实际顶点数和相应的顶点数 的期望值确定图划分规则。
[0080]
当度量机制是图顶点数时,待划分图g总的顶点个数和子图g
i
分配到的图顶点个数的期望值分别为vertex(g)和vertex
e
(g
i
),则有 vertex
e
(g
i
)=γ
i
vertex(g)。每个图大数据是由顶点和连接边构成的,在 确定子图个数之后,会根据各计算节点的计算性能成比例地将图大数 据的各顶点数据分配至各子图中,即每个子图的实际顶点数。例如各 计算节点的性能可认为差别不大,则将图大数据的所有顶点均分至各 子图中,可预先设置一段计算机程序,该计算机程序用于基于计算机 性能参数如处理速度、图大数据参数如顶点总数和连接边数计算每个 子图可以分到的实际的顶点数。基于每个子图实际的顶点数、顶点数 的期望值、各计算节点的计算性能、以将待划分图数据成比例地分配 至各计算节点为准则确定图划分规则。
[0081]
作为另外一种可选的实施方式,预设度量机制为图任务负载,所 谓图任务负载广义指解决某一图论问题的图算法alg在图g上执行时 算法操作的工作量,具体指图顶点的计算操作以及连接边的数据传输 操作的工作量之和。因此,图任务负载load(g,alg)与g的拓扑结构 和其上执行的图算法alg密不可分。根据节点分配比例关系按照预设 度量机制计算各计算节点分配图数据的期望值的过程可包括:
[0082]
调用图任务负载计算关系式计算待划分图上执行图算法的图任 务负载;根据图任务负载和节点分配比例关系计算各计算节点分配到 的图任务负载的期望值;根据各计算节点上已分配子图对应的实际图 任务负载和相应的图任务负载的期望值确定图划分规
则,即基于每个 计算节点已分配子图对应的实际图任务负载、图任务负载的期望值、 各计算节点的计算性能、以将待划分图数据成比例地分配至各计算节 点为准则确定图划分规则。其中,图任务负载计算关系式为:
[0083]
load(g,alg)=a(|v|-r)
α
+b(|e|-s)
β
+clog((|v|-r)
·
(|e|-s)+1)+d;
[0084]
式中,load(g,alg)为图任务负载,|v|为待划分图的图顶点总数, |e|为待划分图的连接边总数,a、α、r、b、s、β、c、d为实数域 的参数,它们的取值可与图拓扑结构特征和图算法执行行为密切相关。 这些参数可利用多层前馈神经网络拟合得到。其中,拟合数据集生成 方法如下,如图3所示,从开源图数据集下载图数据集,选取典型的 图算法,在单机上对大图执行图算法所规定的操作以对大图实施分析 和挖掘,记录图算法执行时间,由处理节点cpu计算速度乘以图算法 执行时间,即可得到图任务负载。每一个图的顶点数、连接边数和图 任务负载构成一个训练样本,重复执行即可得到多个样本,所有样本 即构成训练数据集。各计算节点上已分配子图对应的实际图任务负载 load(g
i
,alg)的计算过程如下所示:
[0085]
对于图g的任一子图g
i
,图算法alg在其上执行的任务负载 load(g
i
,alg)由计算负载load
in
(g
i
,alg)和通信负载load
out
(g
i
,alg) 两部分构成,也即load(g
i
,alg)=load
in
(g
i
,alg)+load
out
(g
i
,alg),
[0086]
其中,可基于图任务负载计算关系式计算load
in
(g
i
,alg),即 表示 子图g
i
的内部边的集合。而g
i
与其他子图的通信负载由它们之间的 割边总数成比例,若记g
i
与其他子图之间的割边集为则:
[0087][0088]
式中,g和h都是实数域的未知参数,同样可以用多元非线性回 归分析方法得到。训练数据集的获取流程与图3所示步骤相似,不同 之处在于最后一步,此处要记录的是通过割边集传输的数据总量。
[0089]
本发明实施例提供了两种度量机制下的图划分规则确定方式,所 属领域技术人员可根据实际需求进行选择,当然也可采用其他度量机 制,本申请对此不做任何限定。
[0090]
作为一种可选的实施方式,为了更加高效的读取图数据,本申请 还针对步骤“调用多个加载线程以顶点为单位并行读取待划分图数据
”ꢀ
提供了一种实施方式,可包括下述内容:
[0091]
预先将待划分图按照邻接表的形式存储至存储磁盘阵列中;调用 多个加载线程按照预设数据读取顺序以顶点为单位并行读取待划分图 数据;
[0092]
其中,预设数据读取顺序为广度优先顺序或深度优先顺序或随机 顺序;第i个加载线程读取邻接表中第行到第行的图数据,i∈[1,k],|v|为待划分图的顶点数,k为加载线程总数, 为对*进行向下取整,|*|为表示计算集合的基数,用于表示其中元 素的个数。本申请所有关系式中的数学运算符|*|均表示同一个数
学含 义,即用于表示其中元素的个数。
[0093]
本实施例为避免各加载线程竞争读取同一数据,将图数据按照邻 接表形式存储在大规模磁盘阵列上,规定了每个加载线程的数据读取 范围,避免重复数据被处理,提升整体的图划分效率。
[0094]
作为另外一种可选的实施方式,为减小各划分线程和系统负责划 分决策信息更新线程之间的通信开销,在划分线程接收到图顶点数据 之后,还可包括下述内容:
[0095]
预先为每个划分线程分配相应的缓冲区,以用于存储传递给相应 划分线程的图顶点数据;对当前划分线程,若当前划分线程对应缓存 区的剩余空间容量为0,基于当前时刻已经划分好的图数据,按照图 划分规则将当前划分线程中的所有图顶点数据划分至相应子图中。
[0096]
需要说明的是,当前划分线程对应缓存区的剩余空间容量也可为 一个较小数,不一定非为0,所属领域技术人员可根据实际情况进行 选择。
[0097]
本实施例通过在每个划分线程中增加一个缓冲区,当且仅当缓冲 区填满后,成批地将缓冲区中的顶点进行划分,降低系统通信开销, 有利于节约系统资源。
[0098]
最后,在本申请的一些其他实施方式中,为评价划分质量优劣, 还可建立一套评价标准,该标准可包括广义平衡偏斜因子ρ,割边比λ 和划分时间τ,相应的,在划分线程完成图顶点数据划分之后,也即 s203之后,还可包括:
[0099]
预先基于广义平衡偏斜因子、割边比和划分时间生成图划分结果 评价标准;广义平衡偏斜因子可用于表示当前划分结果中各子图实际 顶点数与相应期望值的偏离程度;割边比用于表示待划分图或大图的 某一图划分中,割边数与总连接边数之比;划分时间为划分开始时刻 到划分结束时刻的这段时间。
[0100]
调用图划分结果评价标准生成当前图划分结果的分析报告;分析 报告可用于后续图划分提供参考,或者可以基于当前分析报告重新调 整某些参数重新进行划分,可根据实际需求进行选择。
[0101]
其中,广义平衡偏斜因子ρ为割边比λ为λ=|e
cut
|/|e|;n为待划分图的子图总数,vertex(g
i
为第 i个子图g
i
的实际顶点数,vertex
e
(g
i
)为第i个子图g
i
的顶点数的期 望值,|e|为待划分图的连接边总数,e
cut
为图划分过程产生的所有割 边的集合。
[0102]
为了使所述领域技术人员更加清楚明白本申请的技术方案,本申 请还提供了一个示意性例子,请参阅图4,可包括下述内容:
[0103]
待划分大图为g=(v,e),其顶点数和连接边数分别为|v|和|e|; 并行计算系统包括通过网络互连的k个计算节点p1,p2,

,p
k
。为 利用并行计算系统对大图开展并行分布处理,基于任意比例的流式启 发式规则作为图划分规则将g划分为k个子图,并分别放置到k个处 理节点上。包括k个加载器、k个划分器、划分决策信息共享模块和 划分评价模块。首先根据并行计算系统中各处理节点的计算性能大小 确定任意比例关系,并计算各子图顶点数的期望值;根据图顶点数和 加载器个数,确定每个加载器应负责读取的数据范围;各加载器并行 地随机读取图数据,并将其传给相应的划分器;各划分器根据当前的 划分决策信息,按照任意比例的流式启发式规则,决定每个顶点应放 置的子图或处理节点编号并
实施放置,然后将本轮划分结果提交给划 分决策信息共享模块以便更新划分决策信息;重复上述过程直至数据 加载完毕,图划分完成。
[0104]
其中,设计一条任意比例的分布式流式划分启发式规则,各划分 器并行地执行该规则,对从相应的加载器接收图顶点数据流,按照图 4所示的划分框架和图5所示的划分流程实施任意比例的分布式流式 划分。不妨以general load balance(glb)为例,其核心思想是按照最 大化广义任务负载均衡之原则实施划分。在τ时刻,将新到达顶点v
g
流向子图使其当前任务负载与图任务负载的期望值的比值最小; 若出现两个或多个这样的子图,随机指派v
g
到其中任意一个:
[0105][0106]
一轮划分结束后,划分决策信息共享模块根据各划分器的划分结 果更新划分决策信息。重复执行上述步骤直至所有图数据加载完毕, 图划分结束。
[0107]
在该示意性例子中,为依据图任务负载度量机制对大图实施任意 比例的分布式流式划分,首先根据图计算系统中各处理节点的计算性 能大小,确定任意比例关系;构建图数据集和图算法库,对每一对图 数据和图算法,在单机上对图数据执行图算法制定的操作,记录图算 法执行时间,利用处理节点计算速度乘以图算法执行时间获得图任务 负载,该值与相应图顶点数和连接边数共同构成一条训练样本;重复 多次执行,可得到训练样本集;结合任意比例关系和图任务负载度量 机制,根据图任务负载作为度量机制实施例中的相应计算关系式计算 图任务负载和各子图的图任务负载的期望值。根据图顶点数和加载器 个数,确定每个加载器应负责读取的数据范围;各加载器并行地随机 读取图数据,并将其传给相应的划分器;各划分器根据当前的划分决 策信息,按照任意比例的流式启发式规则,决定每个顶点应放置的子 图或处理节点编号并实施放置,然后将本轮划分结果提交给划分决策 信息共享模块以便更新划分决策信息;重复上述过程直至数据加载完 毕,图划分完成。具体可包括下述内容:
[0108]
步骤1:并行计算系统包括通过互连网络连接的k个计算节点p1, p2,

,p
k
,各计算节点的处理速度可分别表示为s
v1
,s
v2


,s
vk
, 且满足s
v1
≤s
v2


≤s
vk
。其中,s
v
可通过执行graph500基准测试程序得 到。则任意比例关系且 满足
[0109]
步骤2:从开源图数据集snap下载图数据roadnet-ca和twitter, 构建图数据集。
[0110]
步骤3:选择经典广度优先遍历算法bfs和dijkstra最短路径算 法构建图算法库。
[0111]
步骤4:对每一对图数据和图算法,(roadnet-ca,bfs)、 (roadnet-ca,dijkstra)、(twitter,bfs)和(twitter,dijkstra),在cpu 计算速度为s
v0
的单机上重复多次对图数据执行图算法所规定的操作, 记录相应的图算法执行时间,得到训练样本集trainset1,trainset2, trainset3,
……

[0112]
步骤5:对每一对图数据和图算法,利用多层前馈神经网络,以 图顶点数、连接边数和相应的图算法执行时间为输入,训练该网络, 以获得图任务负载预测模型。
[0113]
步骤6:根据图任务负载预测模型、图任务负载计算关系式、实 际图任务负载load
(g
i
,alg)计算关系式、load
in
(g
i
,alg)计算关系式 和通信负载load
out
(g
i
,alg)计算关系式计算给定图数据g执行图算 法alg的任务负载load(g,alg);结合任意比例关系,根据计算关系 式load
e
(g
i
,alg)=γ
i
load(g,alg)计算各子图的任务负载的期望 load
e
(g
i
,alg)。
[0114]
步骤7:设大图g=(v,e)采用邻接表形式存储在大规模存储阵列 中。第i个加载器负责按照随机顺序从邻接表的第到 行读取数据。其中,i∈[1,k];表示向下取整函数。
[0115]
步骤8:设计一条任意比例的分布式流式划分启发式规则,各划 分器并行地执行该规则,对从相应的加载器接收图顶点数据流,按照 图2所示的划分框架和图5所示的划分流程实施任意比例的分布式流 式划分。不妨以general load balance(glb)为例,其核心思想是按照 最大化广义任务负载均衡之原则实施划分。在τ时刻,将新到达顶点 v
g“流”向这样一个子图使其当前任务负载与图任务负载的期望值 的比值最小;若出现两个或多个这样的子图,随机指派v
g
到其中任意 一个:
[0116][0117]
式中,ind为每个图顶点预置位置,ind既可基于子图实际顶点数 和顶点数的期望值的流式启发式规则得到,还可基于图任务负载的期 望值和实际任务负载的流式启发式规则得到。
[0118]
由上可知,本发明实施例提出的基于多加载器-多划分器的分布式 流式划分方法,相比现有的基于单加载器-单划分器架构的流式划分方 法相比,可明显提高大图划分效率;同时,所设计的任意比例的分布 式流式启发式规则可按照并行计算系统各处理节点计算性能的比例 关系,为各处理节点分配与之性能相匹配的图任务负载,有效缓解“慢 节点”问题,明显提高大图并行处理效率。
[0119]
需要说明的是,本申请中各步骤之间没有严格的先后执行顺序, 只要符合逻辑上的顺序,则这些步骤可以同时执行,也可按照某种预 设顺序执行,图1-图5只是一种示意方式,并不代表只能是这样的执 行顺序。
[0120]
本发明实施例还针对图划分方法提供了相应的装置,进一步使得 所述方法更具有实用性。其中,装置可从功能模块的角度和硬件的角 度分别说明。下面对本发明实施例提供的图划分装置进行介绍,下文 描述的图划分装置与上文描述的图划分方法可相互对应参照。
[0121]
基于功能模块的角度,参见图6,图6为本发明实施例提供的图 划分装置在一种具体实施方式下的结构图,该装置可包括:
[0122]
规则预设置模块601,用于预先根据并行计算系统的各计算节点 的计算性能按照预设度量机制确定图划分规则,以将待划分图数据成 比例地分配至各计算节点。
[0123]
图数据并行读取模块602,用于根据图顶点数和加载线程数确定 各加载线程的数据读取范围,同时调用多个加载线程以顶点为单位并 行读取待划分图数据,并将各加载线程读取的图顶点数据传递给相应 的划分线程。
[0124]
图划分模块603,用于基于当前时刻已经划分好的图数据、按照 图划分规则确定
各划分线程中每个图顶点数据所属子图,并基于子图 与计算节点间的对应关系将各图顶点数据划分至相应计算节点。
[0125]
划分决策模块604,用于根据当前时刻各划分线程的图划分结果 更新上一时刻的划分决策信息,并在划分线程请求时,将更新后的划 分决策信息发送至各划分线程;划分决策信息为当前时刻已经划分好 的图数据。
[0126]
可选的,在本实施例的一些实施方式中,所述规则预设置模块601 可以包括:
[0127]
比例关系计算子模块,用于根据并行计算系统的各计算节点的处 理速度,调用比例计算关系式计算节点分配比例关系;其中,比例计 算关系式为:
[0128][0129]
式中,k'为并行计算系统中计算节点总数,s
i
为第i个计算节点的 处理速度,γ
k'
为第k'个计算节点的分配图数据的比例值。
[0130]
期望值计算子模块,用于根据节点分配比例关系按照预设度量机 制计算各计算节点分配图数据的期望值。
[0131]
规则确定子模块,用于根据期望值和图数据分配实际值确定图划 分规则。
[0132]
作为本实施例的一种可选的实施方式,所述规则预设置模块601 例如可包括:
[0133]
图顶点期望值计算子模块,用于根据待划分图的图顶点总数和节 点分配比例关系计算各子图分配到图顶点个数的期望值;
[0134]
基于图顶点的规则确定子模块,用于根据各子图的实际顶点数和 相应的顶点数的期望值确定图划分规则。
[0135]
作为本实施例的另一种可选的实施方式,所述规则预设置模块 601例如可包括:
[0136]
图任务负载计算子模块,用于调用图任务负载计算关系式计算待 划分图上执行图算法的图任务负载;图任务负载计算关系式为:
[0137]
load(g,alg)=a(|v|-r)
α
+b(|e|-s)
β
+clog((|v|-r)
·
(|e|-s)+1)+d;
[0138]
式中,load(g,alg)为图任务负载,|v|为待划分图的图顶点总数, |e|为待划分图的连接边总数,a、α、r、b、s、β、c、d为实数域 的参数。
[0139]
图负载期望值计算子模块,用于根据图任务负载和节点分配比例 关系计算各计算节点分配到的图任务负载的期望值。
[0140]
基于图任务负载的规则确定子模块,用于根据各计算节点上已分 配子图对应的实际图任务负载和相应的图任务负载的期望值确定图划 分规则。
[0141]
可选的,在本实施例的另一些实施方式中,所述图数据并行读取 模块602可以包括:
[0142]
预存储子模块,用于预先将待划分图按照邻接表的形式存储至存 储磁盘阵列中;
[0143]
数据读取子模块,用于调用多个加载线程按照预设数据读取顺序 以顶点为单位并行读取待划分图数据。其中,预设数据读取顺序为广 度优先顺序或深度优先顺序或随机顺序;第i个加载线程读取邻接表 中第行到第行的图数据,i∈[1,k],|v|为待划 分图的顶点数,k为加载线程总数。
[0144]
作为本申请的一种可选实施方式,所述划分决策模块604还可包 括:
[0145]
缓存区分配子模块,用于预先为每个划分线程分配相应的缓冲 区,以用于存储传递给相应划分线程的图顶点数据;
[0146]
缓存子模块,用于对当前划分线程,若当前划分线程对应缓存区 的剩余空间容量为0,基于当前时刻已经划分好的图数据,按照图划 分规则将当前划分线程中的所有图顶点数据划分至相应子图中。
[0147]
作为本申请的另外一种可选实施方式,所述装置例如还可包括评 价模块,所述评价模块包括:
[0148]
标准制定子模块,用于预先基于广义平衡偏斜因子、割边比和划 分时间生成图划分结果评价标准。其中,广义平衡偏斜因子ρ为表示 n为待划分图的子图总数, vertex(g
i
)为第i个子图g
i
的实际顶点数,vertex
e
(g
i
)为第i个子图g
i
的顶点数的期望值;割边比λ可为割边比λ为λ=|e
cut
|/|e|,|e|为待 划分图的连接边总数,e
cut
为图划分过程产生的所有割边的集合。
[0149]
报告生成子模块,用于调用图划分结果评价标准生成当前图划分 结果的分析报告;
[0150]
本发明实施例所述图划分装置的各功能模块的功能可根据上述 方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实 施例的相关描述,此处不再赘述。
[0151]
由上可知,本发明实施例可并行地将大图划分为一系列顶点数或 连接边数满足任意比例关系的子图,不仅可提高大图划分效率和并行 处理效率,还可有效提升图划分准确度。
[0152]
上文中提到的图划分装置是从功能模块的角度描述,进一步的, 本申请还提供一种图划分装置,是从硬件角度描述。图7为本申请实 施例提供的另一种图划分装置的结构图。如图7所示,该装置包括存 储器70,用于存储计算机程序;
[0153]
处理器71,用于执行计算机程序时实现如上述任一实施例提到的 图划分方法的步骤。
[0154]
其中,处理器71可以包括一个或多个处理核心,比如4核心处 理器、8核心处理器等。处理器71可以采用dsp(digital signalprocessing,数字信号处理)、fpga(field-programmable gate array, 现场可编程门阵列)、pla(programmable logic array,可编程逻辑阵 列)中的至少一种硬件形式来实现。处理器71也可以包括主处理器和 协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器, 也称cpu(central processing unit,中央处理器);协处理器是用于对 在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处 理器71可以在集成有gpu(graphics processing unit,图像处理器), gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例 中,处理器71还可以包括ai(artificial intelligence,人工智能)处理器, 该ai处理器用于处理有关机器学习的计算操作。
[0155]
存储器70可以包括一个或多个计算机可读存储介质,该计算机 可读存储介质可以是非暂态的。存储器70还可包括高速随机存取存储 器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储 设备。本实施例中,存储器70至少用于存储以下计算机程
序701,其 中,该计算机程序被处理器71加载并执行之后,能够实现前述任一实 施例公开的图划分方法的相关步骤。另外,存储器70所存储的资源还 可以包括操作系统702和数据703等,存储方式可以是短暂存储或者 永久存储。其中,操作系统702可以包括windows、unix、linux等。 数据703可以包括但不限于测试结果对应的数据等。
[0156]
在一些实施例中,图划分装置还可包括有显示屏72、输入输出接 口73、通信接口74、电源75以及通信总线76。
[0157]
本领域技术人员可以理解,图7中示出的结构并不构成对图划分 装置的限定,可以包括比图示更多或更少的组件,例如还可包括传感 器77。
[0158]
本发明实施例所述图划分装置的各功能模块的功能可根据上述 方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实 施例的相关描述,此处不再赘述。
[0159]
由上可知,本发明实施例可并行地将大图划分为一系列顶点数或 连接边数满足任意比例关系的子图,不仅可提高大图划分效率和并行 处理效率,还可有效提升图划分准确度。
[0160]
可以理解的是,如果上述实施例中的图划分方法以软件功能单元 的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机 可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者 说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软 件产品的形式体现出来,该计算机软件产品存储在一个存储介质中, 执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包 括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随 机存取存储器(random access memory,ram)、电可擦除可编程 rom、寄存器、硬盘、可移动磁盘、cd-rom、磁碟或者光盘等各种 可以存储程序代码的介质。
[0161]
基于此,本发明实施例还提供了一种计算机可读存储介质,存储 有图划分程序,所述图划分程序被处理器执行时如上任意一实施例所 述图划分方法的步骤。
[0162]
本发明实施例所述计算机可读存储介质的各功能模块的功能可 根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上 述方法实施例的相关描述,此处不再赘述。
[0163]
由上可知,本发明实施例可并行地将大图划分为一系列顶点数或 连接边数满足任意比例关系的子图,不仅可提高大图划分效率和并行 处理效率,还可有效提升图划分准确度。
[0164]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说 明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分 互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的 方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0165]
专业人员还可以进一步意识到,结合本文中所公开的实施例描述 的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者 的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明 中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟 以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束 条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所 描述的功能,但是这种实现不应认为超出本发明的范围。
[0166]
以上对本申请所提供的一种图划分方法、装置及计算机可读存储 介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施 方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法 及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在 不脱离本发明原理的前提下,还可以对本申请进行若干改进和修饰, 这些改进和修饰也落入本申请权利要求的保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1