基于FPGA的异构可重构图计算加速器系统的设计方法与流程

文档序号:15492678发布日期:2018-09-21 20:56阅读:232来源:国知局

本发明涉及计算机硬件加速领域,具体地涉及一种基于fpga的图计算加速器系统设计方法。



背景技术:

现实世界中,图可以用来表征不同实体间的关系,它是实体之间关系模型的抽象,许多的信息可以存储在图结构中,因而其在实际中有着很广泛的应用,例如:社交网络分析、网页图搜索、商品推荐系统建立、交通网络分析以及生物医学信息分析等等。在现今大数据时代,图的规模变得越来越大,例如:facebook在2014年7月的用户数达到22亿,用户之间的关系数量达到几百甚至上千亿,如果这些用户的关系以图的边的形式进行存储,存储量将达到几百gb甚至tb级。因此如何来对大规模图在可接受的时间内进行有效的分析、搜索和计算成为当前研究的一大难点,也是当前研究的一大热点。

从计算的角度来看,图计算系统常常被分成vertex-centric(以顶点为中心)和edge-centric(以边为中心)的计算模型。前者将所有的计算迭代在顶点上,每个顶点从起in-neighbors获取相应的数据,然后再执行user-defined函数,更新自身的状态或者属性值,最后每个顶点将自身更新好的状态或者属性值分发其out-neighbors,直到图算法收敛或者达到预先设置的迭代次数。后者将所有的计算迭代在边上,依次遍历图中所有的边,将sourcevertices产生的更新值通过边传递给每条边的destinationvertices,然后遍历destinationvertices,将更新值更新到destinationvertices上,直到图算法收敛或者达到预先设置的迭代次数。两种计算模型存在着明显的不同之处:前者顺序的访问顶点,导致对边的随机访问;后者顺序的访问边,导致对顶点的随机访问。

通常来说,对于大规模的数据的计算会采用分布式计算的思想,图计算也不例外。随着图数据规模的不断增长,国内外研究者们设计并实现了很多分布式图计算系统,例如:pregel、graphlab、powergraph、graphx、giraph。这些分布式图计算系统大多数采用的是vertex-centric的计算模型,而powergraph采取的是edge-centric的计算模型。直观的来说,分布式图计算系统随着图数据规模的增大表现出良好的可扩展性,但是在其他方面面临着很多的挑战,概括的说有以下几点:(1)图划分:要使得分布式系统能够很好的处理大规模图,首先就需要将图进行划分,但是在划分的时候需要考虑负载均衡的问题,使得分布式集群中各节点间的通信量最少,而这是一个np-hard的问题;(2)网络依赖:分布式图计算中,集群中的各个节点间的通信依赖于当前处于的网络环境,网络环境有可能成为整个系统的延迟瓶颈;(3)容错:在分布式图计算系统中,不能因为某个节点的故障而导致整个系统的崩溃,因而,分布式图计算系统中需要设计容错机制;(4)编程、维护困难:分布式系统的程序设计、优化需要具有专业人员进行开发与实现,而且维护起来较为困难。

随着单机系统的资源的增加和性能的提升,近年来,研究者们也设计并开发了许多单机平台上的图计算系统,研究结果显示,在单机上实现大规模图的处理可以极大的降低成本开销,同时在很多情况下能达到甚至超过分布式图计算系统的性能。一些典型的单机图计算系统如下:graphchi、x-stream、ligra、venus、gridgraph,其中graphchi、ligra和venus采取的是vertex-centric的计算模型,而x-stream和gridgraph采取的是edge-centric的计算模型。在单机图计算系统的设计中,设计人员应该考虑以下几点设计原则:(1)局部性:图数据的不规则性导致其在计算机中的存储和计算过程中表现出较差的局部性,因此在设计之初需要考虑局部性的开发;(2)多线程的利用:现今使用的计算机采用的处理器大多数为多核多线程,因此如何利用硬件平台的并行度,设计高效的并行多线程程序也非常重要;(3)磁盘数据传输量:在单机图计算系统中,图数据都是存储在磁盘或者固态硬盘上,在计算之前需要把整个图或者图数据的一部分导入到内存中,因此如何设计有效的数据存储方式,减少磁盘数据的传输成为一大难点;(4)尽可能采用顺序访问模式:在单机图计算系统中,对顶点和边的访问都有着两种访问模式:顺序访问和随机访问,有研究[14]表明,由于顺序访问能够利用硬件平台提供的访存级并行(mlp)和硬件预取(hardwareprefetcher),因此顺序访问数据的速度明显快于随机访问的速度,而且前者功耗也明显低于后者。

