一种图结构感知的图处理方法及装置与流程

文档序号:15146331发布日期:2018-08-10 20:29阅读:171来源:国知局

本发明涉及数据处理技术领域,尤其涉及一种图结构感知的图处理方法和图处理装置。



背景技术:

图是以节点(即顶点)和关系(即顶点连线构成的边)为基本元素构成的对大数据或人类行为进行抽象表达来构建计算模型的拓扑关系模型。图的本质是由具有相互关联性的多个数据组成的一种数据结构。该数据结构能够有效的表达数据之间的关联性,通过获取数据的关联性可以从噪音很多的海量数据中抽取有用的信息。例如,对于一个消费者的原始购买行为,有两类节点:用户和产品,关系指的是购买行为。无数个消费者的购买行为形成了具有关联性的大数据结构。通过对购物者之间的关系进行建模计算,便可以找到爱好相似的用户,并为之推荐商品。现有并行计算框架mapreduce还无法满足复杂的关联性计算,同时,基于图计算出现了多种计算框架,例如,专注于图结构化存储与查询的图数据库neo4j和infinitegraph,google推出的pregel,cmu推出的graphlab,spark的graphx。

随着大数据时代的来临,越来越多大数据应用需要以图的形式描述数据,进而通过迭代方式对其加以处理。例如,搜索服务(如google)采用pagerank算法进行结果排序,社交网络(如facebook)使用clustering算法分析用户群落,知识共享网站(如wikipedia)使用namedentityrecognition算法识别文本信息,视频网站(如netflix)基于collaborativefiltering算法提供影视推荐等。相关研究指出,图计算应用在计算和存储上的特性造成面向数据的并行编程模型无法提供高效的支持,对数据间关联性的描述手段的缺乏以及对迭代计算的低效支持可能造成数倍乃至数十倍的性能损失。对高效的大规模图计算(graphcomputation)系统的迫切需求促使其成为并行与分布式处理领域急需解决的重要问题之一。

同时大多数图处理方法将底层图数据看作黑盒,缺少基于图结构的动态图划分和图处理研究。而真实世界中图结构是不断变化的,经过迭代,图划分块中的大量图顶点可能会收敛。少数活跃顶点的频繁访问可能会导致整个图划分块包括收敛的反复加载,但这些收敛顶点是不需要访问和处理的,导致内存带宽和缓存的严重浪费。

目前的划分方法既没有根据数据相关性划分图数据,也没有考虑图划分块的结构特征,更没有根据每个图划分块的结构特性采取不同的调度方案。现有的例如是powerswitch、powerlyra、graph等系统都没有解决这些问题。



技术实现要素:

针对现有技术之不足,本发明提供一种用于图结构感知的图处理方法和图处理装置。

所述图处理方法包括以下步骤:基于顶点的热度值划分热块和冷块。基于顶点相邻两次的迭代计算结果分别获得热块和冷块的块状态度。在进行每t1轮迭代情况下对所述热块进行重新划分。划分后仍存在热块的情况下,自适应调度冷块和/或热块进行计算。划分后不存在热块且整张图不收敛的情况下。随后进行的每轮迭代均调度状态度最大的冷块进行计算直至整张图收敛。基于所有块状态度之和确定整张图迭代计算后的收敛性。

根据一种优选实施方式,所述图处理方法还包括以下步骤:在进行初次迭代的情况下,统计所有度数为零的顶点并将其划入死块中。创建用于存储所有顶点入度和出度的第一图顶点度数表和用于存储邻居顶点位置的第二图顶点度数表,并创建用于存放顶点的当前次计算结果的第一图顶点值表和用于存放顶点的前一次计算结果的第二图顶点值表。基于第一图顶点值表和第二图顶点值表中存储的计算结果获得顶点的状态度和块的块状态度,同时创建用于存储块id和块状态度的块状态表并基于顶点的热度值划分热块和冷块。所有顶点均被标记划分至指定的块后,初始化所有块的所述块状态度表并输出初始分区。

根据一种优选实施方式,所述图处理方法还包括步骤:判断是否为初次迭代。其中,在初次迭代的情况下,基于完成所述死块的计算后再调度热块中状态度最大的块进行计算,并基于所有块状态度之和判断整张图迭代计算后的收敛性。在整张图不收敛的情况下,进入后续迭代。

根据一种优选实施方式,所述图处理方法还包括步骤:判断是否为每t1轮迭代。其中,在每t1轮迭代的情况下,每t1轮迭代后对所述热块进行重新划分。在划分后仍存在热块的情况下,自适应调度冷块和/或热块进行计算。在划分后不存在热块且基于所有块状态度之和判断整张图不收敛的情况下,进入后续迭代。

根据一种优选实施方式,所述图处理方法还包括步骤:判断是否为每t2轮迭代。其中,在每t2轮迭代的情况下,每t2轮迭代调度热块中状态度累计最高的n2个块和冷块中块状态度累计最高的n1个块进行计算,并基于所有块状态度之和判断整张图迭代计算后的收敛性。在整张图不收敛的情况下,进入后续迭代。

根据一种优选实施方式,所述基于顶点的热度值划分热块和冷块的步骤包括:采用图顶点热度函数:热度值=(1-a)*vo-a*vi计算得到所述热度值,其中a<0.5,vo和vi分别是顶点的入度和出度。设定第一阈值,热度值大于第一阈值的顶点标记为热顶点并划分至热块中进行存储。热度值小于第一阈值的顶点标记为冷顶点并划分至冷块中进行存储。

根据一种优选实施方式,所述块状态度的计算包括以下步骤:获取顶点的当前次迭代计算结果和前一次迭代计算结果并计算两次计算结果的差值作为顶点的顶点状态度。同一个块中所有顶点的所述顶点状态度之和除以顶点总数构成所述块状态度。

根据一种优选实施方式,在进行除每t2轮迭代之外的任一轮迭代的情况下,所述任一轮迭代均只计算热块中块状态度累计最高的n个块,其中,n小于系统线程数。

一种图结构感知的图处理装置包括相互交互的中央处理器和图形处理器,所述中央处理器被配置为在所述图形处理器依据所述热度值和/或所述顶点状态度对顶点进行降序排序的情况下基于所述热度值将顶点划分至热块和冷块并计算热块和冷块的块状态度后进行迭代并判断整张图迭代计算后的收敛性的工作状态。其中,所述中央处理器在进行每t1轮迭代计算的情况下被配置为对所述热块进行重新划分并调度热块中状态度最大的块进行计算的工作形态。所述中央处理器在进行每t2轮迭代计算的情况下被配置为调度热块中块状态度累计最高的n2个块和冷块中块状态度累计最高的n1个块进行计算的工作状态。

根据一种优选实施方式,所述图处理装置还包括与所述中央处理器和所述图形处理器均彼此交互的输入单元和输出显示单元。其中,所述中央处理器和所述图形处理器被配置为共享同一个存储空间且所述中央处理器能够直接存取所述图形处理器的存储地址的工作状态。

本发明的有益技术效果:

(1)本发明将度数为零的顶点优先处理,使其单次迭代就能达到收敛,仅需对图进行一次遍历,复杂度为线性,远小于对图进行迭代直至收敛的复杂度,同时本发明引入热度值以区分冷/热顶点,使状态变化更大更频繁的热顶点有较高的优先级,更快达到收敛,进而减少了整张图达到收敛所需的平均更新次数。

(2)本发明的图处理方法在经过特定次数的迭代后,对热顶点个数大幅下降的分区进行一次重新划分,划分过程考虑了图结构变化造成的负载不均问题,有效地控制了动态分区时图顶点移动产生的计算开销。

(3)本发明将活跃度高、更新频繁的图顶点放在同一个高速缓冲存储器中并一同加载进入内存,减少了不活跃顶点的加载,极大的降低了不活跃顶点导致的i/o开销。

附图说明

图1是本发明优选的图处理方法的数据处理流程图;

图2是本发明优选的图处理方法的另一优选的数据处理流程图;

图3是本发明优选的图数据预处理的流程示意图;

图4是本发明优选的图处理装置的应用示意图;和

图5是本发明优选的图处理装置的模块交互示意图。

附体标记列表

1:中央处理器2:图形处理器3:输入单元

4:输出显示单元5:图数据资源库6:图数据存储单元

具体实施方式

下面结合附图进行详细说明。

为了便于理解,在可能的情况下,使用相同附图标记来表示各附图中共同的相似元件。

如在整篇本申请中所使用的那样,词语“可以”系容许含义(即,意味着有可能的)而不是强制性含义(即,意味着必须的)。类似地,词语“包括”意味着包括但不限于。

短语“至少一个”、“一个或多个”以及“和/或”系开放式表达,它们涵盖操作中的关联与分离两者。例如,表述“a、b和c中的至少一个”、“a、b或c中的至少一个”、“a、b和c中的一个或更多个”、“a、b或c”和“a、b和/或c”中的每个分别指单独a、单独b、单独c、a和b一起、a和c一起、b和c一起或a、b和c一起。

术语“一种”或“一个”实体指的是该实体中的一个或多个。这样,术语“一”(或“一”)、“一个或多个”以及“至少一个”在本文中可以交换地使用。还应该注意,术语“包括”、“包含”和“具有”可以交换地使用。

如本文中所使用的那样,术语“自动的”及其变型是指当执行过程或操作时在没有实质性人工输入的情况下完成的任何过程或操作。然而,如果在执行该过程或操作之前接收到该输入,则该过程或操作可以是自动的,即使该过程或操作的执行使用了实质性或非实质性的人工输入。如果这样的输入影响该过程或操作的执行方式,则该人工输入被认为是实质性的。准予执行该过程或操作的人工输入不被视为“实质性的”。

实施例1

如图1所示,本发明提供一种图结构感知的图处理方法,包括以下步骤:

s1:基于顶点的热度值划分热块和冷块;

s2:基于顶点相邻两次的迭代计算结果分别获得热块和冷块的块状态度;

s3:在进行每t1轮迭代情况下对所述热块进行重新划分,划分后仍存在热块的情况下,自适应调度冷块和/或热块进行计算,划分后不存在热块且整张图不收敛的情况下,进行仅调度冷块中块状态度最大的块进行计算的每t2轮迭代;

s4:基于所有块状态度之和确定整张图迭代计算后的收敛性。

为了便于理解,下面详细介绍本发明的图处理方法的各个步骤。

s1:基于顶点的热度值划分热块和冷块。

步骤s1是本发明的图处理方法的图数据预处理阶段的重要步骤之一。顶点的热度值是以顶点度数为变量参数的函数的计算结果的总称。表征的是顶点的活跃等级,热度值高的图顶点更活跃且其收敛所需的条件较热度值低的图顶点更易达到。优选的,热度值高的顶点具有比热度值低的顶点更优先的处理级别。

优选的,顶点的热度值的计算是基于图顶点的入度和出度进行计算得到的。在图数据处理过程中,基于入度大的顶点易受邻居顶点的影响,其收敛所需的条件更为苛刻,顶点的入度是与顶点的热度值呈负相关。基于出度大的顶点会影响更多的邻居顶点,顶点的出度与顶点的热度值呈正相关。优选的,入度大的顶点具有较其邻居顶点更次级的处理级别,出度大的顶点具有较其邻居顶点更优先的处理级别。通过邻居顶点带动入度大的顶点或出度大的顶点带动其邻居顶点的方式能够使得各顶点更快的趋于收敛。

优选的,顶点热度值的计算公式为:热度值shd=(1-a)*vo-a*vi计算得到所述热度值,其中a<0.5,vo和vi分别是顶点的入度和出度。基于图顶点入度和出度可以获得计算得到相应顶点的热度值shd。为了基于热度值shd对图进行初始划分,引入用于区分冷/热顶点的第一阈值d1,其中,热度值shd大于第一阈值d1的顶点标记为热顶点并划分至热块中进行存储,热度值shd小于第一阈值d1的顶点标记为冷顶点并划分至冷块中进行存储,至此,完成基于顶点的热度值划分热块和冷块。热度高的图顶点决定整张图收敛所需的迭代次数,是整张图是否能够快速收敛的关键因素。通过划分热顶点和冷顶点减少了低活跃顶点频繁加载带来的缓存缺失,能够有效地提高缓存命中。

优选的,第一阈值d1的取值基于用户定义的样本大小和热顶点的比例共同决定。例如:顶点个数v为10000的图数据,用户定义的样本大小为v′=1000,热顶点的比例r为0.1,则第一阈值为d1shd(v(v‘*)),即样本中第100个顶点的shd。

优选的,参数a表示的是一个可调节的参数,在实际计算过程中根据每个数据集进行动态调节以期达到性能最优。a值根据输入图数据的结构进行调整。例如,对于路网这样的数据集,每个顶点拥有的入边和出边分布均匀,大多数图顶点活跃度相近,整张图热度分布均匀,a值趋近于0.5。但是对于微博上用户关注的数据集,少数明星会有大量的关注者,而大多数人的关注者很少,这就导致数据倾斜,顶点出边对于整张图收敛的影响被放大,因此a值会相应趋近于0。

优选的,在基于顶点的热度值划分热块和冷块之前,还包括步骤s0:识别筛选度数为零的图顶点并对其进行单独处理。其中,度数为零的图顶点的处理优先级别最高且仅进行一次迭代计算处理。在度数为零的图顶点迭代计算完成的情况下,将其划分至死块中进行存储。在将所有度为零的图顶点进行一次迭代计算并划分至死块中进行存储的情况下,进行步骤s1。度数为零的图顶点最优先处理可以使其单次迭代便能够达到收敛,处理完成后将其存储至死块并不再进行调用迭代能够有效地降低迭代处理开销。

优选的,为了方便对图顶点的访问,构建两个图顶点度数表。优选的,两个图顶点度数表分别为点表和边表。其中,点表用于存放所有图顶点的id、入度、出度和热度值,边表用于存放图顶点的id和邻居顶点的id。在应用过程中根据id访问图的相应各顶点。

s2:基于顶点相邻两次的迭代计算结果分别获得热块和冷块的块状态度。

在图数据处理中,图顶点状态度用于衡量图顶点的活跃程度,从而可以优先处理高活跃度的图顶点,使整张图能够加速收敛,并且将高活跃度的顶点尽量一起加载可以减少缓存缺失。状态度值越高表示该图顶点状态变化大,更活跃同时对于邻居顶点影响大,而只有当这些状态度高的顶点接近收敛时,其邻居状态度低的顶点才有可能达到收敛,否则状态度低的顶点将会不断被更新。图顶点状态度是指本次和上一次计算之间,顶点算法执行结果之差的累计。不同算法,对于顶点状态度的定义和计算不同。

例如,对于pagerank算法,因为计算pagerank值时需要除以边,所以其计算的值跟顶点出边和入边有直接关系,而出度和入度会直接影响到顶点收敛,因此pagerank计算的差值可以用于衡量顶点活跃情况。即对于pagerank算法,状态度定义为本次和上一次计算之间的顶点算法执行结果之差的累计。具体地,针对于pagerank算法,默认第一次计算得到1,本次不累计;第二次计算得到5,差值为4,累计状态度为4;第三次计算得到7,差值为2,累计状态度为6;第四次计算得到6,差值为1,累计状态度为7。

例如,对于sssp算法,顶点状态度的计算公式为:计算单源最短路径时涉及到累计边的条数,所以点的活跃情况就不适用计算结果之差来表示,而是通过两次计算结果最小值来表示,通过对其的累计,判断该顶点活跃度是否有所变化,因此对于sssp算法,状态度定义为本次和上一次计算之间的顶点算法执行结果的最小值的累计。例如,对于cc算法,顶点状态度的计算公式为:delta=max{componentscurr,componentsnext}。所求为最大联通分量,故顶点状态度的定义为本次和上一次计算之间的顶点算法执行结果的最大值的累计。

在图数据处理中,块状态度用于衡量块的活跃程度,从而优先处理活跃程度高的块。块状态度值越高表示块中有较多状态度高的顶点,优先处理这些顶点可以加速算法收敛。块状态度的定义是热块或冷块中所有图顶点的顶点状态度之和除以顶点个数。因为第一步就根据热度进行了划分,一般来说热顶点状态度较高冷顶点状态度较低,所以不会出现块中存在多数低状态度的顶点,而少数高状态度的顶点使整个块状态度提高的现象,因此以块中顶点状态度的平均值作为整个块的状态度是合理的。

优选的,创建一个块状态度表,分别存储有块id和块状态度两个属性值。为了方便调用计算结果计算状态度值,创建两个图顶点值表。其中,第一图顶点值表用于存储图顶点的本次计算结果值,第二图顶点值表用于存储图顶点的相对于本次计算结果的上一次计算结果值。

s3:在进行每t1轮迭代情况下对所述热块进行重新划分,划分后仍存在热块的情况下,自适应调度冷块和/或热块进行计算,划分后不存在热块且整张图不收敛的情况下,进行仅调度冷块中块状态度最大的块进行计算的每t2轮迭代。

优选的,热块的重新划分过程包括以下步骤:基于顶点的热度值公式计算热块中所有未收敛的顶点的热度值;热度值shd大于第一阈值d1的顶点重新标记为热顶点并保留存储在热块中,热度值shd小于第一阈值d1的顶点重新标记为冷顶点并将其划分至冷块中进行存储;更新块状态度表。热块中的图顶点经过特定次数的迭代后,基于热顶点的不断收敛使得热顶点的个数大幅下降,为了降低计算开销,此时可以对热块进行一次重新划分。例如,顶点个数为735322个点,样本容量为73532个点时,每10次迭代后进行热块的重新划分,每15次迭代后进行热块和/或冷块的自适应调度计算。通过上述方式,可以在保证算法结果正确性的前提下,提高收敛速率降低缓存缺失率。

优选的,热块划分后仍存在热块的情况下,自适应调度冷块和/或热块进行计算。例如,当重新划分后的仍存在热块时,每轮迭代选择热块中状态度最高的n+m个块进行计算,每t2轮迭代选择冷块中状态度累计最高的n个块和热块中状态度前m进行计算,其中m和n的取值跟当前系统cpu数相关,如,当单机且cpu数为10时,n和m分别取值6和4。分区间顶点按id顺序存储,调用某个块进行计算,即为按顺序读取该块中id最小到id最大的顶点。

优选的,划分后不存在热块的情况下,判断整张图是否收敛。在整张图收敛的情况下,结束计算并输出结果。在整张图不收敛的情况下,进行仅调度热块中块状态度最大的块进行计算的每t2轮迭代。优选的,“块”在物理上指的是一个cache块,根据第一阈值d1划分的热顶点和冷顶点分别存于多个cache块中。比如,热度大于50的顶点为热顶点,热顶点有200个;反之为冷顶点,冷顶点有2000个。一个cache块可以存放100个顶点,于是,热块有2个,冷块有20个。

s4:基于所有块状态度之和确定整张图迭代计算后的收敛性。

优选的,判断整张图是否收敛的步骤包括:基于块状态度表中存储的块状态度值计算得到所有块状态度值之和m。设定第二阈值d2,在所有块状态度值之和m小于第二阈值d2时,判定整张图收敛,结束计算并输出计算结果。优选的,第二阈值d2具体值由用户自定义,默认为0.000001。算法达到收敛的状态度理论值为0,而从0.000001到0需要相对较长的时间,为提升性能我们将状态度为0.000001视为收敛,算法结果能够保证在误差允许范围内。

优选的,每t1轮迭代或每t2轮迭代是指以t1或t2为基数的整数倍轮次的所有轮次的迭代。例如,当t1为10时,每t1轮迭代包含轮次为10、20、30…n*t1的所有轮次的迭代。其中,n为大于等于1的整数。每t1轮迭代后对热块进行重新划分是指轮次为10、20、30…n*t1的所有轮次的迭代均需要对热块进行重新划分。

实施例2

实施例2是对实施例1的进一步优化改进,重复的内容不再赘述。

在对图顶点进行迭代处理前,对图顶点进行预处理。如图3所示,一种对图顶点进行预处理的方法,包括以下步骤:

s1:识别判断所有度数为零的顶点,将其标记为死顶点并顺序存放到死块。

s2:图顶点初始化:创建两个图顶点度数表和两个图顶点值表。其中,两个图顶点度数表分别为点表和边表。点表用于存储图顶点的id、入度、出度和热度值。边表用于存放图顶点id和邻居图顶点id。第一图顶点值表用于存储顶点本次的计算结果,第二图顶点值表用于存储基于本次条件下的相同顶点的上一次计算结果。

s3:分区块表格初始化:创建一个块状态度表用于存储块id和块状态度。

s4:图顶点初始分区:根据顶点热度值计算公式计算图顶点热度,并更新点表中的初始热度值。在图顶点热度值高于第一阈值d1的情况下,则标记为热顶点,并划分到热块。在图顶点热度值低于第一阈值d1的情况下,则标记为冷顶点,并划分到冷块。

s5:在所有顶点均已标记并被划分至相应的块中存储的情况下,初始化块状态度表并输出初始分区。

通过将图顶点按照热度值划分为热顶点和冷顶点,使状态变化更大更频繁的热顶点有较高的优先级,更快达到收敛,进而减少了整张图达到收敛所需的平均更新次数。

优选的,完成图顶点的预处理后,对图顶点进迭代计算处理。如图2所示,在进行初次迭代的情况下,依次计算所有死块中的顶点和热块中块状态度最大的n个块进行计算。在基于所有块状态度之和m与第二阈值d2的大小关系确定整张图不收敛的情况下,进入后续迭代。在基于所有块状态度之和m与第二阈值d2的大小关系确定整张图收敛的情况下,结束计算并输出计算结果。冷块和热块的计算过程相同,区分冷热是为了减少不活跃顶点的计算和处理带来的冗余开销。优先处理高活跃度的图顶点,可以使整张图能够加速收敛,并且将高活跃度的顶点尽量一起加载可以减少缓存缺失。同时,状态度值越高表示该图顶点状态变化大,更活跃同时对于邻居顶点影响大,而只有当这些状态度高的顶点接近收敛时,其邻居状态度低的顶点才有可能达到收敛,首次迭代过程中优先计算热块中状态度高的顶点可以避免状态度低的顶点将会不断被更新。优选的,根据顶点热度进行预划分后形成的多个热块和多个冷块,在初次迭代过程中,顺序选取id最小到最大的热块进行计算。

在完成初次迭代且确定图不收敛的情况下,进行后续迭代。优选的,判断本次迭代是否为每t1轮迭代。在本次迭代是每t1轮迭代的情况下,基于热度值计算公式计算当前热块中所有顶点的热度值以重新划分热块,并更新块状态度表。在重新分区后仍存在热块的情况下,自适应调度冷块或热块进行计算。在重新分区后不存在热块且图不收敛的情况下,进行后续迭代处理。

优选的,除每t1轮迭代和每t2轮迭代之外每一轮迭代的过程为:仅计算热块,不计算冷块,冷块只有每t2轮才会选择其中状态度累计最高的n个进行计算。其中,n小于系统线程数。

优选的,在进行每t1轮迭代情况下调用预分区函数和/或图划分函数对热块进行重新划分。其中,调用预分区函数根据顶点热度进行初始划分。调用图划分函数根据顶点状态度进行重划分。初始划分和重划分的划分过程相同,仅仅是依据不同,实现时代码类似,形参的值不同。例如,初始划分将顶点分为冷顶点和热顶点,实现时按照热度重新了排序,并用一个参数barrier表示冷热顶点的边界。重划分不过是移动barrier,如200个热顶点和2000个冷顶点,则设置barrier为201,当热顶点活跃度降低后,barrier逐渐减小。

