CN110619595B - 一种基于多fpga加速器互联的图计算优化方法 - Google Patents
一种基于多fpga加速器互联的图计算优化方法 Download PDFInfo
- Publication number
- CN110619595B CN110619595B CN201910879589.XA CN201910879589A CN110619595B CN 110619595 B CN110619595 B CN 110619595B CN 201910879589 A CN201910879589 A CN 201910879589A CN 110619595 B CN110619595 B CN 110619595B
- Authority
- CN
- China
- Prior art keywords
- graph data
- sub
- graph
- fpga
- data
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- 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
-
- 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/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/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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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/509—Offload
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Microcomputers (AREA)
- Logic Circuits (AREA)
- Advance Control (AREA)
Abstract
本发明涉及一种基于多FPGA加速器互联的图计算优化方法,其针对图环境的计算通信比低,而异构环境下图计算Graph Processing通信开销大和负载不均衡等问题,其目的在于通过优化图划分Graph partitioning方式节约加速器间通信开销以提高***扩展性,通过动态调度方法使加速器间负载量达到均衡以提升计算性能,同时协调图的局部性和并行性,通过优化多FPGA互联架构下的图数据划分、组织与调度方法,实现子图高效划分与高速运行之间的有效平衡tradeoff。预处理模块将图数据Graph data按照不追求FPGA加速器彼此之间的负载极致均衡的方式划分为若干子图数据Subgraph data,至少两个FPGA加速器对子图数据按照动态调度的方式进行图计算以获取计算结果。
Description
技术领域
本发明涉及图计算技术领域,尤其涉及一种基于多FPGA加速器互联的图计算优化方法。
背景技术
随着对数据分析的需求持续增长,在许多领域中,能够发现数据之间的关系的大规模图计算受到广泛关注。图(Graph)是用于表示对象之间关联关系的一种抽象数据结构,使用顶点(Vertex)和边(Edge)进行描述,顶点表示对象,边表示对象之间的关系。可抽象成用图描述的数据即为图数据。图计算,便是以图作为数据模型来表达问题并予以解决的这一过程。以高效解决图计算问题为目标的***为图计算***。图计算的***以及方法随着数据分析的需求而不断的发展。
例如,公开号为CN104780213B的中国专利公开的一种主从分布式图处理***负载动态优化方法。包括主计算节点的动态再划分控制步骤,工作计算几点钟负载监控步骤和负载转移步骤。该发明不依赖于图数据的初始划分。其工作节点在迭代执行时,根据主节点的指令执行动态再划分进行负载均衡,负载监控步骤监控各个计算阶段的负载,并在每次迭代执行结束前发送到其他各个计算节点,同时负载转移步骤在每次迭代执行开始时,根据收到的其他节点监控到的负载消息判断是否所在节点超载,并且确定目标转移节点和转移量,在这次迭代执行完时,将负载数据转移到目标节点,从而实现分布式图处理***的动态负载均衡。实施本发明能有效地改善分布式图处理***中存在的负载不均衡现象。
例如,公开号为CN108563808A的中国专利公开的一种基于FPGA的异构可重构图计算加速器***的设计方法,整个加速器***包括PC和FPGA两大异构模块,其具体步骤为:首先加载启动FPGA所需要的驱动模块,将FPGA的PCIe DMA等设备打开;根据所需要处理的图数据的顶点数和边数进行图计算加速器引擎的选择;在选择好加速器引擎之后对图数据进行预处理;将预处理好的图数据通过PCIe DMA传输给FPGA开发板的板载DDR;启动加速器从板载DDR指定的地址开始读取图数据;控制器将图数据分配给不同的处理单元进行处理和计算;在各个处理单元计算和处理完数据之后,将结果发送给计算结果收集模块;收集模块将结果写回板载DDR,在整个图数据处理完之后,PC将结果从板载DDR中读取出。
例如,公开号为CN109086867A的中国专利公开的一种基于FPGA的卷积神经网络加速***。其基于OpenCL编程框架对FPGA上的卷积神经网络进行加速,该卷积神经网络加速***包括数据处理模块、数据后处理模块、卷积神经网络计算模块、数据存储模块和网络模型配置模块;其中卷积神经网络计算模块包括卷积计算子模块、激活函数计算子模块、池化计算子模块和全连接计算子模块;本发明提供的该加速***在使用过程中可以根据FPGA的硬件资源情况设置计算并行度从而适配不同的FPGA和不同的卷积神经网络,能够在FPGA上高效并行流水化方式运行卷积神经网络,并且能有效地降低***功耗和大大提高卷积神经网络的处理速度,满足实时性要求。
例如,公开号为CN104899250B的中国专利公开的一种基于图结构与数据信息分离的图计算伸缩方法。该方法包括:对图结构信息与数据信息进行分离迁移;本地性敏感和和负载均衡的优化分配。该发明采用图结构与数据信息分离迁移方法,以及本地性敏感和负载均衡的优化分配机制,实现图计算***的伸缩,该能够降低上层应用服务性能的损失,缩短计算***弹性迁移过程中的整体迁移时间和服务中断时间。提升云计算集群资源利用率以及上层应用服务的可用性,促进具有高通量需求的关键计算服务在云计算数据中心的部署。
例如,公开号为CN108683738A的中国专利公开的一种图数据处理方法,应用于分布式计算节点集群中的计算节点,其包括:获取从待处理图数据中划分出的子图数据;执行对于所述子图数据的计算任务,得到相应的全局数据和局部数据;将全局数据写入区块链网络中;将区块链网络中的全局数据,由分布式计算节点集群更新;从区块链网络中获取最新的全局数据;根据获取的最新的全局数据和局部数据,迭代执行对于子图数据的计算任务,直到满足迭代停止条件时获得计算结果。
例如,公开号为CN104281664B的中国专利公开的一种分布式图计算***数据切分方法和***。该方法包括:确定待处理数据中的每个数据节点与自身的各第一相邻节点间的相似性度量值;获取各第一相邻节点的标签的出现次数,并确定是否存在出现次数相同的至少两个标签;若存在,则确定与至少两个标签分别对应的各第二相邻节点,并根据数据节点与各第二相邻节点间的相似性度量值,确定数据节点的标签;将具有同一标签的数据节点划分到同一社区,将属于同一社区的数据节点存储在同一处理主机中。充分考虑了数据节点间的相似性特征以及基于标签实现了数据节点的社区划分,节省了运算开销,而且关系密切的数据节点被分配到同一处理主机中,减少了在不同处理主机间的通信开销。
随着图规模的越来越大,点(Vertex)和边(Edge)的数量达到billion级,使得单个FPGA的计算资源和存储资源无法满足这一需求。因此,可以将单个FPGA扩展到多个FPGA,使得其具有更多的计算和存储资源,从而能够处理更大规模的图数据。与CPU和GPU相比,在FPGA上的随机存取特性是能够实现在FPGA上高吞吐量的随机数据访问。然而,一个FPGA芯片上的片上BRAM的大小比一个大图的典型尺寸要小得多。因此,使用多FPGA架构是提供更大的片上BRAM资源的一种有效方式。然而,目前大多数基于FPGA***都是针对一个FPGA板设计的,或者需要一个全局可访问的内存,可伸缩性差。现有的多卡***虽然在图的划分分布,数据调度等方面做了改进,但仍受限于片上资源的短缺以及通信开销过高等问题,因此并没有解决在处理大图的性能及扩展性等方面的技术问题。而且,多个FPGA的图计算***存在如下的不足:图划分导致不同图分区数据之间的同步造成的FPGA之间的高额通信开销;同时,FPGA内部通常有上百个甚至更多个处理单元,由于没有良好的调度方案,导致计算效率低。因此,现有的多FPGA图计算***中,在实现FPGA之间负载均衡的同时也额外增加了通信开销,而同步通信的事件开销甚至多于处理时间,从而使得计算通信比较低,导致***扩展性不好,性能提升效果部明显。
此外,一方面由于对本领域技术人员的理解存在差异;另一方面由于发明人做出本发明时研究了大量文献和专利,但篇幅所限并未详细罗列所有的细节与内容,然而这绝非本发明不具备这些现有技术的特征,相反本发明已经具备现有技术的所有特征,而且申请人保留在背景技术中增加相关现有技术之权利。
发明内容
针对现有技术之不足,本发明提供了一种基于多FPGA加速器互联的图计算优化方法,其并非苛求FPGA之间的负载均衡,而是充分考虑图的局部性,减少FPGA之间为实现负载均衡而引入不必要的通信。研究表明:过分的追求负载均衡而引入不必要的通信开销,会降低计算通信比,反而会造成***整体性能的降低。因此,本发明综合考虑负载均衡引入高额通信开销与性能之间的关系,权衡两者之间的平衡点,进而提升图计算***的整体处理性能;其次,FPGA内部本身存在大量的计算单元,对这些计算单元进行动态调度便能够增加FPGA的处理速度,进而减少负载不均均衡量的等到时间,提升整体的处理速度。
在本发明中,在图划分阶段以不追求极致负载均衡的方式充分考虑满足图的局部性与最小化切割边的数量。首先,计算图划分所切割边数量与负载不均衡的边数量对性能影响比例的准则,能够衡量实现负载均衡所提高的性能与引入的通信开销之间的关系,实现对图最高效率的划分;在图处理阶段用动态调度的方式,通过任务窃取的手段实现FPGA内部处理单元运行时负载均衡,提高了FPGA处理效率与计算速度,减少FPGA之间负载不均衡计算量的等待时间,对图划分阶段造成的少量负载不均衡进行弥补。而且,在图划分与图处理中间采用了一种内存嵌套划分策略,实现子图划分与处理之间粒度匹配,对数据进行优化放置提高内存访问速度。因此,本发明能够在降低FPGA之间的通信开销的同时,仍然保持***性能;通过实现引入性能提升与通信开销的平衡,使***整体性能达到最大化。
为此,本发明提供了一种基于多FPGA加速器互联的图计算优化方法,其能够对引入至少两个FPGA加速器且将所述至少两个FPGA加速器彼此通信的分布式计算***在衡量FPGA加速器之间通信开销与各FPGA加速器内部的处理性能关系的情况下以不追求所述至少两个FPGA加速器彼此之间的负载极致均衡的方式对图数据进行图计算;所述优化方法包括:将图数据输入预处理模块;所述预处理模块按照不追求FPGA加速器彼此之间的负载极致均衡的方式将所述图数据基于图数据的局部性划分为若干子图数据,并将所述子图数据存放于中间存储设备上,所述至少两个FPGA加速器对从所述中间存储设备上读取所述子图数据并对所述子图数据按照动态调度的方式进行图计算以获取计算结果;所述预处理模块按照节约通信开销的方式将所述图数据基于图数据的局部性划分为能够使得FPGA加速器彼此之间的负载存在局部不均衡的所述若干子图数据,并且各FPGA加速器内部的处理单元能够在所述至少两个FPGA加速器之间建立了分布式图计算子***的情况下对划分所述子图数据过程中形成的局部负载不均衡以动态弥补方式对存储于所述中间存储设备上所述子图数据进行动态图计算,以使得所述方法能够在不追求所述至少两个FPGA加速器彼此之间的负载极致均衡的情况下以衡量实现FPGA加速器彼此之间的负载大致均衡所提高的性能与引入的通信开销之间的关系的方式基于图的局部性节约所述通信开销且能够使得FPGA加速器彼此之间能够在负载局部不均衡的情况下对所述若干子图数据进行动态图计算。
根据一种优选的实施方式,所述图数据的情况下以节约通信开销的方式确定至少一个切割点,从而在所述预处理模块以所述至少一个切割点为边界点将所述图数据预划分为至少两个子图数据的情况下,所述预处理模块按照如下方式确定所述预划分是否满足节约通信开销:计算所述至少两个子图数据之间的边数差异量,以确定至少一个子图数据等待本地FPGA加速器处理之间的等待时间;计算所述至少两个子图数据之间的点数共有量,以确定本地FPGA加速器与另一闲置状态的FPGA加速器用于联合处理所述至少两个子图数据所需的通信时间;如果所述等待时间小于所述通信时间,则所述预处理模块能够按照节约通信开销的方式以所述切割点为分界点将所述图数据划分所述子图数据。
根据一种优选的实施方式,在所述预处理模块将所述图数据划分为至少两个子图数据的情况下,所述预处理模块将所述至少一个切割点创建其对应的副本点并且将所述副本点链接至对应的至少一个子图数据,以使得所述至少两个FPGA加速器在对所述至少两个子图数据进行图计算的过程中能够在局部负载不均衡的情况下以节约通信开销的方式基于所述切割点与其对应的副本点的对应关系将所述至少两个子图数据进行数据同步处理。
根据一种优选的实施方式,所述FPGA加速器按照如下方式基于所述子图数据获取计算结果:将同一子图数据划分为若干子任务,并且将所述若干子任务中的至少一个以形成至少一个任务队列的形式划分至FPGA加速器内的同一计算处理单元内的至少一个线程单元,以使得能够通过细粒度调度的方式维持线程单元间的负载均衡;在至少一个线程单元完成其对应的至少一个任务队列的情况下,该内部线程单元能够对其所在的计算处理单元的其他内部线程单元尚未处理的至少一个任务队列进行窃取,以使得在该计算处理单元对该子图数据处理完成的情况下,该计算处理单元能够尚未处理的子图数据进行窃取,以弥补基于图数据的局部性划分子图数据过程中形成的至少两个FPGA加速器之间的负载局部不均衡量。
根据一种优选的实施方式,所述FPGA加速器按照如下方式读取从所述中间存储设备读取所述子图数据:将根据图数据的局部性划分形成的子图数据基于FPGA加速器的片上BRAM对顶点数据的随机存储特性细分为适应所述片上BRAM内存大小的子块,以使得所述子块能够存储于相对应的存储单元,从而在凭借所述FPGA加速器内部的内存结构按照并行的方式使得所述子块能够依次经过DRAM和所述片上BRAM进而存储的情况下,所述计算处理单元能够以不跨计算处理单元而直接访问对应的本地内存器的方式在保证所述图数据的局部性的情况下对所述子图数据进行访问,以使得调度子模块能够根据至少两个FPGA加速器之间的负载不平衡量和各FPGA加速器内的计算处理单元的处理速度对所述图数据进行动态调度以实现所述图数据的动态图计算。
根据一种优选的实施方式,所述至少两个FPGA加速器之间通过通信的方式实现互联,每个FPGA加速器能够按照所述子图数据通过网络IP核传输的方式与网络交换器连接,所述网络交换器按照能够将FPGA加速器的处理信息交换的方式彼此连接,以使得在所述FPGA加速器之间能够不通过通信的物理和媒体访问层功能的情况下以能够按照节约所述通信开销的方式从所述中间存储设备读取所述子图数据并对所述子图数据进行图计算。
根据一种优选的实施方式,本发明提供了一种基于多FPGA加速器互联的图计算优化***,其能够对引入至少两个FPGA加速器且将所述至少两个FPGA加速器彼此通信的分布式计算***在衡量FPGA加速器之间通信开销与各FPGA加速器内部的处理性能关系的情况下以不追求FPGA加速器彼此之间的负载极致均衡的方式对图数据进行图计算;所述优化***包括:预处理模块,其用于接收所述图数据,并且能够按照不追求FPGA加速器彼此之间的负载极致均衡的方式将所述图数据基于图数据的局部性划分为若干子图数据;中间存储设备,用于存放所述若干子图数据;和至少两个FPGA加速器,其彼此相互通信连接以及建立分布式图计算子***,用于对从所述中间存储设备上读取所述子图数据并对所述子图数据按照动态调度的方式进行图计算以获取计算结果;所述预处理模块按照节约通信开销的方式将所述图数据基于图数据的局部性划分为能够使得FPGA加速器彼此之间的负载存在局部不均衡的所述若干子图数据,并且各FPGA加速器内部的处理单元能够在所述至少两个FPGA加速器之间建立了分布式图计算子***的情况下对划分所述子图数据过程中形成的局部负载不均衡以动态弥补方式对存储于所述中间存储设备上所述子图数据进行动态图计算,以使得所述方法能够在不追求所述至少两个FPGA加速器彼此之间的负载极致均衡的情况下以衡量实现FPGA加速器彼此之间的负载大致均衡所提高的性能与引入的通信开销之间的关系的方式基于图的局部性节约所述通信开销且能够使得FPGA加速器彼此之间能够在负载局部不均衡的情况下对所述若干子图数据进行动态图计算。
根据一种优选的实施方式,所述***中,所述预处理模块在遍历所述图数据的情况下以节约通信开销的方式确定至少一个切割点,从而在所述预处理模块以所述至少一个切割点为边界点将所述图数据预划分为至少两个子图数据的情况下,所述预处理模块按照如下方式确定所述预划分是否满足节约通信开销:计算所述至少两个子图数据之间的边数差异量,以确定至少一个子图数据等待本地FPGA加速器处理之间的等待时间;计算所述至少两个子图数据之间的点数共有量,以确定本地FPGA加速器与另一闲置状态的FPGA加速器用于联合处理所述至少两个子图数据所需的通信时间;如果所述等待时间小于所述通信时间,则所述预处理模块能够按照节约通信开销的方式以所述切割点为分界点将所述图数据划分所述子图数据。
根据一种优选的实施方式,本发明体统了一种多FPGA加速器的分布式图计算的子图数据存取方法,其能够使得至少两个FPGA加速器能够读取其对应的片上BRAM的子图数据,以使得FPGA加速器内的计算处理单元能够以不跨处理单元访问的方式读取其对应的片上BRAM的子图数据。所述方法包括:将划分后的所述子图数据存储于对应的中间存储设备上,将所述FPGA加速器与所述中间存储设备通信连接,以使得所述FPGA加速器能够读取所述子图数据,将根据图数据的局部性划分形成的子图数据基于FPGA加速器的片上BRAM对顶点数据的随机存储特性细分为适应所述片上BRAM内存大小的子块,以使得所述子块能够存储于相对应的存储单元,从而在凭借所述FPGA加速器内部的内存结构按照并行的方式使得所述子块能够依次经过DRAM和所述片上BRAM进而存储的情况下,所述计算处理单元能够以不跨计算处理单元而直接访问对应的本地内存器的方式在保证所述图数据的局部性的情况下对所述子图数据进行访问,以使得调度子模块能够根据至少两个FPGA加速器之间的负载不平衡量和各FPGA加速器内的计算处理单元的处理速度对所述图数据进行动态调度以实现所述图数据的动态图计算。
根据一种优选的实施方式,本发明提供了一种基于多FPGA加速器的图数据的调度方法,其能够应用于具有至少两个FPGA加速器的图计算***中,用于以通过调节各FPGA加速器内计算单元的线程单元间的负载均衡的方式动态弥补基于图数据的局部性划分子图数据过程中形成的至少两个FPGA加速器之间的负载局部不均衡量,所述调度方法包括:将同一子图数据划分为若干子任务,并且将所述若干子任务中的至少一个以形成至少一个任务队列的形式划分至FPGA加速器内的同一计算处理单元内的至少一个线程单元,以使得能够通过细粒度调度的方式维持线程单元间的负载均衡;在至少一个线程单元完成其对应的至少一个任务队列的情况下,该内部线程单元能够对其所在的计算处理单元的其他内部线程单元尚未处理的至少一个任务队列进行窃取,以使得在该计算处理单元对该子图数据处理完成的情况下,该计算处理单元能够尚未处理的子图数据进行窃取,以弥补基于图数据的局部性划分子图数据过程中形成的至少两个FPGA加速器之间的负载局部不均衡量。
本发明提供一种的基于多FPGA加速器互联的图计算优化方法,其针对图环境的计算通信比低,而异构环境下图计算通信开销大和负载不均衡等问题,其目的在于通过优化图划分方式降低减速器间通信开销以提高***扩展性,通过动态调度方法时加速器间负载量达到均衡以提升计算性能,同时协调图的局部性和并行性,通过优化多FPGA互联架构下的图数据划分、组织与调度方法,实现子图高效划分与高速运行之间的有效平衡。
附图说明
图1是本发明提供的一种图计算的分布式处理***的示意图;
图2是本发明中一种图数据的结构示意图;
图3是本发明中采用一种切割方法后的子图数据的结构示意图;
图4是本发明中采用另一种切割方法后的子图数据的结构示意图;
图5是本发明的一种内存访问逻辑示意图;和
图6是本发明的一种任务窃取示意图。
附图标记列表
100:FPGA加速器 200:预处理模块
300:中间存储设备
具体实施方式
下面结合附图1-6进行详细说明。
本发明中的中英文对照如下
FPGA——现场可编程逻辑门阵列
BRAM——块式随机存取存储器
DRAM——动态随机存取存储器
Local Memory——本地内存器;
PE——线程单元;
FPGA chip——现场可编程逻辑门阵列芯片;
Compute Unit——计算单元
Private Memory——专有存储器
Global Memory data cache——全局存储缓存器
Global Memory——全局存储器
Constant Memory——常量存储器
Off-chip memory——FPGA chip外存储器(中间存储设备)
Graph Processing——图计算
Graph partitioning——图划分
Graph data——图数据
Subgraph data——子图数据
Tradeoff——平衡
RDMA——远程直接内存访问结构,其是一种绕过远程主机操作***内核访问其内存中数据的技术,由于不经过操作***,能够提高***的吞吐量、降低网络通信延迟,适用于大规模的并行计算机集群。
实施例1
基于共享内存的Interval-shard划分方式在负载均衡及可扩展性等方面并不适用于多FPGA架构。其主要的问题在于:(1)存储子块之间频繁的切换,导致片上片外额外的数据传输,从而增加带宽开销;(2)对于含少量边的子块,仍然需要加载到处理单元,使得整体计算性能降低;(3)源点位于相同子区间内的边被发送至同一处理单元,而其他线程单元处于闲置状态,造成处理单元使用效率低下。
本实施例提供一种基于多FPGA互联的图计算优化方法。首先,本实施例提出一种低开销高效率的图划分方法,在降低通信开销的基础上保持FPGA间的负载均衡;同时对内部线程单元进行动态的任务调度,提高FPGA本地计算资源效率;为优化***性能,本实施例采用优化内存放置策略,实现了图划分与本地计算的良好衔接,并且优化后的***具有良好的扩展性。
该方法对引入至少两个FPGA加速器且将至少两个FPGA加速器彼此通信的分布式计算***主要通过采用任务窃取来充分利用FPGA中的本地计算资源。如果本地FPGA加速器中负载不平衡的处理时间小于分布式条件下的处理时间,子图数据在本地处理中等待其对应的本地FPGA加速器,而不通过两个FPGA加速器之间的通信来进行分布式处理。其能够在尽量实现FPGA加速器之间的负载平衡的过程中也同时平衡通信开销与本地FPGA加速器的处理能力来提升图计算的效率,即在衡量FPGA加速器之间通信开销与各FPGA加速器内部的处理性能关系的情况下以不追求至少两个FPGA加速器100彼此之间的负载极致均衡的方式对图数据进行图计算。本发明采用采用低开销图分区和高效工作窃取,分别实现FPGA间和FPGA内部的负载均衡与并行,从而以最小的通信开销实现最大的性能提升。
在该优化方法中,以工作窃取辅助多FPGA图形处理***中,图划分的局部性和图数据处理并行性是影响该***性能的关键因素。为此,本发明之发明人在不追求图划分中不追求至少两个FPGA加速器100彼此之间的负载极致均衡的情况下,通过以调度的方式来弥补局部不均衡。该优化方法包括:
S1:将图数据输入预处理模块200。
S2:预处理模块200按照不追求FPGA加速器100彼此之间的负载极致均衡的方式将图数据基于图数据的局部性划分为若干子图数据。
S3:将子图数据存放于中间存储设备300上,
S4:至少两个FPGA加速器100对从中间存储设备300上读取子图数据并对子图数据按照动态调度的方式进行图计算以获取计算结果。
优选地,在步骤S2中,预处理模块200按照FPGA加速器100处理时间与等待处理时间的第一时间和小于分布式处理时间与通信时间的第二时间和的方式将图数据基于图数据的局部性划分为能够使得FPGA加速器100彼此之间的负载存在局部不均衡的若干子图数据。FPGA加速器100处理时间由其内部的计算处理单元决定。等待处理时间由子图数据包含的边数与处理速度决定。分布式处理时间由FPGA加速器100处理速度决定。通信时间由切分的弱节点包含的数据量与通信宽带决定。基于此,各FPGA加速器100内部的处理单元能够在至少两个FPGA加速器100之间建立了分布式图计算子***的情况下对划分子图数据过程中形成的局部负载不均衡以动态弥补方式对存储与中间存储设备300上子图数据进行动态图计算。按照这种方式,本发明保留了真实图数据的自然局部性,以使得FPGA加速器中的处理资源能够加速访问中间存储设备300成为可能。此外,还通过优化工作窃取来提高本地计算的效率。此外,本发明的分区方法充分考虑了FPGA之间的并行性,以避免了通过增加通信开销来维持该图计算***的可伸缩性。
优选地,预处理模块100在遍历图数据的情况下确定至少一个切割点。该切割点是弱连接点。预处理模块100首先对图数据进行遍历,基于hash算法把图数据分为均匀的子图数据,其次在均匀划分的边界再次遍历以寻找弱连接的点(边数少的连接点)。然后预处理模块100以至少一个切割点为边界点将图数据预划分为至少两个子图数据。例如如图2-4所示,点6、7、和9均可以作为切割点。预处理模块100可以按照图3或者图4将图2中的图数据划分,预处理模块100按照如下方式确定预划分是否满足节约通信开销,计算负载大致均衡所提高的性能与引入的通信开销之间的关系。预处理模块(100)计算至少两个子图数据之间的边数差异量,如图3所示,两个子图数据的边数分别为14和10,其边数差异量为4,即本地FPGA加速器100处理两个子图数据的处理时间为4个单位时间,将该差异时间记为等待时间。该边数差异也是FPGA处理子图数据存在负载局部不均衡的原因所在。计算至少两个子图数据之间的点数共有量,如图3所示,两个子图数据的点数共有量为2个,如果在对两个子图数据按照并行的方式送入两个FPGA加速器进行处理(不等待),由于2个切割点的数据需要交换以保证数据的完整性,因此需要引入2次通信开销,这两次通信开销所需的时间为通信时间,通信时间还与通信宽带相关。预处理模块(100)将这种预划分的等待时间与通信时间相比较,如果等待时间小于通信时间,则预处理模块100能够按照切割点6、7为分界点将图数据划分子图数据,然后送入本地FPGA加速器进行处理,而不通过远程通信的方式送入远程FPGA加速器,以降低处理子图数据的通信成本。
优选地,在预处理模块100将图数据划分为至少两个子图数据的情况下,预处理模块100将至少一个切割点创建其对应的副本点并且将副本点链接至对应的至少一个子图数据。如图3所示,将图2所示图数据分为两个子图数据过后,为了保证每一个子图数据的完整性以及子图数据的关联,将切割点6、7创建其对应的副本点(虚线框中的6、7)并且将副本点链接至对应的至少一个子图数据。从而,至少一个FPGA加速器100在对至少两个子图数据进行图计算的过程中能够在局部负载不均衡的情况下以节约通信开销的方式基于切割点与其对应的副本点的对应关系将至少两个子图数据进行数据同步处理。由于并不是所有的图数据划分完成子图数据均能够满足等待时间小于通信时间,因此创建副本点也是也是有利于节约通信开销的。例如,如图3所示的子图数据,如果通过增加宽带降低通信时间,其也有可能使得通信时间小于等待时间,此时两个子图数据可以在本地FPGA加速器进行处理和远程FPGA加速器内分别进行处理,此时,如果没有副本点创建,一方面会导致其中一部分子图数据缺失连接点的数据而造成数据计算出现误差,而另一方面会使得本地FPGA加速器和远程FPGA加速器需要就连接点的数据进行交换,以形成第二次或多次的通信开销,因此,创建副本点有利于在保证图数据计算结果准确性的前提下降低通信开销。
在多核分布式图处理***中,需要解决的核心问题是FPGA加速器点间的负载平衡。但是对于多FPGA加速器的处理***中,FPGA加速器内部的计算处理单元的负载平衡也是尤其重要的,其不仅能够提高单个FPGA的处理效率,而且更有利于弥补在图划分中由于图数据具有局部差异造成的FPGA加速器之间的负载局部不平衡,从而由内至外的提升处理性能。如果没有调度,如图6所示中的静态处理方案(static task assignment),由于负载不平衡导致线程单元之间的等待时间将导致计算资源的严重浪费和FPGA的处理效率的降低。由此,FPGA和FPGA内部的负载平衡都成为多FPGA图形处理***性能提升的关键因素。在图划分阶段之后,子图数据将存储于FPGA之间的中间存储设备300(全局存储器GlobalMemory和常量存储器Consant Memory)分配待处理。为了抵消划分过程中FPGA处理器之间的负载局部不平衡的影响,FPGA中的计算处理元件将被动态调度,以减少子图数据在FPGA之间的等待时间。如图6所示,优选的,FPGA加速器100按照如下方式基于子图数据获取计算结果:
S41:将同一子图数据划分为若干子任务。
S42:将若干子任务中的至少一个以形成至少一个任务队列的形式划分至FPGA加速器内的同一计算处理单元compute unit内的至少一个线程单元,以使得能够通过细粒度调度的方式维持线程单元间的负载均衡。每个工作项都维护自己的任务队列,第一个到完成的线程单元将从其他任务队列中窃取任务。
S43:在至少一个线程单元完成其对应的至少一个任务队列的情况下,该内部线程单元能够对其所在的计算处理单元的其他内部线程单元尚未处理的至少一个任务队列进行窃取,以使得在该计算处理单元对该子图数据处理完成的情况下,该计算处理单元能够尚未处理的子图数据进行窃取,以弥补基于图数据的局部性划分子图数据过程中形成的至少两个FPGA加速器100之间的负载局部不均衡量。与预先静态图分区相比,通过工作窃取进行动态调度可以消除线程单元间的等待时间,提高计算效率。此外,它可以加快本地处理速度并缩短FPGA之间的等待时间,从而可以提高整个图形处理***的性能。此外,针对该工作负载的内存访问设计的工作窃取优势在一个组中的所有工作中共享,可以访问相同的片上BRAM而不是远程内存。通过在***中使用连续数据分发,提高了内存访问和处理的效率。结合图6,当静态处理时,FPGA线程等待分配的数据进行处理,期间有的线程任务量少,就在等待其他未完成的线程,造成资源闲置浪费。动态处理能够将任务/数据分配给那些自己本身任务做完且空闲的线程;提高效率和处理时间,相比之下只用了两轮迭代就完成了任务。
优选的,FPGA加速器内设有多级存储器分层结构,例如专有存储器、本地存储器和全局存储器。从远程内存中读取或写入数据,会增加通信开销。本发明采用的是将连续数据分配给相同的存储器,以减小FPGA加速器100的计算处理单元访问远程存储器的时间。因此,本发明可以对FPGA加速器100的计算处理单元进行动态调度,以调高FPGA加速器100的计算效率和***的处理效率。因此,可以设置由于图分区之间的负载不平衡而导致的FPGA的等待时间。本发明结合粗粒度的任务窃取和分区,以提高FPGA的处理效率。如图5所示为一种优选的子图数据存取结构,在FPGA chip(FPGA chip芯片)中,每一个计算处理单元compute unit配置有至少一个专有存储器private memory,每一个专有存储器privatememory与一个线程单元PE连接。此外,每一个计算处理单元compute unit还分别与本地存储器Local memory以及全局存储缓存器Global Memory Data Cache连接。在FPGA chip外设置有全局存储器Global Memory和常量存储器Consant Memory,全局存储器GlobalMemory和Consant Memory分别与全局存储缓存器Global Memory Data Cache分别连接。因此,按照这种内存存取结构,芯片不直接访问全局内存,而是通过缓存访问。因此,当工作项在同一块缓存中运行时,内存访问会更有效。对于较低延迟和较高带宽,访问本地内存优于远程内存,这可以最大限度地减少本地内存的访问成本。因此,尝试使同一工作组中的工作项运行连续内存以提高内存访问效率。
FPGA加速器100按照如下方式读取从中间存储设备300读取子图数据。将根据图数据的局部性划分形成的子图数据基于FPGA加速器100的片上BRAM对顶点数据的随机存储特性细分为适应片上BRAM(其构成local memeory)内存大小的子块,以使得子块能够存储于相对应的存储单元,从而在凭借FPGA加速器内部的内存结构按照并行的方式使得子块能够依次经过DRAM(其构成global memory)和片上BRAM进而存储的情况下,计算处理单元能够以不跨计算处理单元而直接访问对应的local Memory本地内存器的方式在保证图数据的局部性的情况下对子图数据进行访问,以使得调度子模块能够根据至少两个FPGA加速器100之间的负载不平衡量和/或各FPGA加速器100内的计算处理单元的处理速度对图数据进行动态调度以实现图数据的动态图计算。结合图5所示,首先第一步,一个完整的图数据,需要经过图划分成几部分子图数据,才能放置到多个FPGA上做分布式处理(为了快,也为了存储量能满足)。第二步:子图存储,上步中划分好的子图数据,在FPGA内部有从大到小的存储层级,把图中相邻位置的数据放置在同一层级能够加速内存访问;第三步:子图调度,经过上述划分和存储好的图数据在FPGA中处理,通过线程动态调度的方式加快处理速度,弥补第一步划分产生的不均衡任务量。
优选的,至少两个FPGA加速器100之间通过网络通信的方式实现互联。每个FPGA加速器能够按照子图数据通过网络IP核传输的方式与网络交换器连接。网络交换器按照能够将FPGA加速器100的处理信息交换的方式彼此连接,以使得在FPGA加速器100之间能够不通过通信的物理和媒体访问层功能的情况下以能够按照节约通信开销的方式从中间存储设备300读取子图数据并对子图数据进行图计算。优选地,本发明中采用的通信方式是以太网。网络交换器是以太网交换器。亦或者,至少两个FPGA加速器100之间通过RDMA技术实现远程直接内存访问。
按照本发明提供的方法,图数据处理效率提升,由于动态调度的使用,使得处理效率有约1.5倍左右提升。(不采用情况下三轮迭代完成处理,采用动态调度2轮次完成),因此并行性也提升1.5倍。通信开销是原来的0.67倍,节约了1/3左右。扩展性提升到原来的1.4倍左右。
实施例2
本实施例可以是为实施例1对应的一种***,重复的内容不再赘述。在不造成冲突或者矛盾的情况下,其他实施例的优选实施方式的整体和/或部分内容可以作为本实施例的补充。
一种基于多FPGA加速器互联的图计算优化***,其能够对引入至少两个FPGA加速器且将至少两个FPGA加速器彼此通信的分布式计算***在衡量FPGA加速器之间通信开销与各FPGA加速器内部的处理性能关系的情况下以不追求FPGA加速器100彼此之间的负载极致均衡的方式对图数据进行图计算。
预处理模块200,其用于接收图数据,并且能够按照不追求FPGA加速器100彼此之间的负载极致均衡的方式将图数据基于图数据的局部性划分为若干子图数据;
中间存储设备300,用于存放若干子图数据;
至少两个FPGA加速器100,其彼此相互通信连接以及建立分布式图计算子***,用于对从中间存储设备300上读取子图数据并对子图数据按照动态调度的方式进行图计算以获取计算结果;
预处理模块200按照FPGA加速器100处理时间与等待处理时间的第一时间和小于分布式处理时间与通信时间的第二时间和的方式将图数据基于图数据的局部性划分为能够使得FPGA加速器100彼此之间的负载存在局部不均衡的若干子图数据,从而各个FPGA加速器100内部的处理单元能够在FPGA加速器100之间建立了分布式图计算***的情况下对划分子图数据过程中形成的局部负载不均衡以动态弥补方式对存储与中间存储设备300上子图数据进行动态图计算,以使得方法能够在不追求FPGA加速器100彼此之间的负载极致均衡的情况下以衡量实现FPGA加速器100彼此之间的负载大致均衡所提高的性能与引入的通信开销之间的关系的方式基于图的局部性节约将图数据划分为若干子图数据的预处理时间和通信时间且能够使得FPGA加速器100彼此之间能够在负载局部不均衡的情况下对若干子图数据进行动态图计算。
实施列3
本实施例可以是对实施例1和/或2的进一步改进和/或补充,重复的内容不再赘述。在不造成冲突或者矛盾的情况下,其他实施例的优选实施方式的整体和/或部分内容可以作为本实施例的补充。
一种多FPGA加速器的分布式图计算的子图数据存取方法,其能够使得至少两个FPGA加速器能够读取其对应的片上BRAM的子图数据,以使得FPGA加速器内的计算处理单元能够以不跨处理单元访问的方式读取其对应的片上BRAM的子图数据;
方法包括:
将划分后的子图数据存储于对应的中间存储设备300上,
将FPGA加速器与中间存储设备300通信连接,以使得FPGA加速器100能够读取子图数据,
将根据图数据的局部性划分形成的子图数据基于FPGA加速器100的片上BRAM对顶点数据的随机存储特性细分为适应片上BRAM内存大小的子块,以使得子块能够存储于相对应的存储单元,从而在凭借FPGA加速器内部的内存结构按照并行的方式使得子块能够依次经过DRAM、Cache和片上BRAM进而存储的情况下,计算处理单元能够以不跨计算处理单元而直接访问对应的本地内存器的方式在保证图数据的局部性的情况下对子图数据进行访问,以使得调度子模块能够根据至少两个FPGA加速器100之间的负载不平衡量和/或各FPGA加速器100内的计算处理单元的处理速度对图数据进行动态调度以实现图数据的动态图计算。
实施列4
本实施例可以是对实施例1、2和/或3的进一步改进和/或补充,重复的内容不再赘述。在不造成冲突或者矛盾的情况下,其他实施例的优选实施方式的整体和/或部分内容可以作为本实施例的补充。
本实施例一种基于多FPGA加速器的图数据的调度方法。其能够应用于具有至少两个FPGA加速器100的图计算***中,用于以通过调节各FPGA加速器100内计算单元的线程单元间的负载均衡的方式动态弥补基于图数据的局部性划分子图数据过程中形成的至少两个FPGA加速器100之间的负载局部不均衡量,
该调度方法包括:
将同一子图数据划分为若干子任务,并且将若干子任务中的至少一个以形成至少一个任务队列的形式划分至FPGA加速器100内的同一计算处理单元内的至少一个线程单元,以使得能够通过细粒度调度的方式维持线程单元间的负载均衡;
在至少一个线程单元完成其对应的至少一个任务队列的情况下,该内部线程单元能够对其所在的计算处理单元的其他内部线程单元尚未处理的至少一个任务队列进行窃取,以使得在该计算处理单元对该子图数据处理完成的情况下,该计算处理单元能够尚未处理的子图数据进行窃取,以弥补基于图数据的局部性划分子图数据过程中形成的至少两个FPGA加速器100之间的负载局部不均衡量。
需要注意的是,上述具体实施例是示例性的,本领域技术人员可以在本发明公开内容的启发下想出各种解决方案,而这些解决方案也都属于本发明的公开范围并落入本发明的保护范围之内。本领域技术人员应该明白,本发明说明书及其附图均为说明性而并非构成对权利要求的限制。本发明的保护范围由权利要求及其等同物限定。
Claims (10)
1.一种基于多FPGA加速器互联的图计算优化方法,其能够对引入至少两个FPGA加速器且将所述至少两个FPGA加速器彼此通信的分布式计算***在衡量FPGA加速器之间通信开销与各FPGA加速器内部的处理性能关系的情况下对图数据进行图计算;
所述优化方法包括:
将图数据输入预处理模块(200);
所述预处理模块(200)按照不追求FPGA加速器(100)彼此之间的负载极致均衡的方式将所述图数据基于图数据的局部性划分为若干子图数据,并将所述子图数据存放于中间存储设备(300)上,
所述至少两个FPGA加速器(100)对从所述中间存储设备(300)上读取所述子图数据并对所述子图数据按照动态调度的方式进行图计算以获取计算结果;
其特征在于,
所述预处理模块(200)按照节约通信开销的方式将所述图数据基于图数据的局部性划分为能够使得FPGA加速器(100)彼此之间的负载存在局部不均衡的所述若干子图数据,并且各FPGA加速器(100)内部的处理单元能够在所述至少两个FPGA加速器(100)之间建立了分布式图计算子***的情况下对划分所述子图数据过程中形成的局部负载不均衡以动态弥补方式对存储于所述中间存储设备(300)上所述子图数据进行动态图计算,以使得所述方法能够以衡量实现FPGA加速器(100)彼此之间的负载大致均衡所提高的性能与引入的通信开销之间的关系的方式基于图的局部性节约所述通信开销且能够使得FPGA加速器(100)彼此之间能够在负载局部不均衡的情况下对所述若干子图数据进行动态图计算。
2.根据权利要求1所述的优化方法,其特征在于,所述预处理模块(200)在遍历所述图数据的情况下以节约通信开销的方式确定至少一个切割点,从而在所述预处理模块(200)以所述至少一个切割点为边界点将所述图数据预划分为至少两个子图数据的情况下,所述预处理模块(200)按照如下方式确定所述预划分是否满足节约通信开销:
计算所述至少两个子图数据之间的边数差异量,以确定至少一个子图数据等待本地FPGA加速器(100)处理之间的等待时间;
计算所述至少两个子图数据之间的点数共有量,以确定本地FPGA加速器(100)与另一闲置状态的FPGA加速器用于联合处理所述至少两个子图数据所需的通信时间;
如果所述等待时间小于所述通信时间,则所述预处理模块(200)能够按照节约通信开销的方式以所述切割点为分界点将所述图数据划分所述子图数据。
3.根据权利要求2所述的优化方法,其特征在于,在所述预处理模块(200)将所述图数据划分为至少两个子图数据的情况下,所述预处理模块(200)将所述至少一个切割点创建其对应的副本点并且将所述副本点链接至对应的至少一个子图数据,以使得所述至少一个FPGA加速器(100)在对所述至少两个子图数据进行图计算的过程中能够在局部负载不均衡的情况下以节约通信开销的方式基于所述切割点与其对应的副本点的对应关系将所述至少两个子图数据进行数据同步处理。
4.根据权利要求3所述的优化方法,其特征在于,所述FPGA加速器(100)按照如下方式基于所述子图数据获取计算结果:
将同一子图数据划分为若干子任务,并且将所述若干子任务中的至少一个以形成至少一个任务队列的形式划分至FPGA加速器内的同一计算处理单元内的至少一个线程单元,以使得能够通过细粒度调度的方式维持线程单元间的负载均衡;
在至少一个线程单元完成其对应的至少一个任务队列的情况下,内部线程单元能够对其所在的计算处理单元的其他内部线程单元尚未处理的至少一个任务队列进行窃取,以使得在该计算处理单元对该子图数据处理完成的情况下,该计算处理单元能够尚未处理的子图数据进行窃取,以弥补基于图数据的局部性划分子图数据过程中形成的至少两个FPGA加速器(100)之间的负载局部不均衡量。
5.根据权利要求4所述的优化方法,其特征在于,所述FPGA加速器(100)按照如下方式读取从所述中间存储设备(300)读取所述子图数据:
将根据图数据的局部性划分形成的子图数据基于FPGA加速器(100)的片上BRAM对顶点数据的随机存储特性细分为适应所述片上BRAM内存大小的子块,以使得所述子块能够存储于相对应的存储单元,从而在凭借所述FPGA加速器内部的内存结构按照并行的方式使得所述子块能够依次经过DRAM和所述片上BRAM进而存储的情况下,所述计算处理单元能够以不跨计算处理单元而直接访问对应的本地内存器的方式在保证所述图数据的局部性的情况下对所述子图数据进行访问,以使得调度子模块能够根据至少两个FPGA加速器(100)之间的负载不平衡量和各FPGA加速器(100)内的计算处理单元的处理速度对所述图数据进行动态调度以实现所述图数据的动态图计算。
6.根据权利要求5所述的优化方法,其特征在于,所述至少两个FPGA加速器(100)之间通过通信的方式实现互联,每个FPGA加速器能够按照所述子图数据通过网络IP核传输的方式与网络交换器连接,所述网络交换器按照能够将FPGA加速器(100)的处理信息交换的方式彼此连接,以使得在所述FPGA加速器(100)之间能够不通过通信的物理和媒体访问层功能的情况下以能够按照节约所述通信开销的方式从所述中间存储设备(300)读取所述子图数据并对所述子图数据进行图计算。
7.一种基于多FPGA加速器互联的图计算优化***,其能够对引入至少两个FPGA加速器且将所述至少两个FPGA加速器彼此通信的分布式计算***在衡量FPGA加速器之间通信开销与各FPGA加速器内部的处理性能关系的情况进行图计算;
所述优化***包括:
预处理模块(200),其用于接收图数据,并且能够按照不追求FPGA加速器(100)彼此之间的负载极致均衡的方式将所述图数据基于图数据的局部性划分为若干子图数据;
中间存储设备(300),用于存放所述若干子图数据;和
至少两个FPGA加速器(100),其彼此相互通信连接以及建立分布式图计算子***,用于对从所述中间存储设备(300)上读取所述子图数据并对所述子图数据按照动态调度的方式进行图计算以获取计算结果;
其特征在于,
所述预处理模块(200)按照节约通信开销的方式将所述图数据基于图数据的局部性划分为能够使得FPGA加速器(100)彼此之间的负载存在局部不均衡的所述若干子图数据,并且各FPGA加速器(100)内部的处理单元能够在所述至少两个FPGA加速器(100)之间建立了分布式图计算子***的情况下对划分所述子图数据过程中形成的局部负载不均衡以动态弥补方式对存储于所述中间存储设备(300)上所述子图数据进行动态图计算,以使得所述***能够以衡量实现FPGA加速器(100)彼此之间的负载大致均衡所提高的性能与引入的通信开销之间的关系的方式基于图的局部性节约所述通信开销且能够使得FPGA加速器(100)彼此之间能够在负载局部不均衡的情况下对所述若干子图数据进行动态图计算。
8.根据权利要求7所述的***,其特征在于,所述预处理模块(200)在遍历所述图数据的情况下以节约通信开销的方式确定至少一个切割点,从而在所述预处理模块(200)以所述至少一个切割点为边界点将所述图数据预划分为至少两个子图数据的情况下,所述预处理模块(200)按照如下方式确定所述预划分是否满足节约通信开销:
计算所述至少两个子图数据之间的边数差异量,以确定至少一个子图数据等待本地FPGA加速器(100)处理之间的等待时间;
计算所述至少两个子图数据之间的点数共有量,以确定本地FPGA加速器(100)与另一闲置状态的FPGA加速器用于联合处理所述至少两个子图数据所需的通信时间;
如果所述等待时间小于所述通信时间,则所述预处理模块(200)能够按照节约通信开销的方式以所述切割点为分界点将所述图数据划分所述子图数据。
9.一种多FPGA加速器的分布式图计算的子图数据存取方法,其能够使得至少两个FPGA加速器能够读取其对应的片上BRAM的子图数据,以使得FPGA加速器内的计算处理单元能够以不跨处理单元访问的方式读取其对应的片上BRAM的子图数据;
所述方法包括:
将划分后的所述子图数据存储于对应的中间存储设备(300)上,
将所述FPGA加速器与所述中间存储设备(300)通信连接,以使得所述FPGA加速器(100)能够读取所述子图数据,
其特征在于,
将根据图数据的局部性划分形成的子图数据基于FPGA加速器(100)的片上BRAM对顶点数据的随机存储特性细分为适应所述片上BRAM内存大小的子块,以使得所述子块能够存储于相对应的存储单元,从而在凭借所述FPGA加速器内部的内存结构按照并行的方式使得所述子块能够依次经过DRAM和所述片上BRAM进而存储的情况下,所述计算处理单元能够以不跨计算处理单元而直接访问对应的本地内存器的方式在保证所述图数据的局部性的情况下对所述子图数据进行访问,以使得调度子模块能够根据至少两个FPGA加速器(100)之间的负载不平衡量和/或各FPGA加速器(100)内的计算处理单元的处理速度对所述图数据进行动态调度以实现所述图数据的动态图计算。
10.一种基于多FPGA加速器的图数据的调度方法,其能够应用于具有至少两个FPGA加速器(100)的图计算***中,用于以通过调节各FPGA加速器(100)内计算单元的线程单元间的负载均衡的方式动态弥补基于图数据的局部性划分子图数据过程中形成的至少两个FPGA加速器(100)之间的负载局部不均衡量,
所述调度方法包括:
将同一子图数据划分为若干子任务,并且将所述若干子任务中的至少一个以形成至少一个任务队列的形式划分至FPGA加速器(100)内的同一计算处理单元内的至少一个线程单元,以使得能够通过细粒度调度的方式维持线程单元间的负载均衡;
其特征在于,
在至少一个线程单元完成其对应的至少一个任务队列的情况下,内部线程单元能够对其所在的计算处理单元的其他内部线程单元尚未处理的至少一个任务队列进行窃取,以使得在该计算处理单元对该子图数据处理完成的情况下,该计算处理单元能够尚未处理的子图数据进行窃取,以弥补基于图数据的局部性划分子图数据过程中形成的至少两个FPGA加速器(100)之间的负载局部不均衡量。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910879589.XA CN110619595B (zh) | 2019-09-17 | 2019-09-17 | 一种基于多fpga加速器互联的图计算优化方法 |
US16/896,464 US11288221B2 (en) | 2019-09-17 | 2020-06-09 | Graph processing optimization method based on multi-FPGA accelerator interconnection |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910879589.XA CN110619595B (zh) | 2019-09-17 | 2019-09-17 | 一种基于多fpga加速器互联的图计算优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110619595A CN110619595A (zh) | 2019-12-27 |
CN110619595B true CN110619595B (zh) | 2021-04-13 |
Family
ID=68923396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910879589.XA Active CN110619595B (zh) | 2019-09-17 | 2019-09-17 | 一种基于多fpga加速器互联的图计算优化方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11288221B2 (zh) |
CN (1) | CN110619595B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111324558B (zh) * | 2020-02-05 | 2021-08-10 | 苏州浪潮智能科技有限公司 | 数据处理方法、装置、分布式数据流编程框架及相关组件 |
CN111584011B (zh) * | 2020-04-10 | 2023-08-29 | 中国科学院计算技术研究所 | 面向基因比对的细粒度并行负载特征抽取分析方法及*** |
CN111581443B (zh) * | 2020-04-16 | 2023-05-30 | 南方科技大学 | 分布式图计算方法、终端、***及存储介质 |
CN111752713B (zh) * | 2020-06-28 | 2022-08-05 | 浪潮电子信息产业股份有限公司 | 模型并行训练任务负载均衡方法、装置、设备及存储介质 |
CN111858059A (zh) * | 2020-07-24 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种图计算方法、装置、设备及存储介质 |
CN112000611B (zh) * | 2020-08-24 | 2023-08-01 | 全球能源互联网研究院有限公司 | 图数据划分方法、处理方法及电子设备 |
US11609811B2 (en) * | 2020-08-27 | 2023-03-21 | Microsoft Technology Licensing, Llc | Automatic root cause analysis and prediction for a large dynamic process execution system |
CN114446077B (zh) * | 2020-11-05 | 2023-10-03 | 上汽通用汽车有限公司 | 用于车位检测的装置、方法、存储介质及车辆 |
US20240028533A1 (en) * | 2020-11-24 | 2024-01-25 | Raytheon Company | Automated design of behavioral-based data movers for field programmable gate arrays or other logic devices |
CN113326125B (zh) * | 2021-05-20 | 2023-03-24 | 清华大学 | 大规模分布式图计算端到端加速方法及装置 |
CN113420083B (zh) * | 2021-06-02 | 2024-03-19 | 湖南大学 | 一种具有可拓展分布式账本的异构并行区块链结构的*** |
CN113419861B (zh) * | 2021-07-02 | 2023-10-24 | 北京睿芯高通量科技有限公司 | 一种面向gpu卡群的图遍历混合负载均衡方法 |
CN113419862B (zh) * | 2021-07-02 | 2023-09-19 | 北京睿芯高通量科技有限公司 | 一种面向gpu卡群的图数据划分优化方法 |
CN114091686B (zh) * | 2021-11-11 | 2022-10-14 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备和存储介质 |
US11934255B2 (en) | 2022-01-04 | 2024-03-19 | Bank Of America Corporation | System and method for improving memory resource allocations in database blocks for executing tasks |
CN114567634B (zh) * | 2022-03-07 | 2023-02-07 | 华中科技大学 | 面向后e级图计算的方法、***、存储介质及电子设备 |
US11921786B2 (en) * | 2022-05-18 | 2024-03-05 | Sap Se | Scalable bandwidth efficient graph processing on field programmable gate arrays |
CN116594951B (zh) * | 2023-07-13 | 2023-09-26 | 北京芯通未来科技发展有限公司 | 一种基于fpga的数据传输***及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104516939A (zh) * | 2013-10-04 | 2015-04-15 | 高霆科技股份有限公司 | 一种用以建构人工智能计算机的平行硬件搜索*** |
US9348619B1 (en) * | 2013-03-12 | 2016-05-24 | Xilinx, Inc. | Interactive datasheet system |
CN108563808A (zh) * | 2018-01-05 | 2018-09-21 | 中国科学技术大学 | 基于fpga的异构可重构图计算加速器***的设计方法 |
CN108984283A (zh) * | 2018-06-25 | 2018-12-11 | 复旦大学 | 一种自适应的动态流水线并行方法 |
CN109815019A (zh) * | 2019-02-03 | 2019-05-28 | 普信恒业科技发展(北京)有限公司 | 任务调度方法、装置、电子设备及可读存储介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9116738B2 (en) * | 2012-11-13 | 2015-08-25 | International Business Machines Corporation | Method and apparatus for efficient execution of concurrent processes on a multithreaded message passing system |
US9424079B2 (en) * | 2013-06-27 | 2016-08-23 | Microsoft Technology Licensing, Llc | Iteration support in a heterogeneous dataflow engine |
US9983558B2 (en) * | 2015-05-22 | 2018-05-29 | Goodrich Corporation | Control systems state vector management using co-processing and multiport ram |
US9715475B2 (en) * | 2015-07-21 | 2017-07-25 | BigStream Solutions, Inc. | Systems and methods for in-line stream processing of distributed dataflow based computations |
US10409560B1 (en) * | 2015-11-18 | 2019-09-10 | Amazon Technologies, Inc. | Acceleration techniques for graph analysis programs |
US20180342030A1 (en) * | 2017-05-24 | 2018-11-29 | The Research Foundation For The State University Of New York | Neutral radistricting using a multi-level weighted graph partitioning algorithm |
US10642582B2 (en) * | 2017-08-24 | 2020-05-05 | Google Llc | System of type inference for tuple graph programs method of executing a tuple graph program across a network |
US11429848B2 (en) * | 2017-10-17 | 2022-08-30 | Xilinx, Inc. | Host-directed multi-layer neural network processing via per-layer work requests |
CN110018817A (zh) * | 2018-01-05 | 2019-07-16 | 中兴通讯股份有限公司 | 数据的分布式运行方法及装置、存储介质及处理器 |
US10990595B2 (en) * | 2018-05-18 | 2021-04-27 | Oracle International Corporation | Fast distributed graph query engine |
US10216546B1 (en) * | 2018-07-09 | 2019-02-26 | Insitu Software Limited | Computationally-efficient resource allocation |
-
2019
- 2019-09-17 CN CN201910879589.XA patent/CN110619595B/zh active Active
-
2020
- 2020-06-09 US US16/896,464 patent/US11288221B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9348619B1 (en) * | 2013-03-12 | 2016-05-24 | Xilinx, Inc. | Interactive datasheet system |
CN104516939A (zh) * | 2013-10-04 | 2015-04-15 | 高霆科技股份有限公司 | 一种用以建构人工智能计算机的平行硬件搜索*** |
CN108563808A (zh) * | 2018-01-05 | 2018-09-21 | 中国科学技术大学 | 基于fpga的异构可重构图计算加速器***的设计方法 |
CN108984283A (zh) * | 2018-06-25 | 2018-12-11 | 复旦大学 | 一种自适应的动态流水线并行方法 |
CN109815019A (zh) * | 2019-02-03 | 2019-05-28 | 普信恒业科技发展(北京)有限公司 | 任务调度方法、装置、电子设备及可读存储介质 |
Non-Patent Citations (5)
Title |
---|
A Linux-based Support For Developing Real-Time Applications On Heterogeneous Platforms with Dynamic FPGA Reconfiguration;M. Pagani 等;《2017 30th IEEE International System-on-Chip Conference (SOCC)》;20171221;第96-101页 * |
FastTrack: Leveraging Heterogeneous FPGA Wires to Design Low-Cost High-Performance Soft NoCs;N. Kapre 等;《2018 ACM/IEEE 45th Annual International Symposium on Computer Architecture (ISCA)》;20180723;第739-751页 * |
内存计算技术研究综述;罗乐 等;《软件学报》;20160831;第27卷(第8期);第2147-2167页 * |
面向图计算的内存***优化技术综述;王靖 等;《中国科学: 信息科学》;20190318;第49卷(第3期);第295-313页 * |
面向大数据的异构内存***;王孝远 等;《大数据》;20180715;第4卷(第4期);第15-34页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110619595A (zh) | 2019-12-27 |
US11288221B2 (en) | 2022-03-29 |
US20210081347A1 (en) | 2021-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110619595B (zh) | 一种基于多fpga加速器互联的图计算优化方法 | |
US20200301898A1 (en) | Systems and methods for accelerating data operations by utilizing dataflow subgraph templates | |
US10728091B2 (en) | Topology-aware provisioning of hardware accelerator resources in a distributed environment | |
US9038088B2 (en) | Load balancing on hetrogenous processing cluster based on exceeded load imbalance factor threshold determined by total completion time of multiple processing phases | |
US11436400B2 (en) | Optimization method for graph processing based on heterogeneous FPGA data streams | |
EP2472398B1 (en) | Memory-aware scheduling for NUMA architectures | |
CN105468439B (zh) | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行方法 | |
CN102929725B (zh) | 信号处理并行计算软件的动态重配置方法 | |
CN107463442B (zh) | 一种星载多核SoC任务级负载均衡并行调度方法 | |
CN114418127B (zh) | 机器学***台 | |
CN112527514B (zh) | 基于逻辑扩展的多核心安全芯片处理器及其处理方法 | |
CN110990154B (zh) | 一种大数据应用优化方法、装置及存储介质 | |
US20210357732A1 (en) | Neural network accelerator hardware-specific division of inference into groups of layers | |
CN111190735A (zh) | 一种基于Linux的片上CPU/GPU流水化计算方法及计算机*** | |
EP4209914A1 (en) | Reconfigurable cache architecture and methods for cache coherency | |
CN116684420A (zh) | 集群资源调度方法、装置、集群***和可读存储介质 | |
CN111639054A (zh) | 一种海洋模式与资料同化的数据耦合方法、***及介质 | |
Sun et al. | Cognn: efficient scheduling for concurrent gnn training on gpus | |
US20210390405A1 (en) | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof | |
Ismayilov et al. | Multi-GPU Communication Schemes for Iterative Solvers: When CPUs Are Not in Charge | |
CN114860417B (zh) | 多核神经网络处理器及用于该处理器多任务分配调度方法 | |
Wang et al. | On mapreduce scheduling in hadoop yarn on heterogeneous clusters | |
US11966783B1 (en) | Real time scheduling using expected application resource usage | |
CN116166396A (zh) | 调度模型的训练方法、装置、电子设备及可读存储介质 | |
Benchehida et al. | Memory-processor co-scheduling for real-time tasks on network-on-chip manycore architectures |
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 |