一种面向并发多任务的磁盘图处理方法

文档序号:25542477发布日期:2021-06-18 20:39阅读:94来源:国知局
一种面向并发多任务的磁盘图处理方法

本发明属于计算机大数据处理技术领域,更具体地,涉及一种面向并发多任务的磁盘图处理方法。



背景技术:

随着现实世界对图计算的需求越来越高,许多场景下都要求图计算系统能够同时并发的出力多个图计算任务。然而,现有的面向并发多任务的图计算系统通常依赖于一个大规模的分布式系统或基于单机的共享内存系统。这些系统在大规模图数据上处理并发图任务时会面临高昂的硬件成本和通信开销,或较差的可扩展性等问题。而并发图任务在执行时所产生的大量中间结果会进一步加剧这些问题。在这种情况下,采用具有较高性价比和较好可扩展性的外存模式图计算同,成为一种潜在可行的选择。

然而,现有的外存模式图计算系统在处理并发图任务时会面临如下挑战。首先,并发图任务由于不同的i/o访问特征,在执行时会按照不同的遍历路径对磁盘中的图数据进行访问。而这些访问往往会产生很多随机和冗余的数据读取,极大的影响系统的性能。其次,由于并发图任务同时向操作系统发出i/o请求。这引发了对本就有限的磁盘带宽更激烈的竞争,造成严重的i/o冲突,影响系统的吞吐率。



技术实现要素:

针对现有技术的缺陷,本发明的目的在于提供一种面向并发多任务的磁盘图处理方法,旨在解决现有的执行并发图任务时i/o开销大的问题。

为实现上述目的,本发明提供了一种面向并发多任务的磁盘图处理方法,包括以下步骤:

将输入图数据转换的边数据块和顶点值集存储至磁盘中;

执行多个图任务时,将顶点值集加载至内存中,且在内存中采用一进一出方式加载边数据块;

基于多个图任务并发访问的边数据块和顶点值集,利用任务更新函数,更新目的顶点值;

当访问的所有边数据块的目的顶点值均更新,且满足收敛条件时,输出最终的顶点值;否则,在内存中循环加载边数据块,并更新目的顶点值;

其中,图数据子块包括边数据块;边数据块用于存储顶点的出射边数据。

优选地,多个图任务并发访问边数据块的方式为:

在访问过程中,多个图任务通过选择性的数据访问方式跳过非活跃状态的边数据块,只访问包含活跃边的边数据块;其中,非活跃状态的边数据块为不包含活跃边数据的边数据块。

优选地,具体执行步骤包括:

(1)将输入图数据转换为p个边数据块和顶点值集;其中,输入图数据中每个顶点赋值一个顶点值;

(2)将顶点值集加载至内存中;

(3)将第k个边数据块加载至内存;k的初始值为1;

(4)当第k个边数据块为活跃状态时,基于多个图任务并发访问的第k个边数据块和顶点值集,利用任务更新函数更新目的顶点值;当第k个边数据块为活跃状态时,转至步骤(5);

(5)将第k个边数据块返回至磁盘;

(6)判断是否k=p,若是,则转至步骤(7),否则,令k=k+1,返回步骤(3);

(7)判断是否符合收敛条件,若符合,输出最终的顶点值;否则,令k=1,返回步骤(3)。

优选地,图数据子块还包括索引结构;一个索引结构对应一个边数据块,索引结构用于记录对应边数据块对应顶点的第一条出射边在边数据块中的偏移量;当执行多个图任务时,与对应边数据块一起加载至内存中。

优选地,当前处理的边数据块加载至内存的方法为:

分别计算顺序加载所有边数据的磁盘读写开销和随机加载活跃边的磁盘读写开销;

其中,当且仅当顶点的顶点值在上一轮迭代中被更新时,顶点被定义为活跃顶点;当且仅当边的源顶点是活跃顶点,边被定义为活跃边;读写开销用读写图数据的总数据量除以磁盘访问带宽计算;

判断顺序加载所有边数据的磁盘读写开销是否小于随机加载活跃边的磁盘读写开销;若是,则选择顺序加载所有边数据,否则选择随机加载活跃边数据。

优选地,将输入图数据转换为边数据块和顶点值的具体步骤为:

将输入图数据中每一个顶点分配一个顶点值,并将顶点值集存储至磁盘中;

将顶点值划分为p个不相交的子区间,且设置每个子区间对应一个边数据块;其中,p的取值要确保每个边数据块的大小小于内存的容量;

将边数据块和顶点值集存储至磁盘中。

优选地,更新目的顶点的方法为:采用push模型读取源顶点,根据多个图任务的更新函数,采用原子操作更新目的顶点值。

优选地,收敛条件为每个子区间的顶点值不再改变。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:

本发明将输入图数据转换为图数据子块和顶点值集,所有的任务均可以统一的访问图数据和顶点值集;在图数据子块中设置索引结构,可以支持多个任务快速访问,同时图数据存储在磁盘中,当需要使用时加载至内存,可以降低磁盘的存储开销。

本发明提供的内存加载边数据块的方法为计算当前顺序加载所有边数据的磁盘读写开销和随机加载活跃边的磁盘读写开销,然后决定采用何种方式加载,降低了磁盘读写的开销。

本发明中多个图任务通过选择性的数据方法方式,跳过非活跃状态的边数据块,访问活跃边的边数据块,避免了无用磁盘数据的加载和磁盘读写的浪费。

本发明采用图数据更新目的顶点,在处理过程中解决了冗余访问和存储开销问题,同时避免了对磁盘带宽的竞争。

附图说明

图1是本发明实施例提供的面向并发多任务的磁盘图处理方法示意图;

图2(a)是本发明实施例提供的有向图g的示意图;

图2(b)是本发明实施例提供的有向图g组织为csr结构过程示意图;

图3是本发明实施例提供的并发图任务对有向图g中子区间1的顶点和边进行处理示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供了一种面向并发多任务的磁盘图处理方法,包括以下步骤:

将输入图数据转换的边数据块和顶点值集存储至磁盘中;

执行多个图任务时,将顶点值集加载至内存中,且在内存中采用一进一出方式加载边数据块;

基于多个图任务并发访问的边数据块和顶点值集,利用任务更新函数,更新目的顶点值;

当访问的所有边数据块的目的顶点值均更新,且满足收敛条件时,输出最终的顶点值;否则,在内存中循环加载边数据块,并更新目的顶点值;

其中,图数据子块包括边数据块;边数据块用于存储顶点的出射边数据。

优选地,多个图任务并发访问边数据块的方式为:

在访问过程中,多个图任务通过选择性的数据访问方式跳过非活跃状态的边数据块,只访问包含活跃边的边数据块;其中,非活跃状态的边数据块为不包含活跃边数据的边数据块。

优选地,具体执行步骤包括:

(1)将输入图数据转换为p个边数据块和顶点值集;其中,输入图数据中每个顶点赋值一个顶点值;

(2)将顶点值集加载至内存中;

(3)将第k个边数据块加载至内存;k的初始值为1;

(4)当第k个边数据块为活跃状态时,基于多个图任务并发访问的第k个边数据块和顶点值集,利用任务更新函数更新目的顶点值;当第k个边数据块为活跃状态时,转至步骤(5);

(5)将第k个边数据块返回至磁盘;

(6)判断是否k=p,若是,则转至步骤(7),否则,令k=k+1,返回步骤(3);

(7)判断是否符合收敛条件,若符合,输出最终的顶点值;否则,令k=1,返回步骤(3)。

优选地,图数据子块还包括索引结构;一个索引结构对应一个边数据块,索引结构用于记录对应边数据块对应顶点的第一条出射边在边数据块中的偏移量;当执行多个图任务时,与对应边数据块一起加载至内存中。

优选地,当前处理的边数据块加载至内存的方法为:

分别计算顺序加载所有边数据的磁盘读写开销和随机加载活跃边的磁盘读写开销;

其中,当且仅当顶点的顶点值在上一轮迭代中被更新时,顶点被定义为活跃顶点;当且仅当边的源顶点是活跃顶点,边被定义为活跃边;读写开销用读写图数据的总数据量除以磁盘访问带宽计算;

判断顺序加载所有边数据的磁盘读写开销是否小于随机加载活跃边的磁盘读写开销;若是,则选择顺序加载所有边数据,否则选择随机加载活跃边数据。优选地,将输入图数据转换为边数据块和顶点值的具体步骤为:

将输入图数据中每一个顶点分配一个顶点值,并将顶点值集存储至磁盘中;

将顶点值划分为p个不相交的子区间,且设置每个子区间对应一个边数据块;其中,p的取值要确保每个边数据块的大小小于内存的容量;

将边数据块和顶点值集,存储至磁盘中。

优选地,更新目的顶点的方法为:采用push模型读取源顶点,根据多个图任务的更新函数,采用原子操作更新目的顶点值。

优选地,收敛条件为每个子区间的顶点值不再改变。

实施例

如图1所示,本发明提供了一种面向并发多任务的磁盘图处理方法,包括以下步骤:

(1)将输入图数据转换为p个图数据子块和顶点值集;

其中,图数据子块包括基于csr(compressedsparserow压缩稀疏行)的边数据块和索引结构;输入图数据中每个顶点赋值一个顶点值;边数据块用于存储对应顶点的出射边数据;索引结构用于记录每个顶点第一条出射边在边数据块中的偏移量;

(2)将顶点值集加载至内存中;

(3)通过比较第k个边数据块的所有边数据和活跃边数据磁盘读写开销,选择顺序加载所有边数据或根据索引结构随机加载活跃边数据至内存;k的初始值为1;

(4)当第k个边数据块为活跃状态时,基于多个图任务并发访问的第k个边数据块和顶点值集,利用任务更新函数更新目的顶点值;当第k个边数据块为活跃状态时,转至步骤(5);

(5)将第k个图数据子块返回至磁盘;

(6)判断是否k=p,若是,则转至步骤(7),否则,令k=k+1,返回步骤(3);

(7)判断是否符合收敛条件,若符合,输出最终的顶点值;否则,令k=1,返回步骤(3)。

优选地,步骤(1)具体包括如下步骤:

将输入图数据中每一个顶点分配一个顶点值,且将顶点值集存储至磁盘中;

将顶点值划分为p个不相交的子区间,且在磁盘中设置每个子区间对应一个边数据块;其中,p的取值要确保每个边数据块的大小小于内存的容量;每个边数据块用于存储对应顶点的出射边数据;

每个边数据块对应设置一个索引结构;索引结构用于记录边数据块对应的每个顶点第一条出射边在边数据块中的偏移量;

边数据块和对应的索引结构构建为图数据子块,存储至磁盘中;

图数据子块均存储在磁盘中,而在计算过程中,每个图数据子块依次被加载到内存中。

图2(a)是本发明实施例提供的有向图g示意图,图2(b)是本发明实施例提供的有向图g组织为基于csr的边数据块的结构示意图;如图2(b)所示,其具体过程为:

(1.1)将有向图g中的顶点划分为两个不相交的子区间1(包括顶点值1,2,3)和子区间2(包括顶点值4,5,6);

(1.2)为每个子区间在磁盘里对应创建一个边数据块结构(edgeblock),以存储此子区间顶点的出射边数据;图2(a)被划分为边数据块1和边数据块2;

(1.3)为每个边数据块创建一个索引结构,用于存储每个顶点的第一条出射边在edgeblock中的偏移量;其中,边数据块和索引结构构成图数据子块;

(1.4)将2个图数据子块存储在磁盘中。

优选地,步骤(3)根据第k个边数据块的磁盘读写开销,选择顺序加载或根据索引结构随机加载所有边数据至内存;具体包括如下步骤:

(3.1)分别计算当前顺序加载所有边数据的磁盘读写开销和随机加载活跃边的磁盘读写开销;