在本次迭代不是每t1轮迭代的情况下,判断本次迭代是否是每t2轮迭代。优选的,在本次迭代是每t2轮迭代的情况下,分别调度热块中块状态度累计最高的n2个块和冷块中块状态度累计最高的n1个块进行计算,计算完成后更新状态度表。其中,n1+n2=n,n小于系统线程数。例如,每t2轮迭代选择冷块中状态度累计最高的n个块和热块中状态度前m进行计算,其中m和n的取值跟当前系统cpu数相关,如,当单机且cpu数为10时,n和m分别取值6和4。分区间顶点按id顺序存储,调用某个块进行计算,即为按顺序读取该块中id最小到id最大的顶点。在本次迭代不是每t2轮迭代的情况下,调用热块中块状态度最大的块进行计算并判断图是否收敛。在图收敛的情况下,结束计算并输出计算结果。在图不收敛的情况下,进入后续迭代。

实施例3

本实施例是对实施例1和实施例2的进一步改进,重复的内容不再赘述。

一种图结构感知的图处理方法,包括图数据预处理阶段、图结构动态划分阶段和图处理自适应调度阶段。其中,图数据预处理阶段根据顶点入度和出度计算顶点热度,顺序读取顶点热度,并将相应顶点划分到热块和冷块。图结构的动态划分阶段,每t1轮迭代调用图划分函数对热块进行重新划分。在重划分后无热块的情况下,判断整张图是否收敛。在整张图收敛的情况下结束计算输出结果。在整张图未收敛的情况下仅调度冷块计算。优选的,在重划分后有热块的情况下,则自适应调度冷块/热块进行计算。图处理自适应调度阶段,每轮迭代只处理热块中状态度最大的块,每t2次迭代调度冷块和热块中状态度最大的块进行计算。

优选的,图数据预处理阶段包括如下子步骤:

s1:在首轮迭代计算热块之前,统计所有度数为零的顶点,后续计算中将不再考虑这些顶点。

s2:图顶点初始化。具体而言,将会创建两个图顶点度数表和两个图顶点值表。两个图顶点度数表分别点表和边表。点表用于存放所有图顶点的入度和出度,具体包括图顶点的id、入度、出度、热度四个属性值,在实现中根据id访问图的各顶点。边表用于存放邻居图顶点位置,包括图顶点id和邻居顶点id两个属性值,根据id访问图顶点。两个图顶点值表curr和last,分别存放图顶点本次计算和上次计算的值,用于计算顶点的状态度,从而获取到每个块的状态度。

s3:分区块表格初始化。具体而言,将会创建一个块状态度表。块状态度表包括块id和块状态度两个属性值。

s4:对图顶点进行初始分区。根据出度和入度计算图顶点热度,并进行更新。若图顶点热度高于第一阈值d1,则标记为热顶点,并划分到热块;若图顶点热度低于第一阈值d1,则标记为冷顶点,并划分到冷块。

s5:判断是否所有顶点都已标记。若是,则初始化所有块的块状态表,输出初始分区;否则,返回步骤s3。

优选的,图结构动态划分阶段包括如下子步骤:

s6:每t1轮迭代后,对当前所有热块重新分区。计算当前所有热块中顶点的热度,调用图划分函数重新划分热块,并更新所有块状态度表。

s7:若重新分区后不再有热块,判断整张图是否收敛。计算所有块状态度,若块状态度小于第二阈值d2,则视为图收敛,输出计算结果。否则继续计算,但不再进行图划分。

优选的,图处理自适应调度阶段包括如下子步骤:

s8:每轮迭代仅计算热块中块状态度最高的n个块,并更新块状态度表。其中,0<n<threads,threads为系统线程数。

s9:每t2轮迭代选取热块中块状态度累计最高的n2个块和冷块中块状态度累计较高的n1个块进行计算,更新块状态度表。其中,n1+n2=n。

s10:若所有块状态度之和小于第二阈值d2,则视为图收敛,输出计算结果;否则,返回步骤s8继续计算。

实施例4

本实施例是对实施例1、实施例2和实施例3的进一步改进,重复的内容不再赘述。

本实施例提供一种图结构感知的图处理装置。如图4和图5所示,图处理装置包括相互交互的中央处理器1和图形处理器2。中央处理器1被配置为在图形处理器2依据热度值和/或顶点状态度对顶点进行降序排序的情况下基于热度值将顶点划分至热块和冷块并计算热块和冷块的块状态度后进行迭代并判断整张图迭代计算后的收敛性的工作模式。其中,中央处理器1在进行每t1轮迭代计算的情况下被配置为对热块进行重新划分并调度热块中块状态度最大的块进行计算的工作形态。中央处理器1在进行每t2轮迭代计算的情况下被配置为调度热块中块状态度累计最高的n2个块和冷块中块状态度累计最高的n1个块进行计算的工作模式。当数据集规模庞大时,传统基于cpu的方法会大大增加时间复杂度,降低系统性能。因此本发明提出一种异构内存图处理方案,将顶点根据热度和状态度降序排序的过程交由gpu完成,缩短计算时间。优选的,图形处理器2根据排序算法对顶点进行降序排序。排序算法可以插入排序算法、选择排序算法、交换排序算法、归并排序算法和基数排序算法中的一种。

