CN110704360B - 一种基于异构fpga数据流的图计算优化方法 - Google Patents
一种基于异构fpga数据流的图计算优化方法 Download PDFInfo
- Publication number
- CN110704360B CN110704360B CN201910938006.6A CN201910938006A CN110704360B CN 110704360 B CN110704360 B CN 110704360B CN 201910938006 A CN201910938006 A CN 201910938006A CN 110704360 B CN110704360 B CN 110704360B
- Authority
- CN
- China
- Prior art keywords
- graph
- processing module
- fpga
- data
- cpu
- 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
- 238000004364 calculation method Methods 0.000 title claims abstract description 141
- 238000000034 method Methods 0.000 title claims abstract description 86
- 238000005457 optimization Methods 0.000 title claims abstract description 31
- 238000012545 processing Methods 0.000 claims abstract description 348
- 230000008569 process Effects 0.000 claims abstract description 52
- 230000001788 irregular Effects 0.000 claims abstract description 46
- 238000009826 distribution Methods 0.000 claims abstract description 26
- 238000003860 storage Methods 0.000 claims abstract description 18
- 230000015654 memory Effects 0.000 claims description 55
- 239000000872 buffer Substances 0.000 claims description 23
- 238000004891 communication Methods 0.000 claims description 22
- 230000001133 acceleration Effects 0.000 claims description 21
- 230000008901 benefit Effects 0.000 claims description 20
- 230000006870 function Effects 0.000 claims description 14
- 230000008859 change Effects 0.000 claims description 10
- 230000010354 integration Effects 0.000 claims description 8
- 238000002360 preparation method Methods 0.000 claims 3
- 238000010586 diagram Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 6
- 230000007547 defect Effects 0.000 description 5
- 238000001514 detection method Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000012512 characterization method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000047 product Substances 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/331—Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- 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/5044—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 hardware capabilities
-
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Geometry (AREA)
- Evolutionary Computation (AREA)
- Microcomputers (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
Abstract
本发明涉及一种基于异构FPGA数据流的图计算优化方法,FPGA处理模块读取存储于共享存储模块中的图数据Graph data,并且在对图数据进行图计算Graph Processing之前基于图数据的幂律分布特性凭借FPGA处理模块的可编辑性对图数据进行遍历以获取图数据中存在的不规则数据流的至少一个不规则性参数,调度模块按照至少一个不规则形参数与其契合的预设的访问规则进行匹配的方式将契合CPU处理模块的图数据的部分分配至CPU处理模块进行图计算以获取CPU图计算结果以及将剩下的另一部分分配至具有并行处理功能的FPGA处理模块进行图计算以获取FPGA图计算结果。该方法能够在对图数据加速处理的过程中尽量平衡CPU处理模块和FPGA处理模块的处理负载。
Description
技术领域
本发明涉及图计算技术领域,尤其涉及一种基于异构FPGA数据流的图计算优化方法。
背景技术
图计算(Graph Processing)由于其广泛的应用性和卓越的实用性在学术界和工业界日益受到重视。例如,图计算应用于社交媒体、科学中分子结构关系、电商平台的广告推荐、网页信息等等领域。图(Graph)用于表达对象之间关联关系的一种抽象数据结构,其能够将人、产品、想法、事实、兴趣爱好之间的关系全部转换为信息流或者数据流而存储和计算。图还能够用于数据挖掘和机器学习,比如识别出有影响力的人和信息、社区发现、寻找产品和广告的投放用户,给有依赖的复杂数据构建模型等。在图结构中,其用使用顶点(Vertex)和边(Edge)进行描述,顶点表示对象,边表示对象之间的关系。可抽象成用图描述的数据即为图数据(Graph Data)。图计算,便是以图作为数据模型来表达问题并予以解决的这一过程。具有代表性的图计算机包括Google提出的Pregel、单机的Graphchi、专用于CPU的 Cucha以及专用于FPGA的GraphGen。相比较与前三种处理环境,基于FPGA 的图计算研究发展缓慢。FPGA作为一种半定制电路,解决了专用集成电路 (ASIC)存在的难以定制的问题。但是因为其增加了可定制的特性,其耗费了诸多的资源在于可定制上,并且需要协调各个模块的时钟,导致关键路径时间过长,因此FPGA整体的频率比起CPU和ASIC低了一个档次。其次,虽然FPGA相较于CPU具有很高的并行度(因为其可以定制多条流水线),但是现如今的图计算并没有很好地利用FPGA高度并行的特性。基于上述两个原因,FPGA图计算在如今仍没有达到很高的效率。
现有的基于FPGA设计的图计算系统主要有两种实现方式,基于 CPU-FPGA的异构实现模式以及基于FPGA的图架构实现模式。
基于CPU-FPGA的异构实现模式主要基于CPU、FPGA两种处理的不同特性,其中CPU是一种通用处理器,可以实现线程数较少的低并行化,但是具有很高的运行频率,并且具有非常好的指令设计,可以实现十分高效的程序执行,而FPGA具有丰富的逻辑资源,可以实现细粒度的流水线并行,因此可以实现成千上万线程数的高并行化,由此可知,如果是需要实现低并行度的并行化,CPU要优于FPGA,如果要实现高并行度的并行化,FPGA要优于CPU,因此CPU-FPGA异构图计算系统设计中一般将起始/结束阶段置于CPU进行执行,而将高并行度的中间阶段置于FPGA执行。因此这种异构 CPU-FPGA图计算架构具有下列诸多优点:(1)CPU和FPGA处理的领域各不相同,FPGA擅长处理大量并行的应用而CPU的并行度不够。在图计算过程中,由于图的幂律特点,少数的点具有极大的度数,需要极高的并行度才能高效地进行这部分图数据的处理,而大部分的点又只有很小的度数,在 CPU上具有很大的优势。结合两者优势的异构CPU-FPGA架构成为了解决图计算的一个很好的方案(2)FPGA具有很大的带宽,可以弥补CPU读取数据的不足。在图计算过程中,访问存储的时间是远远大于计算时间的,而传统的CPU处理器则没有这么大的带宽支持图应用。FPGA中通常提供了多端口的大带宽DRAM供读取数据使用,因而在读取图数据方面相比如CPU会有很大的优势,结合CPU和FPGA成为了解决图应用过程中带宽不足情况的最优解。
例如,公开号为CN107844433A的中国专利公开的一种异构混合内存服务器架构。其包括:CPU计算板和NYM板;CPU计算板上设置有CPU 芯片,CPU芯片连接有DRAM芯片;NVM板上设置有主FPGA芯片,主FPGA 芯片连接有DRAM芯片和NVM内存条;CPU芯片通过QPI总线与主FPGA 芯片连接;主FPGA芯片维护非易失内存的全局缓存一致性,实现全局内存共享。该架构通过将具有低功耗、大容量的NVM作为远端内存,容量小、速度快的DRAM作为近端内存的方式,构建大容量、低功耗的异构混合内存系统;对以后内存进行统一编址,解决异构内存系统耦合和速度匹配问题,维护全局数据一致性。
例如,公开号为CN109471732A的中国专利公开的一种面向 CPU-FPGA的异构多核系统的数据分配方法。将源代码通过Clang前端编译成低级虚拟机LLVM的中间码;用低级虚拟机LLVM执行低级虚拟机LLVM 的中间码,并接收输入数据,从而获取数据访问的轨迹和指令轨迹;通过指令轨迹生成动态数据依赖图DDDG,以表示FPGA内核的控制流和数据流;将获得的数据访问轨迹送入缓存模拟器CacheSimulator,获取缓存冲突图 CCG;构建整数线性规划公式,根据动态数据依赖图DDDG和缓存冲突图 CCG,对整数线性规划公式进行求解,得到最优的数据分配方案。
例如,公开号为CN107273331A的中国专利公开的一种基于 CPU+GPU+FPGA的架构的异构计算系统和方法。该计算系统包括CPU主机模块、一个或多个GPU异构加速模块和一个或多个FPGA异构加速模块, CPU主机模块分别与GPU异构加速模块、FPGA异构加速模块通信连接;其中,CPU主机模块用于资源管理以及处理任务分配给GPU异构加速模块个/ 或FPGA异构加速模块。GPU异构加速模块对来自CPU主机模块的任务进行并行处理;FPGA异构加速模块对来自CPU主机模块的任务进行串行或并行处理。该专利提供的异构计算系统能够发挥CPU的管控优势、GPU的并行处理优势、FPGA的性能功耗比并且具有灵活配置的优势,可适应不同的应用场景,满足不同类型的任务需求。
例如,公开号为CN108596885A的中国专利公开的一种基于 CPU+FPGA的快速SAR图像变化监测方法。本发明采用CPU+FPGA异构并行加速实现SAR图像的变化检测,FPGA的并行计算能力要远远高于CPU数据串行计算能力。并且采用FPGA与CPU结合工作的方式,FPGA负责将整个算法中数据的处理并行化,CPU负责在主机端控制任务的调度以及参数的大小。本发明采用OpenCL的并行编程标准对SAR图像变化检测的算法进行并行化编写,代码的可移植性比较高,在不同的异构平台都可以运5行。
公开号为CN101165652的中国专利公开的一种用CPU同时加载多片 FPGA的方法。用于包括单片或多片FPGA及CPU的系统,包括:步骤一,通过对多片FPGA的加载比特流文件进行合并处理生成一FPGA加载文件;步骤二,对所述CPU的地址总线进行逻辑扩展得到加载所述多片FPGA所需的寄存器和锁存器;及步骤三,所述CPU读取所述FPGA加载文件到所述CPU的扩展内存并通过控制所述寄存器和所述锁存器产生加载时序对所述多片FPGA或所述多片FPGA中一片FPGA进行加载。与现有技术相比,本发明方法大大加快了CPU对多片FPGA的加载速度,提高了加载电路的可靠性和灵活性,有效节约了外部FLASH的容量。
例如,公开号为CN108776649A的中国专利公开的一种基于 CPU+FPGA异构计算系统,涉及异构计算技术领域,采用多个FPGA加速模块协同CPU主控模块完成同一计算任务;CPU主控模块负责逻辑判断、管理控制,对FPGA加速模块进行计算任务分配;FPGA加速模块负责对计算任务进行加速;FPGA加速模块内部划分为静态区域:负责实现PCIeDMA 通信、SRIO通信、DDR控制;以及动态可重构区域:执行CPU主控模块下发的kernel函数,对计算任务进行加速。该发明针对不同的任务类型,实现对计算任务的并行加速处理与流水加速处理,能够大幅提升任务处理的吞吐率,缩短任务执行时间,极大提高计算机的计算性能
但是,将整个图计算过程在CPU和FPGA两个设计架构上执行,相对于基于单FPGA或者单CPU的图计算架构结合了两者的优势,但也存在以下缺点:(1)在CPU与FPGA执行转换的时候需要停止当前处理器的程序执行,保存当前的运行状态和处理数据,然后将数据通过PCIe通道传输到需要转换到的处理器上,然后重建执行状态,这个过程需要花费大量的时间,几乎占总的程序执行时间的20%以上;(2)在CPU将程序执行转换到FPGA时,需要停止CPU的工作,在FPGA将程序执行转换到CPU时,需要停止FPGA 的工作,这之间是一个频繁的控制过程,相对于在一个处理器上执行整个遍历程序显得十分繁琐及复杂。
此外,一方面由于对本领域技术人员的理解存在差异;另一方面由于发明人做出本发明时研究了大量文献和专利,但篇幅所限并未详细罗列所有的细节与内容,然而这绝非本发明不具备这些现有技术的特征,相反本发明已经具备现有技术的所有特征,而且申请人保留在背景技术中增加相关现有技术之权利。
发明内容
针对现有技术之不足,本发明提供了一种基于异构FPGA数据流的图计算优化方法,尤其涉及一种基于CPU+FPGA异构的数据流图计算优化方法,其能够基于图的幂律分布特性以调度的方式将图数据分别发送至CPU处理模块和FPGA处理模块进行动态加速处理,以使得所述FPGA处理模块能够在尽量平衡由于所述图数据的不规则性引起的所述CPU处理模块和所述 FPGA处理模块之间的处理负载的情况下协同所述CPU处理模块处理所述图数据中的不规则数据流以获取图计算结果;所述方法包括:共享存储模块内存储有待进行图计算处理的图数据;所述CPU处理模块和所述FPGA处理模块按照并行的方式分别与所述共享存储模块通信连接,以使得所述CPU处理模块与所述FPGA处理模块分别能够实时读取所述图数据的至少一部分,从而所述CPU处理模块和/或所述FPGA处理模块对各自读取到的图数据的至少一部分进行图计算,以分别获取CPU图计算结果和/或FPGA图计算结果;整合模块将所述CPU图计算结果和/或所述FPGA图计算结果进行整合,以获取所述图计算结果,所述FPGA处理模块读取存储于所述共享存储模块中的图数据,并且在对所述图数据进行图计算之前基于所述图数据的幂律分布特性凭借所述FPGA处理模块的可编辑性对所述图数据进行遍历以获取所述图数据中存在的不规则数据流的至少一个不规则性参数,所述调度模块按照将所述至少一个不规则形参数与其契合的预设的访问规则进行匹配的方式将契合所述CPU处理模块的图数据的部分分配至所述CPU处理模块进行图计算以获取所述CPU图计算结果以及将剩下的另一部分分配至具有并行处理功能的FPGA处理模块进行图计算以获取FPGA图计算结果。
本发明实现了一种基于图数据中指令规则性的高效异构数据流图计算执行框架,具体包括以下内容:本执行模型分为两个部分进行高效图计算的实现,首先第一部分FPGA处理模块对图数据计算过程中的指令规则性进行计算,计算其控制规则性和访存规则性并将其量化,作为之后调度算法的基础。第二部分则是图调度算法,根据第一部分计算出的控制规则性和访存规则性的大小,再根据传统处理器适用的图数据和数据流适用的图数据的不同,动态地将其在传统CPU处理模块上和FPGA处理模块上进行调度,从而达到图计算加速的目的。本发明相对于传统的图计算方法,引入数据流处理模型来处理传统CPU不擅长处理的部分,从而解决了由于图的不规则访存引起的低效指令级并行,增加了计算效率。
根据一种优选的实施方式,所述调度模块按照能够与具有至少两个能够并行处理的线程的所述FPGA处理模块执行本地访问的方式彼此通信连接,以使得所述FPGA处理模块在对所述图数据进行遍历过程中将不契合所述 CPU处理模块处理的图数据的一部分按照能够并行处理的方式写入FPGA处理模块中的所述至少两个线程对应的FPGA内部缓存器中,从而所述FPGA 处理模块作为所述CPU处理模块的异构图计算加速器能够以节约通信时间和写入时间的方式对不契合所述CPU处理模块处理的图数据的一部分进行并行图计算,以尽量平衡由于所述图数据的不规则性引起的所述CPU处理模块和所述FPGA处理模块处理负载。
根据一种优选的实施方式,所述FPGA处理模块中的至少一个线程基于所述FPGA处理模块的可编辑性配置为能够按照所述遍历规则对所述图数据进行遍历,并且所述至少一个线程与所述调度模块通过本地缓存器通信连接,所述至少一个线程的遍历的步骤至少包括:从所述图数据中选择至少一个子点作为起始点开始遍历;读取所述至少一个子点的子点数据;按照图数据中的结构,读取其相邻的目标子点以及两相邻子点的边;读取所述目标子点的子点数据和所述边的边数据;将所述至少一个子点的子点数据、所述目标子点、所述两相邻子点的边、所述其他子点的子点数据和所述边的边数据加载至所述FPGA处理模块的本地缓存器上,用于所述调度模块能够在本地以节约通信时间和写入时间的方式计算所述图数据的不规则性参数。
根据一种优选的实施方式,所述调度模块将所述至少一个不规则性参数读取与其对应的阈值比较,所述阈值是契合所述CPU处理模块处理的表征参数,如果所述不规则性参数中的至少一个超出其对应的阈值,则所述调度模块将其对应的图数据传输至所述FPGA内部缓存器和/或片上存储器上,用于所述FPGA处理模块能够对该图数据进行并行图计算;如果所有的不规则性参数均未超出其对应的阈值,则所述调度模块将该图数据的活跃点远程传输至所述CPU处理模块上的CPU内部缓存器,用于所述CPU处理模块基于所述活跃点从所述共享存储模块读取该图数据并进行图计算。
根据一种优选的实施方式,所述共享存储模块与所述片上存储器通信连接,以使得在所述FPGA处理模块对上一层迭代的图数据进行图遍历过程中和/或在所述FPGA处理模块对上一层迭代的图数据进行图计算过程中,所述片上存储器能够读取下一层需要处理的图数据,从而在所述FPGA处理模块对上一层迭代的图数据图计算完成之后和/或在所述CPU处理模块对上一层迭代的图数据图计算的过程中能够直接执行对下一层需要处理的图数据进行图遍历而无需等待所述述共享存储模块将下一层需要处理的图数据传输至所述FPGA处理模块后才对下一层需要处理的图数据进行图遍历。
根据一种优选的实施方式,所述FPGA处理模块中的至少一个线程用于计量每一个子点的相邻子点的个数并生成个数集,该线程能够按照如下至少一种方式基于所述个数集判断图数据的结构是否规则:计算最大个数与最小个数之间的比值;计算最大个数与平均个数之间的比值;计算最小个数与平均个数之间的比值;计算最小个数与个数的中位数之间的比值;计算最大个数与个数的中位数之间的比值。
根据一种优选的实施方式,所述FPGA模块通过上一层迭代的数据访问次数以及访问的总时间计算出每个节点数据访问的平均时间,由此来确定图应用在计算过程中访存规则性的变化情况,以计算下一次迭代时的访存规则性以此用于调度模块来确定是将其调度至CPU进行运算还是留在本地FPGA 数据流加速器进行运算。
根据一种优选的实施方式,本发明还提供了一种基于异构FPGA数据流的图计算优化系统,尤其涉及一种基于CPU+FPGA异构的数据流图计算优化系统,其能够基于图的幂律分布特性以调度的方式将图数据分别发送至CPU 处理模块和FPGA处理模块进行动态加速处理,以使得所述FPGA处理模块能够在平衡由于所述图数据的不规则性引起的所述CPU处理模块和所述 FPGA处理模块之间的处理负载的情况下协同所述CPU处理模块处理所述图数据中的不规则数据流,以获取图计算结果;所述系统包括:共享存储模块:用于存储有待进行图计算处理的图数据;所述CPU处理模块;所述FPGA处理模块;其中,所述CPU处理模块和所述FPGA处理模块按照并行的方式分别与所述共享存储模块通信连接,以使得所述CPU处理模块与所述FPGA处理模块分别能够实时读取所述图数据的至少一部分,从而所述CPU处理模块和/或所述FPGA处理模块对各自读取到的图数据的至少一部分进行图计算,以分别获取CPU图计算结果和/或FPGA图计算结果;和整合模块,用于将所述CPU图计算结果和/或所述FPGA图计算结果进行整合,以获取图计算结果,所述FPGA处理模块读取存储于所述共享存储模块中的图数据,并且在对所述图数据进行图计算之前基于所述图数据的幂律分布特性凭借所述FPGA处理模块的可编辑性对所述图数据进行遍历以获取所述图数据中存在的不规则数据流的至少一个不规则性参数,所述调度模块按照将所述至少一个不规则形参数与其契合的预设的访问规则进行匹配的方式将契合所述 CPU处理模块的图数据的部分分配至所述CPU处理模块进行图计算以获取所述CPU图计算结果以及将剩下的另一部分分配至具有并行处理功能的 FPGA处理模块进行图计算以获取FPGA图计算结果。
根据一种优选的实施方式,所述系统中,所述调度模块按照能够与具有至少两个能够并并行处理的线程的所述FPGA处理模块执行本地访问的方式彼此通信连接,以使得所述FPGA处理模块在对所述图数据进行遍历过程中能够将不契合所述CPU处理模块处理的图数据的一部分按照并行处理的方式写入FPGA处理模块中的所述至少两个线程对应的FPGA内部缓存器,从而所述FPGA处理模块作为所述CPU处理模块的异构图计算加速器能够以节约通信时间和写入时间的方式对不契合所述CPU处理模块处理的图数据的一部分进行并行图计算,以尽量平衡由于所述图数据的不规则性引起的所述 CPU处理模块和所述FPGA处理模块之间的处理负载。
根据一种优选的实施方式,本发明还提供了一种基于CPU+FPGA异构系统的图数据调度方法,其能够根据图数据的不规则数据流中的至少一个参数凭借FPGA的可编辑性对所述不规则数据流进行分流,以发挥FPGA处理模块和CPU处理模块各自的架构优势对所述图数据进行协同加速处理,所述 FPGA处理模块读取存储于共享存储模块中的图数据,并且在对所述图数据进行图计算之前基于所述图数据的幂律分布特性凭借所述FPGA处理模块的可编辑性对所述图数据进行遍历以获取所述图数据中存在的不规则数据流的至少一个不规则性参数,调度模块按照将所述至少一个不规则形参数与其契合的预设的访问规则进行匹配的方式将契合所述CPU处理模块的图数据的部分分配至所述CPU处理模块进行图计算以获取所述CPU图计算结果以及将剩下的另一部分分配至具有并行处理功能的FPGA处理模块进行图计算以获取FPGA图计算结果。
本发明提供一种基于CPU-FPGA的异构实现模式主要基于CPU、FPGA 两种处理的不同特性,其中CPU是一种通用处理器,可以实现线程数较少的低并行化,但是具有很高的运行频率,并且具有非常好的指令设计,可以实现十分高效的指令执行,而FPGA具有丰富的逻辑资源,可以实现细粒度的流水线并行,因此可以实现成千上万线程数的高并行化,由此可知,如果是需要实现低并行度的并行化,CPU要优于FPGA,如果要实现高并行度的并行化,FPGA要优于CPU,因此CPU-FPGA异构图计算系统设计中一般将起始/结束阶段置于CPU进行执行,而将高并行度的中间阶段置于FPGA执行。因此这种异构CPU-FPGA图计算架构具有下列诸多优点:(1)CPU和FPGA 处理的领域各不相同,FPGA擅长处理大量并行的应用而CPU的并行度不够。在图计算过程中,由于图的幂律特点,少数的点具有极大的度数,需要极高的并行度才能高效地进行这部分图数据的处理,而大部分的点又只有很小的度数,在CPU上具有很大的优势。结合两者优势的异构CPU-FPGA架构成为了解决图计算的一个很好的方案(2)FPGA具有很大的带宽,可以弥补 CPU读取数据的不足。在图计算过程中,访问存储的时间是远远大于计算时间的,而传统的CPU处理器则没有这么大的带宽支持图应用。FPGA中通常提供了多端口的大带宽DRAM供读取数据使用,因而在读取图数据方面相比如CPU会有很大的优势,结合CPU和FPGA成为了解决图应用过程中带宽不足情况的最优解。
附图说明
图1是本发明提供的一种优化系统的逻辑结构示意图;和
图2是本发明提供的一种FPGA模块的优选的逻辑结构示意图。
附图标记列表
100:CPU处理模块 500:调度模块
200:FPGA处理模块 200a:内部缓存器
300:共享存储模块 200b:本地缓存器
400:整合模块 200c:片上存储器
具体实施方式
下面结合附图1-2进行详细说明。
术语解释
CPU:Central Processing Unit——中央处理器;
FPGA:Field programmable Gate Array——现场可编程门阵列;
DRAM:动态随机存取存储器
BRAM:块式随机存取存储器
Graph——图
Graph Data——图数据
Graph Processing——图计算
实施例1
本实施例公开一种基于异构FPGA数据流的图计算Graph Processing优化方法。本实施例尤其涉及一种基于CPU+FPGA异构的数据流图计算Graph Processing优化方法。
CPU处理模块100:CPU是一种通用处理器,可以实现线程数较少的低并行化,但是具有很高的运行频率,并且具有非常好的指令设计,可以实现十分高效的指令执行。
FPGA处理模块200:具有丰富的逻辑资源,可以实现细粒度的流水线并行,因此可以实现成千上万线程数的高并行化。
由于自然图Graph具的幂律特性和不规则性,少量的点具有非常大的度数,而大量的点只具有少量的度数,并且图的遍历是随机的,图应用的执行过程中容易产生非常多的不规则访问和难以预测的情况。因此传统处理器在解决这种不规则的图应用上存在非常大的弊端,图计算的过程中效率极其低下。而是通过新颖的访存规则性和控制规则性这两种特性去判断一个图应用运行过程中的特点去寻找新的可供优化的机会。
自然图Graph由于节点度数存在幂律分布的特性,因此存在大量度数非常少的节点,在所有节点中占绝大多数,所选取的遍历起始节点大概率是度数非常少的节点,而该节点的邻居也大概率是度数非常少的节点,因此在进行遍历过程中,起始阶段并行度非常低,而中间过程由于遍历迭代的进行,迭代节点数成倍数增多,并且由于自然图直径限定为一定的数值,在迭代一定次数之后,遍历到大度数节点,因此遍历中间阶段的并行度非常高,遍历后期由于已经遍历了大度数节点,因此该阶段遍历的也是低度数节点,并随着遍历迭代的进行,并行度越来越低,因此整个图遍历并行度呈现出两边低、中间高的执行过程。
该优化方法能够基于图的幂律分布特性以调度的方式将图数据Graph Data分别发送至CPU处理模块100和FPGA处理模块200进行动态加速处理。由于图数据的幂律分布特性,其会存在不规则数据流,这种不规则数据流会导致CPU处理模块100和FPGA处理模块200中的至少一个不适应该不规则数据流,进一步地导致CPU处理模块100和FPGA处理模块200之间的处理负载不均衡。为此,本实施例提供了一种优化方法,以使得FPGA 处理模块200能够在尽量平衡由于图数据的不规则性引起的的情况下协同 CPU处理模块100处理图数据中的不规则数据流以获取图计算结果。例如,由于图的幂律分布特性,大量的点的度数较低,少量的点却拥有很大的度数。根据图计算过程中访存规则性和控制规则性的变化进行调度,那么有大量的点都会运行在CPU上,这会造成负载不均衡的问题,从而极大地降低了处理器的利用率。因此,调度模块需要这个点运行结束后产生的活跃点的个数从而动态分配活跃点到CPU或者FPGA数据流加速器上。
该方法至少包括:
S1:共享存储模块300内存储有待进行图计算处理的图数据。共享存储模块300可以是DRAM。
S2:如图1所示,CPU处理模块100和FPGA处理模块200按照并行的方式分别与共享存储模块300通信连接。CPU处理模块100与FPGA处理模块200分别能够实时读取图数据的至少一部分,从而CPU处理模块100 和/或FPGA处理模块200对各自读取到的图数据的至少一部分进行图计算,以分别获取CPU图计算结果和/或FPGA图计算结果。
S3:整合模块400将CPU图计算结果和/或FPGA图计算结果进行整合,以获取图计算结果。
为了能够在加速处理图数据的同时又能平衡CPU处理模块100和FPGA 处理模块200之间的负载,在步骤S1和S2之间增加步骤S1-2a及S1-2b:
S1-2a:FPGA处理模块200读取存储于共享存储模块300中的图数据。优选地,共享存储模块300与片上存储器200c通信连接,以使得在FPGA 处理模块200对上一层迭代的图数据进行图遍历过程中和/或在FPGA处理模块200对上一层迭代的图数据进行图计算过程中,片上存储器200c能够读取下一层需要处理的图数据。片上存储器200c可以是BRAM。FPGA处理模块200在对图数据进行图计算之前基于图数据的幂律分布特性凭借 FPGA处理模块200的可编辑性对图数据进行遍历以获取图数据中存在的不规则数据流的至少一个不规则性参数。例如,不规则参数包括上一层迭代遍历的点数量、活跃点的个数、上一层迭代边的访问次数与总时间中的至少一个。活跃点只需将上一层迭代的点的个数缓存到寄存器中即可。
S1-2b:调度模块500按照将至少一个不规则形参数与其契合的预设的访问规则进行匹配的方式将契合CPU处理模块100的图数据的部分分配至 CPU处理模块100进行图计算以获取CPU图计算结果以及将剩下的另一部分分配至具有并行处理功能的FPGA处理模块200进行图计算以获取FPGA 图计算结果。例如,针对上一层迭代数据的访问次数以及访问的总时间的不规则性参数,当数据的访问存在过多的乱序访问时,数据的平均访问效率便会降低,平均数据读取时间就会变长。图计算是一个访存计算比很高的应用,数据的访问时间决定了图数据处理的快慢。通过上一层迭代的数据访问次数以及访问的总时间便可以计算出每个数据访问的平均时间,由此来确定图应用在计算过程中访存规则性的变化情况,从而预测下一次迭代时的访存规则性以此来确定是将其调度至CPU进行运算还是留在本地FPGA数据流加速器进行运算。如果访存规则性差,在CPU上进行运算时相当于串行执行,效率会大大降低,因此将其分配到数据流FPGA上进行处理。反之当访存规则性很好的时候,由于数据流加速器将会消耗大量的资源用于token的创建和通讯,将访存规则性好的部分分配到CPU上进行处理可以获得更好的效果。
优选地,如图2所示,调度模块500按照能够与FPGA处理模块200 执行本地访问的方式彼此通信连接。例如,调度模块500可以是与FPGA处理模块200同时设置于一处理芯片上。调度模块中有两个缓存队列,一个供 FPGA处理模块处理,一个供CPU处理模块处理。FPGA处理模块直连调度模块500中属于FPGA处理模块的活跃点队列缓存。当活跃点队列中有数据时,FPGA处理模块便从中取出活跃点进行处理。由于FPGA处理模块200 具有至少两个能够并行处理的线程thread,线程thread均与内部缓存器 200a通信连接,因此,FPGA处理模块200在对图数据进行遍历过程中能够将不契合CPU处理模块100处理的图数据的一部分按照能够并行处理的方式写入FPGA处理模块200中的至少两个线程对应的FPGA内部缓存器 200a中。按照这种方式,FPGA处理模块200作为CPU处理模块100的异构图计算加速器能够以节约通信时间和写入时间的方式对不契合CPU处理模块100处理的图数据的一部分进行并行图计算,以尽量平衡由于图数据的不规则性引起的CPU处理模块100和FPGA处理模块200处理负载。
优选地,FPGA处理模块200中的至少一个线程基于FPGA处理模块200 的可编辑性配置为能够按照遍历规则对图数据进行遍历,并且至少一个线程与调度模块500通过本地缓存器200b通信连接。本地缓存器200b用于存储遍历结果的缓存。FPGA处理模块200的可编辑性主要用于编辑遍历规则,至少一个线程的遍历的步骤至少包括:
从图数据中选择至少一个子点作为起始点开始遍历;
读取至少一个子点的子点数据;
按照图数据中的结构,读取其相邻的目标子点以及两相邻子点的边;
读取目标子点的子点数据和边的边数据;
将至少一个子点的子点数据、目标子点、两相邻子点的边、其他子点的子点数据和边的边数据加载至FPGA处理模块200的本地缓存器200b上。用于调度模块500能够在本地以节约通信时间和写入时间的方式计算图数据的不规则性参数。通过FPGA处理模块200的可编辑性选中多个起始点位置,由数据流FPGA进行并行第一次遍历,从DRAM中读取起始点数据,通过相连的边,再读取目标点数据,将点边数据加载至本地缓存器200b上,而后进行相应的计算,将结果更新至源点,并将新的点加入活跃点集。源点就是当前正在处理的点,比如说图计算中,计算当前点的pagerank值,计算完成后,将pagerank值记录至源点,而后读取这个点相邻的边,从边中取出目标点,也就是新的点,这些点是将要被处理的点,所以要将其加入活跃点集等待下一轮迭代处理,也是下一轮迭代的活跃点。
优选地,调度模块500将至少一个不规则性参数读取与其对应的阈值比较,阈值是契合CPU处理模块100处理的表征参数。如果不规则性参数中的至少一个超出其对应的阈值,则调度模块500将其对应的图数据传输至 FPGA内部缓存器200a和/或片上存储器200c上,用于FPGA处理模块200 能够对该图数据进行并行图计算。如果所有的不规则性参数均未超出其对应的阈值,则调度模块500将该图数据的活跃点远程传输至CPU处理模块100 上的CPU内部缓存器,用于CPU处理模块100基于活跃点从共享存储模块 300读取该图数据并进行图计算。
具体地,上一层迭代遍历的点数量。由于图的幂律分布的特性,大量的点的度数较低,少量的点却拥有很大的度数。上一层迭代的点数量通常反应了一种趋势,假如这个值缓缓增长,或者突然变得很大,意味着图计算程序将会马上面临大量的访存操作。而对于图计算应用来说,大量的访存操作意味着程序将会进行大量的乱序访问以及不规则的控制指令。
活跃点的个数。由于图的幂律分布特性,大量的点的度数较低,少量的点却拥有很大的度数。根据图计算过程中访存规则性和控制规则性的变化进行调度,那么有大量的点都会运行在CPU上,这会造成负载不均衡的问题,从而极大地降低了处理器的利用率。因此,调度模块需要这个点运行结束后产生的活跃点的个数从而动态分配活跃点到CPU或者FPGA数据流加速器上。
上一层迭代数据的访问次数以及访问的总时间。这个要点可以直观地发现图计算过程中数据访问的快慢。当数据的访问存在过多的乱序访问时,数据的平均访问效率便会降低,平均数据读取时间就会边长。图计算是一个访存计算比很高的应用,数据的访问时间决定了图数据处理的快慢。通过上一层迭代的数据访问次数以及访问的总时间便可以计算出每个数据访问的平均时间,由此来确定图应用在计算过程中访存规则性的变化情况,从而预测下一次迭代时的访存规则性以此来确定是将其调度至CPU进行运算还是留在本地FPGA数据流加速器进行运算。如果访存规则性差,在CPU上进行运算时相当于串行执行,效率会大大降低,因此将其分配到数据流FPGA上进行处理。反之当访存规则性很好的时候,由于数据流加速器将会消耗大量的资源用于token的创建和通讯,将访存规则性好的部分分配到CPU上进行处理可以获得更好的效果。
上一层CPU上迭代遇到的分支预测的结果统计。这个要点可以直观地发现图计算过程中控制规则性的状态。当数据的访问存在过多的不可预测的分支时,CPU的分支预测效率就会变得极低,程序难以预测下一次的分支是正确还是错误。一旦分支预测发生错误,已经加载到流水线的指令将会退休,并且流水线需要刷新,回滚到分支之前的状态,这一流程将会极为消耗时间。对于图计算这种不规则的应用来说,在应用执行过程中会有大量的过程处于控制规则性较差的情况,将这一部分控制规则性较差的情况的点的处理分配到FPGA数据流加速器将会极大地提升图计算效率。
对于控制规则性和访存规则性都很好的图计算阶段来说。CPU将会受限于指令发射执行的数目和指令窗口大小,无法获得最大级并行。而数据流执行模型受益于其独特的模型,当数据到达时便可执行,理论上可以获得极高的并行度,从而取得比传统CPU更好的执行效率。因此,当访存规则性和控制规则性很好的时候,需要将其分配到数据流FPGA加速器上进行运算。
控制规则性对于图来说,如果一个点被访问过了,则这个点再次被访问时需要判断是否被访问过。对于图这种结构来说,因为图这种东西是难以预测的,这个if判断时真时假,没有规律,所以图计算是一种控制规则性很差的结构。为此,FPGA处理模块200中的至少一个线程用于计量每一个子点的相邻子点的个数并生成个数集。图结构是由若干个节点彼此的公共边连接形成的网状结构,存在一之间能够幂律分布结构:大部分连接的相邻节点的个数很少,而少部分节点的相邻节点的个数很多。为此,本发明通过计算节点的相邻个数来确定这种网状结构的控制规则性。该线程能够按照如下至少一种方式基于所述个数集判断图数据的结构是否规则,即:控制规则性;
(1)计算最大个数与最小个数之间的比值;
(2)计算最大个数与平均个数之间的比值;
(3)计算最小个数与平均个数之间的比值;
(4)计算最小个数与个数的中位数之间的比值;
(5)计算最大个数与个数的中位数之间的比值。
如果比值超过其对应的阈值,则判定其控制规则性不满足CPU模块的处理,而适合于FPGA模块处理。
访存规则性则是访问的内存的地址是否是顺序的。因为对于无论是ddr 还是dram,存取的位数是一定的,例如32位,64位。但是边数据可能只占8位或者16位。那么剩下的位数都是浪费的,需要过滤的。所以对于程序来说,如果是顺序访问的话,比如需要的直接就是前面几十个数据。此时直接取2-3次就可以了。在这种情况下,取数据效率很高。而图数据有一个特点是随机访问,比如对于一个节点1,他访问的节点可能是序号为100,也可能是序号为10000。此时对于访存来说,就需要去序号为100的节点的地址取数据,取出的数据为64位,但是只用8位。此时会很浪费内存。而访存规则性差就是说的这种情况,取数据的时候取的地址都是不确定的,随机的。访存规则性好指的是顺序访问,例如取序号为100-108号节点的数据,直接就可以取8个数据直接访问。这是访存规则性好的情况。而对于图计算来说,这种访问是不存在的,图数据是随机访问的,所以图的访存规则性是很差的。
调度模块500根据上述预设访问规则在图计算应用运行过程中进行调度分配,将图的一部分置于CPU上执行,将另一部分放在数据流FPGA加速器上执行。为了两者共用一个共享的DRAM,执行时通过调度模块分配任务,将需要处理的活跃点通过PCIE发给CPU,CPU通过共享的DRAM取得相应的源点和目标点数据。FPGA则是直接从本地缓存中读取需要处理的活跃点,再从共享DRAM中取相应的源点和目标点数据。
在FPGA处理模块200对上一层迭代的图数据图计算完成之后和/或在 CPU处理模块100对上一层迭代的图数据图计算的过程中,FPGA处理模块200能够对下一层图数据执行图遍历,因此,优选地,共享存储模块300 与片上存储器200c通信连接,以使得在FPGA处理模块200对上一层迭代的图数据进行图遍历过程中和/或在FPGA处理模块200对上一层迭代的图数据进行图计算过程中,片上存储器200c能够读取下一层需要处理的图数据。在FPGA处理模块200对上一层迭代的图数据图计算完成之后和/或在 CPU处理模块100对上一层迭代的图数据图计算的过程中能够直接执行对下一层需要处理的图数据进行图遍历而无需等待述共享存储模块300将下一层需要处理的图数据传输至FPGA处理模块200后才对下一层需要处理的图数据进行图遍历。按照这种方式,能够有效解决CPU处理模块100和FPGA 模块之间的无缝切换,用于解决如下技术问题:在CPU将指令执行转换到 FPGA时,需要停止CPU的工作,在FPGA将程序执行转换到CPU时,需要停止FPGA的工作,这之间是一个频繁的控制过程,相对于在一个处理器上执行整个遍历程序显得十分繁琐及复杂。
实施例2
本实施例公开一种能够实施实施例1的图计算优化系统。在不造成冲突或者矛盾的情况下,其他实施例的优选实施方式的整体和/或部分内容可以作为本实施例的补充。
现有技术中基于单FPGA或者单CPU的图计算架构结合了两者的优势,但也存在以下缺点:(1)在CPU与FPGA执行转换的时候需要停止当前处理器的程序执行,保存当前的运行状态和处理数据,然后将数据通过PCIe 通道传输到需要转换到的处理器上,然后重建执行状态,这个过程需要花费大量的时间,几乎占总的程序执行时间的20%以上;(2)在CPU将程序执行转换到FPGA时,需要停止CPU的工作,在FPGA将程序执行转换到CPU 时,需要停止FPGA的工作,这之间是一个频繁的控制过程,相对于在一个处理器上执行整个遍历程序显得十分繁琐及复杂。
针对于基于传统CPU运行图计算应用程序过程中的不足以及结合 CPU-FPGA优势互补的特点进行总结分析,可知若CPU在图计算应用过程中由于低带宽、低指令级并行、低效的分支预测从而导致图计算效率过低。若结合CPU-FPGA两者的特点,由于FPGA具有可编辑性,因此在FPGA上编写适用于图计算的数据流执行模型用来弥补CPU处理图计算过程中的缺陷,其目的在于可以充分利用CPU、FPGA两者架构的特性,充分利用图遍历并行执行特性,来实现图遍历执行的性能优化。
该图计算优化系统,尤其涉及一种基于CPU+FPGA异构的数据流图计算优化系统。如图1所示,该优化系统包括CPU处理模块100、FPGA处理模块200、共享存储模块300、整合模块400以及调度模块500。CPU处理模块100是由CPU处理芯片形成的具有图计算功能的模块。FPGA处理模块 200是由FPGA处理芯片形成的具有图计算功能的模块。共享存储模块300 是DRAM。整合模块400是具有将CPU图计算结果和FPGA图计算结果整合成图计算结果的运算功能模块。调度模块500是具有将图数据按照预设的访问规则将图数据中的数据流分配至CPU处理模块100、FPGA处理模块200的具有运算功能的模块。该优化系统还包括上述模块按照图1的方式实现模块间通信的通信模块。
该优化系统的目的在于:能够基于图的幂律分布特性以调度的方式将图数据分别发送至CPU处理模块100和FPGA处理模块200进行动态加速处理,以使得FPGA处理模块200能够在尽量平衡由于图数据的不规则性引起的CPU处理模块100和FPGA处理模块200之间的处理负载的情况下协同 CPU处理模块100处理图数据中的不规则数据流,以获取图计算结果。
图的幂律分布特性:图数据中,大量的点的度数较低,而少量的点却拥有很大的度数。
共享存储模块300:用于存储有待进行图计算处理的图数据。
CPU处理模块100和FPGA处理模块200按照并行的方式分别与共享存储模块300通信连接。CPU处理模块100与FPGA处理模块200分别能够实时读取图数据的至少一部分。CPU处理模块100和/或FPGA处理模块 200对各自读取到的图数据的至少一部分进行图计算,以分别获取CPU图计算结果和/或FPGA图计算结果。
FPGA处理模块200读取存储于共享存储模块300中的图数据。其将在对图数据进行图计算之前基于图数据的幂律分布特性凭借FPGA处理模块 200的可编辑性对图数据进行遍历以获取图数据中存在的不规则数据流的至少一个不规则性参数。不规则性参数包括访问不规则性参数和控制不规则性参数中的至少一种。
调度模块500按照将至少一个不规则形参数与其契合的预设的访问规则进行匹配的方式将契合CPU处理模块100的图数据的部分分配至CPU处理模块100进行图计算以获取CPU图计算结果以及将剩下的另一部分分配至具有并行处理功能的FPGA处理模块200进行图计算以获取FPGA图计算结果。
优选地,调度模块500按照能够与具有至少两个能够并并行处理的线程的FPGA处理模块200执行本地访问的方式彼此通信连接,以使得FPGA处理模块200在对图数据进行遍历过程中能够将不契合CPU处理模块100处理的图数据的一部分按照并行处理的方式写入FPGA处理模块200中的至少两个线程对应的FPGA内部缓存器200a,从而FPGA处理模块200作为CPU 处理模块100的异构图计算加速器能够以节约通信时间和写入时间的方式对不契合CPU处理模块100处理的图数据的一部分进行并行图计算,以尽量平衡由于图数据的不规则性引起的CPU处理模块100和FPGA处理模块 200之间的处理负载。
实施例3
本实施例公开了一种基于CPU+FPGA异构系统的图数据调度方法,在不造成冲突或者矛盾的情况下,其他实施例的优选实施方式的整体和/或部分内容可以作为本实施例的补充。
该调度方法能够根据图数据的不规则数据流中的至少一个参数凭借 FPGA的可编辑性对不规则数据流进行分流,以发挥FPGA处理模块200和 CPU处理模块100各自的架构优势对图数据进行协同加速处理。
FPGA处理模块200读取存储于共享存储模块300中的图数据,并且在对图数据进行图计算之前基于图数据的幂律分布特性凭借FPGA处理模块 200的可编辑性对图数据进行遍历以获取图数据中存在的不规则数据流的至少一个不规则性参数。调度模块500按照将至少一个不规则形参数与其契合的预设的访问规则进行匹配的方式将契合CPU处理模块100的图数据的部分分配至CPU处理模块100进行图计算以获取CPU图计算结果以及将剩下的另一部分分配至具有并行处理功能的FPGA处理模块200进行图计算以获取FPGA图计算结果。
需要注意的是,上述具体实施例是示例性的,本领域技术人员可以在本发明公开内容的启发下想出各种解决方案,而这些解决方案也都属于本发明的公开范围并落入本发明的保护范围之内。本领域技术人员应该明白,本发明说明书及其附图均为说明性而并非构成对权利要求的限制。本发明的保护范围由权利要求及其等同物限定。
Claims (10)
1.一种基于异构FPGA数据流的图计算优化方法,尤其涉及一种基于CPU+FPGA异构的数据流图计算优化方法,其能够基于图的幂律分布特性以调度的方式将图数据分别发送至CPU处理模块(100)和FPGA处理模块(200)进行动态加速处理,以使得所述FPGA处理模块(200)能够协同所述CPU处理模块(100)处理所述图数据中的不规则数据流以获取图计算结果;
所述方法包括:
共享存储模块(300)内存储有待进行图计算处理的图数据;
所述CPU处理模块(100)和所述FPGA处理模块(200)按照并行的方式分别与所述共享存储模块(300)通信连接,以使得所述CPU处理模块(100)与所述FPGA处理模块(200)分别能够实时读取所述图数据的至少一部分,从而所述CPU处理模块(100)和/或所述FPGA处理模块(200)对各自读取到的图数据的至少一部分进行图计算,以分别获取CPU图计算结果和/或FPGA图计算结果;
整合模块(400)将所述CPU图计算结果和/或所述FPGA图计算结果进行整合,以获取所述图计算结果,
其特征在于,
所述FPGA处理模块(200)读取存储于所述共享存储模块(300)中的图数据,并且在对所述图数据进行图计算之前基于所述图数据的幂律分布特性凭借所述FPGA处理模块(200)的可编辑性对所述图数据进行遍历以获取所述图数据中存在的不规则数据流的至少一个不规则性参数,
调度模块(500)按照将所述至少一个不规则参数与其契合的预设的访问规则进行匹配的方式将契合所述CPU处理模块(100)的图数据的部分分配至所述CPU处理模块(100)进行图计算以获取所述CPU图计算结果以及将剩下的另一部分分配至具有并行处理功能的FPGA处理模块(200)进行图计算以获取FPGA图计算结果。
2.根据权利要求1所述的优化方法,其特征在于,所述调度模块(500)按照能够与具有至少两个能够并行处理的线程的所述FPGA处理模块(200)执行本地访问的方式彼此通信连接,以使得所述FPGA处理模块(200)在对所述图数据进行遍历过程中将不契合所述CPU处理模块(100)处理的图数据的一部分按照能够并行处理的方式写入FPGA处理模块(200)中的至少两个线程对应的FPGA内部缓存器(200a)中,从而所述FPGA处理模块(200)作为所述CPU处理模块(100)的异构图计算加速器能够以节约通信时间和写入时间的方式对不契合所述CPU处理模块(100)处理的图数据的一部分进行并行图计算。
3.根据权利要求2所述的优化方法,其特征在于,所述FPGA处理模块(200)中的至少一个线程基于所述FPGA处理模块(200)的可编辑性配置为能够按照遍历规则对所述图数据进行遍历,并且所述至少一个线程与所述调度模块(500)通过本地缓存器(200b)通信连接,
所述至少一个线程的遍历的步骤至少包括:
从所述图数据中选择至少一个子点作为起始点开始遍历;
读取所述至少一个子点的子点数据;
按照图数据中的结构,读取其相邻的目标子点以及两相邻子点的边;
读取所述目标子点的子点数据和所述边的边数据;
将所述至少一个子点的子点数据、所述目标子点、所述两相邻子点的边、其他子点的子点数据和所述边的边数据加载至所述FPGA处理模块(200)的本地缓存器(200b)上,用于所述调度模块(500)能够在本地以节约通信时间和写入时间的方式计算所述图数据的至少一个不规则性参数。
4.根据权利要求3所述的优化方法,其特征在于,所述调度模块(500)将所述至少一个不规则性参数读取与其对应的阈值比较,所述阈值是契合所述CPU处理模块(100)处理的表征参数,
如果所述不规则性参数中的至少一个超出其对应的阈值,则所述调度模块(500)将其对应的图数据传输至所述FPGA内部缓存器(200a)和/或片上存储器(200c)上,用于所述FPGA处理模块(200)能够对该图数据进行并行图计算;
如果所有的不规则性参数均未超出其对应的阈值,则所述调度模块(500)将该图数据的活跃点远程传输至所述CPU处理模块(100)上的CPU内部缓存器,用于所述CPU处理模块(100)基于所述活跃点从所述共享存储模块(300)读取该图数据并进行图计算。
5.根据权利要求4所述的优化方法,其特征在于,所述共享存储模块(300)通过所述片上存储器(200c)与所述至少一个线程通信连接,以使得在所述FPGA处理模块(200)对上一层迭代的图数据进行图遍历过程中和/或在所述FPGA处理模块(200)对上一层迭代的图数据进行图计算过程中,所述片上存储器(200c)能够读取下一层需要处理的图数据,从而在所述FPGA处理模块(200)对上一层迭代的图数据图计算完成之后和/或在所述CPU处理模块(100)对上一层迭代的图数据图计算的过程中能够直接执行对下一层需要处理的图数据进行图遍历而无需等待所述述共享存储模块(300)将下一层需要处理的图数据传输至所述FPGA处理模块(200)后才对下一层需要处理的图数据进行图遍历。
6.根据权利要求5所述的优化方法,其特征在于,所述FPGA处理模块(200)中的至少一个线程用于计量每一个子点的相邻子点的个数并生成个数集,该线程能够按照如下至少一种方式基于所述个数集判断图数据的结构是否规则:
计算最大个数与最小个数之间的比值;
计算最大个数与平均个数之间的比值;
计算最小个数与平均个数之间的比值;
计算最小个数与个数的中位数之间的比值;
计算最大个数与个数的中位数之间的比值。
7.根据权利要求6所述的优化方法,其特征在于,所述FPGA模块(200)通过上一层迭代的数据访问次数以及访问的总时间计算出每个节点数据访问的平均时间,由此来确定图应用在计算过程中访存规则性的变化情况,以计算下一次迭代时的访存规则性以此用于调度模块(500)来确定是将其调度至CPU进行运算还是留在本地FPGA数据流加速器进行运算。
8.一种基于异构FPGA数据流的图计算优化系统,尤其涉及一种基于CPU+FPGA异构的数据流图计算优化系统,其能够基于图的幂律分布特性以调度的方式将图数据分别发送至CPU处理模块(100)和FPGA处理模块(200)进行动态加速处理,以使得所述FPGA处理模块(200)能够在平衡由于所述图数据的不规则性引起的所述CPU处理模块(100)和所述FPGA处理模块(200)之间的处理负载的情况下协同所述CPU处理模块(100)处理所述图数据中的不规则数据流,以获取图计算结果;
所述系统包括:
共享存储模块(300):用于存储有待进行图计算处理的图数据;
所述CPU处理模块(100);
所述FPGA处理模块(200);其中,所述CPU处理模块(100)和所述FPGA处理模块(200)按照并行的方式分别与所述共享存储模块(300)通信连接,以使得所述CPU处理模块(100)与所述FPGA处理模块(200)分别能够实时读取所述图数据的至少一部分,从而所述CPU处理模块(100)和/或所述FPGA处理模块(200)对各自读取到的图数据的至少一部分进行图计算,以分别获取CPU图计算结果和/或FPGA图计算结果;和
整合模块(400),用于将所述CPU图计算结果和/或所述FPGA图计算结果进行整合,以获取图计算结果,
其特征在于,
所述FPGA处理模块(200)读取存储于所述共享存储模块(300)中的图数据,并且在对所述图数据进行图计算之前基于所述图数据的幂律分布特性凭借所述FPGA处理模块(200)的可编辑性对所述图数据进行遍历以获取所述图数据中存在的不规则数据流的至少一个不规则性参数,
调度模块(500)按照将所述至少一个不规则参数与其契合的预设的访问规则进行匹配的方式将契合所述CPU处理模块(100)的图数据的部分分配至所述CPU处理模块(100)进行图计算以获取所述CPU图计算结果以及将剩下的另一部分分配至具有并行处理功能的FPGA处理模块(200)进行图计算以获取FPGA图计算结果。
9.根据权利要求8所述的优化系统,其特征在于,所述调度模块(500)按照能够与具有至少两个能够并并行处理的线程的所述FPGA处理模块(200)执行本地访问的方式彼此通信连接,以使得所述FPGA处理模块(200)在对所述图数据进行遍历过程中能够将不契合所述CPU处理模块(100)处理的图数据的一部分按照并行处理的方式写入FPGA处理模块(200)中的至少两个线程对应的FPGA内部缓存器(200a),从而所述FPGA处理模块(200)作为所述CPU处理模块(100)的异构图计算加速器能够以节约通信时间和写入时间的方式对不契合所述CPU处理模块(100)处理的图数据的一部分进行并行图计算。
10.一种基于CPU+FPGA异构系统的图数据调度方法,其能够根据图数据的不规则数据流中的至少一个参数凭借FPGA的可编辑性对所述不规则数据流进行分流,以发挥FPGA处理模块(200)和CPU处理模块(100)各自的架构优势对所述图数据进行协同加速处理,
其特征在于,
所述FPGA处理模块(200)读取存储于共享存储模块(300)中的图数据,并且在对所述图数据进行图计算之前基于所述图数据的幂律分布特性凭借所述FPGA处理模块(200)的可编辑性对所述图数据进行遍历以获取所述图数据中存在的不规则数据流的至少一个不规则性参数,
调度模块(500)按照将所述至少一个不规则参数与其契合的预设的访问规则进行匹配的方式将契合所述CPU处理模块(100)的图数据的部分分配至所述CPU处理模块(100)进行图计算以获取CPU图计算结果以及将剩下的另一部分分配至具有并行处理功能的FPGA处理模块(200)进行图计算以获取FPGA图计算结果。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910938006.6A CN110704360B (zh) | 2019-09-29 | 2019-09-29 | 一种基于异构fpga数据流的图计算优化方法 |
US16/895,545 US11436400B2 (en) | 2019-09-29 | 2020-06-08 | Optimization method for graph processing based on heterogeneous FPGA data streams |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910938006.6A CN110704360B (zh) | 2019-09-29 | 2019-09-29 | 一种基于异构fpga数据流的图计算优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110704360A CN110704360A (zh) | 2020-01-17 |
CN110704360B true CN110704360B (zh) | 2022-03-18 |
Family
ID=69196459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910938006.6A Active CN110704360B (zh) | 2019-09-29 | 2019-09-29 | 一种基于异构fpga数据流的图计算优化方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11436400B2 (zh) |
CN (1) | CN110704360B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111427690B (zh) * | 2020-03-25 | 2023-04-18 | 杭州意能电力技术有限公司 | 分散处理单元并行计算方法 |
CN111553834B (zh) * | 2020-04-24 | 2023-11-03 | 上海交通大学 | 基于fpga的并发图数据预处理方法 |
CN111736966B (zh) * | 2020-05-11 | 2022-04-19 | 深圳先进技术研究院 | 基于多板fpga异构系统的任务部署方法及设备 |
CN112380158B (zh) * | 2020-10-20 | 2022-02-11 | 广东电网有限责任公司中山供电局 | 一种面向深度学习的计算平台 |
US11392740B2 (en) * | 2020-12-18 | 2022-07-19 | SambaNova Systems, Inc. | Dataflow function offload to reconfigurable processors |
CN112685159B (zh) * | 2020-12-30 | 2022-11-29 | 深圳致星科技有限公司 | 基于fpga异构处理系统的联邦学习计算任务处理方案 |
CN112817982B (zh) * | 2021-02-08 | 2022-09-30 | 南京邮电大学 | 一种基于lsm树的动态幂律图存储方法 |
US11354771B1 (en) * | 2021-06-03 | 2022-06-07 | Sap Se | Simulation environment for efficient assessment of memory-bound platforms |
CN114397657B (zh) * | 2021-12-20 | 2024-04-09 | 星测未来科技(北京)有限责任公司 | 一种在轨实时sar成像方法 |
CN116467245A (zh) * | 2022-01-12 | 2023-07-21 | 华为技术有限公司 | 计算系统、方法、装置及加速设备 |
CN116127400B (zh) * | 2023-04-19 | 2023-06-27 | 国网智能电网研究院有限公司 | 基于异构计算的敏感数据识别系统、方法及存储介质 |
CN116560877B (zh) * | 2023-07-05 | 2023-09-22 | 北京枫清科技有限公司 | 一种实时图计算方法、装置、电子设备、存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004015568A2 (en) * | 2002-08-07 | 2004-02-19 | Pact Xpp Technologies Ag | Data processing method and device |
JP2014154935A (ja) * | 2013-02-05 | 2014-08-25 | Ricoh Co Ltd | 再構成可能デバイス、及びそれを備えた画像形成装置 |
CN104835110A (zh) * | 2015-04-15 | 2015-08-12 | 华中科技大学 | 一种基于gpu的异步图数据处理系统 |
CN105787865A (zh) * | 2016-03-01 | 2016-07-20 | 西华大学 | 基于游戏引擎和gpu并行处理的分形图生成与渲染方法 |
CN108563808A (zh) * | 2018-01-05 | 2018-09-21 | 中国科学技术大学 | 基于fpga的异构可重构图计算加速器系统的设计方法 |
CN108710505A (zh) * | 2018-05-18 | 2018-10-26 | 南京大学 | 一种基于fpga的可扩展稀疏矩阵向量乘处理器 |
CN109785224A (zh) * | 2019-01-29 | 2019-05-21 | 华中科技大学 | 一种基于fpga的图数据处理方法和系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5605571B2 (ja) * | 2008-10-07 | 2014-10-15 | 国立大学法人お茶の水女子大学 | 部分グラフ検出装置、部分グラフ検出方法、プログラム、データのデータ構造、及び情報記憶媒体 |
US10387037B2 (en) * | 2016-12-31 | 2019-08-20 | Intel Corporation | Microarchitecture enabling enhanced parallelism for sparse linear algebra operations having write-to-read dependencies |
US10817309B2 (en) * | 2017-08-03 | 2020-10-27 | Next Silicon Ltd | Runtime optimization of configurable hardware |
US20210073287A1 (en) * | 2019-09-06 | 2021-03-11 | Digital Asset Capital, Inc. | Dimensional reduction of categorized directed graphs |
CN111553834B (zh) * | 2020-04-24 | 2023-11-03 | 上海交通大学 | 基于fpga的并发图数据预处理方法 |
-
2019
- 2019-09-29 CN CN201910938006.6A patent/CN110704360B/zh active Active
-
2020
- 2020-06-08 US US16/895,545 patent/US11436400B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004015568A2 (en) * | 2002-08-07 | 2004-02-19 | Pact Xpp Technologies Ag | Data processing method and device |
JP2014154935A (ja) * | 2013-02-05 | 2014-08-25 | Ricoh Co Ltd | 再構成可能デバイス、及びそれを備えた画像形成装置 |
CN104835110A (zh) * | 2015-04-15 | 2015-08-12 | 华中科技大学 | 一种基于gpu的异步图数据处理系统 |
CN105787865A (zh) * | 2016-03-01 | 2016-07-20 | 西华大学 | 基于游戏引擎和gpu并行处理的分形图生成与渲染方法 |
CN108563808A (zh) * | 2018-01-05 | 2018-09-21 | 中国科学技术大学 | 基于fpga的异构可重构图计算加速器系统的设计方法 |
CN108710505A (zh) * | 2018-05-18 | 2018-10-26 | 南京大学 | 一种基于fpga的可扩展稀疏矩阵向量乘处理器 |
CN109785224A (zh) * | 2019-01-29 | 2019-05-21 | 华中科技大学 | 一种基于fpga的图数据处理方法和系统 |
Non-Patent Citations (2)
Title |
---|
Accelerating Graph Analytics on CPU-FPGA Heterogeneous Platform;Shijie Zhou 等;《2017 29th International Symposium on Computer Architecture and High Performance Computing (SBAC-PAD)》;20171109;第137-144页 * |
面向图计算的内存系统优化技术综述;王靖 等;《中国科学(信息科学)》;20190320;第49卷(第3期);第295-313页 * |
Also Published As
Publication number | Publication date |
---|---|
US11436400B2 (en) | 2022-09-06 |
CN110704360A (zh) | 2020-01-17 |
US20210097221A1 (en) | 2021-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110704360B (zh) | 一种基于异构fpga数据流的图计算优化方法 | |
CN110619595B (zh) | 一种基于多fpga加速器互联的图计算优化方法 | |
Grossman et al. | Hadoopcl: Mapreduce on distributed heterogeneous platforms through seamless integration of hadoop and opencl | |
US11106261B2 (en) | Optimal operating point estimator for hardware operating under a shared power/thermal constraint | |
JP5425541B2 (ja) | マルチプロセッサ・システム上でデータ・セットを区分化およびソートするための方法および装置 | |
CN105468439B (zh) | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行方法 | |
CN103870213B (zh) | 一种生成性能数据的图形处理管线及计算系统 | |
US11720496B2 (en) | Reconfigurable cache architecture and methods for cache coherency | |
CN114661480B (zh) | 深度学习任务资源分配方法和系统 | |
US20220027194A1 (en) | Techniques for divergent thread group execution scheduling | |
CN103996216A (zh) | 用于曲面细分和几何着色器的电力高效属性处置 | |
CN111860807B (zh) | 分形计算装置、方法、集成电路及板卡 | |
CN111639054A (zh) | 一种海洋模式与资料同化的数据耦合方法、系统及介质 | |
US11429299B2 (en) | System and method for managing conversion of low-locality data into high-locality data | |
CN116680063A (zh) | 任务调度方法、装置、计算系统、电子设备和存储介质 | |
CN101847128A (zh) | 管理tlb的方法和装置 | |
US9032405B2 (en) | Systems and method for assigning executable functions to available processors in a multiprocessing environment | |
CN115756605A (zh) | 一种基于多gpu的浅积云对流参数化方案异构计算方法 | |
CN110415162B (zh) | 大数据中面向异构融合处理器的自适应图划分方法 | |
Li et al. | mPlogP: A parallel computation model for heterogeneous multi-core computer | |
Gao et al. | FastRW: A Dataflow-Efficient and Memory-Aware Accelerator for Graph Random Walk on FPGAs | |
Song et al. | Memory management optimization strategy in Spark framework based on less contention | |
Li et al. | EPGraph: an efficient graph computing model in persistent memory system | |
US11442643B2 (en) | System and method for efficiently converting low-locality data into high-locality data | |
Wang et al. | micMR: An efficient MapReduce framework for CPU–MIC heterogeneous architecture |
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 |