此外,近年来国内外研究者们也越来越热衷于用硬件来加速算法或者应用,随着fpga资源的增加和性能的提升,采用fpga来实现图计算硬件加速器也成为当前计算机领域的研究热点之一。fpga平台相对于cpu平台和gpu平台来说具有可重构、可定制、并行度高、低功耗、高能效等优点,并且相对于多核cpu平台,fpga上的图计算加速器也表现出良好的加速比。目前典型的fpga平台上的图计算加速器有:fpgp、gravf、graphops和graphgen等。

若是按照软硬件层次进行划分,分布式图计算系统和单机图计算系统属于软件系统框架的范围,基于fpga的图计算加速器系统则属于硬件系统框架的范围。在软件层次设计与实现图计算系统常常存在一些软件层次低效、不可规避的问题,例如片外带宽利用率低下和有效计算率低下等问题。



技术实现要素:

有鉴于此,本发明目的是:设计图计算系统的硬件加速器,通过硬件电路的可重构性来重新设计适用于图计算的存储系统和计算模式,以此克服软件层次上存在的问题;另一方面,fpga相对于asic和gpu表现出良好的可重构、低功耗、高能效等特点,是加速器设计中一个折中的选择,因此本课题拟采取fpga实现图计算加速器系统。

本发明的技术方案是:

一种基于fpga的异构可重构图计算加速器系统的设计方法,所述系统包括pc、fpga两大异构模块,其特征在于,设计方法包括以下步骤:

s01:pc端完成数据准备和预处理及硬件端设备初始化等工作;pc端加载fpga所需的驱动、选择适用于对应图数据规模的图计算引擎、图数据的预处理和划分、图数据的传输;

s02:fpga端完成数据计算和处理以及计算结果的写回等工作;fpga对图数据进行存储、对图数据进行处理、处理单元之间的控制以及计算结果的收集;

s03:同步模块实现软件端和硬件端之间同步的过程。

优选技术方案中,所述步骤s01包括以下步骤:

在软件端加载硬件端设备的驱动程序;

根据所需要处理的图数据的规模选择对应的计算引擎:verticeson-chip&&edgeson-chipengine、verticeson-chip&&edgesoff-chipengine和verticesoff-chip&&edgesoff-chipengine;

若选择的计算引擎为verticesoff-chips&&edgesoff-chipengine,则对所需要处理的图数据进行数据的预处理,也即子图的划分;

在数据准备工作完成之后,将数据通过pciedma传输至fpga开发板的板载ddr。

优选技术方案中,所述步骤s02包括以下步骤:

加速器在接收到待处理的数据之后,由控制器将数据分发给各个不同的处理单元;

在处理单元计算和处理完成之后,将结果发送给结果收集模块;

结果收集模块在将结果收集之后,将整理好的结果通过axidma发送至板载ddr。

优选技术方案中,所述步骤s03中确定了软件端和硬件端的同步模式,包括:采用轮询的方式实现软件端和硬件端的同步,也即在软件端将数据发送至硬件端之后,轮询板载ddr上的特定的标志位end_flag,若end_flag置位,则表示着硬件端已经结束当前轮次的计算,并且将结果发送至ddr,至此,软件端可将结果从ddr读取回来。

优选技术方案中,pc和fpga通过pcie总线互联,两者之间的数据传输通过pciedma实现,在具体实现中,将pciedma作为pc的外设映射在其内存中,并且映射空间的大小保证将硬件端所有的设备都映射在pc的内存空间,软件端对硬件端设备进行读写控制;在软件端根据所需要处理的图数据的顶点数和边数对硬件端的计算引擎进行选择,软件端在选择好计算引擎之后,硬件端根据软件端的要求对硬件资源进行配置,使得可以满足软件端的要求。

优选技术方案中,不同的计算引擎下,在片上重构出多个数据处理单元,处理单元之间的数据分发及控制均由控制器完成。

