一种GPU上的基于warp重用与着色分区的强连通图检测方法技术

技术编号:25891747 阅读:68 留言:0更新日期:2020-10-09 23:34
本发明专利技术提出一种基于GPU加速的优化线程调度与分区的强连通图检测方法,为使用异构系统进行强连通图检测的方法,通过将每个warp分成多个虚拟warp并分配多个顶点任务、使用着色分区替换传统的WCC分区等方法平衡了线程分配、增加了每次迭代产生的强连通图数目,从而达到提升算法运行效率的目的。

【技术实现步骤摘要】
一种GPU上的基于warp重用与着色分区的强连通图检测方法
本专利技术涉及使用异构系统进行强连通图检测的方法,具体的说是一种GPU上的基于warp重用与着色分区的强连通图检测算法。
技术介绍
图数据是数据处理中一类基础的数据结构,它能够很好地表达出数据之间的关联性,因此在生物、化学、人工智能、社交网络等多个领域得到广泛地应用。强连通图(StronglyConnectedComponents,SCC)是一种基础的图结构,是指有向图中所有顶点两两有向连接的最大子集。虽然强连通图检测是一个很早就开始研究的问题,并且已经有Tarjan算法、Kosaraju算法、Dijkstra算法等优秀的检测方法。但是,这些算法大多是基于深度优先遍历(depth-firstsearch,DFS)的串行算法,其运行时间随着图数据规模的扩大而急剧增加,并且很难并行化。随着通用型的GPU等并行计算设备被广泛应用到高性能计算的应用中,研究人员提出了一些基于GPU的并行强连通图检测算法,这些算法大多基于对中心点的前向遍历与后向遍历所形成区域求交集的方法,并通过分区来增加每次迭代检测的并行性。然而在遍历的过程中,这些算法会为所有未完成检测的顶点中每个顶点分配一个线程或一个warp(包括32个线程的线程组),这些顶点中很多顶点不需要被处理,则分配的线程直接被释放掉,而其他顶点的邻接顶点数目相差很大,导致不同的线程或线程组间严重地负载不均衡。另外,现有的分区方法只是将和其它顶点没有任何连接的顶点分到同一个分区当中,产生的分区数目不是很多。每次迭代检测之后,所有未完成检测的顶点状态全部归零,使得每次检测后的计算结果不能被充分利用。因此,对于当前基于GPU的并行强连通图检测算法中的线程任务分配与分区方法进行优化改进是提升并行强连通图检测算法效率的关键。
技术实现思路
本专利技术提出一种基于GPU加速的优化线程调度与分区的强连通图检测方法,通过将每个warp分成多个虚拟warp并分配多个顶点任务、使用着色分区替换传统的WCC分区等方法平衡了线程分配、增加了每次迭代产生的强连通图数目,从而达到提升算法运行效率的目的。本专利技术的技术方案如下:一种GPU上的基于warp重用与着色分区的强连通图检测方法,包括以下步骤:加载图数据并统一存储格式;对图数据进行第一类剪枝操作,检测出只由一个顶点组成的强连通图1-SCC;进行第一类中心点选取操作,使用入度和出度的积最大的顶点做为中心点;使用warp重用方法从中心点开始并行地前向和后向遍历,得到强连通图和三个分区,其中强连通图为前向和后向均遍历到的顶点与中心点形成的连通图,三个分区为前向遍历到后向未遍历到的顶点,前向未遍历到后向遍历到的顶点,以及前向和后向均未遍历到的顶点所形成的分区;判断是否需要进行第二类剪枝操作,若需要,则进行第二类剪枝操作,检测出由一个顶点组成的强连通图1-SCC和由两个顶点组成的强连通图2-SCC;使用着色分区方法对所述三个分区进行进一步分区,得到更多更小的分区;在所形成的小分区中进行第二类中心点选取操作,选取每个分区中初始颜色值与分区颜色值相同的顶点做为中心点,从中心点开始前向遍历,将遍历到的顶点与中心点组成一个强连通图,未被遍历到的顶点形成新的分区;进行第三类中心点选取操作,直接在每个分区中随机选取一个顶点做为中心点,从中心点开始并行地前向和后向遍历;再次进行第一类剪枝操作,并更新强连通图和分区;判断是否有新的强连通图产生,如果没有新的强连通图产生,则结束,如果有新的强连通图产生,则判断迭代次数是否超过阈值kt,如果已超过阈值,则使用着色分区方法进行着色分区操作,否则进行第三类中心点选取操作。进一步地,加载图数据并统一存储格式的步骤包括:使用压缩矩阵行(CSR)的格式存储数据,根据图数据的大小为数组C和数组R申请主机内存,将图数据保存到数组C和数组R中;调换边的起点和终点,使用上述步骤得到反向的CSR格式图数据存储,并保存到数组C’和数组R’中;在GPU设备上申请与主机内存相同的内存空间,并将上述全部数组复制到设备上,在设备内存中申请用于表示顶点状态的数组M。进一步地,第一类剪枝操作的步骤包括:在GPU上并行检测每一个顶点的入度和出度,如果顶点的入度为零或出度为零,则该点单独形成一个1-SCC,在数组M中将该顶点状态标记为中心点且已完成检测。进一步地,第一类中心点选取的步骤包括:在GPU上申请一个用于保存中心点的变量并赋值为0,并行计算中心点和每一个顶点的入度和出度的积,如果当前顶点的入度和出度积大于中心点的入度和出度积,则使用该顶点替换中心点,重复以上过程直到中心点的值不再变化。进一步地,使用warp重用方法从中心点开始并行地前向和后向遍历的步骤包括:按照预设的参数kw将GPU中的每个warp分成若干个等大的虚拟warp,每个虚拟warp包含kw个线程;顺次将所有的顶点任务分配给虚拟warp,其中每个虚拟warp分配kv个顶点任务;从中心点开始,并行地在数组R和数据C上进行前向广度优先遍历,在数组R’和数据C’上进行后向广度优先遍历;在每个虚拟warp中,对于所分配的顶点中需要处理的顶点,所有线程同时并行检测所分配的顶点中某个需要处理的顶点的邻接顶点是否已经完成检测,并将结果标记到数组M中。进一步地,每个分区独立包含其中的所有强连通图,可相互并行的完成强连通图检测;强连通图和可并行检测的分区中的顶点在数组M中进行相应标记。进一步地,判断是否需要进行第二类剪枝操作的步骤包括:根据预设参数kt决定是否执行剪枝操作,每进行kt次强连通图检测进行一次着色分区;如果kt为0,则不需要进行剪枝操作;如果kt大于0,则需要进行剪枝操作。进一步地,第二类剪枝操作的步骤包括:首先进行多次1-SCC的检测至无1-SCC产生,然后进行一次2-SCC的检测,最后进行多次1-SCC的检测至无1-SCC产生,其中1-SCC的检测方法与第一类剪枝操作的步骤相同,2-SCC的检测的步骤包括:并行检测每一个未被检测的顶点的邻接顶点,如果邻接顶点上存在有向边连接到当前顶点,并且这两个点除相互的连接外出度为零或入度为零,则这两个顶点会组成一个强连通图,在数组M中对这些顶点进行标记。进一步地,着色分区方法的步骤包括:将每个顶点的ID视为该顶点的颜色值,检测所有未形成强连通图的顶点的邻接顶点颜色,如果邻接顶点颜色小于当前顶点颜色,则修改当前顶点颜色为邻接顶点颜色,重复以上过程直到所有顶点的颜色值不再变化,根据不同的颜色值将所有未形成强连通图的顶点分成若干个分区,每个分区独立包含其中的所有强连通图。本专利技术方法具有以下的优点及效果:1、减少了线程浪费情况,平衡不同线程的工作负载。warp重用方法通过将每个warp分成等大的多个虚拟warp并为每个虚拟warp分配等量的多个顶点任务,有效地减少了为一个或一组线程分配一个顶点但是该顶点不需要被本文档来自技高网
...

