CN109785224A - 一种基于fpga的图数据处理方法和系统 - Google Patents
一种基于fpga的图数据处理方法和系统 Download PDFInfo
- Publication number
- CN109785224A CN109785224A CN201910084423.9A CN201910084423A CN109785224A CN 109785224 A CN109785224 A CN 109785224A CN 201910084423 A CN201910084423 A CN 201910084423A CN 109785224 A CN109785224 A CN 109785224A
- Authority
- CN
- China
- Prior art keywords
- traversal
- processing module
- processor
- node
- iteration
- 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.)
- Granted
Links
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/76—Architectures of general purpose stored program computers
-
- 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
- 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
- G06F15/7885—Runtime interface, e.g. data exchange, runtime control
- G06F15/7889—Reconfigurable logic implemented as a co-processor
-
- 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/82—Architectures of general purpose stored program computers data or demand driven
- G06F15/825—Dataflow computers
-
- 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, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
-
- 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
- G06F2015/761—Indexing scheme relating to architectures of general purpose stored programme computers
- G06F2015/768—Gate array
Abstract
本发明涉及一种基于FPGA的图数据处理方法和系统,该方法用于对具有小世界网络特性的图进行图遍历,方法包括:使用第一处理器和与第一处理器通信连接的第二处理器进行图遍历,第一处理器是CPU,第二处理器是FPGA,第一处理器用于将需要遍历的图数据传入第二处理器,并且第一处理器在第二处理器按照层序遍历的遍历方式完成对图数据的图遍历之后才获取图遍历的结果数据用于结果输出,第二处理器包括低峰处理模块和高峰处理模块,低峰和高峰处理模块分别利用第二处理器的不同区域的片上逻辑资源,并且高峰处理模块相对于低峰处理模块具有更高的并行度,低峰处理模块用于在开始阶段和/或结束阶段进行图遍历,高峰处理模块用于在中间阶段进行图遍历。
Description
技术领域
本发明涉及FPGA图计算技术领域,尤其涉及一种基于FPGA的图数据处理方法和系统。
背景技术
图是一种经典的数据结构,广泛存在于现实生活中,例如社交网络、公路网等,通过对图进行处理分析,可以获取许多实用的信息。图遍历算法是图计算领域中最为经典的算法之一,许多的功能实现都与图遍历相关,图遍历算法包括BFS、DFS、SSSP等。
世界是由各种各样的网络构成的,图数据结构是网络的一种数学表示。20世纪末,通过对自然、社会和技术网络的研究,发现这些网络大都具有下列特征:高度的集群性、不均衡的度数分布以及中心节点结构。小世界网络是1998年邓肯·瓦特和斯托加茨在《自然》上提出的概念,用来对自然网络进行数学描述,在这种网络中大部分的节点彼此不相连接,但绝大部分节点可以从任一节点通过节点间的连接通过少数几步就可以到达。
小世界网络,就是具有较短的特征路径长度和较大的聚类系数特征的网络模型,特征路径长度(characteristic path length)定义:在网络中任选两个节点,连同这两个节点的最少边数,定义为这两个节点的路径长度,网络中所有节点对的路径长度的平均值,定义为网络的特征路径长度;聚合系数(clustering coefficient)定义:假设某个节点有k个边,则这k条边连接的节点(k个)之间最多可能存在的边的个数为k(k-1)/2,用实际存在的边数除以最多可能存在的边数得到的分数值,定义为这个节点的聚合系数;对数路径:对任何规模的网络都会随着网络结构变得越来越巨大,网络却保持相对短的路径长度。因此,小世界网络具有下列特性:由于对数路径存在,网络直径相对很短,这样就出现节点间经过几步就可以到达,比如“六度分离”理论;聚合系数较大,节点度数存在幂律分布,大度数节点占比很少,低度数节点占绝大部分。
最早出现的图计算机是Google提出的Pregel,一个图计算分布式系统,后面出现单机的图计算机Graphchi,以及专用于GPU的图计算机Cusha,3种处理环境下的图计算研究后来都有许多新的工作提出来,图计算研究经过研究人员的努力获得巨大的成果。其中FPGA的图计算机最早的是GraphGen,但是相对于其他3种处理环境,基于FPGA的图计算研究发展比较缓慢。
FPGA是一个可编辑的并行优化器,为用户提供丰富的门电路、片上内存BRAM等逻辑资源,用户可以根据自己的设计思路来实现各种各样的功能电路。FPGA具有非常高的性能功耗比,同等性能下功耗要优于CPU和GPU,随着高性能计算的发展,功耗已经成为现在高性能计算领域十分关注的性能,图计算作为大规模图处理过程,对性能功耗比同样的重视,并且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执行转换的时候需要停止当前处理器的程序执行,保存当前的运行状态和处理数据,然后将数据通过PCIe通道传输到需要转换到的处理器上,然后重建执行状态,这个过程需要花费大量的时间,几乎占总的程序执行时间的20%以上;(2)在CPU将程序执行转换到FPGA时,需要停止CPU的工作,在FPGA将程序执行转换到CPU时,需要停止FPGA的工作,这之间是一个频繁的控制过程,相对于在一个处理器上执行整个遍历程序显得十分繁琐及复杂。
基于FPGA的图架构实现模式是将整个图计算过程在FPGA同一个设计架构上执行,相对于基于CPU-FPGA异构设计的图计算架构节省了CPU-FPGA之间数据传输和状态重建过程的消耗,但是这种架构具有下列缺点:(1)没有结合图计算的不同阶段明显的执行特点分别进行架构设计,这样不能充分发挥处理器与图算法的特性来达到优化图计算的目的;(2)为了满足图计算需要的大量线程数,图计算功能模块拥有大量并行单元,图计算低并行度的执行部分在大量并行单元中由于负载均衡问题,出现图计算的长尾效应问题等。
发明内容
针对现有技术之不足,本发明提供了一种基于FPGA的图数据处理方法和系统。基于CPU-FPGA异构图系统,需要将整个图遍历执行过程分别置于CPU与FPGA两个处理器上执行,其中CPU执行低并行度遍历阶段,FPGA执行高并行度遍历阶段,在两个处理器执行转换的过程中,需要停止当前处理器的执行过程,然后将运行时状态和执行数据保存,通过PCIe传输通道进行传输,然后在转换之后的处理器上重建图遍历运行状态,整个过程不仅控制复杂、操作繁琐,而且造成极大的时间开销。基于FPGA图系统将整个图遍历过程视为一个同等的执行过程,没有充分利用图遍历执行的特点,在存在大量并行单元的处理器上,由于图遍历过程所产生的并行任务数量不同,会出现由于负载均衡、线程同步等原因造成的性能损耗。本发明设计的一种基于FPGA的小世界运行分析与调度方法,完全避免了基于CPU-FPGA异构图系统的缺陷,避免了两种异构处理器转换和状态重构的开销,充分利用FPGA可编辑特性,结合图遍历的执行特性,在FPGA上实现分模块执行,从而最大化实现图遍历算法的优化。
根据一个优选实施方式,一种基于FPGA的图数据处理方法,所述方法用于对具有小世界网络特性的图进行图遍历,所述方法使用第一处理器和与所述第一处理器通信连接的第二处理器进行图遍历,所述第一处理器是CPU,所述第二处理器是FPGA,其中,所述第一处理器用于将需要遍历的图数据传入所述第二处理器,并且所述第一处理器在所述第二处理器按照层序遍历的遍历方式完成对所述图数据的图遍历之后才从所述第二处理器获取图遍历的结果数据用于结果输出,所述第二处理器包括低峰处理模块和高峰处理模块,低峰处理模块和高峰处理模块分别利用第二处理器的不同区域的片上逻辑资源,并且高峰处理模块相对于低峰处理模块具有更高的并行度,所述低峰处理模块用于在具有低并行度特性的开始阶段和/或结束阶段进行图遍历,所述高峰处理模块用于在具有高并行度特性的中间阶段进行图遍历。
根据一个优选实施方式,具有低并行度特性的开始阶段、具有高并行度特性的中间阶段和具有低并行度特性的结束阶段的分界点按照以下方式中的至少一种进行判断:在开始阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总出度与该次遍历的节点的总数量之比大于等于10之时,由此判断本次遍历迭代为开始阶段的终点,下一次遍历迭代为中间阶段的起点,在中间阶段的图遍历过程中,当某次遍历的节点的总数量与下一次遍历的节点的总数量之比大于等于10之时,由此判断本次遍历迭代为中间阶段的终点,下一次遍历迭代为结束阶段的起点;在开始阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总出度与图数据的节点总数之比大于等于第一预设阈值之时,由此判断本次遍历迭代为开始阶段的终点,下一次遍历迭代为中间阶段的起点,在中间阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总出度与图数据的节点总数之比小于第一预设阈值之时,由此判断本次遍历迭代为中间阶段的终点,下一次遍历迭代为结束阶段的起点;和在开始阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总数量与图数据的节点总数之比大于等于第二预设阈值之时,由此判断本次遍历迭代为开始阶段的终点,下一次遍历迭代为中间阶段的起点,在中间阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总数量与图数据的节点总数之比小于等于第三预设阈值之时,由此判断本次遍历迭代为中间阶段的终点,下一次遍历迭代为结束阶段的起点。
根据一个优选实施方式,在所述第二处理器进行图遍历之前,所述第一处理器先将需要执行的图遍历算法逻辑烧入第二处理器的逻辑电路中,再将需要遍历的图数据传入第二处理器的全局存储器中,所述低峰处理模块以选定的起始点位置为划分起点通过启发式算法对所述全局存储器上的图数据进行分块处理得到若干数据块,并且从所述若干数据块中选取含有起始点的数据块传入第二处理器的片上内存中。
根据一个优选实施方式,所述低峰处理模块被配置为:基于所述片上内存中的所述含有起始点的数据块确定遍历的起始节点;从所述起始节点进行开始阶段的图遍历;和/或在图遍历过程中分析图遍历的执行阶段,在图遍历处于具有低并行度特性的开始阶段的情况下,在所述低峰处理模块中继续执行图遍历过程,在图遍历进入具有高并行度特性的中间阶段的情况下,则暂停图遍历的执行并将暂停时的第一运行状态与数据进行保存,并在数据保存完成之后请求高峰处理模块进行图遍历。
根据一个优选实施方式,所述高峰处理模块被配置为:获取所述低峰处理模块保存的第一运行状态和数据并由此重建图遍历的第一运行状态;在重建所述图遍历的第一运行状态之后,基于所述低峰处理模块保存的数据进行图遍历;和/或在图遍历过程中分析图遍历的执行阶段,在图遍历处于具有高并行度特性的中间阶段的情况下,在所述高峰处理模块中继续执行图遍历过程,在图遍历进入具有低并行度特性的结束阶段的情况下,则暂停图遍历的执行并将暂停时的第二运行状态与数据进行保存,并在数据保存完成之后请求低峰处理模块进行图遍历。
根据一个优选实施方式,所述低峰处理模块还被配置为:获取所述高峰处理模块保存的第二运行状态和数据并由此重建所述第二运行状态;在重建所述第二运行状态之后,基于所述高峰处理模块保存的数据进行图遍历;在图遍历过程中分析图遍历的完成情况,在未完成图遍历的情况下,继续执行图遍历,在完成图遍历的情况下,将获取的执行结果进行处理得到图遍历的结果数据并写入全局存储器中。
根据一个优选实施方式,所述在图遍历过程中分析图遍历的完成情况的处理包括:在当前遍历节点的邻居节点都被标记为已遍历的情况下,对图的节点和已遍历的节点进行比对,在不存在未遍历节点之时,则图遍历过程结束,在存在未遍历节点之时,则还存在未遍历的分图,此时分析未遍历节点所在的数据块并将其传入片上内存,通过起始点采样,在分图中开始图遍历过程。
根据一个优选实施方式,所述方法还包括:在第二处理器上构建执行状态分析模块,其中,所述状态分析模块被配置为:通过分析低峰处理模块和/或高峰处理模块的执行图遍历的执行状态以确定低峰处理模块和/或高峰处理模块在后续的图遍历过程所需的数据块,并将所述所需的数据块在下一次遍历迭之前传入到片上内存中。
根据一个优选实施方式,一种基于FPGA的图遍历系统,所述系统用于对具有小世界网络特性的图进行图遍历,所述系统包括:第一处理器和与所述第一处理器通信连接的第二处理器,所述第一处理器是CPU,所述第二处理器是FPGA,其中,所述第一处理器用于将需要遍历的图数据传入所述第二处理器,并且所述第一处理器在所述第二处理器按照层序遍历的遍历方式完成对所述图数据的图遍历之后才从所述第二处理器获取图遍历的结果数据用于结果输出,所述第二处理器包括低峰处理模块和高峰处理模块,低峰处理模块和高峰处理模块分别利用第二处理器的不同区域的片上逻辑资源,并且高峰处理模块相对于低峰处理模块具有更高的并行度,所述低峰处理模块用于在具有低并行度特性的开始阶段和/或结束阶段进行图遍历,所述高峰处理模块用于在具有高并行度特性的中间阶段进行图遍历。
根据一个优选实施方式,具有低并行度特性的开始阶段、具有高并行度特性的中间阶段和具有低并行度特性的结束阶段的分界点按照以下方式中的至少一种进行判断:在开始阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总出度与该次遍历的节点的总数量之比大于等于10之时,由此判断将进入图遍历的中间阶段,在中间阶段的图遍历过程中,当某次遍历的节点的总数量与下一次遍历的节点的总数量之比大于等于10之时,由此判断将进入图遍历的结束阶段;在开始阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总出度与图数据的节点总数之比大于等于第一预设阈值之时,由此判断本次遍历迭代为开始阶段的终点,下一次遍历迭代为中间阶段的起点,在中间阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总出度与图数据的节点总数之比小于第一预设阈值之时,由此判断本次遍历迭代为中间阶段的终点,下一次遍历迭代为结束阶段的起点;和在开始阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总数量与图数据的节点总数之比大于等于第二预设阈值之时,由此判断本次遍历迭代为开始阶段的终点,下一次遍历迭代为中间阶段的起点,在中间阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总数量与图数据的节点总数之比小于等于第三预设阈值之时,由此判断本次遍历迭代为中间阶段的终点,下一次遍历迭代为结束阶段的起点。
本发明提供的一种基于FPGA的图数据处理方法和系统至少具有如下优势:
(1)采用基于FPGA的图处理设计,这样避免了基于CPU-FPGA异构图计算系统设计复杂的控制操作;
(2)采用基于FPGA的图处理设计,避免遍历执行在CPU与FPGA之间由于执行处理器转换,所采用的数据传输、处理器停止以及运行状态重建而造成的巨大时间开销;
(3)充分发挥FPGA的可编辑性以及具有小世界网络特性的图在图遍历过程中的特点,根据遍历中两种特性的阶段分别设计相应的两个功能模块,分别执行模块对应的遍历阶段,从而实现图遍历的优化;
(4)通过采用运行时状态分析方法获取数据处理的遍历趋势,预测后续图遍历到达的数据区,从而在后续遍历迭代执行之前,可以将遍历所需的数据块输入到片上内存上,使得遍历执行能迅速进行而不需要等待所需数据块输入BRAM而消耗时间。
附图说明
图1是本发明的系统的一个优选实施方式的模块示意图;
图2是本发明的方法的一个优选实施方式的流程示意图;
图3是本发明一个基于图类型数据结构进行BFS图遍历的过程示意图;和
图4是为本发明基于一个社交网络图结构进行BFS遍历每一层迭代所遍历的节点数在总节点数的占比示意图。
附图标记列表
100:第一处理器 200:第二处理器 210:低峰处理模块
220:高峰处理模块 230:全局存储器 240:片上内存
250:执行状态分析模块
具体实施方式
下面结合附图进行详细说明。
为了便于理解,在可能的情况下,使用相同附图标记来表示各附图中共同的相似元件。
如在整篇本申请中所使用的那样,词语“可以”系容许含义(即,意味着有可能的)而不是强制性含义(即,意味着必须的)。类似地,词语“包括”意味着包括但不限于。
短语“至少一个”、“一个或多个”以及“和/或”系开放式表达,它们涵盖操作中的关联与分离两者。例如,表述“A、B和C中的至少一个”、“A、B或C中的至少一个”、“A、B和C中的一个或更多个”、“A、B或C”和“A、B和/或C”中的每个分别指单独A、单独B、单独C、A和B一起、A和C一起、B和C一起或A、B和C一起。
术语“一种”或“一个”实体指的是该实体中的一个或多个。这样,术语“一”(或“一”)、“一个或多个”以及“至少一个”在本文中可以交换地使用。还应该注意,术语“包括”、“包含”和“具有”可以交换地使用。
如本文中所使用的那样,术语“自动的”及其变型是指当执行过程或操作时在没有实质性人工输入的情况下完成的任何过程或操作。然而,如果在执行该过程或操作之前接收到该输入,则该过程或操作可以是自动的,即使该过程或操作的执行使用了实质性或非实质性的人工输入。如果这样的输入影响该过程或操作的执行方式,则该人工输入被认为是实质性的。准予执行该过程或操作的人工输入不被视为“实质性的”。
首先,对本发明使用的部分术语进行解释:
片上内存,可以是指BRAM,即Block RAM,或者称Block Random Access Memory。
全局存储器,可以是指DRAM,即Dynamic RAM,或者称Dynamic Random AccessMemory。
实施例1
根据本发明的一个方面,本发明公开了一种基于FPGA的图数据处理方法,或者说一种图数据处理方法,或者说一种处理图数据的方法。该方法可以由本发明的系统和/或其他可替代的零部件实现。在不造成冲突或者矛盾的情况下,其他实施例的优选实施方式的整体和/或部分内容可以作为本实施例的补充。
根据一个优选实施方式,参见图1,该方法可以用于对具有小世界网络特性的图进行图遍历。优选地,该方法可以包括:使用第一处理器100和与第一处理器100通信连接的第二处理器200。该方法可以包括:使用第一处理器100和/或与第一处理器100通信连接的第二处理器200进行图遍历。第一处理器100可以是CPU。第二处理器200可以是FPGA。第一处理器100可以用于将需要遍历的图数据传入第二处理器200。第一处理器100可以在第二处理器200按照层序遍历的遍历方式完成对图数据的图遍历之后才从第二处理器200获取图遍历的结果数据用于结果输出。优选地,第二处理器200可以包括低峰处理模块210和高峰处理模块220。
优选地,低峰处理模块210和高峰处理模块220可以分别利用第二处理器200的不同区域的片上逻辑资源。高峰处理模块220利用的片上逻辑资源可以比低峰处理模块210利用的片上逻辑资源更多。高峰处理模块220相对于低峰处理模块210可以具有更高的并行度。高峰处理模块220利用的片上逻辑资源比低峰处理模块210利用的片上逻辑资源更多,以使高峰处理模块220相对于低峰处理模块210可以具有更高的并行度。低峰处理模块210和高峰处理模块220可以按照在片上的位置彼此隔离开的方式设置。低峰处理模块210和高峰处理模块220之间可以没有共享的逻辑电路。低峰处理模块210中用于进行图遍历的第一计算逻辑单元的第一数量可以少于高峰处理模块220中用于进行图遍历的第二计算逻辑单元的第二数量。低峰处理模块210可以用于在具有低并行度特性的开始阶段和/或结束阶段进行图遍历。高峰处理模块220可以用于在具有高并行度特性的中间阶段进行图遍历。优选地,第一计算逻辑单元和第二计算逻辑单元中的第一和第二可以只用于区分该计算逻辑单元属于低峰处理模块还是高峰处理模块。不同的第一计算逻辑单元可以具有彼此不同的逻辑门的类型和/或彼此不同的逻辑门数量。优选地,第一数量和第二数量之间具有至少一个数量级的差异。例如,低峰处理模块210可以包括拥有一百个计算逻辑单元的处理模块,高峰处理模块220可以包括1000~3000个计算逻辑单元。又例如,低峰处理模块210可以包括20个计算逻辑单元,高峰处理模块220可以包括200~500个计算逻辑单元。又例如,低峰处理模块210可以包括40个计算逻辑单元,高峰处理模块220可以包括600~1000个计算逻辑单元。优选地,第一处理器100例如可以是Intel Xeon Platinum 8173M、Intel Xeon E5-2679、Intel Core i7-5960X、AMD Ryzen 5 PRO 1500和AMD Ryzen 7 1700中的至少一种。优选地,第二处理器例如可以是Xilinx Spartan-7、Xilinx Spartan-6、Xilinx Zynq-7000、Xilinx Artix-7、Xilinx Virtex-7、Xilinx Kintex UltraScale、Xilinx VirtexUltraScale、Altera Stratix 10和Altera Cyclone V中的至少一种。优选地,第一处理器和第二处理之间通过PCI-e通道建立通信连接。优选地,低峰处理模块210可以是一个处理低并行度的图遍历过程的处理架构,针对图遍历的开始阶段与结束阶段并行度低的特征。在图遍历的起始阶段,低峰处理模块210可以对处理的数据块进行预处理以确定遍历起始节点。优选地,高峰处理模块220可以是一个处理高并行度的图遍历过程的处理模块,针对图遍历中期并行度高的特征。在高峰处理模块220中重建低峰处理模块210的保存的第一运行状态,然后进行高并行的图遍历过程。由此,本发明在FPGA上设计两个处理模块,将图遍历分为两个部分进行实现,第二处理器200可以是一个可编程的逻辑门阵列,向用户提供丰富的逻辑门单元和资源。因此通过逻辑设计,结合图遍历执行的特性,将整个图遍历过程分别用两个模块来处理两种不同并行度特性的部分,提高了图遍历的效率。优选地,在第二处理器200执行图遍历过程之前,可以由用户定义图遍历执行逻辑,并将图遍历执行逻辑烧入第二处理器200逻辑电路中。由此,用户无需关注存储数据传输调用、遍历起始处理、遍历控制等处理,就可以实现用户定义的图遍历执行算法。优选地,第一处理器100可以是CPU和/或是在FPGA上构建的通用处理器。优选地,低峰处理模块210可以是在FPGA上构建的用于处理图数据的专用处理器和/或通用处理器。
优选地,小世界网络特性可以是指网络图具有较短的平均路径长度和较大的聚类系数的特性。现实世界中的较多网络都具有小世界网络特性,例如:交通网络、脑神经网络、社交网络和食物链。可见,自然图具有小世界网络的特性,具有一定数值范围内的直径大小,因此在自然图上遍历过程中,有一个从低并行度的执行过程转为高并行度的执行过程之后再从高并行度的执行过程转为低并行度的执行过程的特点,因此整个图遍历过程有两个非常明显的特性,一个是起始和/或结束阶段的低并行度的执行过程,一个是中间阶段并行度很大的高并行度的执行过程。由此,本发明根据低并行度与高并行度的执行特性,在FPGA上分别设计专用的模块来执行相应的遍历阶段,以便充分利用小世界网络的特性。换言之,自然图由于节点度数存在幂律分布的特性,因此存在大量度数非常少的节点,在所有结点中占绝大多数,所选取的遍历起始节点大概率是度数非常少的节点,而该节点的邻居也大概率是度数非常少的节点,因此在进行遍历过程中,起始阶段并行度非常低,而中间过程由于遍历迭代的进行,迭代节点数成倍数增多,并且由于自然图直径限定为一定的数值,在迭代一定次数之后,遍历到大度数节点,因此遍历中间阶段的并行度非常高,遍历后期由于已经遍历了大度数节点,因此该阶段遍历的也是低度数节点,并随着遍历迭代的进行,并行度越来越低,因此整个图遍历并行度呈现出两边低、中间高的执行过程。
根据一个优选实施方式,在本发明中,图遍历过程只要满足层序遍历的特点,就会呈现出高、低并行度转换的特性。优选地,层序遍历可以是指逐层访问图的节点的过程。比如,从图的起始节点出发,首先访问第一层的起始节点,然后访问第二层上的节点,接着是第三层的节点,以此类推地逐层访问图的节点的过程就是层序遍历。随着遍历迭代的执行,每一个加入的节点出度都大于等于1,下一次迭代被遍历的节点数目大于本次迭代的数目,遍历的并行度就会升高,在大出度节点进入该次新遍历的节点,就会造成极高的并行度。例如,广度优先和最短路径就存在层序遍历的特点。广度优先也可以称BFS。最短路径也可以称SSSP。参见图3,此处通过一个简单的例子对图数据结构的遍历过程进行说明。图3是一个基于图类型数据结构按照广度优先方式进行图遍历的过程示意图,广度优先方式即BFS遍历。图数据结构由节点(node)和边(edge)组成,两个节点通过边进行连接,其中边有两种类型,一种是有向边,构成的图为有向图,一种是无向边,构成的图为无向图,这里以无向图为例。图3的图中一共有7个节点,BFS遍历开始时,以节点0作为BFS的起始点,开始进行BFS遍历,先遍历出节点1和节点3,然后遍历出节点2、节点6以及节点4,最后遍历出节点5,整个BFS遍历过程中,每一次迭代遍历的节点用不同颜色进行了区分。整个遍历过程中,每一次迭代所遍历的节点数分别为1、2、3、1。由此可以发现,整个遍历过程最初以及最终的迭代所遍历的节点数是最少的,而中间遍历迭代的节点数是最多的,并且相对于最初与最终的节点数来说在总节点数中占比很大。优选地,再以SSSP的遍历方式为例,SSSP是从一个源点出发,按层序遍历的过程计算每一层的节点与源点的距离,每一个节点的计算过程在本次迭代中没有联系,可以完全并行,因此整个遍历过程中也会出现高、低并行度转换的执行特点。在自然图例如社交网络中,由于自然图存在小世界网络的特性,因此节点具有幂律分布的特性,以及六度分隔理论在社交网络中的存在,表明社交网络图具有一个一定数值范围内的直径。在如上条件下,如图4所示,这是一个社交网络图结构进行BFS遍历每一层迭代所遍历的节点数在总节点数的占比示意图,图4的横轴表示遍历迭代的次数,图4的纵轴表示每一层迭代所遍历的节点数在图总点数的占比。社交网络的直径为6,因此总的遍历迭代次数为6步。由于小世界网络的特性,整个遍历在开始的时候所遍历的节点占比非常小,如图4所示,第一次迭代和第二次迭代所遍历的节点数占比都是非常小的,然后进入第三次遍历迭代,可以发现,这个时候遍历的节点数已经非常多了,占比相对于第一次迭代和第二次迭代要多很多,而第四次迭代遍历的节点数达到整个遍历过程的峰值,遍历节点数占比超过60%以上,由此可以发现遍历的中间阶段是遍历节点数的高并行阶段,以第三次迭代和第四次迭代作为该阶段的遍历特点,并行度最高,然后进入第五次迭代和第六次迭代,第五次迭代遍历的节点数迅速下降,而第六次迭代遍历的节点数继续下降,并结束遍历过程,由此可以发现,在遍历后期遍历的节点数与遍历开始的阶段一样,遍历节点数占比相比于高并行阶段是非常小的,并行度低。整个自然图遍历过程在图4可以反映出,遍历的开始阶段和结束阶段,遍历的节点数少,并行度不高,遍历的中间阶段所遍历的节点数非常多,并行度很高,这就是具有小世界网络特性的图在遍历过程中的特点。
根据一个可选的实施方式,具有低并行度特性的开始阶段、具有高并行度特性的中间阶段和具有低并行度特性的结束阶段的分界点可以按照以下方式来进行判断:在开始阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总出度与该次遍历的节点的总数量之比大于等于10之时,由此判断本次遍历迭代为开始阶段的终点,下一次遍历迭代为中间阶段的起点,在中间阶段的图遍历过程中,当某次遍历的节点的总数量与下一次遍历的节点的总数量之比大于等于10之时,由此判断本次遍历迭代为中间阶段的终点,下一次遍历迭代为结束阶段的起点。
根据一个可选的实施方式,具有低并行度特性的开始阶段、具有高并行度特性的中间阶段和具有低并行度特性的结束阶段的分界点可以按照以下方式来进行判断:在开始阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总出度与图数据的节点总数之比大于等于第一预设阈值之时,由此判断本次遍历迭代为开始阶段的终点,下一次遍历迭代为中间阶段的起点,在中间阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总出度与图数据的节点总数之比小于第一预设阈值之时,由此判断本次遍历迭代为中间阶段的终点,下一次遍历迭代为结束阶段的起点。比如,在开始阶段的图遍历过程中,当高低并行度模块执行的区分按照运行时执行特性进行判定,其中以Na表示一次迭代的节点总出度,Nt表示图数据的节点总数,设定一个第一预设阈值SD,当迭代执行的运行时特性计算得到的数值Na/Nt<SD,则遍历执行在低峰处理模块,当迭代执行的运行时特性计算得到的数值Na/Nt≥SD,则遍历执行在高峰处理模块。优选地,第一预设阈值的范围可以是20%~50%。
根据一个可选的实施方式,具有低并行度特性的开始阶段、具有高并行度特性的中间阶段和具有低并行度特性的结束阶段的分界点可以按照以下方式来进行判断:在开始阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总数量与图数据的节点总数之比大于等于第二预设阈值之时,由此判断本次遍历迭代为开始阶段的终点,下一次遍历迭代为中间阶段的起点,在中间阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总数量与图数据的节点总数之比小于等于第三预设阈值之时,由此判断本次遍历迭代为中间阶段的终点,下一次遍历迭代为结束阶段的起点。优选地,第二预设阈值和/或第三预设阈值可以是由用户定义的。优选地,至少其中一次可以是指出现一次、两次或者两次以上,具体可以由用户设定。优选地,第二预设阈值的取值范围可以是5%~10%。第三预设阈值的范围可以是5%~10%。优选地,第二预设阈值可以小于等于第三预设阈值。根据一个可选的实施方式,该实施方式可以采用在前的三个可选的实施方式中的至少一个来判断具有低并行度特性的开始阶段、具有高并行度特性的中间阶段和具有低并行度特性的结束阶段的分界点。当采用在前的三个可选的实施方式中的两个可选的实施方式来判断时,则分界点的判断需同时满足两个可选的实施方式中的判断条件才能最终确认。当采用在前的三个可选的实施方式中的三个可选的实施方式来判断时,则分界点的判断需同时满足三个可选的实施方式中的判断条件才能最终确认。分界点可以包括开始阶段的终点、中间阶段的起点、中间阶段的终点和结束阶段的起点。
根据一个优选实施方式,在第二处理器200进行图遍历之前,第一处理器100可以先将需要执行的图遍历算法逻辑烧入第二处理器200的逻辑电路中,再将需要遍历的图数据传入第二处理器200的全局存储器230中。低峰处理模块210可以以选定的起始点位置为划分起点通过启发式算法对全局存储器230上的图数据进行分块处理得到若干数据块。低峰处理模块210可以从若干数据块中选取含有起始点的数据块传入第二处理器200的片上内存240中。
根据一个优选实施方式,低峰处理模块210可以被配置为:基于片上内存240中的含有起始点的数据块确定遍历的起始节点;从起始节点进行开始阶段的图遍历;和/或在图遍历过程中分析图遍历的执行阶段,在图遍历处于具有低并行度特性的开始阶段的情况下,在低峰处理模块210中继续执行图遍历过程,在图遍历进入具有高并行度特性的中间阶段的情况下,则暂停图遍历的执行并将暂停时的第一运行状态与数据进行保存,并在数据保存完成之后请求高峰处理模块220进行图遍历。
根据一个优选实施方式,高峰处理模块220可以被配置为:获取低峰处理模块210保存的第一运行状态和数据并由此重建图遍历的第一运行状态;在重建图遍历的第一运行状态之后,基于低峰处理模块210保存的数据进行图遍历;和/或在图遍历过程中分析图遍历的执行阶段,在图遍历处于具有高并行度特性的中间阶段的情况下,在高峰处理模块220中继续执行图遍历过程,在图遍历进入具有低并行度特性的结束阶段的情况下,则暂停图遍历的执行并将暂停时的第二运行状态与数据进行保存,并在数据保存完成之后请求低峰处理模块210进行图遍历。
根据一个优选实施方式,低峰处理模块210可以被配置为执行以下操作:获取高峰处理模块220保存的第二运行状态和数据并由此重建第二运行状态;在重建第二运行状态之后,基于高峰处理模块220保存的数据进行图遍历;在图遍历过程中分析图遍历的完成情况,在未完成图遍历的情况下,继续执行图遍历,在完成图遍历的情况下,将获取的执行结果进行处理得到图遍历的结果数据并写入全局存储器230中。
根据一个优选实施方式,在图遍历过程中分析图遍历的完成情况的处理可以包括:在当前遍历节点的邻居节点都被标记为已遍历的情况下,对图的节点和已遍历的节点进行比对,在不存在未遍历节点之时,则图遍历过程结束,在存在未遍历节点之时,则还存在未遍历的分图,此时分析未遍历节点所在的数据块并将其传入片上内存240,通过起始点采样,在分图中开始图遍历过程。
根据一个优选实施方式,本发明的方法可以包括以下步骤中的至少一个:将需要执行的图遍历算法逻辑烧入第二处理器200的逻辑电路中,再将需要遍历的图数据传入第二处理器200的全局存储器230中;通过启发式算法,针对于用户选择的起始点位置,进行图数据分块处理,选取含有起始点的数据块传入第二处理器200的片上内存240中;和预处理数据,将CSC压缩数据转换成图领接表数据。CSC可以指Compressed Spare Column format,是一种稀疏矩阵的存储格式。
优选地,在低峰处理模块210中进行起始阶段的图遍历的执行,在图遍历过程中,低峰处理模块210判定当前图遍历过程是否在低并行度的开始阶段,如果是,则在低峰处理模块210中继续执行图遍历过程,如果否,则低峰处理模块210判定当前图遍历过程进入高并行度的中间阶段,此时低峰处理模块210暂停执行图遍历,将当前图遍历的第一运行状态与数据进行保存,之后转由高峰处理处理模块220执行图遍历过程。将低峰处理模块210停止后所保存的第一运行状态和数据传入高峰处理模块220中,然后在高峰处理模块220中重建暂停的图遍历的第一运行状态,进行高峰处理模块220执行的预处理。优选地,高峰处理模块220利用在低峰处理模块210遍历时,获取运行时信息预传入的数据块,在图遍历状态建立好之后立即进行遍历的执行。在高峰处理模块220中进行中间阶段的图遍历的执行,在图遍历过程中,高峰处理模块220判定当前图遍历过程是否在高并行度的中间阶段,如果是,则在高峰处理模块220中继续执行图遍历过程,如果否,则高峰处理模块220判定当前图遍历过程进入低并行度的结束阶段,此时高峰处理模块220暂停执行图遍历,将当前图遍历的第二运行状态与数据进行保存,之后转由低峰处理模块210执行图遍历过程。优选地,在低峰处理模块210中进行图遍历结束阶段的执行,低峰处理模块210判断是否遍历结束,如果否,则继续执行图遍历,如果是,则低峰处理模块210将获取的执行结果进行处理得到结果数据,写入全局存储器230中。优选地,第一处理器100从全局存储器230获取图遍历的结果数据,根据定义进行结果输出。
根据另一个优选实施方式,本发明的方法可以包括以下步骤中的至少一个:
系统初始化,在第二处理器200处理器上进行基于第二处理器200图处理方法的系统搭建,将第二处理器200的图处理方式编译为第二处理器200的执行二进制码,然后将二进制码烧入第二处理器200中;
将需要执行的图遍历算法逻辑烧入第二处理器200执行逻辑中,以便确定图遍历算法所定义的遍历过程;
将需要进行遍历的图数据传入第二处理器200的全局存储器230中;
通过启发式抽样,选取下一次迭代需要访问的数据块传入第二处理器200的片上内存240中,预处理图数据,将CSC压缩数据转成图领接表,由于有联系的节点与边大多相距不远,因此通过有选择地读取现有处理数据的临近数据区,选取下一次迭代需要访问的数据块传入第二处理器200的片上内存240中;
选择在低峰处理模块210开始遍历的执行,低峰处理模块210确定现阶段执行是图遍历的开始阶段,对需要遍历的数据进行预处理,确定遍历起始点,然后计算逻辑单元进行图遍历过程;
通过仲裁器分析是否在起始的低并行度执行阶段,如果是则在计算单元中执行图的遍历算法,如果所遍历的节点出度总数非常高,表明下一次迭代所遍历的节点数非常多,则遍历开始进入高并行阶段,需要转换模块进行后续遍历;
运行执行状态分析模块250获取图数据的执行情况,在遍历过程中需要通过分析现有图数据的邻接结构,利用贪心策略预先获知后续需要处理的数据块,然后在遍历执行之前就将这些数据块输入到第二处理器200片上内存240中,以便能迅速地进行后续遍历而无需等待数据的传输过程,由于第二处理器200的片上内存240资源有限,只能将需要进行遍历的数据传入片上内存240中;
将获取的执行结果按照用户定义的要求进行后续处理,之后再进行打包压缩为CSC数据,输出到全局存储器230中,后续处理比如是删除指定的节点与边、构建树结构等操作;
遍历进入高并行阶段,仲裁器子模块检测出本次遍历迭代的节点总出度,在节点总出度与本次迭代节点数有数量级的倍数差别之时,表明图遍历过程开始阶段执行结束,图遍历开始进入高并行阶段的执行,将当前的第一运行状态与数据进行保存,启动高峰处理模块220的执行图遍历,将保存的第一运行状态与数据传输到高峰处理模块220;
图遍历在高峰处理模块220中执行,将低峰处理模块210停止后保存的状态和数据传入高峰处理模块220中,然后重建暂停的第一运行状态,进行高峰处理模块220执行的预处理;
高峰处理模块220利用在低峰处理模块210遍历时传入的数据,在执行状态建立好之后立即进行遍历的执行,由此无需根据现有的节点来分析所需遍历的数据块,等待数据的传输,在中间阶段的执行过程中,仲裁器判定高并行阶段的执行情况,如果是该阶段执行节点的邻居基本都标记为已遍历,本次迭代下一次遍历的节点数相对于本次遍历的节点数有数量级倍数的差别,这些遍历的特点表明遍历过程进入了低并行度的后续阶段,则需要停止高峰处理模块220的遍历执行,如果本次迭代的节点数与下一次遍历的节点数差别未达到数量级倍数的差别,则表明现阶段的遍历过程依旧在高并行阶段,则继续该阶段的遍历执行过程;
将获取的执行结果按照用户定义的要求进行后续处理,比如删除指定的节点与边、构建树结构等操作,之后再进行打包压缩为CSC数据,输出到全局存储器230中;
遍历进入结束阶段,执行模块转换,仲裁器检测出本次遍历迭代的节点邻居大多数都已经标记为已遍历,本次迭代下一次遍历的节点数相对于本次遍历的节点数有数量级倍数的差别,则遍历过程进入了低并行度的结束阶段,遍历过程开始进入结束阶段的执行,则停止高峰处理模块220的执行,维持运行时状态与数据,将当前的第二运行状态与数据进行保存,启动低峰处理模块210的执行,将保存的状态与数据传输到低峰处理模块210;
在低峰处理模块210中进行图遍历结束阶段的执行,将高峰处理模块220停止后保存的状态和数据传入低峰处理模块210中,然后重建暂停的执行状态,进行低峰处理模块210执行的预处理;
在低峰处理模块210进行图遍历的执行,并根据遍历时状态判定是否达到了遍历的结束,如果当前所遍历的节点所有的邻居都标记为已遍历,并且所有的分图都进行了图遍历的过程,则表明遍历结束,如果还有未遍历到邻居节点,或者图的分图尚且存在未遍历的情况,则继续图遍历过程;
通过仲裁器判定是否达到遍历结束的状态,如果本次迭代的节点存在未遍历的邻居,则继续进行结束阶段的图遍历过程,如果遍历节点没有未遍历的邻居,则检查是否存在未遍历的分图,如果存在,则继续利用启发式采样方法选取分图中的节点,进行分图的遍历过程;和
将获取的执行结果按照用户定义的要求进行后续处理,之后再进行打包压缩为CSC数据,输出到全局存储器230中。
根据一个优选实施方式,遍历仲裁器判定图遍历进入结束状态,一次迭代之后,遍历仲裁器检查当前遍历节点的邻居是否还存在未遍历节点,在当前遍历节点的邻居都标记为已遍历的情况下,则检查是否存在未遍历分图,在所有数据区的节点都已经完成遍历的情况下,则标记遍历结束。优选地,图遍历算法执行结束之后,低峰处理模块210可以执行遍历算法的后续操作,将执行结果数据进行处理,将执行结果进行压缩,传入全局存储器230中。图遍历结果输出,第一处理器100获取图遍历执行之后的数据,根据输出数据结果要求,在输出设备上进行结果输出。优选地,由于图中的节点并不是都有边相连构成相互连接的路径的,一个图由分图组成,分图是不相连接的图,分图有节点数很大的图,也存在节点数很小的图,在图遍历过程中,如果图存在一定量的节点数很小的分图时,则在遍历结束阶段需要考虑由于节点采样导致的这些很大概率没有遍历到的分图。节点数很少的分图在整个遍历过程中由于起始点选择的原因一直没有遍历,因此在当前遍历节点的邻居都标记为已遍历的情况下,并不一定表明图的遍历已经结束,这时需要对图进行分析,因此在之前的遍历过程中,对数据块中从未遍历到节点需要作一定的记录,这样如果对所有的数据块都进行了遍历,但是没有记录未遍历节点,则表明遍历结束,如果存在记录的未遍历节点,则需要进行遍历结束的处理,分析未遍历节点所在的数据块,传入第二处理器200的片上内存240中通过起始点采样,在分图中开始图遍历过程。
根据一个优选实施方式,将高峰执行模块220中所有的计算逻辑单元进行分区以构成包含预设数量的计算逻辑单元的执行项。因此高峰执行模块220包括一定量的执行项组成,而执行项由一定量的计算逻辑单元组成,高峰执行模块220控制所有的执行项,每一个执行项控制其所包括的计算逻辑单元。
根据一个优选实施方式,该方法可以包括:在第二处理器200上构建执行状态分析模块250。该状态分析模块250可以被配置为:通过分析低峰处理模块210和/或高峰处理模块220的执行图遍历的执行状态以确定低峰处理模块210和/或高峰处理模块220在后续的图遍历过程所需的数据块,并将所述所需的数据块在下一次遍历迭之前预先传入到片上内存240中。由此,低峰处理模块210和/或高峰处理模块220能够在后续遍历中迅速地开始下一次遍历迭代。优选地,通过分析低峰处理模块210和/或高峰处理模块220的执行图遍历的执行状态以确定低峰处理模块210和/或高峰处理模块220在后续的图遍历过程所需的数据块的处理可以包括:该状态分析模块250分析运行时执行情况,获取运行时信息传入取数控制器中,通过贪心策略分析大度数节点的邻居数据块,有选择地读取当前处理的数据的临近数据区,以确定低峰处理模块210和/或高峰处理模块220在后续的图遍历过程所需的数据块。由此,在图遍历执行过程中,对低峰处理模块210和/或高峰处理模块220的执行状态进行分析,获取后续执行所需的数据块,然后将所需的数据块预先从全局存储器230传入第二处理器200的片上内存240中。通过该方式,以便后续的遍历迭代能直接执行而不需要等待数据的传输过程,加快遍历的执行过程。优选地,本发明的低峰处理模块210、高峰处理模块220和状态分析模块250都可以是在FPGA上构建的硬件模块。
根据一个优选实施方式,参见图2,该方法可以包括以下步骤:
步骤S11:构建一个用于对具有小世界网络特性的图进行图遍历的系统,然后转入步骤S12,该系统可以包括:第一处理器100和与第一处理器100通信连接的第二处理器200,第一处理器100是CPU,第二处理器200是FPGA,第二处理器可以包括低峰处理模块210和高峰处理模块220,低峰处理模块210中用于进行图遍历的计算逻辑单元的第一数量少于高峰处理模块220中用于进行图遍历的计算逻辑单元的第二数量;
步骤S12:将需要执行的图遍历算法逻辑烧入第二处理器200的逻辑电路中,再将需要遍历的图数据传入第二处理器200的全局存储器230中,通过启发式算法,针对于用户选择的起始点位置,进行图数据分块处理,选取含有起始点的数据块传入第二处理器200的片上内存240中,转至步骤S13;
步骤S13:在低峰处理模块210中进行起始阶段的图遍历的执行,在执行过程中进行步骤S14;
步骤S14:在图遍历过程中,低峰处理模块210判定当前图遍历过程是否在低并行度的开始阶段,如果是,则重复步骤13,在低峰处理模块210中继续执行图遍历过程,如果否,低峰处理模块210判定当前图遍历过程进入高并行度的中间阶段,此时低峰处理模块210暂停执行图遍历,将当前图遍历的第一运行状态与数据进行保存,之后转至步骤S15;
步骤S15:将低峰处理模块210停止后所保存的第一运行状态和数据传入高峰处理模块220中,然后重建暂停的图遍历的第一运行状态,进行高峰处理模块220执行的预处理,转至步骤S16;
步骤S16:在高峰处理模块220中进行中间阶段的图遍历的执行,在执行过程中进行步骤S17;
步骤S17:在图遍历过程中,高峰处理模块220判定当前图遍历过程是否在高并行度的中间阶段,如果是,则重复步骤S16,在高峰处理模块220中继续执行图遍历过程,如果否,则高峰处理模块220判定当前图遍历过程进入低并行度的结束阶段,此时高峰处理模块220暂停执行图遍历,将当前图遍历的第二运行状态与数据进行保存,之后转由低峰处理模块210执行图遍历过程,转至步骤S18;
步骤S18:在低峰处理模块210中进行图遍历结束阶段的执行,在执行过程中进行步骤S19;
步骤S19:低峰处理模块210判断是否遍历结束,如果否,则重复步骤18,继续执行图遍历,如果是,则低峰处理模块210将获取的执行结果进行处理得到结果数据,写入全局存储器230中;
根据一个优选实施方式,该方法可以使用仲裁模块来判定图遍历的执行特性。仲裁模块可以识别执行特性。如果执行过程的并行度符合低并行度的执行特性,则可以在低峰处理模块210中进行程序的执行。若执行的并行度提高到符合高并行度的执行特性,则可以在高峰处理模块220中进行程序的执行。
根据一个优选实施方式,在第一处理器100获取了结果数据之后,将结果数据进行CSC压缩处理,并根据用户定义的结果处理要求对结果数据进行处理,并根据用户的要求将结果进行显示输出。图数据的存储模式为CSC压缩数据。用户定义的结果处理要求例如是构建遍历树和标注领袖节点等。
实施例2
根据本发明的另一方面,本发明公开了一种基于FPGA的图遍历系统,该系统适于执行本发明记载的各个方法步骤,以达到预期的技术效果。
本实施例可以是对实施例1的进一步改进和/或补充,重复的内容不再赘述。在不造成冲突或者矛盾的情况下,其他实施例的优选实施方式的整体和/或部分内容可以作为本实施例的补充。
根据一个优选实施方式,该系统可以用于对具有小世界网络特性的图进行图遍历。优选地,该系统可以包括:第一处理器100和与第一处理器100通信连接的第二处理器200。第一处理器100可以是CPU。第二处理器200可以是FPGA。第一处理器100可以用于将需要遍历的图数据传入第二处理器200。第一处理器100可以在第二处理器200按照层序遍历的遍历方式完成对图数据的图遍历之后才获取图遍历的结果数据以用于结果输出。第二处理器200可以包括用于在具有低并行度特性的开始和/或结束阶段进行图遍历的低峰处理模块210和用于在具有高并行度特性的中间阶段进行图遍历的高峰处理模块220。低峰处理模块210中用于进行图遍历的计算逻辑单元的第一数量可以少于高峰处理模块220中用于进行图遍历的计算逻辑单元的第二数量。
根据一个优选实施方式,第一处理器100可以被配置为:获取结果数据并基于所述结果数据根据用户定义进行结果输出。
根据一个优选实施方式,第一数量和第二数量可以具有至少一个数量级的差异。尤其优选地,第一数量和第二数量可以具有至少两个数量级的差异。
根据一个优选实施方式,低峰处理模块210可以以用户选择的起始点位置为划分起点通过启发式算法对图数据进行分块处理得到若干数据块。低峰处理模块210可以从若干数据块中选取含有起始点的数据块传入第二处理器200的片上内存240中。
根据一个优选实施方式,该系统还可以包括:执行状态分析模块250。
根据一个优选实施方式,低峰处理模块210可以包括:起始处理单元、第一计算逻辑单元和结束处理单元中的至少一个。起始预处理单元可以用于含有起始点的数据块进行预处理以确定遍历起始节点。结束处理单元可以执行遍历算法的后续操作,将执行结果数据进行处理,将执行结果进行压缩,传入全局存储器230中。
虽然已经详细描述了本发明,但是在本发明的精神和范围内的修改对于本领域技术人员将是显而易见的。这样的修改也被认为是本公开的一部分。鉴于前面的讨论、本领域的相关知识以及上面结合背景讨论的参考或信息(均通过引用并入本文),进一步的描述被认为是不必要的。此外,应该理解,本发明的各个方面和各个实施例的各部分均可以整体或部分地组合或互换。而且,本领域的普通技术人员将会理解,前面的描述仅仅是作为示例,并不意图限制本发明。
已经出于示例和描述的目的给出了本公开的前述讨论。这并不意图将本公开限制于本文公开的形式。在前述的具体实施方式中,例如,为了简化本公开的目的,本公开的各种特征在一个或多个实施例、配置或方面中被组合在一起。实施例、配置或方面的特征可以以除上面讨论的那些之外的替代实施例、配置或方面组合。本公开的该方法不应被解释为反映本公开需要比每个权利要求中明确记载的更多特征的意图。相反,如以下权利要求所反映的,创造性方面在于少于单个前述公开的实施例、配置或方面的所有特征。因此,以下权利要求由此被并入本具体实施方式中,其中每个权利要求其自身作为本公开的单独实施例。
而且,虽然本公开的描述已经包括对一个或多个实施例、配置或方面以及某些变型和修改的描述,但是其他变型、组合和修改也在本公开的范围内,例如在本领域技术人员的技能和知识范围内,在理解了本公开之后。旨在获得在允许的程度上包括替代实施例、配置或方面的权利,所述权利包括那些要求保护的替代的、可互换的和/或等效的结构、功能、范围或步骤的权利,无论这种替代的、可互换的和/或等效的结构、功能、范围或步骤是否在本文中公开,并且无意公开奉献任何可专利的主题。
Claims (10)
1.一种基于FPGA的图数据处理方法,其特征在于,所述方法用于对具有小世界网络特性的图进行图遍历,
所述方法使用第一处理器(100)和与所述第一处理器(100)通信连接的第二处理器(200)进行图遍历,所述第一处理器(100)是CPU,所述第二处理器(200)是FPGA,
其中,所述第一处理器(100)用于将需要遍历的图数据传入所述第二处理器(200),并且所述第一处理器(100)在所述第二处理器(200)按照层序遍历的遍历方式完成对所述图数据的图遍历之后才从所述第二处理器(200)获取图遍历的结果数据用于结果输出,
所述第二处理器(200)包括低峰处理模块(210)和高峰处理模块(220),低峰处理模块(210)和高峰处理模块(220)分别利用第二处理器(200)的不同区域的片上逻辑资源,并且高峰处理模块(220)相对于低峰处理模块(210)具有更高的并行度,所述低峰处理模块(210)用于在具有低并行度特性的开始阶段和/或结束阶段进行图遍历,所述高峰处理模块(220)用于在具有高并行度特性的中间阶段进行图遍历。
2.如权利要求1所述的方法,其特征在于,具有低并行度特性的开始阶段、具有高并行度特性的中间阶段和具有低并行度特性的结束阶段的分界点按照以下方式中的至少一种进行判断:
在开始阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总出度与该次遍历的节点的总数量之比大于等于10之时,由此判断本次遍历迭代为开始阶段的终点,下一次遍历迭代为中间阶段的起点,在中间阶段的图遍历过程中,当某次遍历的节点的总数量与下一次遍历的节点的总数量之比大于等于10之时,由此判断本次遍历迭代为中间阶段的终点,下一次遍历迭代为结束阶段的起点;
在开始阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总出度与图数据的节点总数之比大于等于第一预设阈值之时,由此判断本次遍历迭代为开始阶段的终点,下一次遍历迭代为中间阶段的起点,在中间阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总出度与图数据的节点总数之比小于第一预设阈值之时,由此判断本次遍历迭代为中间阶段的终点,下一次遍历迭代为结束阶段的起点;和
在开始阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总数量与图数据的节点总数之比大于等于第二预设阈值之时,由此判断本次遍历迭代为开始阶段的终点,下一次遍历迭代为中间阶段的起点,在中间阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总数量与图数据的节点总数之比小于等于第三预设阈值之时,由此判断本次遍历迭代为中间阶段的终点,下一次遍历迭代为结束阶段的起点。
3.如权利要求1所述的方法,其特征在于,在所述第二处理器(200)进行图遍历之前,所述第一处理器(100)先将需要执行的图遍历算法逻辑烧入第二处理器(200)的逻辑电路中,再将需要遍历的图数据传入第二处理器(200)的全局存储器(230)中,
所述低峰处理模块(210)以选定的起始点位置为划分起点通过启发式算法对所述全局存储器(230)上的图数据进行分块处理得到若干数据块,并且从所述若干数据块中选取含有起始点的数据块传入第二处理器(200)的片上内存(240)中。
4.如权利要求3所述的方法,其特征在于,所述低峰处理模块(210)被配置为:
基于所述片上内存(240)中的所述含有起始点的数据块确定遍历的起始节点;
从所述起始节点进行开始阶段的图遍历;和/或
在图遍历过程中分析图遍历的执行阶段,在图遍历处于具有低并行度特性的开始阶段的情况下,在所述低峰处理模块(210)中继续执行图遍历过程,在图遍历进入具有高并行度特性的中间阶段的情况下,则暂停图遍历的执行并将暂停时的第一运行状态与数据进行保存,并在数据保存完成之后请求高峰处理模块(220)进行图遍历。
5.如权利要求4所述的方法,其特征在于,所述高峰处理模块(220)被配置为:
获取所述低峰处理模块(210)保存的第一运行状态和数据并由此重建图遍历的第一运行状态;
在重建所述图遍历的第一运行状态之后,基于所述低峰处理模块(210)保存的数据进行图遍历;和/或
在图遍历过程中分析图遍历的执行阶段,在图遍历处于具有高并行度特性的中间阶段的情况下,在所述高峰处理模块(220)中继续执行图遍历过程,在图遍历进入具有低并行度特性的结束阶段的情况下,则暂停图遍历的执行并将暂停时的第二运行状态与数据进行保存,并在数据保存完成之后请求低峰处理模块(210)进行图遍历。
6.如权利要求4所述的方法,其特征在于,所述低峰处理模块(210)还被配置为:
获取所述高峰处理模块(220)保存的第二运行状态和数据并由此重建所述第二运行状态;
在重建所述第二运行状态之后,基于所述高峰处理模块(220)保存的数据进行图遍历;
在图遍历过程中分析图遍历的完成情况,在未完成图遍历的情况下,继续执行图遍历,在完成图遍历的情况下,将获取的执行结果进行处理得到图遍历的结果数据并写入全局存储器(230)中。
7.如权利要求6所述的方法,其特征在于,所述在图遍历过程中分析图遍历的完成情况的处理包括:
在当前遍历节点的邻居节点都被标记为已遍历的情况下,对图的节点和已遍历的节点进行比对,在不存在未遍历节点之时,则图遍历过程结束,在存在未遍历节点之时,则还存在未遍历的分图,此时分析未遍历节点所在的数据块并将其传入片上内存(240),通过起始点采样,在分图中开始图遍历过程。
8.如权利要求1至7之一所述的方法,其特征在于,所述方法还包括:在第二处理器(200)上构建执行状态分析模块(250),
其中,所述状态分析模块(250)被配置为:通过分析低峰处理模块(210)和/或高峰处理模块(220)的执行图遍历的执行状态以确定低峰处理模块(210)和/或高峰处理模块(220)在后续的图遍历过程所需的数据块,并将所述所需的数据块在下一次遍历迭之前传入到片上内存(240)中。
9.一种基于FPGA的图遍历系统,所述系统用于对具有小世界网络特性的图进行图遍历,所述系统包括:第一处理器(100)和与所述第一处理器(100)通信连接的第二处理器(200),所述第一处理器(100)是CPU,所述第二处理器(200)是FPGA,
其中,所述第一处理器(100)用于将需要遍历的图数据传入所述第二处理器(200),并且所述第一处理器(100)在所述第二处理器(200)按照层序遍历的遍历方式完成对所述图数据的图遍历之后才从所述第二处理器(200)获取图遍历的结果数据用于结果输出,
所述第二处理器(200)包括低峰处理模块(210)和高峰处理模块(220),低峰处理模块(210)和高峰处理模块(220)分别利用第二处理器(200)的不同区域的片上逻辑资源,并且高峰处理模块(220)相对于低峰处理模块(210)具有更高的并行度,所述低峰处理模块(210)用于在具有低并行度特性的开始阶段和/或结束阶段进行图遍历,所述高峰处理模块(220)用于在具有高并行度特性的中间阶段进行图遍历。
10.如权利要求9所述的系统,其特征在于,具有低并行度特性的开始阶段、具有高并行度特性的中间阶段和具有低并行度特性的结束阶段的分界点按照以下方式中的至少一种进行判断:
在开始阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总出度与该次遍历的节点的总数量之比大于等于10之时,由此判断将进入图遍历的中间阶段,在中间阶段的图遍历过程中,当某次遍历的节点的总数量与下一次遍历的节点的总数量之比大于等于10之时,由此判断将进入图遍历的结束阶段;
在开始阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总出度与图数据的节点总数之比大于等于第一预设阈值之时,由此判断本次遍历迭代为开始阶段的终点,下一次遍历迭代为中间阶段的起点,在中间阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总出度与图数据的节点总数之比小于第一预设阈值之时,由此判断本次遍历迭代为中间阶段的终点,下一次遍历迭代为结束阶段的起点;和
在开始阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总数量与图数据的节点总数之比大于等于第二预设阈值之时,由此判断本次遍历迭代为开始阶段的终点,下一次遍历迭代为中间阶段的起点,在中间阶段的图遍历过程中,当至少其中一次遍历迭代的节点的总数量与图数据的节点总数之比小于等于第三预设阈值之时,由此判断本次遍历迭代为中间阶段的终点,下一次遍历迭代为结束阶段的起点。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910084423.9A CN109785224B (zh) | 2019-01-29 | 2019-01-29 | 一种基于fpga的图数据处理方法和系统 |
US16/722,082 US11263168B2 (en) | 2019-01-29 | 2019-12-20 | FPGA coprocessor with sparsity and density modules for execution of low and high parallelism portions of graph traversals |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910084423.9A CN109785224B (zh) | 2019-01-29 | 2019-01-29 | 一种基于fpga的图数据处理方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109785224A true CN109785224A (zh) | 2019-05-21 |
CN109785224B CN109785224B (zh) | 2021-09-17 |
Family
ID=66502892
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910084423.9A Active CN109785224B (zh) | 2019-01-29 | 2019-01-29 | 一种基于fpga的图数据处理方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11263168B2 (zh) |
CN (1) | CN109785224B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110704360A (zh) * | 2019-09-29 | 2020-01-17 | 华中科技大学 | 一种基于异构fpga数据流的图计算优化方法 |
CN110852930A (zh) * | 2019-10-25 | 2020-02-28 | 华中科技大学 | 一种基于OpenCL的FPGA图处理加速方法和系统 |
CN111104224A (zh) * | 2019-12-20 | 2020-05-05 | 华中科技大学 | 一种基于fpga的动态图处理方法 |
CN111914504A (zh) * | 2020-07-17 | 2020-11-10 | 中科亿海微电子科技(苏州)有限公司 | 一种应用电路的三模冗余方法及装置 |
CN113642611A (zh) * | 2021-07-16 | 2021-11-12 | 重庆邮电大学 | 一种基于多粒度的胎儿心脏超声图像识别方法 |
CN115086185A (zh) * | 2022-06-10 | 2022-09-20 | 清华大学深圳国际研究生院 | 一种数据中心网络系统及数据中心传输方法 |
CN115482147A (zh) * | 2022-09-14 | 2022-12-16 | 中国人民大学 | 基于压缩数据直接计算的高效并行图处理方法和系统 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112115289B (zh) * | 2020-09-28 | 2023-11-14 | 支付宝(杭州)信息技术有限公司 | 一种图数据采样方法和系统 |
CN114996198B (zh) * | 2022-08-03 | 2022-10-21 | 中国空气动力研究与发展中心计算空气动力研究所 | 跨处理器数据传输方法、装置、设备及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03180979A (ja) * | 1989-10-23 | 1991-08-06 | Internatl Business Mach Corp <Ibm> | マルチプロセッサ・グラフィック・システム |
US20120233486A1 (en) * | 2011-03-10 | 2012-09-13 | Nec Laboratories America, Inc. | Load balancing on heterogeneous processing clusters implementing parallel execution |
CN104778077A (zh) * | 2015-04-27 | 2015-07-15 | 华中科技大学 | 基于随机和连续磁盘访问的高速核外图处理方法及系统 |
US20170249274A1 (en) * | 2013-03-15 | 2017-08-31 | Micron Technology, Inc. | High Speed, Parallel Configuration of Multiple Field Programmable Gate Arrays |
US20170315846A1 (en) * | 2015-01-16 | 2017-11-02 | Huawei Technologies Co., Ltd. | Task scheduling method and apparatus on heterogeneous multi-core reconfigurable computing platform |
CN108319563A (zh) * | 2018-01-08 | 2018-07-24 | 华中科技大学 | 一种基于fpga的网络功能加速方法和系统 |
CN108737213A (zh) * | 2018-05-22 | 2018-11-02 | 中国电子科技集团公司第四十研究所 | 一种基于fpga的高并行大吞吐量渗透测试系统及方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7962770B2 (en) * | 2007-12-19 | 2011-06-14 | International Business Machines Corporation | Dynamic processor reconfiguration for low power without reducing performance based on workload execution characteristics |
US20180143860A1 (en) * | 2016-11-22 | 2018-05-24 | Intel Corporation | Methods and apparatus for programmable integrated circuit coprocessor sector management |
US11853244B2 (en) * | 2017-01-26 | 2023-12-26 | Wisconsin Alumni Research Foundation | Reconfigurable computer accelerator providing stream processor and dataflow processor |
US10474600B2 (en) * | 2017-09-14 | 2019-11-12 | Samsung Electronics Co., Ltd. | Heterogeneous accelerator for highly efficient learning systems |
-
2019
- 2019-01-29 CN CN201910084423.9A patent/CN109785224B/zh active Active
- 2019-12-20 US US16/722,082 patent/US11263168B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03180979A (ja) * | 1989-10-23 | 1991-08-06 | Internatl Business Mach Corp <Ibm> | マルチプロセッサ・グラフィック・システム |
US20120233486A1 (en) * | 2011-03-10 | 2012-09-13 | Nec Laboratories America, Inc. | Load balancing on heterogeneous processing clusters implementing parallel execution |
US20170249274A1 (en) * | 2013-03-15 | 2017-08-31 | Micron Technology, Inc. | High Speed, Parallel Configuration of Multiple Field Programmable Gate Arrays |
US20170315846A1 (en) * | 2015-01-16 | 2017-11-02 | Huawei Technologies Co., Ltd. | Task scheduling method and apparatus on heterogeneous multi-core reconfigurable computing platform |
CN104778077A (zh) * | 2015-04-27 | 2015-07-15 | 华中科技大学 | 基于随机和连续磁盘访问的高速核外图处理方法及系统 |
CN108319563A (zh) * | 2018-01-08 | 2018-07-24 | 华中科技大学 | 一种基于fpga的网络功能加速方法和系统 |
CN108737213A (zh) * | 2018-05-22 | 2018-11-02 | 中国电子科技集团公司第四十研究所 | 一种基于fpga的高并行大吞吐量渗透测试系统及方法 |
Non-Patent Citations (3)
Title |
---|
SHUICHI ASANO等: ""PERFORMANCE COMPARISON OF FPGA, GPU AND CPU IN IMAGE PROCESSING"", 《2009 INTERNATIONAL CONFERENCE ON FIELD PROGRAMMABLE LOGIC AND APPLICATIONS》 * |
YANG CHENGBO: ""An Efficient Dispatcher for Large Scale Graph Processing on OpenCL-based FPGAs"", 《HIGH PERFORMANCE COMPUTING ON GRAPHICS PROCESSING UNITS:HGPU.ORG》 * |
王孝远等: ""面向大数据的异构内存系统"", 《大数据》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110704360B (zh) * | 2019-09-29 | 2022-03-18 | 华中科技大学 | 一种基于异构fpga数据流的图计算优化方法 |
CN110704360A (zh) * | 2019-09-29 | 2020-01-17 | 华中科技大学 | 一种基于异构fpga数据流的图计算优化方法 |
CN110852930A (zh) * | 2019-10-25 | 2020-02-28 | 华中科技大学 | 一种基于OpenCL的FPGA图处理加速方法和系统 |
CN111104224A (zh) * | 2019-12-20 | 2020-05-05 | 华中科技大学 | 一种基于fpga的动态图处理方法 |
CN111104224B (zh) * | 2019-12-20 | 2023-06-20 | 华中科技大学 | 一种基于fpga的动态图处理方法 |
CN111914504A (zh) * | 2020-07-17 | 2020-11-10 | 中科亿海微电子科技(苏州)有限公司 | 一种应用电路的三模冗余方法及装置 |
CN111914504B (zh) * | 2020-07-17 | 2024-03-15 | 中科亿海微电子科技(苏州)有限公司 | 一种应用电路的三模冗余方法及装置 |
CN113642611A (zh) * | 2021-07-16 | 2021-11-12 | 重庆邮电大学 | 一种基于多粒度的胎儿心脏超声图像识别方法 |
CN113642611B (zh) * | 2021-07-16 | 2024-04-12 | 重庆邮电大学 | 一种基于多粒度的胎儿心脏超声图像识别方法 |
CN115086185A (zh) * | 2022-06-10 | 2022-09-20 | 清华大学深圳国际研究生院 | 一种数据中心网络系统及数据中心传输方法 |
CN115086185B (zh) * | 2022-06-10 | 2024-04-02 | 清华大学深圳国际研究生院 | 一种数据中心网络系统及数据中心传输方法 |
CN115482147A (zh) * | 2022-09-14 | 2022-12-16 | 中国人民大学 | 基于压缩数据直接计算的高效并行图处理方法和系统 |
CN115482147B (zh) * | 2022-09-14 | 2023-04-28 | 中国人民大学 | 基于压缩数据直接计算的高效并行图处理方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109785224B (zh) | 2021-09-17 |
US11263168B2 (en) | 2022-03-01 |
US20200242072A1 (en) | 2020-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109785224A (zh) | 一种基于fpga的图数据处理方法和系统 | |
CN107329814B (zh) | 一种基于rdma的分布式内存数据库查询引擎系统 | |
CN104636197B (zh) | 一种数据中心虚拟机迁移调度策略的评价方法 | |
CN106021268A (zh) | 文件系统块级分层与协同分配 | |
CN103345514A (zh) | 大数据环境下的流式数据处理方法 | |
CN108268319A (zh) | 任务调度方法、装置及系统 | |
Dokeroglu et al. | Robust heuristic algorithms for exploiting the common tasks of relational cloud database queries | |
CN109492774A (zh) | 一种基于深度学习的云资源调度方法 | |
CN108304538A (zh) | 一种完全基于分布式内存计算的etl系统及其方法 | |
CN103399902A (zh) | 一种并行环境下的有向图可达性链表生成及查询方法 | |
CN103309958A (zh) | Gpu和cpu混合架构下的olap星型连接查询优化方法 | |
CN102929961A (zh) | 基于构建快速数据分级通道的数据处理方法及其装置 | |
CN109918199A (zh) | 基于gpu的分布式图处理系统 | |
CN110187969A (zh) | 一种基于gpu的分布式大数据并行计算方法 | |
CN106354729A (zh) | 一种图数据处理方法、装置和系统 | |
CN108170535A (zh) | 一种基于MapReduce模型的提升表连接效率的方法 | |
CN109448788A (zh) | 基因组学及生物信息学的微生物组学在线分析平台架构 | |
CN113037800B (zh) | 作业调度方法以及作业调度装置 | |
CN109791492A (zh) | 流水线相关树查询优化器和调度器 | |
CN110413776A (zh) | 一种基于cpu-gpu协同并行的文本主题模型lda高性能计算方法 | |
CN105005503B (zh) | 基于元胞自动机的云计算负载均衡任务调度方法 | |
CN107506381A (zh) | 一种大数据分布式调度分析方法、系统装置及存储介质 | |
US20230176905A1 (en) | Automatic driving simulation task scheduling method and apparatus, device, and readable medium | |
CN104580518A (zh) | 一种用于存储系统的负载均衡控制方法 | |
CN107168795B (zh) | 基于cpu-gpu异构复合式并行计算框架的密码子偏差系数模型方法 |
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 |