【技术实现步骤摘要】
一种GPU上的基于warp重用与着色分区的强连通图检测方法
本专利技术涉及使用异构系统进行强连通图检测的方法,具体的说是一种GPU上的基于warp重用与着色分区的强连通图检测算法。
技术介绍
图数据是数据处理中一类基础的数据结构,它能够很好地表达出数据之间的关联性,因此在生物、化学、人工智能、社交网络等多个领域得到广泛地应用。强连通图(StronglyConnectedComponents,SCC)是一种基础的图结构,是指有向图中所有顶点两两有向连接的最大子集。虽然强连通图检测是一个很早就开始研究的问题,并且已经有Tarjan算法、Kosaraju算法、Dijkstra算法等优秀的检测方法。但是,这些算法大多是基于深度优先遍历(depth-firstsearch,DFS)的串行算法,其运行时间随着图数据规模的扩大而急剧增加,并且很难并行化。随着通用型的GPU等并行计算设备被广泛应用到高性能计算的应用中,研究人员提出了一些基于GPU的并行强连通图检测算法,这些算法大多基于对中心点的前向遍历与后向遍历所形成区域求交集的方法,并通过分区来增加每次迭代检测的并行性。然而在遍历的过程中,这些算法会为所有未完成检测的顶点中每个顶点分配一个线程或一个warp(包括32个线程的线程组),这些顶点中很多顶点不需要被处理,则分配的线程直接被释放掉,而其他顶点的邻接顶点数目相差很大,导致不同的线程或线程组间严重地负载不均衡。另外,现有的分区方法只是将和其它顶点没有任何连接的顶点分到同一个分区当中,产生的分区数目不是很多。每次迭代检测之后, ...
【技术保护点】
1.一种GPU上的基于warp重用与着色分区的强连通图检测方法,其特征在于,包括以下步骤:/n加载图数据并统一存储格式;/n对图数据进行第一类剪枝操作,检测出只由一个顶点组成的强连通图1-SCC;/n进行第一类中心点选取操作,使用入度和出度的积最大的顶点做为中心点;/n使用warp重用方法从中心点开始并行地前向和后向遍历,得到强连通图和三个分区,其中强连通图为前向和后向均遍历到的顶点与中心点形成的连通图,三个分区为前向遍历到后向未遍历到的顶点,前向未遍历到后向遍历到的顶点,以及前向和后向均未遍历到的顶点所形成的分区;/n判断是否需要进行第二类剪枝操作,若需要,则进行第二类剪枝操作,检测出由一个顶点组成的强连通图1-SCC和由两个顶点组成的强连通图2-SCC;/n使用着色分区方法对所述三个分区进行进一步分区,得到更多更小的分区;/n在所形成的小分区中进行第二类中心点选取操作,选取每个分区中初始颜色值与分区颜色值相同的顶点做为中心点,从中心点开始前向遍历,将遍历到的顶点与中心点组成一个强连通图,未被遍历到的顶点形成新的分区;/n进行第三类中心点选取操作,直接在每个分区中随机选取一个顶点做为 ...
【技术特征摘要】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。