优选的,图处理装置还包括与中央处理器1和图形处理器2均彼此交互的输入单元3和输出显示单元4。

优选的,所述图结构感知的图处理装置还包括能够按照有线和/或无线的方式与任意图数据资源库5进行交互的图数据存储单元6。具体的,图数据存储单元能够按照例如是联网申请、离线下载、无线传输等方式获得图数据资源库5中的图数据。

优选的,如图5所示,处理器包括中央处理器1和图形处理器2。其中,中央处理器1集成有多个算术逻辑运算器alu、多个高速缓冲存储器cache和存储有图处理算法的算法库。算数逻辑运算器alu基于算法库中存储的图处理算法对图数据进行热度划分、块划分、迭代计算等处理。高速缓冲存储器cache用于存储经图处理算法处理后形成的数据。图形处理器2集成有多个算术逻辑运算器alu、多个高速缓冲存储器cache和存储有排序算法的算法库。其中,算法逻辑运算器alu基于算法数据库中存储的排序算法对中央处理器1计算得到热度值已知的顶点按热度值的大小进行排序。优选的,中央处理器1和图形处理器2被配置为共享同一个存储空间且中央处理器1能够直接存取图形处理器2的存储地址的工作状态。

为了便于理解,本发明的数据处理装置对图数据进行处理时各模块的相互交互流程如下所述。

输入单元3用于接收外界中输入的图数据。优选的,输入单元3可以是带有数据接口和/或无线通信模块的例如是手机、平板的智能移动终端。输入单元3按照数据接口和/或无线通信的方式与处理器和图数据资源库5进行交互。优选的,输入单元3接收用户输入的图数据和/或基于图数据资源库获得的图数据并将其写入图数据存储单元6和/或处理器中。例如,输入单元3将用户输入的图数据存入图数据存储单元6中进行备份。每次从图数据存储单元6中的图数据中读入一个批次的顶点,将该批次的顶点作为一个数据集写入一个高速缓冲存储器cache中。当一个高速缓冲存储器cache中存储的数据集达到其最大容量时,将下一批次的顶点存入另一个高速缓冲存储器cache中。优选的,中央处理器1通过通信端口与高速缓冲存储器cache进行数据传输通信。中央处理器1基于通信端口依次顺序读入高速缓冲存储器中的顶点并运用图数据处理算法对其顶点热度、顶点状态度和/或块状态度进行计算后返回高速缓冲存储器中以更新块状态度表。优选的,图形处理器2通过通信端口与高速缓冲存储器cache进行数据传输通信。图形处理器2依据更新后块状态度表中的id依次顺序读取顶点的顶点热度、顶点状态度和/或块状态度后基于排序算法对同一批次的顶点进行排序。优选的,中央处理器1根据顶点的排序结果以图划分函数为基础对顶点进行再次排列组合的。例如,第一批次的顶点中顶点热度值小于第一阈值d1的顶点被划入第一高速缓冲存储器中,顶点热度值大于第一阈值d1的顶点被划入第二高速缓冲存储器中。图数据处理装置包括若干个第一高速缓冲存储器和若干个第二高速缓冲存储器。同理第二批次的顶点按照相同的处理方式进行存储。当第一高速缓冲存储器或第二高速缓冲存储器中的顶点数量达到其存储极限时,多余的顶点自动存入下一个第一高速缓冲存储器或第二高速缓冲存储器中。优选的,每一个第一高速缓冲存储器均是一个冷块,每一个第二高速缓冲存储器均是一个热块。优选的,输出显示单元4可以是显示器、具有显示功能的移动终端。输出显示单元4通过通信端口与处理器连接进行通信。优选的,通信端口可以是串行通信接口、usb接口和com端口中的一种。

本发明的图结构感知的图处理方法及装置是一种适用于大规模图数据计算的高效计算装置,对现有的图算法均表现出良好的性能。

例如,pagerank是根据网页之间相互的超链接计算的技术,是网页排名的要素之一。google用它来体现网页的相关性和重要性,在搜索引擎优化操作中是经常被用来评估网页优化的成效因素之一。pagerank通过网络浩瀚的超链接关系来确定一个页面的等级。google把从a页面到b页面的链接解释为a页面给b页面投票,google根据投票来源和投票目标的等级来决定新的等级。即一个高等级的页面可以使其他低等级页面的等级提升。

