一种基于图形处理单元的影响最大化并行加速方法技术

技术编号:8078991 阅读:204 留言:0更新日期:2012-12-13 21:52
本发明专利技术公开了一种基于图形处理单元的影响最大化并行加速方法,目的是提出一种新型基于GPU的影响最大化并行方法,利用GPU的并行计算能力加速算法执行、减少执行时间。其特征在于在每次蒙特卡洛模拟中,首先找到网络图中的强连通分量,将同一强连通分量中的所有节点合并为一个节点,其权重为该强连通分量中各节点权重之和;然后采用自底向上遍历的策略,并行计算各节点的影响值;利用GPU的并行计算能力,由各个GPU计算核心采用各自的线程对不同的节点并行计算影响值,得到K个最有影响的节点。本发明专利技术将图转化为有向无环图,可以显著减少影响值的计算量,同时通过最大程度地调度各节点在GPU的计算核心中并行计算,降低了整体运行时间。

【技术实现步骤摘要】

本专利技术涉及海量数据挖掘领域中社会网络影响最大化问题的解决方法,尤其指针对大規模社会网络的海量用户挖掘,提出的一种基于图形处理单元GPU的并行加速方法。
技术介绍
Web2. O技术的快速发展推动了社会媒体的蓬勃发展。各类社交网站不断涌现,例如国外的Facebook、Twitter以及国内的人人网、新浪微博等网站用户数量增长十分迅速,当前Facebook的活跃用户已经超过了 8. 5亿。社交网站不仅是人们沟通和交流的桥梁,同时还成了信息传播和扩散的重要媒介。研究表明,68%的顾客会在购买产品之前询问其家人、朋友的意见。病毒式营销(Viral Marketing)正是利用了用户之间口碑传播的原理,进 行品牌推广等网络传销方法。而且随着社会网络用户的持续快速增长,病毒式营销已经成为ー种十分高效的信息传播方式。影响最大化问题是社会网络分析中关于影响传播的经典问题。设想如下场景一家公司要进行新产品推广,其推广策略是选择K名顾客免费试用新产品,之后利用这K名顾客对产品的宣传推广和影响传播吸引更多的顾客购买新产品,从而达到利益最优的目的。影响最大化问题可以形式化描述为对于社会网络图G = (V,E,W),其中V = {v0,V1, , vn_J是节点集合,V中节点个数为η ;Ε是节点集合V中节点之间的有向边集合,即E czV xV,^中有向边的条数为m ;评是G中节点权重的集合,表征了各节点的影响カ(初始值设定为1,即仅能影响节点自身)。给定网络图G和初始活跃节点集合中的节点个数K,影响最大化问题是从节点集合V中选择最佳的K个节点作为初始活跃节点集合S,通过影响传递,使得影响扩散的最終范围最大。影响最大化问题的核心在于如何定位网络中最有影响カ的K名成员,即网络中的意见领袖,从而通过病毒式营销使得最終被影响的用户数目最大。影响最大化问题的研究不仅对市场营销有着十分重要的现实意义,同时还对舆情预警、疫情发现等方面有着十分重要的应用。自从Pedro Domingos和Matt Richardson于 2001 年 ACM SIGKDD 会议公布的文章 Mining the network value ofcustomers 中提出影响最大化问题后,该问题受到了越来越多研究者的关注。David Kempe等人在2003年ACMSIGKDD 会议公布的文章 Maximizing tte Spread of Influence through a SocialNetwork中证明了影响最大化问题隶属于NP-Hard问题,并且提出了ー种爬山贪心算法来获得近似最优解。虽然爬山贪心算法可以达到1-1 / e的最优逼近(e是自然対数底),但是由于David Kempe采用多次的蒙特卡洛模拟(例如20000次)来计算各个节点的影响值,因此需要消耗大量时间,而且无法扩展应用到大規模的网络中。很多研究人员都致力于设计新的方法来解决影响最大化的效率问题。爬山贪心算法中的核心问题在于需要多次蒙特卡洛模拟以计算所有节点的影响值。为了解决该问题,Jure Leskovec 等人在 ACM SIGKDD2007 中公布的文章 Cost-effective OutbreakDetection in Networks中根据影响扩散函数的半模特性设计了新的优化方法CELF,可以很大程度地降低蒙特卡洛模拟的计算量,从而減少了计算时间。之后,Wei Chen等人在ACMSIGKDD2009 中公布文章 Efficient Influence Maximization in Social Networks,文章中提出了目前最优的贪心算法MixGreedy。该算法的改进在于在每次蒙特卡洛模拟时为网络中所有节点计算影响值,因而进ー步降低了算法的复杂度。同时MixGreedy整合了 CELF算法,大大降低了算法执行时间。然而由于影响最大化计算复杂度很高,即使目前最优的MixGreedy算法在处理大规模社会网络时仍然十分耗时;例如从37154个社会网络节点中选择50个最有影响用户就需要2个小时以上。因此,如何从大規模社会网络海量用户中快速挖掘最有影响用户成为了亟待解决的问题。另一方面,图形处理单元(Graphics Processing Unit, GPU)的多核多线程高带宽的体系结构使得GPU具有超强的并行计算能力,被广泛应用于通用计算中。许多图论算法,例如宽度优先捜索、最小生成树等,都可以利用GPU的并行能力加速执行。如何充分利用GPU的并行计算能力,挖掘影响最大化问题的并发执行潜力,设计出基于GPU体系结构的影响最大化并行加速方法是解决大規模社会网络中影响最大化问题的可行方案。 综上所述,影响最大化问题的效率问题是社会网络分析中广泛关注的问题,目前的计算方法无法在合理的时间内准确定位出最有影响カ用户,并且具有很差的可扩展性,无法适用于大規模社会网络。因此,研究高效并且具有良好扩展性的影响最大化解决方法是本领域技术人员极为关注的技术问题。现有的影响最大化问题研究中没有公开文献涉及利用GPU的并行计算能力来减少运行时间的方法。
技术实现思路
本专利技术要解决的技术问题是针对社会网络中的影响最大化问题,提出ー种新型基于GPU的影响最大化并行方法,充分挖掘贪心算法中的可并行部分并利用GPU的并行计算能力,以达到加速算法执行、减少执行时间的目的。为了解决上述技术问题,本专利技术技术方案是在毎次蒙特卡洛模拟中,首先找到网络图中的强连通分量,由于同一个强连通分量中各个节点的影响值相同,故将同一强连通分量中的所有节点合并为ー个节点,其权重为该强连通分量中各节点权重之和;然后采用自底向上遍历的策略,并行计算各节点的影响值。利用GPU的并行计算能力,由各个GPU计算核心采用各自的线程对不同的节点并行计算影响值。通过最大程度地调度各节点在GPU的计算核心中并行计算,降低整体运行时间。具体的技术方案是第一歩初始化影响最大化节点集合S为空。第二步设定当前蒙特卡洛模拟次数Num = O。第三步米用Wei Chen 等人在ACM SIGKDD2009 公布的文章Efficient InfluenceMaximization in Social Networks中的蒙特卡洛模拟方法对图进行选边,得到图G'。弟四步寻■找图G'中的强连通分量。在有向图中,如果两个节点Ve和Vf间既存在一条从Ve到Vf的有向路径,同时又存在一条Ivf到Ve的有向路径,则称Ve和Vf强连通。如果有向图中每两个节点都强连通,则该图是ー个强连通图。采用Robert Tarian等于1972年 SIAM Journal on Computing 杂志公布的又-早 Depth-first search and linear graphalgorithm中提出的Tar jan算法,基于深度优先搜索寻■找图G'中所有的强连通分量SCCi,i取值从O到j-1,j为图G'中的强连通分量的个数。第五歩根据图G'的各强连通分量SCCi,将图G'转变为有向无环图G%方法是5. I:初始化 i = O。5. 2 :将强连通分量SCCi用新节点vn+i代替,其中η是图G'中的节点个数。具体方法是5. 2. I :对于强连通分量SCCi,新增本文档来自技高网
...

【技术保护点】
一种基于图形处理单元的影响最大化并行加速方法,包括以下步骤:第一步:初始化影响最大化节点集合S为空;第二步:设定当前蒙特卡洛模拟次数Num=0;第三步:采用蒙特卡洛模拟方法对图进行选边,得到图G′;其特征在于还包括以下步骤:第四步:采用Tarian算法,基于深度优先搜索寻找图G′中所有的强连通分量SCCi,i取值从0到j?1,i为图G′中的强连通分量的个数;第五步:根据图G′的各强连通分量SCCi,将图G′转变为有向无环图G*,方法是:5.1:初始化i=0;5.2:将强连通分量SCCi用新节点vn+i代替,其中n是图G′中的节点个数;5.3:i=i+1,如果i未被访问,将数组Visited[]全部初始化为false,表示所有节点均未被访问;6.1.2:使用整数数组Count[]记录各个节点已经被访问的子节点个数,其中0≤Count[vx]≤outdegree[vx],0≤x≤n?1,outdegree[vx]是节点vx的出度;将数组Count[]全部初始化为0,表示均未被访问;6.1.3:使用整数数组Inf[]记录各个节点的影响值,其中0≤,Inf[vx]≤n,0≤x≤n?1,将数组Inf[]全部初始化为0;6.1.4:使用字符串数组Label[]记录各个节点的标签,标签Label[vx]标记了节点vx可能同其他节点发生重叠的位置,其中节点va及节点vb重叠于节点vc当且仅当从节点va和vb均存在至少一条路径可达节点vc,0≤a,b,c≤n?1,将数组Label[]全部初始化为NULL;6.1.5:使用布尔变量Stop记录线程计算是否完成,Stop等于true表示该次模拟中所有节点影响值计算已经完成,Stop等于false表示未完成,Stop为全局变量,所有GPU线程均可以修改其内容,初始化Stop为false;6.2:如果停止标志Stop为false,转6.3;如果Stop为true,转第七步;6.3:GPU采用单指令流多数据流的执行方式,以多线程并行的方式计算节点的影响值;多线程并行的方式是指:GPU为每个节点分配一个线程计算影响值,GPU一次由v个 线程并行计算y个节点的影响值,y为GPU中的流处理器数目,当GPU当前y个节点的影响值计算完成后,若还有节点影响值未计算,则GPU经过GPU线程调度以多线程并行的方式计算剩余节点的影响值,直至所有节点的影响值计算完毕,GPU的一个线程计算节点vp影响值的方法是:6.3.1:将停止标志Stop置为true;6.3.2:如果Visited[vp]等于false,执行6.3.3;否则说明节点vp已经被访问过,转6.2;6.3.3:如果Count[vp]等于节点vp的出度,则说明节点vp的所有子节点均己被访问,执行6.3.4计算节点vp的影响值;否则说明节点vp的子节点中仍有未处理的节点,则将停止标志Stop置为false,转6.2;6.3.4:计算节点vp的所有子节点影响值的总和sum,其中out[vp]是节点vp所有子节点的集合;6.3.5:计算节点vp的标签Label(vp),节点vp的标签label(vp)等于节点vp的所有子节点对vp贡献的并集,即其中Con(vq)是子节点vq对节点vp的贡献,子节点vq对节点vp的贡献是指:如果子节点vq的入度大于1,则vq对节点vp的贡献为节点vq自身,即Con(vq)=vq;如果子节点vq的入度小于等于1,vq的贡献为节点vq的标签,即Con(vq)=Label(vq);6.3.6:计算节点vp所有子节点的集合out[vp]重叠的影响值Overlap(out[vp]),方法是:6.3.6.1:初始化Overlap(out[vp])为O,初始化重叠范围集合Range为out[vp];6.3.6.2:对于任意节点va∈Range,如果存在节点vb∈Range且vb≠va,并且从节点va存在路径可达节点vb,此时重叠发生在节点vb,故Overlap(out[vp])=Overlap(out[vp])+Inf[vb...

【技术特征摘要】

【专利技术属性】
技术研发人员:李姗姗廖湘科刘晓东吴庆波戴华东彭绍亮王蕾付松龄鲁晓佩郑思
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:

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

1