优选技术方案中,在各个处理单元将数据处理完成之后,将结果发送至结果收集模块,结果收集模块对结果进行整合之后,将结果写回到板载ddr。

优选技术方案中,软件端和硬件端异构形成整个系统,在执行过程中,同步协议是整个系统正确实现完整功能的基础,所述同步模块基于轮询的方式实现,在板载ddr上设定一个特殊的标志位end_flag,硬件端每次输出结果完成之后,会随后输出-1标志,软件端不断轮询end_flag,直至其为-1才读回正确的结果。

优选技术方案中,整个系统包含三类计算引擎:

verticeson-chip&&edgeson-chipengine;

verticeson-chip&&edgesoff-chipengine;

verticesoff-chip&&edgesoff-chipengine;

不同的计算引擎针对不同规模的图数据,若选择第一种计算引擎,则意味着软件端只需要将顶点数据和边数据向硬件端传输一次,并且在硬件端完成处理之后,可以一次将结果读取回;若选择第二种计算引擎,则意味着顶点数据可以一次从软件端传输给硬件端,并且存储在片内的缓冲区中,而边数据则需要从板载ddr分批次的往硬件端传输,最后结果也分批次的从板载ddr中读取;若选择第三种计算引擎,则意味着fpga片内不能缓存下整个图数据的所有顶点和边集,那么需要将顶点和边都进行划分,划分按照interval-shard进行,保证图数据的局部性,以减少片外访存的次数。

优选技术方案中,三类计算引擎,内部均是基于gas模型而实现的,在面对不同的图算法的时候,只需要对apply模块进行相应的算法实现,能够适用于多种不同的图算法。

优选技术方案中,所述fpga的结构包括:

控制器,将软件端传来的数据进行分发,通过控制器可以实现动态负载均衡;

源顶点缓冲区,缓存从软件端传输的源顶点数据;

目标顶点缓冲区,缓存重软件端传输的目标顶点数据;

入边缓冲区,缓存以当前处理的顶点区间中顶点为目标顶点的边;

出边缓冲区,缓存以当前处理的顶点区间中顶点位源顶点的边;

处理单元,用于计算和处理分发到其的图数据;

结果收集模块,用于收集各个处理单元计算完成之后的结果,并且将结果传输到板载ddr。

与现有技术相比,本发明的优点是:

本发明可以有效的加速图算法,并且具备处理不同规模等级的图数据的能力,处理单元相对于通用处理器有高性能、低功耗特点。

附图说明

下面结合附图及实施例对本发明作进一步描述:

图1是本发明实施例的fpga平台上加速图计算的流程图;

图2是本发明计算引擎选择算法示意图;

图3是本发明实施例中图数据预处理示意图;

图4是本发明实施例的图数据由pc传输至板载ddr的传输模块示意图;

图5是本发明实施例的片上处理单元结构示意图;

图6是本发明实施例处理单元编程模型算法示意图;

图7是本发明实施例的pc和fpga同步示意图;

图8是本发明实施例的异构可重构计算平台上图计算加速器框架示意图。

具体实施方式

以下结合具体实施例对上述方案做进一步说明。应理解,这些实施例是用于说明本发明而不限于限制本发明的范围。实施例中采用的实施条件可以根据具体厂家的条件做进一步调整,未注明的实施条件通常为常规实验中的条件。

实施例:

本发明实施例中的fpga指现场可编程门阵列(fieldprogrammablegatearrays),本发明设计的系统是一个基于pc-fpga的异构系统,其中,pc和fpga之间的数据通路可以采用pci-e总线协议。fpga片上加速器内部的数据通路本发明实施例附图数据通路采用axi总线协议为例说明,但本发明并不限于此。

图1为本发明实施例的基于fpga的图计算加速器设计方法100的流程图。该方法100包括:

s110,加载硬件设备模块所需的驱动程序,根据需要处理的图数据选择合适的计算引擎,若选择第三类计算引擎,则对图数据进行预处理,将预处理好的图数据传输给加速器进行计算;

s120,将需要处理的图数据的顶点和边分别存放在对应的缓冲区,加速器ip核采取gas计算模型对图数据进行处理;

s130,加速器在处理完图数据之后,将结果写回板载ddr,pc从板载ddr上读取结果数据。

下文中将结合图2至图7,对本发明实施例基于fpga的图计算加速器设计方法进行详细描述。

图2为计算引擎选择算法的示意图,本系统包含着三类计算引擎供用户选择调用,用户根据需要处理的图数据的顶点数和边数选择合适的计算引擎进行处理。本系统根据具体的硬件平台的资源设定了默认的verticesthreshold和edgesthreshold,根据图2所示的算法,若是所需要处理的图数据顶点数和边数均小于verticesthreshold和edgesthreshold,那么选择计算引擎1;若是所需要处理的图数据顶点数小于verticesthreshold而边数大于edgesthreshold,那么选择计算引擎2;若是所需要处理的图数据顶点数和边数均大于verticesthreshold和edgesthreshold,那么选择计算引擎3。

图3为大规模图数据的预处理过程,如图所示,图数据中的顶点被划分成若干个一维的线性区间,每个顶点区间对应着一个shard文件,该shard文件中包含着目标顶点在当前区间中的边集,并且在shard文件内部,将边集按照源顶点进行进一步的划分,每个shard文件包含着若干个edgeblock。

图4为本发明实例中pc端与fpga端的数据传输过程,数据在pc端的内存和fpga开发板的板载ddr之间进行传输,在传输过程中,每次传输的数据量根据加速器内部能够处理的数据量确定,并且在加速器将数据处理完成之后,加速器需要将结果写回板载ddr,之后,pc端启动读取结果模块进行结果的读回。

图5为加速器片上系统结构,结构包括:

计算引擎,本系统在片上设计并实现三类计算引擎供用户选择调用,分别对应着不同的图数据的规模;

控制器(controller)2100,负责控制数据的分发以及获取处理单元的处理状态,在本系统中,片上集成了多个处理单元,不同的处理单元之间并行的处理从pc端传输来的子图数据,控制器轮询处理单元的计算状态,处理单元若是处理结束,则控制器将下一批需要处理的数据分发给处理单元;

聚合器(aggregator)2200,负责收集处理单元计算完成之后的结果,并对结果进行相应的整理,在结果收集整理完成之后,将最新的结果写回板载ddr;

同步栅栏(barrier)2300,负责对处理单元进行同步,因为每个处理单元的计算过程都是按轮进行,因此两次迭代之间需要将所有的处理单元的状态进行同步;

处理单元(pes)2400,pe是片上加速器处理图数据的单元,其本质为硬件ip核,pe的输入为控制器分发的子图数据,输出为执行特定算法之后的结果,并且在每个pe内部采取的计算模型均为gas模型;

片上缓存2600,负责存储片上的图数据以及计算结果,主要包括以下几部分:

1)高度顶点缓冲区:负责存储顶点集中度数较高的顶点数据,以此获取较好的局部性来减少片外访存的次数;

2)源顶点缓冲区:负责存储图数据中的源顶点数据;

3)目标顶点缓冲区:负责存储图数据中的目标顶点数据;

4)入边缓冲区:负责存储当前处理顶点区间的入边集;

5)出边缓冲区:负责存储当前处理顶点区间的出边集。

图6为处理单元采取的gas计算模型算法示意图,处理单元处理图数据的过程分为三个部分,分别是gather、apply和scatter,在gather阶段中,处理单元遍历当前顶点区间的inedges,并且将对应的源顶点的属性值gather;在apply阶段中,处理单元执行对应的用户自定义的程序,并且更新当前处理的顶点的属性值;在scatter阶段中,处理单元将当前处理的顶点的属性值传播给其出边的目标顶点,该计算过程直至满足收敛条件或者达到最大的迭代次数。

图7是本发明实例中多个加速器和pc端之间的同步过程,在设计了多个加速器之后,加速器之间并行的处理图数据,在pc端创建多个进程来控制相应的加速器,进程轮询特定的标志位,当标志位置位之后,进程将结果从板载ddr读取回pc端。

图8是本发明实施例的整体系统结构。主要包括预处理,数据传输,数据处理以及结果写回等过程。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的方法和硬件结构,能够以fpga和cpu的结合来实现。具体fpga内部固化ip核的数量看具体应用和fpga芯片资源限制。专业技术人员可以对每个特定的应用或特定的fpga芯片来使用不同方式或不同并行度来实现上述所描述的功能,但是这种实现不应认为超出本发明的范围。

上述实例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人是能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所做的等效变换或修饰,都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1