【技术保护点】
1.一种GPU上的基于warp重用与着色分区的强连通图检测方法,其特征在于,包括以下步骤:/n加载图数据并统一存储格式;/n对图数据进行第一类剪枝操作,检测出只由一个顶点组成的强连通图1-SCC;/n进行第一类中心点选取操作,使用入度和出度的积最大的顶点做为中心点;/n使用warp重用方法从中心点开始并行地前向和后向遍历,得到强连通图和三个分区,其中强连通图为前向和后向均遍历到的顶点与中心点形成的连通图,三个分区为前向遍历到后向未遍历到的顶点,前向未遍历到后向遍历到的顶点,以及前向和后向均未遍历到的顶点所形成的分区;/n判断是否需要进行第二类剪枝操作,若需要,则进行第二类剪枝操作,检测出由一个顶点组成的强连通图1-SCC和由两个顶点组成的强连通图2-SCC;/n使用着色分区方法对所述三个分区进行进一步分区,得到更多更小的分区;/n在所形成的小分区中进行第二类中心点选取操作,选取每个分区中初始颜色值与分区颜色值相同的顶点做为中心点,从中心点开始前向遍历,将遍历到的顶点与中心点组成一个强连通图,未被遍历到的顶点形成新的分区;/n进行第三类中心点选取操作,直接在每个分区中随机选取一个顶点做为中心点,从中心点开始并行地前向和后向遍历;/n再次进行第一类剪枝操作,并更新强连通图和分区;/n判断是否有新的强连通图产生,如果没有新的强连通图产生,则结束,如果有新的强连通图产生,则判断迭代次数是否超过阈值k...

