CN114661757B - 一种基于异构计算机fpga的子图匹配方法和系统 - Google Patents
一种基于异构计算机fpga的子图匹配方法和系统 Download PDFInfo
- Publication number
- CN114661757B CN114661757B CN202011524616.0A CN202011524616A CN114661757B CN 114661757 B CN114661757 B CN 114661757B CN 202011524616 A CN202011524616 A CN 202011524616A CN 114661757 B CN114661757 B CN 114661757B
- Authority
- CN
- China
- Prior art keywords
- search space
- node
- graph
- fpga
- 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
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000004364 calculation method Methods 0.000 claims description 17
- 238000010276 construction Methods 0.000 claims description 10
- 230000001133 acceleration Effects 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 claims description 5
- 238000013138 pruning Methods 0.000 claims description 5
- 238000012216 screening Methods 0.000 claims description 2
- 238000012546 transfer Methods 0.000 claims description 2
- 238000012795 verification Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 6
- 238000000638 solvent extraction Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000003814 drug Substances 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000006916 protein interaction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/288—Entity relationship models
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于异构计算机FPGA的子图匹配方法,包括:在CPU端,根据查询图、数据图构建初始的辅助数据结构SS;在CPU端,判断SS是否满足预先设定的要求,如果不满足要求则进行划分;CPU端将划分后的SS数据结构经由PCIe总线从内存传送到FPGA的片外存储DRAM中;在FPGA端,将DRAM中的一个SS加载到BRAM中,进行子图匹配搜索;CPU结束对所有SS数据结构的划分后,使用最基本的子图匹配算法分担部分SS的搜索工作;FPGA结束对一个SS的搜索后,会发送终止信号到CPU端,CPU从FPGA经由PCIe总线获取结果,重复搜索步骤,直到所有SS都完成搜索,最后CPU对所有的搜索结果进行汇总。本发明还公开了一种运行上述方法的系统,包括CPU、FPGA、PCIe总线。
Description
技术领域
本发明属于数据挖掘的图处理技术领域,涉及一种基于异构图计算机FPGA的子图匹配方法和系统。
背景技术
图可以用来描绘事物之间的复杂关系,被广泛应用在生物学、化学、医学、社交网络等各个领域。随着领域发展与图的大量积累,人们在图的管理与分析上,尤其是子图匹配问题,进行了越来越多的研究。子图匹配有非常广泛的应用,例如生物学中蛋白质交互网络的分析与比较、化学中结构式的分析与比较、社交网络的分析等。子图匹配问题依赖于NP完全的子图同构问题,是计算密集型操作。
子图匹配问题,具体是指:给定一个查询图和数据图,在数据图中找出所有查询图的同构子图。查询图的同构子图具体是指:存在一个查询图的点集到同构子图的点集的单射,使得查询图中点的标签与同构子图对应点的标签相同,同时查询图中任意相邻的两点,在同构子图中的对应点也相邻。单机环境下的子图匹配算法的基本步骤为:(1)计算查询图中每个节点的候选节点;(2)计算查询图中节点的匹配顺序;(3)从匹配顺序的第一个节点开始,为查询节点匹配候选节点。若该候选节点合格,按照匹配顺序匹配下一个节点;若不合格,则重新匹配该节点。当某个查询节点的候选节点全部被匹配,则按照匹配顺序匹配上一个节点。
FPGA(现场可编程门阵列)作为新兴的计算型硬件,其独特的流水线设计,为单机环境下子图匹配算法的加速提供了更多的可能性。近年来,利用FPGA加速图的分析正引起越来越多学术界与工业界的关注。
现有关于子图匹配的工作无法直接迁移到新硬件FPGA上,来利用其流水线架构进行加速,主要原因有以下几点:首先现有的单机子图匹配算法,因为其基于深度优先遍历的线性设计,无法兼容FPGA的流水线架构;二来FPGA的内部存储(BRAM)空间大小有限,图数据往往因为数据量过大无法直接存储在BRAM中;三来现有的分布式环境下的子图匹配算法,会有大量的中间结果,对存储提出了很高的要求,FPGA的外部存储(DRAM)数据交换速率远小于BRAM,频繁的在BRAM和DRAM之间进行数据交换极大的影响了整体性能。
发明内容
为了解决现有技术存在的不足,本发明的目的是提供一种基于异构计算机FPGA的子图匹配方法。本发明充分利用了FPGA大规模并发、流水线加速的特性,创新性地结合了单机子图算法与分布式子图算法的部分特点,设计出了一种基于FPGA的子图匹配方法,具体步骤包括如下:
步骤(1),搜索空间SS构建:在CPU端,根据查询图、数据图构建初始的辅助数据结构SS,该SS能够作为子图匹配的完备搜索空间;对于任意正确的结果,都能根据该搜索空间SS数据结构计算得出。
其中,所述正确的结果是指存在从查询图到该结果的单射F,使得查询图中任意节点u的标签与结果中的节点F(u)的标签相同,且对于查询图中任意两个相邻节点u和u’,结果中对应的两个节点F(u)与F(u‘)也相邻。
步骤(2),搜索空间SS划分:在CPU端,判断搜索空间SS是否满足预先设定的要求。如果不满足要求,该搜索空间SS数据结构将被划分,直到划分后的搜索空间SS数据结构满足预先设定的要求。
步骤(3),搜索空间SS传输:CPU端将划分后的搜索空间SS数据结构经由PCIe总线从内存传送到FPGA的片外存储DRAM中。
步骤(4),搜索空间SS在FPGA上的加速计算:在FPGA端,将DRAM中的一个搜索空间SS加载到BRAM中,进行子图匹配搜索,搜索过程充分利用FPGA大规模并发、流水线的特性。
步骤(5),搜索空间SS在CPU上的计算:CPU结束对所有搜索空间SS数据结构的划分后,会使用最基本的子图匹配算法分担部分搜索空间SS的搜索工作,以达到充分利用硬件的目标。
步骤(6),结果汇总:FPGA结束对一个搜索空间SS的搜索后,会发送终止信号到CPU端,CPU从FPGA经由PCIe总线获取结果;FPGA端继续重复步骤(4),直到所有搜索空间SS都完成搜索;最后CPU对所有的搜索结果进行汇总。
本发明处理的图为简单无向图,图中边不包含属性与标签,点包含标签不包含属性;简单图是指两个节点之间不包含重复边、点没有指向自己的边的图。
本发明所述的步骤(1)搜索空间SS构建的具体步骤包括:
步骤(1.1),确定查询图的根节点,构建查询图的广度优先搜索树,并计算根节点的候选节点集合;在数据图中,所有与根节点标签相同、度数大于等于根节点的节点作为根节点的候选节点。
步骤(1.2),自顶向下构建广度优先搜索树上其他节点的候选节点集合。构建的基本规则是:某个查询节点的候选节点是数据图中与该查询节点父节点的任一候选节点相邻的节点。在构建的过程中,同时需要考虑度数、邻居节点度数、标签等条件来缩小候选节点集合。
步骤(1.3),自底向上筛选广度优先搜索树上节点的无效候选节点。目的是对搜索空间进行剪枝,剪枝的基本规则是:当某个查询节点的候选节点,与该查询节点的任意子节点的所有候选节点都不相邻时,该候选节点将被剪枝。剪枝的过程中需要考虑度数、标签、邻居节点度数、邻居节点标签等。
本发明所述的步骤(2)中对搜索空间SS预先设定的要求包括:(1)搜索空间SS中候选节点的总数量;(2)搜索空间SS中候选节点之间边的总数量;(3)候选节点的最大度数。其中要求(1)、(2)是基于BRAM的大小制定的;要求(3)是基于FPGA的数据获取端口的数量制定的。
本发明所述的步骤(4)具体步骤包括:
步骤(4.1)将搜索空间SS数据结构从DRAM读取到BRAM中。
步骤(4.2)基于根节点的每一个候选节点,构建第一批中间结果,存储在BRAM的缓存中。
步骤(4.3)每一轮,从BRAM中读取一定数量的中间结果进行扩展,扩展出来的新的中间结果,需要进行验证,验证通过的中间结果为有效中间结果,继续判断有效中间结果是否匹配完成:匹配完成的中间结果会存储到DRAM中;未匹配完成的中间结果会存储回BRAM的缓存中。重复步骤(4.3),直到缓存中没有中间结果。
本发明还提供了一种运行上述方法的系统,所述系统包括:CPU、FPGA、PCIe总线;
其中,所述CPU用于在图上构建辅助数据结构,辅助子图匹配计算;所述FPGA用于子图匹配计算的加速;所述PCIe总线用于辅助数据结构与正确的结果在CPU和FPGA之间的传输。
本发明的有益效果包括:本发明充分考虑到FPGA片上存储BRAM的空间较小、片外存储DRAM的数据交换速率较低的缺点,提出了一种新的SS数据结构,该数据结构作为一个完备的子图匹配搜索空间,能够被划分成更小的独立、完备的搜索空间,被完全存储在BRAM中。另一方面,为了减少中间结果在BRAM和DRAM之间进行频繁的数据交换,从而造成性能的下降,本发明设计了基于BRAM的中间结果缓存,缓存策略能够保证中间结果不会发生溢出,避免了中间结果在BRAM和DRAM之间换入换出的过程。相比现有的最高效的单机子图匹配算法:CFL-Match、DAF和CECI,本发明在性能上分别取得了最高191倍、462倍和150倍的提升,平均性能提升为210倍。同时,本发明是唯一一种在单机环境下,能够完成在DG60图上子图匹配任务的方法。
附图说明
图1为本发明的总体架构图。
图2为查询图(左)与数据图(右)示例图。
图3为查询图广度优先搜索树示意图(左)和搜索空间SS数据结构示例图(右)。
图4为图3搜索空间SS划分后的两个子搜索空间示例图。
图5为FPGA端子图加速模块图。
图6为图3搜索空间SS的工作量估计示例图。
图7为具体实施方案中使用到的查询图。
具体实施方式
结合以下具体实施例和附图,对本发明作进一步的详细说明。实施本发明的过程、条件、实验方法等,除以下专门提及的内容之外,均为本领域的普遍知识和公知常识,本发明没有特别限制内容。
本发明需要同时部署在CPU端和FPGA端,本发明在实际场景中的具体步骤如下:
(1)搜索空间构建:在CPU端,根据查询图、数据图构建初始的搜索空间SS数据结构(Search Space),SS能够作为子图匹配的完备搜索空间:对于任意正确的结果,都能根据SS计算得出,不需要再访问查询图或者数据图。其中,所述正确的结果是指存在从查询图到该结果的单射F,使得查询图中任意节点u的标签与结果中的节点F(u)的标签相同,且对于查询图中任意两个相邻节点u和u’,结果中对应的两个节点F(u)与F(u‘)也相邻。
(2)搜索空间划分:在CPU端,判断搜索空间SS是否满足预先设定的要求。如果不满足要求,搜索空间SS将被划分,直到划分后的搜索空间SS数据结构满足预先设定的要求。对SS的要求主要包括以下三项:(1)搜索空间SS中节点的总数量;(2)搜索空间SS中边的总数量;(3)搜索空间SS中节点的最大度数。
(3)搜索空间传输:CPU端将满足要求的搜索空间SS数据结构经由PCIe总线从内存传送到FPGA的片外存储DRAM中。
(4)子图匹配在FPGA上加速计算:在FPGA端,将DRAM中的一个搜索空间SS数据结构加载到BRAM中,进行子图匹配搜索,搜索过程充分利用FPGA大规模并发、流水线的特性。
(5)子图匹配在CPU上计算:CPU结束对搜索空间SS的划分后,会使用最基本的子图匹配算法分担部分搜索空间SS的搜索工作,以达到充分利用硬件资源的目标。
(6)结果统计:FPGA结束对一个搜索空间SS的搜索后,会发送终止信号到CPU端,CPU从FPGA经由PCIe总线获取结果。FPGA端继续重复步骤(4),直到DRAM中所有的搜索空间SS都完成搜索且CPU不再向FPGA传输新的搜索空间SS数据结构为止;最后CPU对所有结果进行汇总统计。
实施例
配合具体的实施例介绍本方法的详细步骤设计。
1.搜索空间构建。
首先介绍本发明中的重要数据结构搜索空间SS的具体组成。搜索空间SS是一个和查询图互为同构子图的图,它的每一个节点代表了查询图中对应节点的候选节点集合。本发明中提及的查询节点的候选节点,表示该节点有匹配该查询节点的可能性。搜索空间SS中不同点的候选节点之间的边关系与数据图保持一致。为了描述的清晰,本发明用C(u)表示查询节点u的候选节点集合,用表示某个查询节点u的候选节点v,与哪些u′的候选节点相邻。
附图2(左)为查询图示例,附图2(右)为数据图示例。附图3(左)为附图2所示查询图的广度优先搜索树,根据给定的查询图、数据图、广度优先搜索树,其对应的搜索空间SS数据结构如附图3(右)所示。其中查询节点u0的候选节点集合为{v0},查询节点u1的候选节点集合为{v2,v3}。
CPU端在加载数据图与查询图之后,因为数据图往往非常巨大,无法完整的加载到FPGA的BRAM中,为了减小搜索空间,本发明对图进行预处理,即搜索空间SS的构建工作。预处理主要通过考察查询图中每一个点的相关特征,来尽可能地缩小它的候选节点集合。相关特征主要考察以下内容:(1)节点度数:候选节点的度数需要大于等于查询节点的度数。(2)标签:候选节点的标签需要与查询节点的标签保持一致。(3)社区特征:候选节点的邻居节点的相关特征需要与查询节点的邻居节点的相关特征保持一致。
搜索空间的构建过程分成三个部分,(1)自上而下的构建原始搜索空间SS结构。(2)自下而上进行搜索空间SS结构的优化,去除候选节点集合中的无效节点。(3)在非树邻居的候选节点之间添加边的关系。本发明提及的非树边、非树邻居节点的具体含义是指:某一条边在查询图中存在,在查询图的广度优先搜索树中不存在,这条边被称为非树边,边涉及的两个节点互称为非树邻居节点。
算法1展示了构建搜索空间SS的详细过程。
算法1搜索空间构建算法
2.搜索空间SS划分
初始的搜索空间SS,可能因为节点数量、边数量过大而无法完全存储在BRAM中。为了充分使用FPGA上的BRAM存储,减少从FPGA片外存储DRAM上进行数据获取的次数,本发明对不满足预定要求的SS数据结构进行划分,以实现将划分后的SS完全存储在BRAM上。基于BRAM的大小,本发明对搜索空间SS下列属性设定了阈值:(1)搜索空间SS中节点的总数量;(2)搜索空间SS中边的总数量;(3)搜索空间SS中节点的最大度数。当搜索空间SS的上述任一属性超过既定阈值,该搜索空间SS数据结构会被划分。算法2展示了划分搜索空间SS的详细过程。
算法2搜索空间SS划分算法
给定附图4(左)初始搜索空间SS,假设划分因子k=2,划分后的子搜索空间如附图4(中)和附图4(右)所示。首先将初始搜索空间根节点u0候选节点集合{v1,v2}划分成2个部分{v1}和{v2}。构建以v1为根节点的搜索空间SS,对于u1,u2,u3,选取它们的候选节点中与v1存在路径的节点:{v3,v5},{v6,v8}和{v9,v10}。显然划分后的两个子搜索空间不存在重叠部分。
3.搜索空间传输
在CPU端,当某一搜索空间SS数据结构满足既定要求时,会被立刻经由PCIe总线传输到FPGA的DRAM中,CPU会立刻开始下一个SS的划分工作或子图匹配计算工作。
4.子图匹配在FPGA上加速计算
附图5展示了本发明的关键部分,FPGA对子图匹配的加速计算。该部分包含三个子模块:扩展子模块、验证子模块和同步子模块。每个模块如附图5所示,内部实现最大流水线化,模块与模块之间的完全并行执行。算法3展示了子图匹配在FPGA上加速计算的基本过程,其中扩展子模块、验证子模块和同步子模块的详细流程分别在算法4、5、6中进行介绍。算法的基本思路为:每一轮迭代,从缓存中读取一定数量的中间结果进行扩展(为一个新的查询节点匹配结果),扩展出来的新的中间结果需要进行验证,验证通过的中间结果会重新插入到中间结果缓存中或经过判断为完整匹配作为正确结果之一进行报告。当中间结果缓存不为空时,该过程循环持续执行。
算法3子图匹配在FPGA上加速计算
4.1扩展子模块
每一轮迭代,扩展子模块从缓存中读取若干中间结果进行扩展,并保证这一轮迭代新产生的中间结果数量不超过预先设定的某一阈值N0。扩展子模块除了生成新的中间结果外,为每一个中间结果生成对应的两项验证任务:是否已访问验证、非树边验证。其中是否已访问验证任务验证该中间结果新匹配的节点是否已被匹配。非树边验证任务验证中间结果新匹配的节点与其非树邻居是否相邻。本发明用Mp(u)表示在中间结果p中,查询节点u的匹配。算法4展示了扩展子模块的基本过程:
算法4扩展子模块
4.2验证子模块
验证子模块用来判断新扩展出的中间结果是否有效,主要验证一下两项内容:(1)已访问验证:新匹配的节点是否已经被访问过。(2)非树边验证:新匹配的节点与非树邻居之间的边是否存在。两项验证的结果对应两个比特位。如果验证通过,比特位置为1;如果验证不通过,比特位置为0。只有当一个中间结果对应的两个比特位都为1时,该中间结果才为有效结果。算法5展示了验证子模块的基本流程:
算法5验证子模块
4.3同步子模块
同步子模块会根据每一个新生成的中间结果来判断该中间结果是否有效,对于有效的中间结果会判断该中间结果是否已经匹配完整:如果匹配完整,该有效中间结果将作为正确结果被报告;如果未匹配完整,该有效中间结果将被添加到缓存中,等待后续扩展。算法6展示了同步子模块的基本流程:
算法6同步子模块
给定附图4(左)中搜索空间SS,假设匹配顺序o=(u0,u1,u2,u3),中间结果缓存P={{v1,v3},{v1,v5}},首先扩展子模块生成新的中间结果{{v1,v3,v6},{v1,v3,v8},{v1,v5,v6},{v1,v5,v8}},对应的已访问验证任务Tv={(v6,0),(v8,0),(v6,1),(v8,1)}以及对应的非树边验证任务Tn={(v3,v6,0),(v3,v8,1),(v5,v6,2),(v5,v8,3)}。验证子模块验证后得到已访问验证结果Bv={1,1,1,1},非树边验证结果Bv={1,0,0,1}。同步子模块判断有效中间结果为{v1,v3,v6}和{v1,v5,v8},将它们重新添加到缓存P中。
4.4中间结果缓存设计
FPGA的BRAM大小有限,因此一个完全存储在BRAM上的中间结果缓存需要进行精细设计,防止在计算过程中,发生缓存溢出的情况,导致中间结果不得不存储到相对来说数据传输速率较低的DRAM中,造成整体性能的下降。中间结果缓存P是一个中间结果集合,存储的是在计算过程中扩展成功且有效的中间结果。为了使P中中间结果的数量不溢出,本发明采取了以下措施:(1)每一轮计算,从P中获取中间结果进行扩展时,本发明优先获取匹配最完整的中间结果,即扩展轮数最多的中间结果。(2)每一轮计算,控制能够成功扩展的中间结果的最大数量,即在算法4中设定阈值No。(3)将缓存大小设定为(|V(q)|-1)×No,其中V(q)表示查询图中的节点数量。经过以上三条措施,P在计算时不会发生溢出。
证明:每一轮计算,会有效获取匹配最完整的中间结果进行扩展,假设这些中间结果匹配了n个节点,其他中间结果匹配的节点数均小于等于n。n存在两种情况:(1)n<|V(q)|-1,经过这一轮计算后,会产生至多No个中间结果被存储回P中,这些中间结果匹配了(n+1)个节点。(2)n=|V(q)|-1,经过一轮计算后,新扩展出的中间结果是完整结果,如果有效会被存储到正确结果集合M中;如果无效会被舍弃,均不会存储回缓存P中。因此在P中,对于任意n<|V(q)|,匹配了n个节点的中间结果数量都不会超过No。所以总的中间结果数量不会超过(|V(q)|-1)×No,缓存P不会溢出。
4.5 No的选择
缓存的大小依赖于每一轮产生的最大中间结果数No,同时No也是验证子模块、同步子模块中循环的最大执行次数。因此No的选择非常重要。
分析循环次数对于流水线加速的影响。假设存在某个循环,单个循环体需要执行l个时钟周期,共需要执行k次。在非流水线非并行环境下,该循环全部执行完成需要l×k个时钟周期。在完全流水线环境下,该循环全部执行完成需要l+k-1个时钟周期。当循环次数No过小时,流水线下的循环执行时钟周期受到循环体本身的影响较大,因此需要保证No>>l。同时,因为BRAM空间大小有限,No过大时,会占用更多的存储空间。因此No的选择需要权衡考虑性能与空间占用的影响。
5.子图匹配在CPU上的计算
当CPU完成步骤3,对搜索空间SS的划分后,CPU会处于空闲状态。本发明为了充分使用硬件资源,因此会将一小部分搜索空间SS交由CPU进行计算。为了保证负载均衡,本发明需要对每一个搜索空间SS进行任务量估计。交由CPU端的搜索空间采用基础的子图匹配算法进行计算。
首先引入概念cu(v),表示在搜索空间SS中以查询节点u的候选节点v为根节点的子搜索空间中,匹配结果的估计数量。为了性能考虑,估计匹配结果的数量时,本发明不考虑已访问验证、非树边验证等。对于广度优先搜索树tq中的叶子节点u,其任意候选节点v,设定其cu(v)=1。
本发明采用动态规划算法,自底向上计算搜索空间SS的估计任务量。对于任意一个非叶子节点u,其任意候选节点v,设定其搜索空间SS的总工作量/>
给定附图4(左)中的搜索空间SS,任务量估算结果如附图6所示。对于叶子节点u2和u3,自下而上计算其他cu(v),总工作量估计/>
本发明保证CPU端分到的所有搜索空间SS的工作量之和不超过总工作量之和的一定比例,该比例通过实验针对不同FPGA、CPU实例具体确定。以此来保证FPGA与CPU结束所有计算的时间尽可能相近。
6.结果汇总
当CPU端和FPGA端结束所有搜索空间SS的计算工作,会在CPU端进行结果的汇总、统计工作。
在一个具体的实施方案中,本发明在工业界普遍认可的LDBC基准上进行实验,构建了如下四个大小有差异的数据图:
图名称 | 节点数量 | 边数量 | 平均度数 | 标签数量 |
DG01 | 3.18M | 17.24M | 10.84 | 11 |
DG03 | 9.28M | 52.65M | 11.34 | 11 |
DG10 | 29.99M | 176.68M | 11.77 | 11 |
DG60 | 187.11M | 1.25B | 13.33 | 11 |
注:表中M、B分别表示×106、×109。
在以上四种图上,对附图7中的所有查询图执行子图匹配搜索。采用FPGA加速卡的型号为Alveo U200,采用CPU型号为八核英特尔Xeon E5-2620。本发明相比当前世界前沿的几种子图匹配算法CFL-Match、DAF和CECI在匹配速度上平均提升了210倍。在具体的实施方案中,本发明也是唯一一种能够在超大图DG60上获取所有正确结果的方法。
本发明的保护内容不局限于以上实施例。在不背离本发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护范围。
Claims (5)
1.一种基于异构计算机FPGA的子图匹配方法,其特征在于,包括如下步骤:
步骤(1),搜索空间SS构建:在CPU端,根据查询图、数据图构建初始的辅助数据结构SS,该搜索空间SS能够作为子图匹配的完备搜索空间;对于任意正确的结果,都能根据该搜索空间SS数据结构计算得出;所述步骤(1)包括以下子步骤:
步骤(1.1),确定查询图的根节点,构建查询图的广度优先搜索树,并计算根节点的候选节点集合;所述候选节点是指数据图中所有与根节点标签相同、度数大于等于根节点的节点;
步骤(1.2),自顶向下构建广度优先搜索树上其他节点的候选节点集合;所述构建的基本规则是:某个查询节点的候选节点是数据图中与该查询节点父节点的任一候选节点相邻的节点;所述构建过程中需要考虑度数、邻居节点度数、标签来缩小候选节点集合;
步骤(1.3),自底向上筛选广度优先搜索树上节点的无效候选节点,对搜索空间进行剪枝;所述剪枝的基本规则是:当某个查询节点的候选节点,与该查询节点的任意子节点的所有候选节点都不相邻时,该候选节点将被剪枝;所述剪枝的过程中需要考虑度数、标签、邻居节点度数、邻居节点标签;
步骤(2),搜索空间SS划分:在CPU端,判断搜索空间SS是否满足预先设定的要求;如果不满足要求,该搜索空间SS数据结构将被划分,直到划分后的搜索空间SS数据结构满足预先设定的要求;
步骤(3),搜索空间SS传输:CPU端将划分后的搜索空间SS数据结构经由PCIe总线从内存传送到FPGA的片外存储DRAM中;
步骤(4),搜索空间SS在FPGA上的加速计算:在FPGA端,将DRAM中的一个搜索空间SS加载到BRAM中,进行子图匹配搜索,搜索过程充分利用FPGA大规模并发、流水线的特性;
步骤(5),搜索空间SS在CPU上的计算:CPU结束对所有搜索空间SS数据结构的划分后,会使用最基本的子图匹配算法分担部分搜索空间SS的搜索工作,以达到充分利用硬件的目标;
步骤(6),结果汇总:FPGA结束对一个搜索空间SS的搜索后,会发送终止信号到CPU端,CPU从FPGA经由PCIe总线获取结果;FPGA端继续重复步骤(4),直到所有搜索空间SS都完成搜索;最后CPU对所有的搜索结果进行汇总。
2.如权利要求1所述的方法,其特征在于,步骤(1)中,所述正确的结果是指存在从查询图到该结果的单射F,使得查询图中任意节点u的标签与结果中的节点F(u)的标签相同,且对于查询图中任意两个相邻节点u和u’,结果中对应的两个节点F(u)与F(u‘)也相邻。
3.如权利要求1所述的方法,其特征在于,步骤(2)中,所述要求包括:
要求(1)搜索空间SS中候选节点的总数量;
要求(2)搜索空间SS中候选节点之间边的总数量;
要求(3)候选节点的最大度数;
其中,要求(1)、要求(2)是基于BRAM的大小制定的;要求(3)是基于FPGA的数据获取端口的数量制定的。
4.如权利要求1所述的方法,其特征在于,所述步骤(4)的具体包括以下子步骤:
步骤(4.1),将搜索空间SS数据结构从DRAM读取到BRAM中;
步骤(4.2),基于根节点的每一个候选节点,构建第一批中间结果,存储在BRAM的缓存中;
步骤(4.3),每一轮,从BRAM中读取一定数量的中间结果进行扩展,扩展出来的新的中间结果,需要进行验证,验证通过的中间结果为有效中间结果,继续判断有效中间结果是否匹配完成:匹配完成的中间结果会存储到DRAM中;未匹配完成的中间结果会存储回BRAM的缓存中;重复步骤(4.3),直到缓存中没有中间结果。
5.一种运行权利要求1-4所述方法的系统,其特征在于,所述系统包括CPU、FPGA、PCIe总线;
其中,所述CPU用于在图上构建辅助数据结构,辅助子图匹配计算;所述FPGA用于子图匹配计算的加速;所述PCIe总线用于辅助数据结构与正确的结果在CPU和FPGA之间的传输。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011524616.0A CN114661757B (zh) | 2020-12-22 | 2020-12-22 | 一种基于异构计算机fpga的子图匹配方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011524616.0A CN114661757B (zh) | 2020-12-22 | 2020-12-22 | 一种基于异构计算机fpga的子图匹配方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114661757A CN114661757A (zh) | 2022-06-24 |
CN114661757B true CN114661757B (zh) | 2024-04-19 |
Family
ID=82025496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011524616.0A Active CN114661757B (zh) | 2020-12-22 | 2020-12-22 | 一种基于异构计算机fpga的子图匹配方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114661757B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110321999A (zh) * | 2018-03-30 | 2019-10-11 | 北京深鉴智能科技有限公司 | 神经网络计算图优化方法 |
CN110990426A (zh) * | 2019-12-05 | 2020-04-10 | 桂林电子科技大学 | 一种基于树搜索的rdf查询方法 |
CN111625691A (zh) * | 2020-05-18 | 2020-09-04 | 中科院计算所西部高等技术研究院 | 基于gpu的高性能图挖掘方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2729883B1 (en) * | 2011-07-08 | 2021-12-29 | Yale University | Query execution systems and methods |
-
2020
- 2020-12-22 CN CN202011524616.0A patent/CN114661757B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110321999A (zh) * | 2018-03-30 | 2019-10-11 | 北京深鉴智能科技有限公司 | 神经网络计算图优化方法 |
CN110990426A (zh) * | 2019-12-05 | 2020-04-10 | 桂林电子科技大学 | 一种基于树搜索的rdf查询方法 |
CN111625691A (zh) * | 2020-05-18 | 2020-09-04 | 中科院计算所西部高等技术研究院 | 基于gpu的高性能图挖掘方法及系统 |
Non-Patent Citations (3)
Title |
---|
Substream-Centric Maximum Matchings on FPGA;M Besta等;《ACM Transactions on Reconfigurable Technology and Systems》;20200424;第13卷(第2期);1-33 * |
基于FPGA的多核并发子图匹配算法研究与实现;金鑫;《中国优秀硕士学位论文全文数据库基础科学辑》;20220415(第04期);A002-139 * |
基于GPU异构体系结构的大规模图数据挖掘关键技术研究;杨博;《中国博士学位论文全文数据库信息科技辑》;20170215(第02期);I138-62 * |
Also Published As
Publication number | Publication date |
---|---|
CN114661757A (zh) | 2022-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Cheng et al. | Efficient core decomposition in massive networks | |
Shiokawa et al. | Scan++ efficient algorithm for finding clusters, hubs and outliers on large-scale graphs | |
Bader et al. | Snap, small-world network analysis and partitioning: An open-source parallel graph framework for the exploration of large-scale networks | |
Tomita et al. | A simple and faster branch-and-bound algorithm for finding a maximum clique | |
TWI730043B (zh) | 關聯分析方法和裝置 | |
Hao et al. | Distributed hop-constrained st simple path enumeration at billion scale | |
He et al. | Efficient parallel A* search on multi-GPU system | |
Singh et al. | High average-utility itemsets mining: a survey | |
CN106599122B (zh) | 一种基于垂直分解的并行频繁闭序列挖掘方法 | |
CN114661757B (zh) | 一种基于异构计算机fpga的子图匹配方法和系统 | |
CN103136334A (zh) | 基于图的遍历的同步数据流系统节点参数快速处理方法 | |
Demetrescu et al. | Adapting parallel algorithms to the W-Stream model, with applications to graph problems | |
CN109684185A (zh) | 基于启发式遍历的超级计算机大数据处理能力测试方法 | |
Werner et al. | Automated composition and execution of hardware-accelerated operator graphs | |
Awekar et al. | Parallel all pairs similarity search | |
CN111680196A (zh) | 一种基于二分图蝴蝶结构的关键节点搜索方法 | |
Nadimi et al. | A fast algorithm for the partial digest problem | |
CN113012760A (zh) | 基于fpga的基因序列组装算法计算加速方法 | |
Pang et al. | A Similarity-based Approach for Efficient Large Quasi-clique Detection | |
Hasan et al. | Distributed diversification of large datasets | |
Wang et al. | An efficient graph isomorphism algorithm based on canonical labeling and its parallel implementation on GPU | |
Martins et al. | Deterministic parallel MaxSAT solving | |
CN110059378A (zh) | 一种基于GPU并行计算的自动制造系统Petri网状态生成方法 | |
Faysal et al. | Fast Community Detection in Graphs with Infomap Method using Accelerated Sparse Accumulation | |
Gaioso et al. | Parallel strategies for the execution of top-k queries with MaxScore on GPUs |
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 |