一种基于GPU的极大k-truss发现算法制造技术

技术编号:28841609 阅读:17 留言:0更新日期:2021-06-11 23:40
本发明专利技术公开了一种基于GPU的极大k‑truss发现算法,步骤如下:(1)首先输入图G、k,求出图G中的k‑core,并将求得k‑core复制到显存中,初始化一个集合D为空集;(2)在显卡中使用多个线程进行处理;(3)在每个流多处理器中,对顶点v执行操作;(4)对于顶点v的邻居复制到当前流多处理器对应的共享内存中;(5)对于顶点中的每个邻居n,分配一个线程t进行处理;(6)当v的所有邻居处理完毕时,将步骤(5)中的寄存器的值求和。本发明专利技术采用上述的一种基于GPU的极大k‑truss发现算法,充分利用了CPU的并行性,运行速度快,并且,运行成本低。

【技术实现步骤摘要】
一种基于GPU的极大k-truss发现算法
本专利技术涉及数据挖掘
,尤其是涉及一种基于GPU的极大k-truss发现算法。
技术介绍
Truss作为一种稠密子图结构,与另一种常用的稠密子图结构团相比,truss对子图的限制更小,因此更容易发掘出图中隐藏的信息。Truss是一种非常常用的子图结构,目前已经在图数据挖掘等领域得到了广泛的应用。极大的k-truss是图中满足k-truss结构的联系最紧密的字图,这个字图的的k值代表了原始数据中各个顶点的最大联系程度,这个字图的大小则代表了这个社群的大小。在工业上,极大k-truss有很多的应用。首先,通过找到极大的k-truss可以确定原始图数据中顶点间联系的最大紧密程度,这是图的一个很重要的性质。其次,通过k-truss的值,我们可以限制图中其他字图结构的上限和或者下限,可以用于加速其他类型的社区发现算法。目前,较为广泛使用的方法是单机单线程的计算方法,该算法首先计算每条边上的support值,之后迭代删除最小的support值。这样最后留下的一个k-truss就是图本文档来自技高网...

【技术保护点】
1.一种基于GPU的极大k-truss发现算法,其特征在于,步骤如下:/n(1)首先输入图G、k,求出图G中的k-core,并将求得k-core复制到显存中,初始化一个集合D为空集;/n(2)在显卡中使用多个线程进行处理,显卡中的流多处理器(streamingmultiprocessor)从0开始连续编码;对显卡中的流多处理器s,顺序取得编号为s,2s,3s...的顶点,直到所有对应定顶点处理完毕;/n(3)在每个流多处理器中,对顶点v执行如下操作;/n(4)对于顶点v的邻居复制到当前流多处理器对应的共享内存中;/n(5)对于顶点中的每个邻居n,分配一个线程t进行如下处理:/na、将n的邻居复...

【技术特征摘要】
1.一种基于GPU的极大k-truss发现算法,其特征在于,步骤如下:
(1)首先输入图G、k,求出图G中的k-core,并将求得k-core复制到显存中,初始化一个集合D为空集;
(2)在显卡中使用多个线程进行处理,显卡中的流多处理器(streamingmultiprocessor)从0开始连续编码;对显卡中的流多处理器s,顺序取得编号为s,2s,3s...的顶点,直到所有对应定顶点处理完毕;
(3)在每个流多处理器中,对顶点v执行如下操作;
(4)对于顶点v的邻居复制到当前流多处理器对应的共享内存中;
(5)对于顶点中的每个邻居n,分配一个线程t进行如下处理:
a、将n的邻居复制到当前进程对应的共享内存中,并初始化一个变量r=0;
b、检测n与v相同邻居的数量,将这个数量的值存储在r中;
(6)当v的所有邻居处理完毕时,将步骤(5)中的寄存器的值求和,这个值为顶点v的support;如果v的support小于k,将顶点v加入到D中;
(7)在CPU中开启多个线程,每次每个线程从D中取得一个顶点d,进行如下操作:
a、删除顶点d和对应的边,并将删除后的结果同步到GPU的显存中;
b、对d的每个邻居,利用GPU计算他的support值,步骤与(5)相同;如果求得的support值小于k,将k加入到D中;
(8)重复步骤(7),直到d为空;
(9)若最后的图中有顶点剩余,返回删除后的图,否则返回一个空的图。


2.根据权利要求1所述的一种基于GPU的极大k-truss发现算法,其特征在于,基于k-core的过滤算法步骤如下:
(1)在原图上求解k-core,找到图中存在的且使k值最大的k-core;
(2)在步骤(1)得到的k-core中求解极大k...

【专利技术属性】
技术研发人员:任泽槟李荣华王国仁潘敏佳高森蒋佳祺
申请(专利权)人:北京理工大学
类型:发明
国别省市:北京;11

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

1