以pagerank算法为例,将一个页面看做一个顶点,页面之间的相互链接用有向图中定点的出度和入度表示。本发明的图结构感知的图处理方法及装置能够在预处理阶段筛选出没有任何链接的顶点,减少后续计算量。同时对于需要继续分析计算的顶点进行特征提取,根据顶点度数计算每个页面的热度函数,并在图划分阶段根据第一阈值d1将页面顶点划分到不同图划分块中,热块与冷块分开存储。采用异构存储,cpu和gpu共享同一个存储空间,并且cpu能够直接存取gpu的存储地址。在gpu上对页面热度排序进行计算,能够降低图划分步骤的耗时又不会增加额外的通信开销。当部分页面pagerank值计算完毕后,本发明所提供的图划分方法将对热顶点个数大幅下降的分区进行一次重新划分。相比较而言,本发明所提供的图划分方法既考虑了图结构变化造成的负载不均问题,又很好地控制了动态分区时图顶点移动产生的计算开销。在计算顶点pagerank值时选择状态度较高的顶点,即仅从内存加载状态度更高的热块,使状态变化更大更频繁的热顶点有较高的计算优先级,更快达到收敛,进而减少了整张图达到收敛所需的平均更新次数。

实施例5

本实施例是对前述实施例的进一步改进,重复的内容不再赘述。

在32核cpu、型号inteli7cores、主频1.8ghz、内存16gb、硬盘1tb的测试环境下,基于gemini系统,选择google、amazon和twitter数据集,针对pagerank、cc和bfs算法的获得如下所示的执行时间表,其中,mine表示的是采用本发明的图处理方法获得的执行时间数据。

下面对上表内容进行具体论述。

针对amazon数据集,图顶点是指产品,边是指产品与产品之间是否关联,此时,图是指将产品关联信息进行抽象而成的数据关系模型。

优选的,在gemini系统和google数据集条件下,采用pagerank算法以检索为目的对google数据集的图数据进行迭代处理,经4.62s得到检索结果。在相同的条件下,本发明经过5.02s完成了上述检索过程。

优选的,在twitter数据集条件下,pagerank算法在gemini系统上达到收敛,得出所有顶点(页面)最终的rank值,得到特定顶点(网页)相对于其他顶点(网页)而言的重要程度,需要23.5s。在相同的条件下,采用本发明所述的划分和调度方法经过13.56s完成了上述计算过程,大大缩短pagerank图算法的计算时间。

优选的,cc、pagerank相当于应用层,即上层的图算法。本发明提出的方法相当于处理层,是用于优化上层图算法的。比如加速上层图算法的收敛,降低缓存缺失率等。相比cc、pagerank来说更偏底层。本发明提出了图划分和调度上的优化,并将优化算法应用于gemini系统以对其进行优化。

优选的,针对google数据集,仅需十几轮迭代很快就可以达到收敛,图算法执行时间很短。本发明提出的算法引入的计算时间相对来说就被凸显了,从而使得执行时间高于gemini系统。而需要多轮迭代的大数据集,本发明提出的算法大大缩减多轮迭代的时间,同时引入的计算时间被平均分摊到之后的迭代中,优化效果凸显,冗余时间被分摊弱化了。

虽然已经详细描述了本发明,但是在本发明的精神和范围内的修改对于本领域技术人员将是显而易见的。这样的修改也被认为是本公开的一部分。鉴于前面的讨论、本领域的相关知识以及上面结合背景讨论的参考或信息(均通过引用并入本文),进一步的描述被认为是不必要的。此外,应该理解,本发明的各个方面和各个实施例的各部分均可以整体或部分地组合或互换。而且,本领域的普通技术人员将会理解,前面的描述仅仅是作为示例,并不意图限制本发明。

已经出于示例和描述的目的给出了本公开的前述讨论。这并不意图将本公开限制于本文公开的形式。在前述的具体实施方式中,例如,为了简化本公开的目的,本公开的各种特征在一个或多个实施例、配置或方面中被组合在一起。实施例、配置或方面的特征可以以除上面讨论的那些之外的替代实施例、配置或方面组合。本公开的该方法不应被解释为反映本公开需要比每个权利要求中明确记载的更多特征的意图。相反,如以下权利要求所反映的,创造性方面在于少于单个前述公开的实施例、配置或方面的所有特征。因此,以下权利要求由此被并入本具体实施方式中,其中每个权利要求其自身作为本公开的单独实施例。

而且,虽然本公开的描述已经包括对一个或多个实施例、配置或方面以及某些变型和修改的描述,但是其他变型、组合和修改也在本公开的范围内,例如在本领域技术人员的技能和知识范围内,在理解了本公开之后。旨在获得在允许的程度上包括替代实施例、配置或方面的权利,所述权利包括那些要求保护的替代的、可互换的和/或等效的结构、功能、范围或步骤的权利,无论这种替代的、可互换的和/或等效的结构、功能、范围或步骤是否在本文中公开,并且无意公开奉献任何可专利的主题。

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