CN111104224B - 一种基于fpga的动态图处理方法 - Google Patents
一种基于fpga的动态图处理方法 Download PDFInfo
- Publication number
- CN111104224B CN111104224B CN201911334671.0A CN201911334671A CN111104224B CN 111104224 B CN111104224 B CN 111104224B CN 201911334671 A CN201911334671 A CN 201911334671A CN 111104224 B CN111104224 B CN 111104224B
- Authority
- CN
- China
- Prior art keywords
- graph
- path
- vertex
- increment
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/343—Logical level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2117/00—Details relating to the type or aim of the circuit design
- G06F2117/08—HW-SW co-design, e.g. HW-SW partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Databases & Information Systems (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Data Mining & Analysis (AREA)
- Image Processing (AREA)
- Image Generation (AREA)
- Mathematical Physics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明涉及一种基于FPGA的动态图处理方法,方法包括:在动态图的相邻时间戳的图镜像之间具有增量的情况下,预处理模块将后一时间戳的图镜像以任意图顶点的增量计算仅依赖于该任意图顶点的前序图顶点的方式划分为至少一个路径单元;FPGA处理模块将至少两个路径单元按照每一线程单元能够独立处理路径单元的方式存储于线程直连的片上存储器上;线程单元在将前序图顶点的状态值更新的情况下确定前序图顶点的相邻的时间戳之间的增量值,并按照路径单元确定的传递方向将增量值传递至前序图顶点相邻的后续图顶点,以对后续图顶点的状态值进行更新。
Description
技术领域
本发明涉及计算机大数据处理的图计算技术领域,尤其涉及一种基于FPGA的动态图处理方法。
背景技术
随着大数据时代的到来,图处理系统逐渐变得重要。作为一种数据结构,图在结构和语义等方面具有很强的表达能力,能够很好地描述事物之间的关联性。通过将现实世界中的关系属性抽象为图数据结构,图处理系统能够执行图算法来分析这些图数据。例如,通过网页排名(PageRank)算法可以对图顶点进行重要性排名;通过强连通分量算法可以获得图顶点间的可达性关系。
然而,由于真实世界中的事物之间的关系每时每刻都在变化,这使得图数据结构频繁地动态变化,因此动态图处理逐渐受到重视。动态图通常被看作一组图镜像的序列,其中,每个图镜像对应动态图在一个检查点的静态图数据结构。传统的动态图处理系统基于CPU架构,主要采用以下两种技术。第一种动态图处理方法对每个图镜像执行静态图算法进行全量计算。该方法把每次变化后的图镜像当做全新的静态图,重新处理整个图。这种方法内存占用高,冗余数据访问量和计算量大,难以实时响应真实世界中的图数据结构频繁的动态变化。另一种动态图处理方法是基于前次图镜像的结构对新图镜像进行增量计算,它首先动态维护每次增量计算的结果并采用该结果对下次增量计算进行初始化,然后选择受到增量影响的图顶点作为起点将影响沿着边传播给其它图顶点。增量计算利用动态图的每次变化的相邻两个图镜像之间的关系,减少了冗余数据访问量和计算量,提高了动态图处理的实时性。然而无论是全量计算还是增量计算,基于传统CPU架构的动态图处理系统都受制于底层指令流架构的低指令并行度和高随机访存延迟。
为了解决传统CPU架构的低效问题,基于FPGA的图处理方法已经成为了图计算研究的一个主流方向。基于FPGA的图处理方法将片外存储器中的图数据加载到FPGA的片上存储器BRAM中,使用FPGA片上的可编程逻辑单元定制图处理的数据流模型。它使BRAM中的图数据以“流”的形式依次流过数据流模型中的每个定制硬件模块(例如取图顶点模块,取边偏移模块等),并且将模块的输出写回到BRAM中图数据的对应位置。当所有图数据在流动过程中不再更新(或者更新量小于阈值)时,此时图迭代收敛,图处理停止,输出最终结果。基于FPGA的图处理方法充分利用FPGA片上的计算资源和带宽资源,能有效解决传统架构的低效问题。然而,当前的所有基于FPGA的图处理方法均面向静态图数据,它们在处理动态图的时候通常采用全量计算方法对每个图镜像进行处理,我们称之为基于FPGA的动态图全量方法。
例如,公开号为CN106033476B的中国专利公开的一种云计算环境中分布式计算模式下的增量式图计算方法。该方法包括归并服务器生成增量图;归并服务器将增量图与历史图进行对比,找出历史图中链接结构的不变部分的顶点集合合并将其分发至各子节点数据交换器;作业考试前,各子节点的数据交换器对不变部分顶点的历史计算数据进行同步变换;各计算任务过滤不变部分的顶点并加载相应的历史计算数据;各计算任务在每轮超步计算时,复用不变部分顶点的历史计算数据并在计算完成时保存本次作业的计算数据。该发明对图文件中链接结构的不变部分顶点对应的计算消息进行复用,从而减少原系统中重复计算对资源的浪费并提高性能。
由于基于FPGA的动态图全量方法缺少对动态图结构变化的感知,因此在处理动态图时存在如下问题:(1)图迭代收敛速度缓慢:目前的基于FPGA的动态图全量方法都采用同步模型对图数据执行迭代计算,当前迭代中的计算结果只能在下一轮迭代中才能使用;因此,每轮迭代中的增量只能沿着边进行单步长的传播,传播速度缓慢;(2)高访存延迟:在动态图变化中,增量沿着路径方向传播;然而,目前的基于FPGA的图处理系统按照图顶点编号存放图数据;一条路径上的图顶点的编号通常随机分布,它们在存储器中的位置不连续,因此图数据的空间局部性和时间局部性很差,造成低访存带宽利用率和高访存延迟;(3)冗余计算:在动态图处理过程中,只有受到增量影响的图数据需要进行增量计算,然而,在现有基于FPGA的动态图全量方法中,大量的未受增量影响的图数据仍然参与计算过程,造成冗余计算。
此外,一方面由于对本领域技术人员的理解存在差异;另一方面由于发明人做出本发明时研究了大量文献和专利,但篇幅所限并未详细罗列所有的细节与内容,然而这绝非本发明不具备这些现有技术的特征,相反本发明已经具备现有技术的所有特征,而且申请人保留在背景技术中增加相关现有技术之权利。
发明内容
针对现有技术之不足,本发明提供了一种基于FPGA的动态图处理方法,所述方法包括:预处理步骤:在动态图的相邻时间戳的图镜像之间具有增量的情况下,预处理模块将后一时间戳的图镜像以任意图顶点的增量计算仅依赖于该任意图顶点的前序图顶点的方式划分为至少一个路径单元;存储步骤:在路径单元具有两个以上的情况下,FPGA处理模块将至少两个路径单元按照每一线程单元能够独立处理路径单元的方式存储于线程直连的片上存储器上;增量计算步骤:所述线程单元在将前序图顶点的状态值更新的情况下确定前序图顶点的相邻的时间戳之间的增量值,并按照所述路径单元确定的传递方向将所述增量值传递至前序图顶点相邻的后续图顶点,以对所述后续图顶点的状态值进行更新,更新后的图顶点状态值写回所述片上存储器,直至该路径单元的所有图顶点完成更新;在所有的线程单元对路径单元的图顶点更新完成的情况下,合并计算驱动模块将节点图数据合并运算后加载至图计算主处理模块上,完成图计算。
根据一种优选的实施方式,所述预处理步骤至少包括如下预处理子步骤:对所述后一时间戳对应的动态图的图镜像进行遍历,在遍历过程中访问该图镜像的每一图顶点,相邻的图顶点之间构成子边;基于预设的路径长度,将所述路径按照任意路径单元之间不存在公共子边的方式划分为路径单元;将路径单元进行增量分析,如果其发生增量,则将该路径单元标记为活跃路径单元并送至所述片上存储器;如果其未发生增量变化,则将其标记为非活跃路径单元送至所述合并计算驱动模块,等待所述线程单元将其激活,以完成增量计算。
根据一种优选的实施方式,所述预处理步骤还包括如下步骤:预设的所述路径长度包括第一路径长度阈值和第二路径长度阈值,路径单元的长度位于所述第一路径长度阈值和第二路径长度阈值之间,以使得在所述线程单元能够在负载不均衡率低于负载不均衡阈值的情况下对所述路径单元进行并行更新。
根据一种优选的实施方式,所述预处理步骤还包括:所述预处理模块能够选取至少一个公共节点作为遍历初始点进行遍历,并记录遍历路径并标记具有增量的节点;根据所述图计算的图结构以具有增量的节点为断点在预设路径长度下划分路径单元,并标记为活跃路径单元;按照创建断点的镜像数据的方式保留路径单元以外的图镜像至图计算主处理模块,以等待需要进行增量更新后的路径单元,以完成图计算。
根据一种优选的实施方式,所述增量计算步骤至少包括如下计算子步骤:线程单元按照同步按时处理的方式读取与其直连的片上存储器上的路径单元和增量;基于增量按照图结构依次对图顶点的状态值进行增量更新,每一图顶点的状态值更新完成之后立即保存至所述片上存储器,直至最后一个图顶点的状态值更新;合并计算驱动模块按照图结构依次将路径单元的最后一个图顶点的状态值经所述片上存储器和/或经所述线程单元加载至所述图计算主处理模块。
根据一种优选的实施方式,所述预处理模块生成将全部的活跃路径单元以工作队列的方式反馈至所述合并计算驱动模块,在所述合并计算驱动模块基于所述工作队列判别所述线程单元完成所有路径单元的增量计算的情况下才将所述线程单元生成的增量结果发送至所述图计算主处理模块。
根据一种优选的实施方式,在所述非活跃路径单元和活跃路径单元共享图顶点的情况下,所述预处理模块创建该共享图顶点的镜像数据,以使得所述图计算主处理模块能够在图计算过程中能够基于活跃路径单元中该共享图顶点的状态值建立与该镜像数据的增量关系。
根据一种优选的实施方式,所述预处理模块能够读取所述片上存储器更新后的路径单元的图顶点数据和/或边数据,以用于所述预处理模块能够基于更新后的顶点数据和/或边数数据作为下一时间戳的图数据增量判别的参照数据。
根据一种优选的实施方式,本发明公开了一种执行所述处理方法的系统。
本发明提供的一种基于FPGA的动态图计算方法和系统,与现有技术相比,本发明至少具有益效果为:
(1)加速增量传播:本发明将增量计算限制在路径内部,在一条路径上进行增量计算时,通过异步迭代,前序图顶点的增量值可以在同一轮迭代内快速传播到整个后续路径,起到了加快增量传播的作用;
(2)降低访存延迟:本发明每次加载多条路径到片上存储器中,每条路径占有独立的片上存储空间;当每条定制流水线处理对应路径时,按照路径中图顶点的顺序依次访问片上存储器,充分利用FPGA片上存储器的高随机访问带宽,因此起到了降低访存延迟的作用;
(3)减少冗余计算:本发明通过首先处理受增量影响的路径,将增量计算的工作范围限定,避免了增量计算过程中硬件流水线中对不受增量影响的路径的冗余数据访问和计算,因此起到了减少冗余计算的作用。
附图说明
图1是本发明提供的基于FPGA的动态图计算系统的模块示意图;
图2是本发明提供的优选动态图计算系统的增量计算模块示意图;
图3是本发明中待处理的一种图数据结构;和
图4是本发明提供的基于FPGA的动态图计算方法的流程模块。
附图标记列表
100:CPU处理模块 | 100b:图计算主计算模块 |
200:FPGA处理模块 | 200a:片上存储器 |
300:合并计算驱动模块 | 200b:线程单元 |
400:主存储器 | 200b-1:更新子单元 |
100a:预处理模块 | 200b-2:传递子单元 |
具体实施方式
下面结合附图1-4进行详细说明。
为了便于理解,将本发明的技术用语进行如下解释。
FPGA:Field Programmable Gate Array,即现场可编程门阵列。
CPU:Central Processing Unit,中央处理器。
图计算:以图作为数据模型来表达问题并予以解决过程。
图:是用于表示对象之间关联关系的一种抽象数据结构,使用顶点(Vertex)和边(Edge)进行描述。顶点表示对象,边表示对象之间的关系。
图数据:可抽象成用图描述的数据。
实施例1
本实施例公开中一种基于FPGA的动态图处理系统。如图1所示,该系统至少包括预处理模块100a、FPGA处理模块200。预处理模块100a将图镜像划分为至少一个路径单元。在将图镜像划分为路径单元之前,预处理模块100a会判断相邻时间戳的图镜像之间是否具有增量。如果相邻时间戳的图镜像之间是否具有增量,预处理模块100a将后一时间戳的图镜像划分为至少一个路径单元。优选地,在路径单元中,任意图顶点的增量计算仅依赖于该任意图顶点的前序图顶点。
优选地,预处理模块100a配置为如下子步骤对图镜像进行划分:
S1:对后一时间戳对应的动态图的图镜像进行遍历;在遍历过程中访问该图镜像的每一图顶点;相邻的图顶点之间构成子边。例如,如图3所示为一种图镜像的图结构。该图结构包括10个顶点。在遍历时,其可以从1号顶点开始遍历,根据图结构遍历至10号顶点。如图3所示,其中一条子边可以是1→2。而路径可以是1→2→5,当然也可以是1→2,也可以是单顶点。
S2:基于预设的路径长度,将路径按照任意路径单元之间不存在公共子边的方式划分为路径单元。预设的路径长度可以示例为0个单位(单个顶点)、1个单位(两个顶点)等。如路径单元1→2→5→8→10和路径单元1→3→6→8→10具有相同的子边8→10,在划分路径单元时予以杜绝公共子边。此时,其应该划分为1→2→5→8、1→3→6→8和8→10。
S3:将路径单元进行增量分析。增量可以是顶点数据发生变化,如顶点1发生数据变化。增量还可以是顶点对象的结构发生变化,例如在前一时间戳的路径单元1→2→5→8,而在后一时间戳的路径单元为1→2→8。增量还可以是顶点对象的子边数据发生变化,例如,1→2前一时间戳的子边数据为A,而后一时间戳的子边数据为B。如果路径单元发生增量,则将该路径单元标记为活跃路径单元并送至片上存储器200a。如果其未发生增量变化,则将其标记为非活跃路径单元送至所述合并计算驱动模块,等待所述线程单元将其激活,以完成增量计算。
优选地,在预处理子步骤S2中还包括如下步骤:
S21:预设的路径长度包括第一路径长度阈值和第二路径长度阈值。由于线程单元200b是对路径单元进行并行加速处理的执处理器,其负载应尽量均衡,以提高并行处理的一致性。但是由于图结构复杂,有些路径是单链式,如图3所示中的1→4→7→9→10。而有些路径是叉链式,路径单元1→2→5→8→10和路径单元1→3→6→8→10具有相同的子边8→10,为了保证这种叉链式结构的图计算准确性,需要将其进一步分为1→2→5→8、1→3→6→8和8→10,因此造成路径单元的长短不一,为此造成各线程单元200b的处理时间长短不一,进而使得图计算主处理模块100b的等待时间过长。因此,路径单元的长度位于第一路径长度阈值和第二路径长度阈值之间,以使得在线程单元200b能够在负载不均衡率低于负载不均衡阈值的情况下对路径单元进行并行更新。如果路径单元的长度不位于第一路径长度阈值和第二路径长度阈值之间,则需要进行加链或者断链处理。加链即:将非活跃路径单元加入活跃路径单元中。断链即将活跃路径单元断为至少两节。
优选地,预处理模块100a在将图镜像划分为活跃路径单元和非活跃路径单元后,创建共享节点的镜像数据。例如,活跃路径为1→2→5→8和1→3→6→8;非活跃路径为: 8→10。因此,预处理模块100a创建共享节点8的镜像数据,以保证在合并计算驱动模块300中基于镜像数据恢复图结构。合并计算驱动模块300能够在图计算过程中能够基于活跃路径单元中该共享图顶点的状态值建立与该共享节点的镜像数据的增量关系。
优选地,预处理模块100b是由CPU处理模块100的一部分。在路径单元具有两个以上的情况下(由于动态图的属性,路径单元不仅仅只有两个,其是成百上千个)。FPGA处理模块200中具有成百上千个线程单元200b,并且每一个线程单元200b都可以直连一个片上存储器200a。因此,FPGA处理模块200将至少两个路径单元按照每一线程单元能够独立处理路径单元的方式存储于线程直连的片上存储器200a上。
优选地,线程单元200b线程单元200b在将前序图顶点的状态值更新的情况下确定前序图顶点的相邻的时间戳之间的增量值。如图2所示,对于路径单元1→2→5→8,更新子单元200b-1在前序图顶点1具有增量值是对前序图顶点1状态值更新后,传递子单元200b-2将该增量值传递至后续图顶点2,以图结构确定的逻辑结构传递至节点8,直至图顶点8的状态值更新。在所有的线程单元200b对路径单元的图顶点更新完成的情况下,合并计算驱动模块300将节点图数据合并运算后加载至图计算主处理模块100b上,完成图计算。
优选地,线程单元200b按照如下增量计算子步骤进行增量计算:
F1:线程单元200b按照同步按时处理的方式读取与其直连的片上存储器200a上的路径单元和增量。由于在预处理模块100a中已经尽量均衡了负载,线程单元200b的处理时间能够基本同步。
F2:基于增量按照图结构依次对图顶点的状态值进行增量更新。每一图顶点的状态值更新完成之后立即保存至片上存储器200a,直至最后一个图顶点的状态值更新。例如,顶点1的状态值更新完成之后,立即存储至存储器200a中。
F3:合并计算驱动模块300按照图结构依次将路径单元的最后一个图顶点的状态值经片上存储器200a和/或经线程单元200b加载至图计算主处理模块100b。例如,最后一个顶点的状态值均可以在片上存储器200a中获取,又可以由线程单元200b传输。例如1→2→5→8和1→3→6→8在增量计算中的图顶点8完成增量计算,则由合并计算驱动模块300将读取片上存储器200a两条路径中的顶点8增量运算后的状态值进行合并运算后传递至图计算主处理模块100b中,与非活跃路径8→10进行图计算。
优选地,预处理模块100a生成将全部的活跃路径单元生成工作队列。例如,将活跃路径单元:1→2→5→8、1→3→6→8、1→3→6→8→10生成工作队列反馈至合并计算驱动模块300。合并计算驱动模块300在接收到这三条活跃路径之后,才将其增量结算结果发送至图计算主处理模块100b,以保证图计算的数据准确性。优选地,图计算主处理模块100b是CPU处理模块中的另一计算部分。
优选地,预处理模块100a能够读取片上存储器200a更新后的路径单元的图顶点数据和/或边数据,以用于预处理模块100a能够基于更新后的顶点数据和/或边数数据作为下一时间戳的图数据增量判别的参照数据。例如,在to时间戳1→2→5→8的数据关系为:A→B→C→D,而在t1时间戳为:A+△a→B(+△a)→C(+△a)→D(+△a),那么在t2时间戳为E→F→G→H,那么预处理模块100a将以t1时间戳的图数据计算t2时间戳的增量。
实施例2
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明的各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以互相组合。
优选地,预处理模块100a还可以按照如下预处理子步骤进行划分:
P1:预处理模块100a能够选取至少一个公共节点作为遍历初始点进行遍历,并记录遍历路径并标记具有增量的节点。例如公共节点可以是1、8、10。当公共节点遍历至另一公共节点时,则此遍历结束。这种方式具有如下好处:1、同时遍历,能够节约预处理模块100a的预处理时间;2路径识别较快,公共节点一般具有公共子边,便于预处理模块100a能够较快地完成路径单元的划分;3、在遍历过程中,同时对增量节点标记,并且将增量节点与公共节点划分为路径单元,以在遍历过程就对图镜像进行了标记划分,便于定位地进行路径单元的划分。
P2:根据图遍历的图结构以具有增量的节点为断点在预设路径长度下划分路径单元,并标记为活跃路径单元。预设路径长度也是为了保证线程单元200b的负载均衡。
P3:按照创建断点的镜像数据的方式保留路径单元以外的图镜像至图计算主处理模块100b,以等待需要进行增量更新后的路径单元,以完成图计算。
实施例3
为了使本发明的目的、技术方案和优势更加清晰易懂,以下结合附图及实施例,对本发明进行进一步详细说明。本发明提供的基于FPGA的动态图处理方法,包括预处理步骤和增量计算步骤,具体如下:
(1)预处理模块100a的作用是根据动态图相邻两个图镜像之间的增量获取最新的图镜像中的路径集合,包括如下子步骤:
(1.1)如果动态图初次被处理,则采用图划分方法将图镜像划分为路径的集合并存储在存储器中;否则,进入步骤(1.2);
(1.2)将增量中的每一条边加载到片上存储器中,通过边的两个图顶点位置确定该增量所在的旧图镜像中的路径位置;
(1.3)更新所有受到增量影响的路径中存储的边信息以获取最新图镜像中的路径集合;如果不同路径的长度差低于阈值,则重新划分图镜像以获取路径集合;
(1.4)使用所有受到增量影响的路径信息初始化工作队列,用于增量计算部分;可以采用多种图划分方法对预处理部分进行设计,只要达到生成路径目的即可;例如,基于DFS的图划分方法,即对动态图的一个图镜像,以某一图顶点作为起点(起点的选取规则不设置限制,随机选取即可),然后执行深度搜索遍历(Depth-First-Search Traversal),将访问到的边依次保存,直到边数达到预设的路径长度阈值。这样,动态图中所有的边都被访问一次,且每个路径单元之间没有公共子边,符合设计思想。
(2)线程单元200b的作用是采用硬件流水线处理工作队列中的受影响路径直至工作队列为空,并输出最终结果。包括如下子步骤:
(2.1)根据工作队列加载多条路径到片上存储中;
(2.2)将每条路径分配到不同的定制硬件流水线中,每条流水线访问独立的片上存储空间;
(2.3)每条流水线中包含图顶点更新模块和增量传递模块,路径中的图顶点依次流过这两个模块,首先采用硬件算子更新每个图顶点的状态值,写回到指定的片上存储空间中,然后将该图顶点的增量传递给路径中的后续图顶点;
步骤(2.3)中的硬件算子是根据实际需求所对应的算法(譬如:SCC算法,PageRank算法),通过FPGA的可编程逻辑单元进行定制,通过增量值来更新图顶点状态值。
(2.4)更新完多条路径内部图顶点状态值后,通过片上存储器和FIFO队列对图顶点状态值进行同步;同步结束后将新的内部发生图顶点状态值变化的路径加入工作队列;
(2.5)检查工作队列是否为空:若是,则输出当前的图数据作为加速器的运行结果;否则,返回步骤(2.1)。
实施例4
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明的各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以互相组合。
本实施例公开一种基于FPGA的动态图处理方法。其方法包括:
预处理步骤:在动态图的相邻时间戳的图镜像之间具有增量的情况下,预处理模块100a将后一时间戳的图镜像以任意图顶点的增量计算仅依赖于该任意图顶点的前序图顶点的方式划分为至少一个路径单元;
存储步骤:在路径单元具有两个以上的情况下,FPGA处理模块200将至少两个路径单元按照每一线程单元能够独立处理路径单元的方式存储于线程直连的片上存储器200a上;
增量步骤:线程单元200b在将前序图顶点的状态值更新的情况下确定前序图顶点的相邻的时间戳之间的增量值,并按照路径单元确定的传递方向将增量值传递至前序图顶点相邻的后续图顶点,以对后续图顶点的状态值进行更新,更新后的图顶点状态值写回片上存储器200a,直至该路径单元的所有图顶点完成更新;
返回步骤:在所有的线程单元200b对路径单元的图顶点更新完成的情况下,合并计算驱动模块300将节点图数据合并运算后加载至图计算主线400上,完成图计算。
优选地,预处理模块100a对后一时间戳对应的动态图的图镜像进行遍历,在遍历过程中访问该图镜像的每一图顶点,相邻的图顶点之间构成子边;基于预设的路径长度,将路径按照任意路径单元之间彼此不想交的方式划分为路径单元;
将路径单元进行增量分析,如果其发生增量,则将该路径单元标记为活跃路径单元并送至片上存储器200a;如果其未发生增量变化,则将其标记为非活跃路径单元送至图计算主处理模块100b,等待需要进行增量更新后的路径单元,以完成图计算。
需要注意的是,上述具体实施例是示例性的,本领域技术人员可以在本发明公开内容的启发下想出各种解决方案,而这些解决方案也都属于本发明的公开范围并落入本发明的保护范围之内。本领域技术人员应该明白,本发明说明书及其附图均为说明性而并非构成对权利要求的限制。本发明的保护范围由权利要求及其等同物限定。
Claims (8)
1.一种基于FPGA的动态图处理方法,其特征在于,所述方法包括:
预处理步骤:在动态图的相邻时间戳的图镜像之间具有增量的情况下,预处理模块(100a)将后一时间戳的图镜像以任意图顶点的增量计算仅依赖于该任意图顶点的前序图顶点的方式划分为至少一个路径单元;
存储步骤:在路径单元具有两个以上的情况下,FPGA处理模块(200)将至少两个路径单元按照每一线程单元能够独立处理路径单元的方式存储于线程直连的片上存储器(200a)上;
增量计算步骤:所述线程单元(200b)在将前序图顶点的状态值更新的情况下确定前序图顶点的相邻的时间戳之间的增量值,并按照所述路径单元确定的传递方向将所述增量值传递至前序图顶点相邻的后续图顶点,以对所述后续图顶点的状态值进行更新,更新后的图顶点状态值写回所述片上存储器(200a),直至该路径单元的所有图顶点完成更新,在所有的线程单元(200b)对路径单元的图顶点更新完成的情况下,合并计算驱动模块(300)将节点图数据合并运算后加载至图计算主处理模块(100b)上,完成图计算,所述预处理步骤至少包括如下预处理子步骤:
对所述后一时间戳对应的动态图的图镜像进行遍历,在遍历过程中访问该图镜像的每一图顶点,相邻的图顶点之间构成子边;
基于预设的路径长度,将所述路径按照任意路径单元之间不存在公共子边的方式划分为路径单元;
将路径单元进行增量分析,如果其发生增量,则将该路径单元标记为活跃路径单元并送至所述片上存储器(200a);
如果其未发生增量变化,则将其标记为非活跃路径单元送至所述合并计算驱动模块(300),等待所述线程单元(200b)将其激活,以完成增量计算;
所述预处理模块(100a)能够读取所述片上存储器(200a)更新后的路径单元的图顶点数据和/或边数据,以用于所述预处理模块(100a)能够基于更新后的顶点数据和/或边数数据作为下一时间戳的图数据增量判别的参照数据。
2.根据权利要求1所述的处理方法,其特征在于,所述预处理步骤还包括如下步骤:
预设的所述路径长度包括第一路径长度阈值和第二路径长度阈值,路径单元的长度位于所述第一路径长度阈值和第二路径长度阈值之间,以使得在所述线程单元(200b)能够在负载不均衡率低于负载不均衡阈值的情况下对所述路径单元进行并行更新。
3.根据权利要求2所述的处理方法,其特征在于,所述预处理步骤还包括:
所述预处理模块(100a)能够选取至少一个公共节点作为遍历初始点进行遍历,并记录遍历路径并标记具有增量的节点;
根据所述图计算的图结构以具有增量的节点为断点在预设路径长度下划分路径单元,并标记为活跃路径单元;
按照创建断点的镜像数据的方式保留路径单元以外的图镜像至图计算主处理模块(100b),以等待需要进行增量更新后的路径单元,以完成图计算。
4.根据权利要求1所述的处理方法,其特征在于,所述增量计算步骤至少包括如下计算子步骤:
线程单元(200b)按照同步按时处理的方式读取与其直连的片上存储器(200a)上的路径单元和增量;
基于增量按照图结构依次对图顶点的状态值进行增量更新,每一图顶点的状态值更新完成之后立即保存至所述片上存储器(200a),直至最后一个图顶点的状态值更新;
合并计算驱动模块(300)按照图结构依次将路径单元的最后一个图顶点的状态值经所述片上存储器(200a)和/或经所述线程单元(200b)加载至所述图计算主处理模块(100b)。
5.根据权利要求4所述的处理方法,其特征在于,所述预处理模块(100a)生成将路径单元以工作队列的方式反馈至所述合并计算驱动模块(300),在所述合并计算驱动模块(300)基于所述工作队列判别所述线程单元(200b)完成活跃路径单元和激活的路径单元的增量计算的情况下才将所述线程单元(200b)生成的增量结果发送至所述图计算主处理模块(100b)。
6.根据权利要求5所述的处理方法,其特征在于,在非活跃路径单元和活跃路径单元共享图顶点的情况下,所述预处理模块(100a)创建该共享图顶点的镜像数据,以使得所述图计算主处理模块(100b)能够在图计算过程中能够基于活跃路径单元中该共享图顶点的状态值建立与该镜像数据的增量关系。
7.一种基于FPGA的动态图处理系统,包括预处理模块(100a)和FPGA处理模块(200),其特征在于,
在动态图的相邻时间戳的图镜像之间具有增量的情况下,所述预处理模块(100a)将后一时间戳的图镜像以任意图顶点的增量计算仅依赖于该任意图顶点的前序图顶点的方式划分为至少一个路径单元;
在路径单元具有两个以上的情况下,所述FPGA处理模块(200)将至少两个路径单元按照每一线程单元能够独立处理路径单元的方式存储于线程直连的片上存储器(200a)上;
所述线程单元(200b)在将前序图顶点的状态值更新的情况下确定前序图顶点的相邻的时间戳之间的增量值,并按照所述路径单元确定的传递方向将所述增量值传递至前序图顶点相邻的后续图顶点,以对所述后续图顶点的状态值进行更新,更新后的图顶点状态值写回所述片上存储器(200a),直至该路径单元的所有图顶点完成更新;
在所有的线程单元(200b)对路径单元的图顶点更新完成的情况下,合并计算驱动模块(300)将节点图数据合并运算后加载至图计算主线(400)上,完成图计算,
预处理模块(100a)被配置为执行如下步骤:
对所述后一时间戳对应的动态图的图镜像进行遍历,在遍历过程中访问该图镜像的每一图顶点,相邻的图顶点之间构成子边;
基于预设的路径长度,将所述路径按照任意路径单元之间不存在公共子边的方式划分为路径单元;
将路径单元进行增量分析,如果其发生增量,则将该路径单元标记为活跃路径单元并送至所述片上存储器(200a);
如果其未发生增量变化,则将其标记为非活跃路径单元送至所述合并计算驱动模块(300),等待所述线程单元(200b)将其激活,以完成增量计算;
所述预处理模块(100a)能够读取所述片上存储器(200a)更新后的路径单元的图顶点数据和/或边数据,以用于所述预处理模块(100a)能够基于更新后的顶点数据和/或边数数据作为下一时间戳的图数据增量判别的参照数据。
8.根据权利要求7的处理系统,其特征在于,所述预处理模块(100a)对所述后一时间戳对应的动态图的图镜像进行遍历,在遍历过程中访问该图镜像的每一图顶点,相邻的图顶点之间构成子边;基于预设的路径长度,将所述路径按照任意路径单元之间彼此不相交的方式划分为路径单元;
将路径单元进行增量分析,如果其发生增量,则将该路径单元标记为活跃路径单元并送至所述片上存储器(200a);如果其未发生增量变化,则将其标记为非活跃路径单元送至图计算主处理模块(100b),等待需要进行增量更新后的路径单元,以完成图计算。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911334671.0A CN111104224B (zh) | 2019-12-20 | 2019-12-20 | 一种基于fpga的动态图处理方法 |
US16/947,055 US11609787B2 (en) | 2019-12-20 | 2020-07-16 | FPGA-based dynamic graph processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911334671.0A CN111104224B (zh) | 2019-12-20 | 2019-12-20 | 一种基于fpga的动态图处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111104224A CN111104224A (zh) | 2020-05-05 |
CN111104224B true CN111104224B (zh) | 2023-06-20 |
Family
ID=70423008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911334671.0A Active CN111104224B (zh) | 2019-12-20 | 2019-12-20 | 一种基于fpga的动态图处理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11609787B2 (zh) |
CN (1) | CN111104224B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112445940B (zh) * | 2020-10-16 | 2022-05-24 | 苏州浪潮智能科技有限公司 | 图划分方法、装置及计算机可读存储介质 |
CN117271834A (zh) * | 2022-06-15 | 2023-12-22 | 华为技术有限公司 | 图的处理方法及装置 |
CN117312633B (zh) * | 2023-11-07 | 2024-05-03 | 之江实验室 | 基于带hbm的fpga的动态极大团枚举装置及方法 |
CN117251380B (zh) * | 2023-11-10 | 2024-03-19 | 中国人民解放军国防科技大学 | 一种面向单调流式图的优先级异步调度方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018205892A1 (en) * | 2017-05-12 | 2018-11-15 | Huawei Technologies Co., Ltd. | Incremental graph computations for querying large graphs |
CN109785224A (zh) * | 2019-01-29 | 2019-05-21 | 华中科技大学 | 一种基于fpga的图数据处理方法和系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140136553A1 (en) * | 2012-11-13 | 2014-05-15 | International Business Machines Corporation | Appliance for accelerating graph database management and analytics systems |
US9772890B2 (en) * | 2014-12-31 | 2017-09-26 | International Business Machines Corporation | Sophisticated run-time system for graph processing |
US10810210B2 (en) * | 2017-05-12 | 2020-10-20 | Battelle Memorial Institute | Performance and usability enhancements for continuous subgraph matching queries on graph-structured data |
US11436055B2 (en) * | 2019-09-28 | 2022-09-06 | Apple Inc. | Execution graph acceleration |
-
2019
- 2019-12-20 CN CN201911334671.0A patent/CN111104224B/zh active Active
-
2020
- 2020-07-16 US US16/947,055 patent/US11609787B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018205892A1 (en) * | 2017-05-12 | 2018-11-15 | Huawei Technologies Co., Ltd. | Incremental graph computations for querying large graphs |
CN109785224A (zh) * | 2019-01-29 | 2019-05-21 | 华中科技大学 | 一种基于fpga的图数据处理方法和系统 |
Non-Patent Citations (6)
Title |
---|
Nina Engelhardt等.GraVF-M: Graph Processing System Generation for Multi-FPGA Platforms.《ACM Transactions on Reconfigurable Technology and Systems》.2019,第第12卷卷(第第12卷期),全文. * |
Shijie Zhou等.An FPGA framework for edge-centric graph processing.《CF '18: Proceedings of the 15th ACM International Conference on Computing Frontiers》.2018,全文. * |
徐冲冲.基于FPGA的图计算加速器系统的研究.《中国优秀硕士学位论文全文数据库信息科技辑》.2019,全文. * |
李若时.基于FPGA的高性能图计算架构FabGraph的研究与实现.《万方学位论文数据库》.2019,全文. * |
雷国庆.基于FPGA的图计算并行算法和体系结构研究.《中国博士学位论文全文数据库信息科技辑》.2017,全文. * |
黄立楠.基于FPGA的图数据处理系统的研究与实现.《万方学位论文数据库》.2017,全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111104224A (zh) | 2020-05-05 |
US11609787B2 (en) | 2023-03-21 |
US20210191763A1 (en) | 2021-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111104224B (zh) | 一种基于fpga的动态图处理方法 | |
US9715475B2 (en) | Systems and methods for in-line stream processing of distributed dataflow based computations | |
US11436400B2 (en) | Optimization method for graph processing based on heterogeneous FPGA data streams | |
US8364909B2 (en) | Determining a conflict in accessing shared resources using a reduced number of cycles | |
US20090254505A1 (en) | Reconfigurable hardware accelerator for boolean satisfiability solver | |
US10089259B2 (en) | Precise, efficient, and transparent transfer of execution between an auto-generated in-line accelerator and processor(s) | |
US9400767B2 (en) | Subgraph-based distributed graph processing | |
CN113821332B (zh) | 自动机器学习系统效能调优方法、装置、设备及介质 | |
US20100057647A1 (en) | Accommodating learned clauses in reconfigurable hardware accelerator for boolean satisfiability solver | |
US11720496B2 (en) | Reconfigurable cache architecture and methods for cache coherency | |
Bhatotia | Incremental parallel and distributed systems | |
CN104778077A (zh) | 基于随机和连续磁盘访问的高速核外图处理方法及系统 | |
CN107992358B (zh) | 一种适用于核外图处理系统的异步io执行方法及系统 | |
He et al. | Efficient parallel A* search on multi-GPU system | |
Madsen et al. | Enorm: Efficient window-based computation in large-scale distributed stream processing systems | |
CN108933813A (zh) | 在顺序保留数据流消耗期间防止读取器饥饿 | |
US11586368B1 (en) | Configuring unused SCM memory space to support namespaces based on IO patterns | |
CN115131192A (zh) | 基于图形流水线的数据处理方法、装置、设备及存储介质 | |
Li et al. | Dynamic state partitioning in parallelized byzantine fault tolerance | |
Jin et al. | Simulation of information propagation over complex networks: Performance studies on multi-GPU | |
KR20210080749A (ko) | 공간 조인 수행 방법 및 장치 | |
CN115827170B (zh) | 基于离散事件的计算机体系结构的并行仿真方法及装置 | |
US20240185110A1 (en) | Distribution of quantum state vector elements across network devices in quantum computing simulation | |
CN116150048A (zh) | 一种内存优化方法、装置、设备及介质 | |
Si | A structure-aware approach for efficient graph processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |