一种基于FPGA的低能耗社区挖掘方法与流程

文档序号:15492569发布日期:2018-09-21 20:55阅读:178来源:国知局
本发明涉及并行计算与社交网络领域,更具体地,涉及一种基于fpga的低能耗社区挖掘方法。
背景技术
::近年来,随着fpga(fieldprogrammablegatearray,即现场可编程逻辑门阵列)的并行计算能力的增强,以及其可编程的灵活性和低能耗的优势,越来越多基于fpga的研究涌现出来。fpga的其中一个特性是可编程性,可以使用vhdl等硬件描述语言来实现算法,它也是cpld等可编程器件的升级器件,具有很强的可编程能力,解决了原有编程器件的不足,同时也克服了专用定制电路的不灵活;fpga具有很高的并行能力,相比于cpu和gpu而言,fpga具有更多的可执行单元(processingelement),能够实现更高的并行度,尤其适用于高并发性算法的执行;fpga是一种低能耗的器件,相比于cpu和gpu,其能耗可以降低很多,其根本原因在于fpga本身的设计以及其时钟频率较低,但是其高并发性弥补了其性能的不足。社区挖掘(communitydetection)可以看成一个聚类算法,将不同的节点聚类成一个个的社区,社区内部的节点之间的连接往往很紧密,而与社区外部的节点的连接往往较为稀疏。挖掘出来的社区主要分为可重叠社区和非重叠社区,区别在于两个社区之间是否有顶点的交集。这是一种比较定性的刻画,但是社区可以理解为一个高度聚合的子图,包含部分顶点和顶点之间的边。近年来,随着社交网络(如facebook,微博)的兴起,社区挖掘逐渐成为一个热门的研究领域,挖掘出来的社区可以用于商品推荐,广告投放或者风险预测等应用。但是,由于社交网络一般是一个庞大的网络,需要非常多的计算资源,并且目前的cpu和gpu的实现在可扩展性方面表现并非很好,cpu和gpu的能耗较高,同时已有的社区挖掘算法,有些局限于不可重叠的社区挖掘,并且已有的在fpga实现的图的计算引擎,只涉及到简单的算法(比如bfs遍历算法),目前比较少基于fpga的社区挖掘算法的研究,并且fpga的高并发度也给基于大型网络的社区挖掘算法,带来了新的机遇。但是,在fpga之上设计社区挖掘算法,需要充分考虑fpga的特性,比如bram和on-chipmemory的本身的大小。技术实现要素:本发明的发明目的在于提供一种基于fpga的低能耗社区挖掘方法,可以挖掘出可重叠的社区圈子,同时该方法充分利用fpga的特性,可以实现较高的并行度。此外,由于fpga本身的功耗较低,相比于传统的cpu和gpu设计,本方法能够实现较低的能耗。为实现以上发明目的,采用的技术方案是:一种基于fpga的低能耗社区挖掘方法,包括以下步骤:s1.将大型网络抽象成一个图,初始化系统参数,设置遍历节点的半径阈值;s2.遍历还没有被访问过的节点,根据节点半径的阈值,选择输入到fpga的数据,从而建立起基于fpga的数据结构;将该节点设置为社区圈子的种子,从该节点出发进行扩展圈子;s3.不断扩展该节点,采用基于fpga的节点遍历函数、基于fpga的导率计算函数,使用fpga的查找表结构标记节点的访问状态,当社区圈子的导率无法再减小时,社区扩展完毕,将社区圈子加入到社区圈子集合;s4.判断节点访问状态,如果仍有节点没有被访问,跳到步骤s2,否则进入步骤s5;s5.输出挖掘出来的社区圈子。与现有技术相比,本发明的有益效果是:本发明基于fpga的抽象图结构设计,设计了一种低能耗的社区挖掘方法。本发明提供的方法可以挖掘出可重叠的社区,不需要提前知道社区圈子的数目,同时本发明涉及的社区挖掘算法是一种以点为中心的社区挖掘方法,可以并行执行,充分利用fpga的高并发度的特点,并且不需要将大型图分割成若干个分离的图。此外,由于fpga本身的功耗较低,相比于传统的cpu和gpu设计,本方法能够实现较低的能耗。附图说明图1为系统框架图。图2为vertextable和edgetable的数据结构设计示例图。图3为bitmap的实例示意图(0表示节点不在社区之中,1表示节点在社区之中)。图4为基于fpga的低能耗社区挖掘方法的流程图。具体实施方式附图仅用于示例性说明,不能理解为对本专利的限制;以下结合附图和实施例对本发明做进一步的阐述。实施例1本发明使用g=(v,e)抽象化表示一个网络,其中v表示节点的集合,e表示网络之中边的集合。如果节点u,v∈v,同时存在一条边连接着这两个节点,那么可以表示为(u,v)∈e。首先展示整个框架,如图1所示,整个系统由inputelement(ie,输入单元),filterelement(fe,过滤单元),memoryinterface(mi,内存接口),processingelement(pe,处理单元)构成,基于fpga的低能耗社区挖掘方法将会运行在pe处理单元之中,因为fpga之上有着很多的pe,同时本发明提供的方法是以点为中心的社区挖掘方法,可以并行跑在这些pe之上。fe的主要作用是剔除冗余的圈子,如果两个圈子的相似度较大,则只保留较大的圈子。ie和mi的作用在于数据的传输,包括刚开始图的输入,以及执行完毕社区圈子的输出。在传统的社区挖掘的研究之中,主要采用conductance(导率)和modularity(模块度)作为衡量的指标,本发明主要采用conductance作为衡量的指标,并且定义conductance为:越低的conductance表示社区圈子更加紧密,那么如何最小化conductance的过程,就是不断扩充社区的过程。注意到fpga的on-chipmemory是有限的,无法将整个图导入到板上的内存之中,所以本发明采用一种从点出发的社区挖掘方法,通过不断地扩展该点的邻居点,最终形成conductance最低的圈子。那么在这个过程之中,本发明发现其主要遍历从该点出发的顶点,因为一个社区的半径应该有一个阈值,那么可以根据on-chipmemory的大小,动态调整这个阈值,从而决定应该往bram上导入多少数据。举个例子,如果bram能够支持半径为20的大小,那么就将阈值设为20,那么从该点出发的半径为20以内的顶点,都会被导入到bram之中。如果数据过大,那么就将阈值设小。本发明主要设计三种数据结构,分别是vertextable(存储节点的查找表),edgetable(存储节点之间的边的查找表),bitmap(用来表示节点是否在社区圈子之中)。其中vertextable和edgetable都是fpga的查找表(lookuptable),访问速度很快,充分利用了fpga的特性。设计的vertextable和edgetable如图2所示。注意到存储vertextable时,加入了一个指针,用来快速指向该节点相关的边的起始位置,这样可以更迅速的找到与顶点相关联的边。在扩充圈子的过程之中,以点为中心的社区挖掘方法,主要是扩充邻居点,那么需要判断顶点是否在圈子之中,所以本发明设计的一个bitmap实例,其结构如图3所示。下面结合图4来解释方法的主要步骤,具体步骤如下:(step1)将大型网络抽象成一个图,初始化系统参数,设置遍历节点的半径阈值。(step2)遍历还没有被访问过的节点,根据节点半径的阈值,选择输入到fpga的数据(节点数据vertextable和edgetable查找表)。将该节点设置为社区圈子的种子,从该节点出发进行扩展圈子。注意到本步骤可以并行执行,利用fpga的高并发度。(step3)不断扩展该节点,采用节点遍历函数、导率(conductance)计算函数,使用bitmap来标记访问状态,当社区圈子的导率(conductance)无法再减小时,社区扩展完毕,将社区圈子加入到社区圈子集合。(step4)判断节点访问状态,如果仍有节点没有被访问,跳到step2,否则进入step5。(step5)输出挖掘出来的社区圈子,算法结束。根据本发明的方法思路,方法的伪代码如下所示,该算法涉及到节点遍历策略和conductance计算策略。其中该算法涉及到两个函数,分别是节点遍历函数traversingneighbor(c)和conductance计算函数calculateconductance(c),这两个函数的伪代码如下所示。显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1