【技术特征摘要】
1.一种GPU上的基于warp重用与着色分区的强连通图检测方法,其特征在于,包括以下步骤:
加载图数据并统一存储格式;
对图数据进行第一类剪枝操作,检测出只由一个顶点组成的强连通图1-SCC;
进行第一类中心点选取操作,使用入度和出度的积最大的顶点做为中心点;
使用warp重用方法从中心点开始并行地前向和后向遍历,得到强连通图和三个分区,其中强连通图为前向和后向均遍历到的顶点与中心点形成的连通图,三个分区为前向遍历到后向未遍历到的顶点,前向未遍历到后向遍历到的顶点,以及前向和后向均未遍历到的顶点所形成的分区;
判断是否需要进行第二类剪枝操作,若需要,则进行第二类剪枝操作,检测出由一个顶点组成的强连通图1-SCC和由两个顶点组成的强连通图2-SCC;
使用着色分区方法对所述三个分区进行进一步分区,得到更多更小的分区;
在所形成的小分区中进行第二类中心点选取操作,选取每个分区中初始颜色值与分区颜色值相同的顶点做为中心点,从中心点开始前向遍历,将遍历到的顶点与中心点组成一个强连通图,未被遍历到的顶点形成新的分区;
进行第三类中心点选取操作,直接在每个分区中随机选取一个顶点做为中心点,从中心点开始并行地前向和后向遍历;
再次进行第一类剪枝操作,并更新强连通图和分区;
判断是否有新的强连通图产生,如果没有新的强连通图产生,则结束,如果有新的强连通图产生,则判断迭代次数是否超过阈值kt,如果已超过阈值,则使用着色分区方法进行着色分区操作,否则进行第三类中心点选取操作。


2.如权利要求1所述的方法,其特征在于,加载图数据并统一存储格式的步骤包括:
使用压缩矩阵行的格式存储数据,根据图数据的大小为数组C和数组R申请主机内存,将图数据保存到数组C和数组R中;
调换边的起点和终点,使用上述步骤得到反向的CSR格式图数据存储,并保存到数组C’和数组R’中;
在GPU设备上申请与主机内存相同的内存空间,并将上述全部数组复制到设备上,在设备内存中申请用于表示顶点状态的数组M。


3.如权利要求2所述的方法,其特征在于,第一类剪枝操作的步骤包括:在GPU上并行检测每一个顶点的入度和出度,如果顶点的入度为零或出度为零,则该点单独形成一个1-SCC,在数组M中将该顶点状态标记为中心点且已完成检测。


4.如权利要求1所述的方法,其特征在于,第一类中心点选取的步骤包括:在GPU上申请一个用于保存中心点的变量并赋...

【专利技术属性】
技术研发人员:侯骏腾吴广君王树鹏王振宇贾思宇
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1