一个顶点被定义为活跃顶点,当且仅当该顶点的顶点值在上一轮迭代中被更新;一条边被定义为活跃边,当且仅当该条边的源顶点是活跃顶点;

读写开销用读写图数据的总数据量除以磁盘访问带宽计算;

(3.2)判断顺序加载所有边数据的磁盘读写开销是否小于随机加载活跃边的磁盘读写开销;若是,则选择顺序加载所有边数据,否则选择随机加载活跃边数据;

步骤(4)根据选择的磁盘i/o访问方式加载边数据块,使得多个并发图任务对图数据子块和源顶点进行访问和目的顶点值进行更新,具体包括以下步骤:

(4.1)边数据块访问:在每轮迭代处理中,每个边数据块被依次加载到内存中以实现并发图计算(concurrentgraphprocessing,cgp)任务的共享访问;此外,每个cgp任务的顶点值在步骤(2)时也被同时加载;在访问的过程中,某个边数据块可能不再包含活跃边数据,即所有cgp任务都不再需要访问这个边数据块的边数据,在这种情况下,通过选择性的数据访问跳过这些非活跃状态的边数据块,而只访问包含活跃边的边数据块;

(4.2)并行处理数据块:当每个边数据块被加载到内存中后,相关的cgp任务(在该edgeblock中存在活跃边)开始并发的访问edgeblock中的边数据,并执行目的顶点值的更新过程;当每个edgeblock被所有相关的cgp任务处理完之后,内存开始加载下一个edgeblock;

(4.3)更新传播:在处理每个边数据块中的边数据时,graphcp采用push模型读取源顶点数据并更新目的顶点;更新顶点的过程按照每个cgp任务的特定的更新函数进行;同时,在更新目的顶点时使用原子操作(atomicoperation)以保证计算结果的一致性;

图3是本发明实施例提供的并发图任务对有向图g中子区间1的顶点和边进行处理的示意图;系统需要处理三个cgp任务,包括一个pagerank图任务,一个connectedcomponents(cc)图任务和一个singlesourceshortestpath(sssp)图任务;系统也将任务图与基于应用的顶点属性值解耦合,使得多个cgp任务可以共享一份图数据;同时,每个cgp任务可以维护自身应用特定的顶点值,这些顶点值在计算过程中不断被更新直到相应的cgp任务达到收敛状态;

如图3所示,当边数据块1被加载到内存后,这些cgp任务将其作为共享子图进行并发的访问和处理;随后,每个cgp任务按照push更新模型更新自身的应用特定的顶点值,即从每条边的源顶点读取数据,然后调用相应的更新函数更新其目的顶点值;当所有边数据块都被cgp任务处理完之后,系统开始执行下一轮迭代,直到所有cgp任务达到收敛状态;

步骤(7)判断是否达到收敛条件,若是,输出最终的顶点值;否则,令k=1,返回步骤(3);其中,收敛条件由用户预设;本实施例中,当每个子区间的顶点值{1,2,3}和{4,5,6}不被改变的时候,达到收敛条件;

系统达到收敛条件,结束迭代处理,并输出图数据中的顶点值。

本发明与现有技术相比,存在以下优势:

本发明将输入图数据转换为图数据子块和顶点值集,所有的任务均可以访问统一图数据和顶点值集;在图数据子块中设置索引结构,可以支持多个任务快速访问,同时图数据存储在磁盘中,当需要使用时加载至内存,可以降低磁盘的i/o访问开销。

本发明提供的内存加载边数据块的方法为计算当前顺序加载所有边数据的磁盘读写开销和随机加载活跃边的磁盘读写开销,然后决定采用何种方式加载,降低了磁盘读写的开销。

本发明中多个图任务通过选择性的数据方法方式,跳过非活跃状态的边数据块,访问活跃边的边数据块,避免了无用磁盘数据的加载和磁盘读写的浪费。

本发明采用图数据更新目的顶点,在处理过程中解决了冗余访问和存储开销问题,同时避免了对磁盘带宽的竞争。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1