CN116991910A - 数据处理装置的控制方法与装置 - Google Patents

数据处理装置的控制方法与装置 Download PDF

Info

Publication number
CN116991910A
CN116991910A CN202210447052.8A CN202210447052A CN116991910A CN 116991910 A CN116991910 A CN 116991910A CN 202210447052 A CN202210447052 A CN 202210447052A CN 116991910 A CN116991910 A CN 116991910A
Authority
CN
China
Prior art keywords
data
key value
processing
data set
target
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.)
Pending
Application number
CN202210447052.8A
Other languages
English (en)
Inventor
戴国浩
朱振华
汪玉
肖世海
傅天予
张学仓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Huawei Technologies Co Ltd
Original Assignee
Tsinghua University
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tsinghua University, Huawei Technologies Co Ltd filed Critical Tsinghua University
Priority to CN202210447052.8A priority Critical patent/CN116991910A/zh
Priority to PCT/CN2023/090020 priority patent/WO2023207832A1/zh
Publication of CN116991910A publication Critical patent/CN116991910A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2465Query processing support for facilitating data mining operations in structured databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2474Sequence data queries, e.g. querying versioned data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Complex Calculations (AREA)

Abstract

本申请公开了一种数据处理装置的控制方法和装置,能够降低处理时间。该方法包括:获取两个目标数据组,该两个目标数据组分别为两个数据集合中第一个数据组,其中第一数据集合中第一数据组为多个,数据集合中任一个数据组的关键值均小于位于该任一个数据组之后的数据组中各个所述关键值,在第一目标数据组最大关键值小于或等于第二目标数据组最大关键值的情况下,将位于第一目标数据组的下一个第一数据组作为第一目标数据组。从而,能够降低运算量,提高运算效率。

Description

数据处理装置的控制方法与装置
技术领域
本申请涉及数据处理领域,并且更具体地,涉及一种数据处理装置的控制方法与装置。
背景技术
图挖掘算法是一种代表性的图处理算法与数据挖掘算法,用于在完整的图数据结构中查找特定子图模式并统计该子图模式的出现频次。图挖掘算法应用广泛,常见的应用案例包括社交媒体中社区网络分析、生物信息学中蛋白质分析、计算化学领域中的药物发现等。
可以利用一个点的邻居集合表示关系图中该点与其他点之间是否存在关系。该点的邻居集合包括多个数,每个数的值为与该点具有关系的点的序号。在进行图挖掘的过程中,可以利用数据处理装置对关系图中两个点的邻居集合进行比较,确定其中相等的序号。该相等的序号即为关系图中与两个点都具有关系的点的序号。
数据处理装置的处理能力有限。一般情况下,数据处理装置可以对包括数的数量均不超过预设值的两个列索引进行比较。在两个列索引中的某个列索引中数的数量超过预设值的情况下,需要对该某个列索引中的数进行分组以得到多个数组。之后,可以利用数据处理装置对该多个数组分别与该两个列索引中的另一个列索引进行比较。
对该多个数组分别与该两个列索引中的另一个列索引进行比较,运算量较大,所需的处理时间较长。
发明内容
本申请提供一种数据处理装置的控制方法和装置,能够降低运算量,缩短数据处理时间。
第一方面,提供一种数据处理装置的控制方法,其特征在于,所述方法包括:获取第一目标数据组和第二目标数据组,所述第一目标数据组为第一数据集合的多个第一数据组中的第一个数据组,所述第二目标数据组为第二数据集合的至少一个第二数据组中的第一个数据组,所述第一数据集合和所述第二数据集合的每个数据集合中的每个数据组包括至少一个数据,每个数据包括关键值,每个数据集合中的所述数据组是按照第一顺序或第二顺序排列的,在按照所述第一顺序排列的情况下每个数据集合中任一个所述数据组中的每个关键值均小于位于所述任一个数据组之后的数据组中每个关键值,在按照所述第二顺序排列的情况下每个数据集合中任一个所述数据组中的每个关键值均大于位于所述任一个数据组之后的数据组中每个关键值;进行多次迭代,每次迭代包括:将所述第一目标数据组和所述第二目标数据组输入所述数据处理装置,所述数据处理装置用于确定所述第一目标数据组和所述第二目标数据中相等的所述关键值;在每个数据集合中的所述数据组按照所述第一顺序排列,且第一关键值小于或等于第二关键值的情况下,获取所述第一数据集合中位于所述第一目标数据组之后的第一数据组作为所述第一目标数据组,所述第一关键值为所述第一目标数据组中最大的关键值,所述第二关键值为所述第二目标数据组中最大的关键值;在每个数据集合中的所述数据组按照所述第二顺序排列,且第三关键值大于或等于第四关键值的情况下,获取所述第一数据集合中位于所述第一目标数据组之后的第一数据组作为所述第一目标数据组,所述第三关键值为所述第一目标数据组中最小的关键值,所述第四关键值为所述第二目标数据组中最小的关键值。
对于两个数据集合,每个数据集合中各个数据组是按照关键值的大小顺序排列的,在利用数据处理装置进行数据处理时,在其中第一数据集合中第一数据组的数量为多个的情况下,通过迭代,对于各个关键值均超过第二目标数据组中关键值范围的第一数据组,可以不再输入数据处理装置,即不再与第二目标数据组进行比较,降低与第二目标数据组进行比较的第一数据组的数量,从而降低运算量。
在多个第一数据组中关键值从小到大排列的情况下,第二目标数据组中关键值范围可以属于小于或等于第二目标数据组中最大的关键值。也就是说,在第一目标数据组中关键值的最大值大于或等于第二目标数据组中关键值的最大的情况下,可以不再将后续的第一数据组作为第一目标数据组与该第二目标数据组进行比较。
在多个第一数据组中关键值从大到小排列的情况下,第二目标数据组中关键值范围可以属于大于或等于第二目标数据组中最小的关键值。也就是说,在第一目标数据组中关键值的最小值小于或等于第二目标数据组中关键值的最大的情况下,可以不再将后续的第一数据组作为第一目标数据组与该第二目标数据组进行比较。
结合第一方面,在一些可能的实现方式中,至少一个第二数据组的数量为多个,在每个数据集合中的所述数据组按照所述第一顺序排列,且所述第一关键值大于或等于所述第二关键值的情况下,获取所述第二数据集合中位于所述第二目标数据组之后的第二数据组作为第二目标数据组;在每个数据集合中的所述数据组按照所述第二顺序排列,且所述第三关键值小于或等于所述第四关键值的情况下,获取所述第二数据集合中位于所述第二目标数据组之后的第二数据组作为第二目标数据组。
使得与某一个数据集合中某个数据组进行比较的另一个数据集合中的数据组包括大小在大于或等于该某个数组组中关键值最小值且小于或等于于该某个数据组中关键值最大值的范围内的关键值,并且使得该某个数组组与该另一个数据集合中仅包括该范围之外的关键值的数据组进行比较的可能性降低,提高运算效率,降低运算量。
结合第一方面,在一些可能的实现方式中,所述数据处理装置包括处理矩阵,所述处理矩阵包括v×v个处理单元,v为正整数,第一目标数据组和第二目标数据组中每个目标数据组中至少一个数据的数量小于或等于v。所述第一目标数据组中的第i个第一数据是在所述迭代的第j个输入周期输入位于第一边缘的v个所述处理单元中沿第二方向的第j个所述处理单元的,所述第二目标数据中的第p个第二数据是在所述迭代的第q个输入周期输入位于第二边缘的v个所述处理单元中沿第一方向的第q个所述处理单元的,所述第一边缘与所述第二边缘相邻,每个目标数据组中不同的所述数据输入的所述处理单元不同,所述第一方向为从所述第二边缘指向所述处理矩阵内部且垂直所述第二边缘的方向,所述第二方向为从所述第一边缘指向所述处理矩阵内部且垂直所述第一边缘的方向;所述处理矩阵中的每个处理单元用于,确定在同一个所述输入周期输入所述处理单元的第一数据中的所述关键值与第二数据中的所述关键值是否相等;在v大于1的情况下,所述处理矩阵中的每个处理单元还用于,在接收所述第一数据和所述第二数据的下一个输入周期,将所述第一数据传输至沿所述第一方向的下一个所述处理单元,将所述第二数据传输至沿所述第二方向的下一个所述处理单元。
利用处理矩阵对第一目标数据组和第二目标数据组进行处理,可以提高处理效率。
结合第一方面,在一些可能的实现方式中,每个数据集合中不同的数据中的所述关键值不同,所述处理矩阵中的每个处理单元用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值不相等的情况下,将所述第一数据传输至沿所述第一方向的下一个所述处理单元,并将所述第二数据传输至沿所述第二方向的下一个所述处理单元。
在各个数据集合中不同的数据中的所述关键值不同的情况下,在第一数据中的关键值与第二数据中的关键值相等的情况下,该相等的关键值不会再与其他数据中的关键值相等。因此,处理单元可以仅在第一数据中的关键值与第二数据中的关键值不相等的情况下,将第一数据传输至沿第一方向的下一个所述处理单元,并将第二数据传输至沿第二方向的下一个所述处理单元。从而,可以减少数据的传输,并且可以降低运算量。
结合第一方面,在一些可能的实现方式中,所述数据处理装置还包括过滤矩阵,所述过滤矩阵包括v个过滤单元,所述v个过滤单元分别位于所述处理矩阵沿所述第一方向的v行中每一行沿所述第二方向的最后一个处理单元之后,所述处理矩阵中的每个处理单元还用于:在所述第一数据中的所述关键值与所述第二数据中的所述关键值相等的情况下,在接收所述第一数据和所述第二数据的下一个所述输入周期,将所述处理单元的处理结果沿所述第二方向传输至下一个单元,所述单元为所述处理单元或所述过滤单元,所述处理结果包括相等的所述关键值;或者,在接收所述处理结果的下一个所述输入周期,将所述处理结果沿所述第二方向传输至下一个单元;所述方法还包括:在所述第一关键值大于或等于所述第二关键值的情况下,控制沿所述第一方向的所述v个过滤单元按照所述输入周期依次输出所述第二目标数据组对应的所述处理结果。
可以将对应于某个第二数据组中各个关键值的处理结果在该第二数据组最后一次输入数据处理装置后统一输出,提高处理结果输出的灵活度。
结合第一方面,在一些可能的实现方式中,所述数据处理装置还包括压缩三角矩阵,所述压缩三角矩阵包括沿所述第一方向的v行压缩单元,沿所述第一方向所述压缩单元的数量逐行增加,所述多个压缩单元中的每个压缩单元用于:接收沿所述第二方向所述压缩单元之前的所述过滤单元输出的所述处理结果,或者,接收沿所述第一方向上一行的所述压缩单元输出的所述处理结果;在接收所述处理结果的下一个所述输入周期,向沿所述第一方向下一行的所述压缩单元传输所述处理结果。
通过在数据处理装置中设置压缩三角矩阵,可以使得某个第二数据组对应的处理结果在同一个输入周期内输出,提高处理结果输出的灵活度。
结合第一方面,在一些可能的实现方式中,不同的所述关键值对应于关系图中不同的点集,所述第一数据用于表示关系图中第一目标点与所述第一数据中的所述关键值对应的所述点集中的至少一个点之间是否具有关系,所述第二数据用于表示关系图中第二目标点与所述第二数据中的所述关键值对应的所述点集中的至少一个点之间是否具有关系,每个处理矩阵还用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值相等的情况下,输出处理结果,所述处理结果用于指示所述关系图中的查询点,所述查询点与所述两个目标点的之间的关系情况符合预设情况。
可以确定关系图中与两个目标点之间的连接情况预设情况的查询点,从而可以识别关系图中具有某种特定子图模型结构的子图,实现图挖掘。
结合第一方面,在一些可能的实现方式中,所述第一数据还包括所述关键值对应的所述第一目标点的第一关系值组,所述第二数据还包括所述关键值对应的所述第二目标点的第二关系值组,所述处理矩阵中的每个处理单元还用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值相等的情况下,对所述第一关系值组和所述第二关系值组的各个位分别进行预设运算,相等的所述关键值对应的所述第一关系值组和第二关系值组中相同的位对应于所述相等的关键值对应的所述点集中相同的所述点,每个位的所述预设运算的结果用于指示所述位对应的所述点与所述两个目标点之间的关系情况是否符合所述预设情况。
第一数据中的关键值与第二数据中的关键值相等,即第一数据中的关键值与第二数据中关键值指示相同的点集,从而,根据对第一关系值组与第二关系值组的按位预设运算的结果,可以确定查询点。
利用关系图中各个点的键值对,通过确定关系图中两个目标点的键值对中相等的关键值,并根据相等的关键值对应的该两个点的关系值组确定与该两个目标点之间的关系情况符合预设情况的查询点。可以在降低用于表示关系图的数据的数据量的同时,可以降低确定查询点所需的处理时间。
结合第一方面,在一些可能的实现方式中,在每个数据集合中的所述数据组按照所述第一顺序排列的情况下,每个第一数据组中的所述关键值从小到大排列;在每个数据集合中的所述数据组按照所述第二顺序排列的情况下,每个第一数据组中的所述关键值从大到小排列。
第一数据集合中的各个关键值从小到大排列或从大到小排列,从而,可以从第一数据集合获取至少一个数据作为第一目标数据组,多次获得的第一目标数据组均为第一数据组。从而使得第一数据组的划分更加灵活。
第二方面,提供一种数据处理装置的控制装置,包括获取模块和处理模块。获取模块用于,获取第一目标数据组和第二目标数据组,所述第一目标数据组为第一数据集合的多个第一数据组中的第一个数据组,所述第二目标数据组为第二数据集合的至少一个第二数据组中的第一个数据组,所述第一数据集合和所述第二数据集合的每个数据集合中的每个数据组包括至少一个数据,每个数据集合中的所述数据组是按照第一顺序或第二顺序排列的,在按照所述第一顺序排列的情况下每个数据集合中任一个所述数据组中的每个关键值均小于位于所述任一个数据组之后的数据组中每个关键值,在按照所述第二顺序排列的情况下每个数据集合中任一个所述数据组中的每个关键值均大于位于所述任一个数据组之后的数据组中每个关键值。处理模块用于,进行多次迭代。每次迭代包括,将所述第一目标数据组和所述第二目标数据组输入所述数据处理装置,所述数据处理装置用于确定所述第一目标数据组和所述第二目标数据中相等的所述关键值。每次迭代还包括,在每个数据集合中的所述数据组按照所述第一顺序排列,且第一关键值小于或等于第二关键值的情况下,获取所述第一数据集合中位于所述第一目标数据组之后的第一数据组作为所述第一目标数据组,所述第一关键值为所述第一目标数据组中最大的关键值,所述第二关键值为所述第二目标数据组中最大的关键值。每次迭代还包括,在每个数据集合中的所述数据组按照所述第二顺序排列,且第三关键值大于或等于第四关键值的情况下,获取所述第一数据集合中位于所述第一目标数据组之后的第一数据组作为所述第一目标数据组,所述第三关键值为所述第一目标数据组中最小的关键值,所述第四关键值为所述第二目标数据组中最小的关键值。
结合第二方面,在一些可能的实现方式中,至少一个第二数据组的数量为多个。在每个数据集合中的所述数据组按照所述第一顺序排列,且所述第一关键值大于或等于所述第二关键值的情况下,获取所述第二数据集合中位于所述第二目标数据组之后的第二数据组作为第二目标数据组。在每个数据集合中的所述数据组按照所述第二顺序排列,且所述第三关键值小于或等于所述第四关键值的情况下,获取所述第二数据集合中位于所述第二目标数据组之后的第二数据组作为第二目标数据组。
结合第二方面,在一些可能的实现方式中,所述数据处理装置包括处理矩阵,所述处理矩阵包括v×v个处理单元,v为正整数,第一目标数据组和第二目标数据组中每个目标数据组中至少一个数据的数量小于或等于v。所述第一目标数据组中的第i个第一数据是在所述迭代的第j个输入周期输入位于第一边缘的v个所述处理单元中沿第二方向的第j个所述处理单元的,所述第二目标数据中的第p个第二数据是在所述迭代的第q个输入周期输入位于第二边缘的v个所述处理单元中沿第一方向的第q个所述处理单元的,所述第一边缘与所述第二边缘相邻,每个目标数据组中不同的所述数据输入的所述处理单元不同,所述第一方向为从所述第二边缘指向所述处理矩阵内部且垂直所述第二边缘的方向,所述第二方向为从所述第一边缘指向所述处理矩阵内部且垂直所述第一边缘的方向。所述处理矩阵中的每个处理单元用于,确定在同一个所述输入周期输入所述处理单元的第一数据中的所述关键值与第二数据中的所述关键值是否相等。在v大于1的情况下,所述处理矩阵中的每个处理单元还用于,在接收所述第一数据和所述第二数据的下一个输入周期,将所述第一数据传输至沿所述第一方向的下一个所述处理单元,将所述第二数据传输至沿所述第二方向的下一个所述处理单元。
结合第二方面,在一些可能的实现方式中,每个数据集合中不同的数据中的所述关键值不同,所述处理矩阵中的每个处理单元用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值不相等的情况下,将所述第一数据传输至沿所述第一方向的下一个所述处理单元,并将所述第二数据传输至沿所述第二方向的下一个所述处理单元。
结合第二方面,在一些可能的实现方式中,所述数据处理装置还包括过滤矩阵,所述过滤矩阵包括v个过滤单元,所述v个过滤单元分别位于所述处理矩阵沿所述第一方向的v行中每一行沿所述第二方向的最后一个处理单元之后。所述处理矩阵中的每个处理单元还用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值相等的情况下,在接收所述第一数据和所述第二数据的下一个所述输入周期,将所述处理单元的处理结果沿所述第二方向传输至下一个单元,所述单元为所述处理单元或所述过滤单元,所述处理结果包括相等的所述关键值;或者,在接收所述处理结果的下一个所述输入周期,将所述处理结果沿所述第二方向传输至下一个单元。处理模块还用于,在所述第一关键值大于或等于所述第二关键值的情况下,控制沿所述第一方向的所述v个过滤单元按照所述输入周期依次输出所述第二目标数据组对应的所述处理结果。
结合第二方面,在一些可能的实现方式中,所述数据处理装置还包括压缩三角矩阵,所述压缩三角矩阵包括沿所述第一方向的v行压缩单元,沿所述第一方向所述压缩单元的数量逐行增加。所述多个压缩单元中的每个压缩单元用于,接收沿所述第二方向所述压缩单元之前的所述过滤单元输出的所述处理结果,或者,接收沿所述第一方向上一行的所述压缩单元输出的所述处理结果。所述多个压缩单元中的每个压缩单元还用于,在接收所述处理结果的下一个所述输入周期,向沿所述第一方向下一行的所述压缩单元传输所述处理结果。
结合第二方面,在一些可能的实现方式中,不同的所述关键值对应于关系图中不同的点集,所述第一数据用于表示关系图中第一目标点与所述第一数据中的所述关键值对应的所述点集中的至少一个点之间是否具有关系,所述第二数据用于表示关系图中第二目标点与所述第二数据中的所述关键值对应的所述点集中的至少一个点之间是否具有关系。每个处理矩阵还用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值相等的情况下,输出处理结果,所述处理结果用于指示所述关系图中的查询点,所述查询点与所述两个目标点的之间的关系情况符合预设情况。
结合第二方面,在一些可能的实现方式中,所述第一数据还包括所述关键值对应的所述第一目标点的第一关系值组,所述第二数据还包括所述关键值对应的所述第二目标点的第二关系值组。所述处理矩阵中的每个处理单元还用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值相等的情况下,对所述第一关系值组和所述第二关系值组的各个位分别进行预设运算,相等的所述关键值对应的所述第一关系值组和第二关系值组中相同的位对应于所述相等的关键值对应的所述点集中相同的所述点,每个位的所述预设运算的结果用于指示所述位对应的所述点与所述两个目标点之间的关系情况是否符合所述预设情况。
结合第二方面,在一些可能的实现方式中,在每个数据集合中的所述数据组按照所述第一顺序排列的情况下,每个第一数据组中的所述关键值从小到大排列;在每个数据集合中的所述数据组按照所述第二顺序排列的情况下,每个第一数据组中的所述关键值从大到小排列。
第三方面,提供一种数据处理装置的控制装置,包括存储器和至少一个处理器,所述存储器用于存储程序,当所述程序在所述至少一个处理器中执行时,所述控制装置用于执行第一方面所述的方法。
第四方面,提供了一种数据处理方法,包括:获取关系图中两个目标点中第一目标点的至少一个键值对和第二目标点的至少一个键值对,所述目标点的每个键值对包括所述目标点的关键值和所述关键值对应的所述目标点的关系值组,不同的所述关键值对应于所述关系图中不同的点集,所述目标点的关键值对应的所述目标点的关系值组用于指示所述目标点与所述关键值对应的点集中的每个点是否具有关系,在所述目标点的每个键值对中所述关键值对应的点集中存在与所述目标点具有关系的点;确定所述第一目标点的至少一个所述关键值与所述第二目标点的的至少一个所述关键值中的相等关键值;根据所述相等关键值对应的所述第一目标点的所述关系值组和所述第二目标点的关系值组,确定所述关系图中的查询点,所述查询点与所述两个目标点之间的关系情况符合预设情况。
在所述目标点的每个键值对中所述关键值对应的点集中存在与所述目标点具有关系的点。也就是说,对于每个目标点,各个键值对中的关键值对应的点集中存在与该目标点之间具有关系的点。
利用关系图中各个点的键值对,通过确定关系图中两个目标点的键值对中相等的关键值,并根据相等的关键值对应的该两个点的关系值组确定与该两个目标点之间的关系情况符合预设情况的查询点。可以在降低用于表示关系图的数据的数据量的同时,可以降低确定查询点所需的处理时间。
结合第四方面,在一些可能实现方式中,所述获取关系图中两个目标点中每个目标点的至少一个键值对,包括:获取所述关系图数据,所述关系图数据包括行偏移向量、关键值向量、关系值向量;根据所述关系图数据,确定所述两个目标点中每个目标点的至少一个键值对,所述关键值向量包括所述关系图中多个点中每个点的至少一个关键值,所述行偏移向量用于指示每个点的至少一个关键值在所述关键值向量中的位置,所述关系值向量包括所述多个点中每个点的关键值对应的点的关系值组,每个点的至少一个关键值在所述关键值向量中的顺序与所述每个点的关键值对应的点的关系值组在所述关系值向量中的顺序相同。
关系图中各个点的键值对可以根据关系图数据确定。以关系图数据的格式存储关系图,可以降低存储空间。
结合第四方面,在一些可能实现方式中,不同的所述关键值对应的所述点集中点的数量相等。
不同的关键值对应的点集中点的数量相等,从而使得根据关系图数据确定目标点的键值对的方式更为简便。
结合第四方面,在一些可能实现方式中,所述根据所述相等关键值对应的所述第一目标点的所述关系值组和所述第二目标点的关系值组,确定所述关系图中的查询点,包括:对所述相等关键值对应的所述第一目标点的所述关系值组和所述第二目标点的关系值组的各个位分别进行预设运算,每个关键值对应的不同的所述点的所述关系值组中相同的位对应于所述关键值对应的所述点集中相同的所述点,每个位的所述预设运算的结果用于指示所述位对应的所述点与所述两个目标点之间的关系情况是否符合所述预设情况。
对两个目标点相等的关键值对应的该两个目标点各自的关系值组中各个位分别进行预设运算,运算可以并行进行,可以缩短运算时间。
结合第四方面,在一些可能实现方式中,所述确定所述第一目标点的至少一个所述关键值与所述第二目标点的至少一个所述关键值中的相等关键值,包括:将所述第一目标点的至少一个键值对沿第二方向按照输入周期依次输入位于处理矩阵的第一边缘的多个所述处理单元,将所述第二目标点的至少一个键值对沿第一方向按照所述输入周期依次输入位于所述处理矩阵的第二边缘的多个所述处理单元,以确定所述相等关键值,所述处理矩阵包括v×v个处理单元,v为大于1的正整数,所述第一目标点的至少一个键值对与所述第二目标点的至少一个键值对是在同一个所述输入周期开始输入所述处理矩阵的,所述第一边缘与所述第二边缘相邻,所述第一方向为远离所述第二边缘的方向,所述第二方向为远离所述第一边缘的方向,每个处理单元用于确定输入所述处理单元的所述第一目标点的所述关键值与所述第二目标点的的所述关键值是否相等;所述根据所述相等关键值对应的所述第一目标点的所述关系值组和所述第二目标点的关系值组,确定所述关系图中的查询点,包括:利用所述处理矩阵对所述相等关键值对应的所述第一目标点的所述关系值组和所述第二目标点的关系值组进行处理,以确定所述查询点,所述多个处理单元中的每个处理单元用于,在所述第一目标点的所述关键值与所述第二目标点的的所述关键值相等的情况下,根据输入所述处理单元的所述第一目标点的所述关系值组和所述第二目标点的关系值组,确定所述关系图中的查询点,所述查询点与所述两个目标点之间的关系情况符合预设情况;所述多个处理单元中的每个处理单元还用于,按照所述输入周期,将所述第一目标点的所述键值对传输至沿所述第一方向的下一个所述处理单元,将第二目标点的所述键值对传输至沿所述第二方向的下一个所述处理单元。
处理矩阵可以理解为脉动阵列(systolic array),各个目标点的键值对按“流水”方式在处理矩阵的处理单元间有节奏地“流动”,所有的处理单元并行地对流经的数据进行处理可以提高处理速度,降低处理时间。
结合第四方面,在一些可能实现方式中,所述多个处理单元中的每个处理单元具体用于:在所述第一目标点的所述关键值与所述第二目标点的的所述关键值不相等的情况下,将所述第一目标点的所述键值对传输至沿所述第一方向的下一个所述处理单元,将第二目标点的所述键值对传输至沿所述第二方向的下一个所述处理单元。
一个目标点的各个键值对中的关键值是不同的。在第一目标点的关键值对第二目标点的关键值不相等的情况下,处理单元对第一目标点、第二目标点的关键值进行传输。而在在第一目标点的关键值对第二目标点的关键值相等的情况下,不再进行键值对的传输。从而,可以不再将该相等的关键值与其他关键值进行比较,降低运算量。
结合第四方面,在一些可能实现方式中,所述第一目标点的至少一个键值对的数量大于v,所述方法还包括:按照所述键值对中关键值的大小顺序将所述第一目标点的至少一个键值对划分为多个第一键值对组,并按照所述键值对中关键值的大小顺序将所述第二目标点的至少一个键值对划分为至少一个第二键值对组,所述多个第一键值对组和所述至少一个第二键值对组中的每个键值对组中所述键值对的数量小于或等于v,其中,所述多个第一键值对组中关键值最小的键值对组为第三键值对组,所述多个第二键值对组中关键值最小的键值对组为所述第四键值对组;进行多次迭代,直到所述第三键值对组中的最大关键值大于所述第四键值对组中的最大关键值,所述迭代包括:将所述第三键值对组中的至少一个所述键值对按照输入周期依次输入所述多个处理单元中的位于第一边缘的多个所述处理单元,将所述第四键值对组中的至少一个所述键值对按照输入周期依次输入所述多个处理单元中的位于第二边缘的多个所述处理单元;在所述第三键值对组中最大的关键值小于所述第四键值对组中最大的关键值的情况下,将按照关键值从小到大顺序排列的所述多个所述第一键值对组中所述第三键值对组的下一个第一键值对组作为所述第三键值对组;所述将所述第一目标点的至少一个键值对沿第二方向按照输入周期依次输入位于处理矩阵的第一边缘的多个所述处理单元,将所述第二目标点的至少一个键值对沿第一方向按照所述输入周期依次输入位于所述处理矩阵的第二边缘的多个所述处理单元,包括:在进行所述多次迭代之前以及每次迭代之后,将所述第三键值对组的多个键值对按照所述输入周期依次输入位于所述处理矩阵的第一边缘的多个所述处理单元,将所述第四键值对组的多个键值对按照所述输入周期依次输入所述多个处理单元中的位于所述处理矩阵的第二边缘的多个所述处理单元。
按照关键值从小到大的顺序,依次将多个第一键值对组与第二键值对组进行比较。在第一键值对组中最大的关键值小于第二键值对组中最大的关键值的情况下,将下一个第一键值对组输入处理矩阵与第二键值对组进行比较。在第一键值对组中最大的关键值大于或等于第二键值对组中最大的关键值的情况下,可以不再与该第二键值对组进行比较,降低运算量。
特别地,在第一键值对组、第二键值对组均为多个的情况下,与每个第一键值对组与各个第二键值对组进行比较的方式相比,本申请提供的方法可以明显降低运算量,降低运算时间。
第五方面,提供一种数据处理装置,包括:获取模块和处理模块;所述获取模块用于,获取关系图中两个目标点中第一目标点的至少一个键值对和第二目标点的至少一个键值对,所述目标点的每个键值对包括所述目标点的关键值和所述关键值对应的所述目标点的关系值组,不同的所述关键值对应于所述关系图中不同的点集,所述目标点的关键值对应的所述目标点的关系值组用于指示所述目标点与所述关键值对应的点集中的每个点是否具有关系,在所述目标点的每个键值对中所述关键值对应的点集中存在与所述目标点具有关系的点;所述处理模块用于,确定所述第一目标点的至少一个所述关键值与所述第二目标点的的至少一个所述关键值中的相等关键值;所述处理模块还用于,根据所述相等关键值对应的所述第一目标点的所述关系值组和所述第二目标点的关系值组,确定所述关系图中的查询点,所述查询点与所述两个目标点之间的关系情况符合预设情况。
结合第五方面,在一些可能的实现方式中,所述获取模块具体用于:获取所述关系图数据,所述关系图数据包括行偏移向量、关键值向量、关系值向量;根据所述关系图数据,确定所述两个目标点中每个目标点的至少一个键值对,所述关键值向量包括所述关系图中多个点中每个点的至少一个关键值,所述行偏移向量用于指示每个点的至少一个关键值在所述关键值向量中的位置,所述关系值向量包括所述多个点中每个点的关键值对应的点的关系值组,每个点的至少一个关键值在所述关键值向量中的顺序与所述每个点的关键值对应的点的关系值组在所述关系值向量中的顺序相同。
结合第五方面,在一些可能的实现方式中,不同的所述关键值对应的所述点集中点的数量相等。
结合第五方面,在一些可能的实现方式中,所述处理模块具体用于,对所述相等关键值对应的所述第一目标点的所述关系值组和所述第二目标点的关系值组的各个位分别进行预设运算,每个关键值对应的不同的所述点的所述关系值组中相同的位对应于所述关键值对应的所述点集中相同的所述点,每个位的所述预设运算的结果用于指示所述位对应的所述点与所述两个目标点之间的关系情况是否符合所述预设情况。
结合第五方面,在一些可能的实现方式中,所述处理模块包括:控制器和处理矩阵,所述处理矩阵包括v×v个处理单元,v为大于1的正整数;所述控制器用于,将关系图的两个目标点中第一目标点的至少一个键值对沿第二方向按照输入周期依次输入位于所述处理矩阵的第一边缘的多个所述处理单元,将所述两个目标点中第二目标点的至少一个键值对沿第一方向按照所述输入周期依次输入位于所述处理矩阵的第二边缘的多个所述处理单元,所述第一目标点的至少一个键值对与所述第二目标点的至少一个键值对是在同一个所述输入周期开始输入所述处理矩阵的,所述第一边缘与所述第二边缘相邻,所述第一方向为远离所述第二边缘的方向,所述第二方向为远离所述第一边缘的方向,所述目标点的每个键值对包括所述目标点的关键值和所述关键值对应的所述目标点的关系值组,不同的所述关键值对应于所述关系图中不同的点集,所述目标点的关键值对应的所述目标点的关系值组用于指示所述目标点与所述关键值对应的点集中的每个点是否具有关系,在所述目标点的每个键值对中所述关键值对应的点集中存在与所述目标点具有关系的点;所述多个处理单元中的每个处理单元用于:确定输入所述处理单元的所述第一目标点的所述关键值与所述第二目标点的的所述关键值是否相等;在所述第一目标点的所述关键值与所述第二目标点的的所述关键值相等的情况下,根据输入所述处理单元的所述第一目标点的所述关系值组和所述第二目标点的关系值组,确定所述关系图中的查询点,所述查询点与所述两个目标点之间的关系情况符合预设情况;按照所述输入周期,将所述第一目标点的所述键值对传输至沿所述第一方向的下一个所述处理单元,将第二目标点的所述键值对传输至沿所述第二方向的下一个所述处理单元。
结合第五方面,在一些可能的实现方式中,所述多个处理单元中的每个处理单元具体用于:在所述第一目标点的所述关键值与所述第二目标点的的所述关键值不相等的情况下,将所述第一目标点的所述键值对传输至沿所述第一方向的下一个所述处理单元,将第二目标点的所述键值对传输至沿所述第二方向的下一个所述处理单元。
结合第五方面,在一些可能的实现方式中,所述第一目标点的至少一个键值对的数量大于v,所述控制器还用于:
按照所述键值对中关键值的大小顺序将所述第一目标点的至少一个键值对划分为多个第一键值对组,并按照所述键值对中关键值的大小顺序将所述第二目标点的至少一个键值对划分为至少一个第二键值对组,所述多个第一键值对组和所述至少一个第二键值对组中的每个键值对组中所述键值对的数量小于或等于v,其中,所述多个第一键值对组中关键值最小的键值对组为第三键值对组,所述多个第二键值对组中关键值最小的键值对组为所述第四键值对组;进行多次迭代,直到所述第三键值对组中的最大关键值大于所述第四键值对组中的最大关键值,所述迭代包括:将所述第三键值对组中的至少一个所述键值对按照输入周期依次输入所述多个处理单元中的位于第一边缘的多个所述处理单元,将所述第四键值对组中的至少一个所述键值对按照输入周期依次输入所述多个处理单元中的位于第二边缘的多个所述处理单元;在所述第三键值对组中最大的关键值小于所述第四键值对组中最大的关键值的情况下,将按照关键值从小到大顺序排列的所述多个所述第一键值对组中所述第三键值对组的下一个第一键值对组作为所述第三键值对组;所述控制器具体用于,在进行所述多次迭代之前以及每次迭代之后,将所述第三键值对组的多个键值对按照所述输入周期依次输入位于所述处理矩阵的第一边缘的多个所述处理单元,将所述第四键值对组的多个键值对按照所述输入周期依次输入所述多个处理单元中的位于所述处理矩阵的第二边缘的多个所述处理单元。
第六方面,提供一种数据处理装置,包括:控制器和处理矩阵,所述处理矩阵包括v×v个处理单元,v为大于1的正整数;所述控制器用于,将关系图的两个目标点中第一目标点的至少一个键值对沿第二方向按照输入周期依次输入所述多个处理单元中的位于所述处理矩阵的第一边缘的多个所述处理单元,将所述两个目标点中第二目标点的至少一个键值对沿第一方向按照所述输入周期依次输入所述多个处理单元中的位于所述处理矩阵的第二边缘的多个所述处理单元,所述第一目标点的至少一个键值对与所述第二目标点的至少一个键值对是在同一个所述输入周期开始输入所述处理矩阵的,所述第一边缘与所述第二边缘相邻,所述第一方向为远离所述第二边缘的方向,所述第二方向为远离所述第一边缘的方向,所述目标点的每个键值对包括所述目标点的关键值和所述关键值对应的所述目标点的关系值组,不同的所述关键值对应于所述关系图中不同的点集,所述目标点的关键值对应的所述目标点的关系值组用于指示所述目标点与所述关键值对应的点集中的每个点是否具有关系,在所述目标点的每个键值对中所述关键值对应的点集中存在与所述目标点具有关系的点;所述多个处理单元中的每个处理单元用于:确定输入所述处理单元的所述第一目标点的所述关键值与所述第二目标点的的所述关键值是否相等;在所述第一目标点的所述关键值与所述第二目标点的的所述关键值相等的情况下,根据输入所述处理单元的所述第一目标点的所述关系值组和所述第二目标点的关系值组,确定所述关系图中的查询点,所述查询点与所述两个目标点之间的关系情况符合预设情况;按照所述输入周期,将所述第一目标点的所述键值传输至沿第一方向的下一个所述处理单元,将第二目标点的所述键值传输至沿第二方向的下一个所述处理单元,所述第一方向与所述第一边缘垂直,所述第二方向与所述第二边缘垂直。
结合第六方面,在一些可能的实现方式中,所述多个处理单元中的每个处理单元具体用于:在所述第一目标点的所述关键值与所述第二目标点的的所述关键值不相等的情况下,将所述第一目标点的所述键值对传输至沿所述第一方向的下一个所述处理单元,将第二目标点的所述键值对传输至沿所述第二方向的下一个所述处理单元。
一个目标点的各个键值对中的关键值是不同的。在第一目标点的关键值对第二目标点的关键值不相等的情况下,处理单元对第一目标点、第二目标点的关键值进行传输。而在在第一目标点的关键值对第二目标点的关键值相等的情况下,不再进行键值对的传输。从而,可以不再将该相等的关键值与其他关键值进行比较,降低运算量。
结合第六方面,在一些可能的实现方式中,所述控制器还用于,根据关系图数据,确定所述第一目标点的至少一个键值对和第二目标点的至少一个键值对,所述关系图数据包括行偏移向量、关键值向量、关系值向量,所述关键值向量包括所述关系图中多个点中每个点的至少一个关键值,所述行偏移向量用于指示每个点的至少一个关键值在所述关键值向量中的位置,所述关系值向量包括所述多个点中每个点的关键值对应的点的关系值组,每个点的至少一个关键值在所述关键值向量中的顺序与所述每个点的关键值对应的点的关系值组在所述关系值向量中的顺序相同。
关系图中各个点的键值对可以根据关系图数据确定。以关系图数据的格式存储关系图,可以降低存储空间。
示例性地,控制器还用于,根据存储的关系图数据,确定所述第一目标点的至少一个键值对和第二目标点的至少一个键值对。
结合第六方面,在一些可能的实现方式中,不同的所述关键值对应的所述点集中点的数量相等。
不同的关键值对应的点集中点的数量相等,从而使得根据关系图数据确定目标点的键值对的方式更为简便。
结合第六方面,在一些可能的实现方式中,所述多个处理单元中的每个处理单元用于:在所述第一目标点的所述关键值与所述第二目标点的的所述关键值相等的情况下,对所述相等关键值对应的所述第一目标点的所述关系值组和所述第二目标点的关系值组的各个位分别进行预设运算,每个关键值对应的不同的所述点的所述关系值组中相同的位对应于所述关键值对应的所述点集中相同的所述点,每个位的所述预设运算的结果用于指示所述位对应的所述点与所述两个目标点之间的关系情况是否符合预设情况。
对两个目标点相等的关键值对应的该两个目标点各自的关系值组中各个位分别进行预设运算,运算可以并行进行,可以缩短运算时间。
结合第六方面,在一些可能的实现方式中,所述第一目标点的至少一个键值对的数量大于v,所述控制器具体用于:按照所述键值对中关键值的大小顺序,将所述第一目标点的至少一个键值对划分为多个第一键值对组,并将所述第二目标点的至少一个键值对划分为至少一个第二键值对组,所述多个第一键值对组和所述至少一个第二键值对组中的每个键值对组中所述键值对的数量小于或等于v,其中,所述多个第一键值对组中关键值最小的键值对组为第三键值对组,所述多个第二键值对组中关键值最小的键值对组为所述第四键值对组;进行迭代,直到所述第三键值对组中的最大关键值大于所述第四键值对组中的最大关键值,所述迭代包括:将所述第三键值对组中的多个所述键值对按照输入周期依次输入所述多个处理单元中的位于第一边缘的多个所述处理单元,将所述第四键值对组中的多个所述键值对按照输入周期依次输入所述多个处理单元中的位于第二边缘的多个所述处理单元;在所述第三键值对组中最大的关键值小于所述第四键值对组中最大的关键值的情况下,将按照关键值从小到大顺序排列的所述多个所述第一键值对组中所述第三键值对组的下一个第一键值对组作为所述第三键值对组;所述控制器具体用于,在进行所述多次迭代之前以及每次迭代之后,将所述第三键值对组的多个键值对按照所述输入周期依次输入位于所述处理矩阵的第一边缘的多个所述处理单元,将所述第四键值对组的多个键值对按照所述输入周期依次输入所述多个处理单元中的位于所述处理矩阵的第二边缘的多个所述处理单元。
在第一目标点的至少一个键值对的数量大于v的情况下,按照关键值从小到大的顺序将第一目标点的至少一个键值对划分为多个第一键值对组,与第一目标点的至少一个第二键值对组分别进行比较。
按照关键值从小到大的顺序,依次将多个第一键值对组与第二键值对组进行比较。在第一键值对组中最大的关键值小于第二键值对组中最大的关键值的情况下,将下一个第一键值对组输入处理矩阵与第二键值对组进行比较。在第一键值对组中最大的关键值大于或等于第二键值对组中最大的关键值的情况下,可以不再与该第二键值对组进行比较,降低运算量。
特别地,在第一键值对组、第二键值对组均为多个的情况下,与每个第一键值对组与各个第二键值对组进行比较相比,本申请提供的方法可以明显降低运算量,降低运算时间。
第七方面,提供一种数据处理装置,包括存储器和至少一个处理器,所述存储器用于存储程序,当所述程序在所述至少一个处理器中执行时,所述处理器用于执行第一方面中任意一种实现方式中的方法。
第八方面,提供一种计算机可读介质,该计算机可读介质存储用于设备执行的程序代码,该程序代码包括用于执行第一方面或第四方面中的任意一种实现方式中的方法。
第九方面,提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述第一方面或第四方面中的任意一种实现方式中的方法。
第十方面,提供一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,执行上述第一方面、第四方面中的任意一种实现方式中的方法。
第十一方面,提供一种数据处理系统,包括第一方面所述的数据处理装置的控制装置和数据梳理装置。
可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行第一方面或第四方面中的任意一种实现方式中的方法。
上述芯片具体可以是现场可编程门阵列(field-programmable gate array,FPGA)或者专用集成电路(application-specific integrated circuit,ASIC)。
应理解,本申请中,第一方面的方法具体可以是指第一方面以及第一方面中各种实现方式中的任意一种实现方式中的方法。
附图说明
图1是一种图挖掘算法的示意性结构图。
图2是一种数据格式的示意图。
图3是一种基于队列的集合合并的示意图。
图4是本申请实施例提供的一种数据处理方法的示意性结构图。
图5是本申请实施例提供的一种生成关系图数据的方法的示意性流程图。
图6是本申请实施例提供的另一种数据处理方法的示意性流程图。
图7是本申请实施例提供的一种数据处理装置的示意性结构图。
图8是本申请实施例提供的又一种数据处理方法的示意性流程图。
图9是本申请实施例提供的一种处理单元的示意性结构图。
图10是本申请实施例提供的一种键值对集合的示意图。
图11是本申请实施例提供的一种过滤单元的示意性结构图。
图12是本申请实施例提供的一种压缩三角的示意性结构图。
图13是本申请实施例提供的一种压缩单元的示意性结构图。
图14是本申请实施例提供的数据处理装置的处理时间的示意图。
图15是本申请实施例提供的一种数据处理装置的示意性结构图。
图16是本申请实施例提供的一种数据处理系统的示意性结构图。
图17是本申请实施例提供的另一种数据处理系统的示意性结构图。
图18是本申请实施例提供的数据处理系统的性能对比的示意图。
图19是本申请实施例提供的一种数据处理装置的控制方法的示意性流程图。
图20是本申请实施例提供的一种数据处理装置的控制装置的示意性结构图。
图21是本申请实施例提供的一种数据处理装置的控制装置的示意性结构图。
图22是本申请实施例提供的一种数据处理系统的示意性结构图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
图挖掘算法是一种代表性的图处理算法与数据挖掘算法,用于在完整的图数据结构中查找特定子图模式并统计该子图模式的出现频次。图挖掘算法应用广泛,常见的应用案例包括社交媒体中社区网络分析、生物信息学中蛋白质分析、计算化学领域中的药物发现等。
图1是一种图挖掘算法的示意性结构图。
将关系图110上的各个点(即点1至点N)依次作为子图模型中的点v0。
关系图也可以称为图谱或图数据结构,用于表示节点之间是否存在关系。两个节点之间存在关系,也可以理解为该两个节点之间具有关系。
关系图包括相互连接的点和边。关系图中的点也可以称为节点,可以用于表示实体。关系图中两点之间的边可以用于表示该两点之间存在关系。
实体指的是具有可区别性且独立存在的某种事物。如某一个人、某一个城市、某一种植物、某一种商品、某一个设备、某一个原子等。
在某两个点之间存在关系的情况下,该两个点通过“边”连接。在某两个点之间不存在关系的情况下,该两个点之间不存在“边”。通过“边”连接两个点互为邻居。
通过关系图,可以将不同种类的信息连接在一起而得到的一个关系网络。关系图提供了从“关系”的角度去分析问题的能力。
在子图模型中,点v1是点v0的邻居。在确定关系图110上某个点u0为点v0的情况下,将点u0的各个邻居依次作为点v1。
在子图模型中,点v2是点v0和点v1的共同邻居。在关系图110上确定某个点u1为点v1的情况下,将点u0和点u1的共同邻居中的点依次作为点v2。点u0和点u1的共同邻居属于关系图110上的点u0的邻居和点u1邻居的交集。
子图模型中,点v3是点v0和点v1的共同邻居,但不是点v2的邻居。关系图110上确定某个点u2为点v2的情况下,将点u0和点u1的共同邻居中不属于u2的邻居的点依次作为点v3。
依次将点u0和点u1的共同邻居中不属于u2的邻居的点作为点u3。从而,可以确定有效的子图。
深度优先搜索算法的核心是一系列嵌套的for循环与集合运算:
for u0∈A
for u1∈N(u0)
for u2∈N(u0)∩N(u1)
for u3∈N(u0)∩N(u1)-N(u2)
其中,集合A为关系图110中的点的集合,N(ui)表示点ui的邻居的集合,i∈{0,1,2,3},“∩”表示交集。N(u0)∩N(u1)-N(u2)表示点u0的邻居的集合和点u1邻居的集合的交集,再减去点u2的邻居的集合中的各个点。
每当图挖掘算法的for循环到达最内层,存在点u3的情况下,即存在有效的子图。
图挖掘算法对图1所示的关系图110进行处理,可以得到3个有效的子图。
可以利用压缩稀疏行(compressed sparse row,CSR)格式对图1所示的关系图110进行存储。
对于关系图,可以用每个点对应的向量表示该是否与其他点连接。每个点对应的向量可以与关系图中点的数量相等。如图1所示的关系图110包括8个点,则关系图110中每个点对应的向量可以包括8位(bit),每一位用于表示该点与其他点是否连接。不同向量中相同的位用于表示不同向量对应的点是否与某个相同的点连接。也就是说,不同向量中相同的位对应于相同的点。
示例性的,图1所示的关系图110中某个点对应的向量,第i位用于表示该某个点与点i是否存在连接,i∈[0,7],且i为整数。点0与点0之间不存在“边”,即不存在连接,点0对应的向量中第0位为0;点0与点1之间存在“边”,即存在连接,点0对应的向量的第1位为“1”;点0与点2之间不存在连接,点0对应的向量的第2位为为“0”。从而,可以确定点0对应的向量N(0)为“01010011”,点1对应的向量N(1)为“10101110”。
邻接矩阵可以包括关系图中各个点对应的向量。关系图中每个点对应的向量可以作为邻接矩阵中的一行。邻接矩阵中每一行对应的点的顺序可以与每个向量中每一位对应的点的顺序相同。
可以利用CSR格式对邻接矩阵进行存储,即可以利用CSR格式的数据表示关系图。
图2是CSR格式数据的示意图。
CSR格式的数据是通过对数据进行整体编码的方式得到的。CSR格式的数据包括三部分:行偏移,列索引以及图数据值。行偏移中第i个数用于表示矩阵第i行中第一个非零元素的起始位置。列索引用于表示矩阵中非零元素所在列的列坐标,图数据值用于表示非零元素的具体值。
在图1所示的关系图110的邻接矩阵中,第0行是N(0)=01010011,第1行是N(1)=10101110。第0行中非零元素所在列的列坐标分别为1、3、6、7,共4位;第1行中非零元素所在列的列坐标分别为0、2、4、5、6,共5位。因此,邻接矩阵利用CSR格式可以表示为:行偏移(row)“0,4……”,列索引“1,3,6,7,0,2,4,5,6……”,图数据值“1,1,1,1,1,1,1,1,1……”
利用CSR格式表示的关系图,每个点对应的列索引的部分可以理解为该点的邻居集合。确定两个点的邻居集合的交集,从而可以确定与该两个集合对应的点均具有关系的查询点。
对CSR格式存储的邻接矩阵中各个点的邻居集合进行集合合并运算时,首先需要根据点的序号及相应的行偏移值取出对应部分的列索引,然后对两组列索引的部分进行比较,筛选出相同的序号。该相同的序号指示的点即为查询点。
示例性地,根据行偏移“0,4,9……”,确定序号分别为点0对应的向量中的非零值的位置(即点0对应的邻居集合)为根据列索引中第0至第3个数字,和点1对应的向量中的非零值的位置(即点1对应的邻居集合)可以根据列索引中第4至第8个数字。之后,如图3所示,对列索引中第0至第3个数字与列索引中第4至第8个数字进行比较,即对点0的邻居集合与点1的邻居集合进行比较,确定点0的邻居集合与点1的邻居集合的交集。
数据处理装置可以用于对两个点的列索引部分进行比较。但是,数据处理装置的处理能力有限。数据处理装置可以对包括序号的数量均不超过预设值的两个邻居集合进行比较。
在两个列索引中的某个列索引中数的数量超过预设值的情况下,需要对该某个列索引中的数进行分组以得到多个数组。之后,可以利用数据处理装置对该多个数组分别与该两个列索引中的另一个列索引进行比较,但是所需运算量较大,所需的处理时间较长。
为了解决上述问题,本申请实施例提供了一种数据处理方法。
图19是本申请实施例提供的一种基于数据处理装置的数据处理方法的示意性流程图。
数据处理装置包括处理矩阵,所述处理矩阵包括v×v个处理单元,v为正整数。
方法2200包括S2210至S2220。
在S2210,获取第一目标数据组和第二目标数据组,所述第一目标数据组为第一数据集合的多个第一数据组中的第一个数据组,所述第二目标数据组为第二数据集合的至少一个第二数据组中的第一个数据组,所述第一数据集合和所述第二数据集合的每个数据集合中的每个数据组包括至少一个数据,每个数据包括关键值,每个数据集合中的所述数据组是按照第一顺序或第二顺序排列的,在按照所述第一顺序排列的情况下每个数据集合中任一个所述数据组中的每个关键值均小于位于所述任一个数据组之后的数据组中每个关键值,在按照所述第二顺序排列的情况下每个数据集合中任一个所述数据组中的每个关键值均大于位于所述任一个数据组之后的数据组中每个关键值。
第一数据集合和第二数据集合可以存储在存储器中。第一数据集合包括多个第一数据组,第二数据集合包括多个第二数据组。
获取第一目标数据组和第二目标数据组,可以是从存储器中读取第一目标数据组和第二目标数据组。
在S2220,进行多次迭代。
每次迭代包括,将所述第一目标数据组和所述第二目标数据组输入所述数据处理装置,所述数据处理装置用于确定所述第一目标数据组和所述第二目标数据中相等的所述关键值。
每次迭代还包括,在每个数据集合中的所述数据组按照所述第一顺序排列,且第一关键值小于或等于第二关键值的情况下,或者,在每个数据集合中的所述数据组按照所述第二顺序排列,且第三关键值大于或等于第四关键值的情况下,获取所述第一数据集合中位于所述第一目标数据组之后的第一数据组作为所述第一目标数据组,所述第一关键值为所述第一目标数据组中最大的关键值,所述第二关键值为所述第二目标数据组中最大的关键值,所述第三关键值为所述第一目标数据组中最小的关键值,所述第四关键值为所述第二目标数据组中最小的关键值。
对于两个数据集合,每个数据集合中各个数据组是按照关键值的大小顺序排列的,在利用数据处理装置进行数据处理时,在其中第一数据集合中第一数据组的数量为多个的情况下,通过迭代,对于各个关键值均超过第二目标数据组中关键值范围的第一数据组,可以不再输入数据处理装置,即不再与第二目标数据组进行比较,降低与第二目标数据组进行比较的第一数据组的数量,从而降低运算量。
图10以第一顺序与第二顺序相同为例进行说明。左侧一列为第一数据集合,右侧一列为第二数据集合。第一数据集合包括关键值分别为1、4、7、8、10等的5个数据,第二数据集合包括关键值分别为1、2、3、4、5、6、7、8、9等的9个数据。在v=3的情况下,第一数据集合可以包括2个第一数据组,其中,第1个第一数据组包括关键值分别为1、4、7的3个数据,第2个第一数据组包括关键值为8、10的2个数据。第二数据集合可以包括3个第二数据组,第1个第二数据组包括关键值分别为1、2、3的3个数据,第2个第二数据组包括关键值分别为4、5、6的3个数据,第3个第二数据组包括关键值分别为7、8、9的3个数据。
通过S2210,可以获取包括关键值1、4、7的第一数据组和包括关键值1、2、3的第二数据组,分别作为第一目标数据组和第二目标数据组。在进行S2220的过程中,由于第一目标数据组中最大的关键值7大于第二目标数据组中最大的关键值4,不再将第一目标数据组的下一个第一数据组作为第一目标数据组与包括关键值1、2、3的第二目标数据组进行比较,从而,可以降低与第二数据组进行比较的第一数据组的数量,降低运算量。
另外,进行方法2200的过程中,不需要提前获取全部的第一数据组、第二数据组,降低对执行方法2200的装置的处理能力和存储能力的需求,提高方法的灵活性和适应性。
如果第二数据集合中第二数据组的数量为多个,则在每个数据集合中的所述数据组按照所述第一顺序排列,且所述第一关键值大于或等于所述第二关键值的情况下,获取所述第二数据集合中位于所述第二目标数据组之后的第二数据组作为第二目标数据组。
如果第二数据集合中第二数据组的数量为多个,则在每个数据集合中的所述数据组按照所述第二顺序排列,且所述第三关键值小于或等于所述第四关键值的情况下,获取所述第二数据集合中位于所述第二目标数据组之后的第二数据组作为第二目标数据组。
仍然以图10为例进行说明。在进行S2220的过程中,第一目标数据组中最大的关键值7大于第二目标数据组中最大的关键值3,可以获取第1个第二数据组的下一个第二数据组并作为第二目标数据组。第2个第二数据组包括关键值分别为4、5、6的3个数据。
进行第二次迭代时,第一目标数据组中最大的关键值7大于第二目标数据组中最大的关键值6,可以获取第2个第二数据组的下一个第二数据组并作为第二目标数据组。
进行第三次迭代时,第一目标数据组中最大的关键值7小于第二目标数据组中最大的关键值9,可以获取当前的第一目标数据组(即第1个第一数据组)的下一个第一数据组并作为新的第一目标数据组。
在第一顺序与第二顺序相同,且第一数据组的数量与第二数据组的数量均为多个的情况下,将包括的关键值较小的目标数据组的所属的数据集合中的下一个目标数据组作为下一次迭代中一个目标数据组,而关键值较大的目标数据组作为下一次迭代中的另一个目标数据组,可以使得与某一个数据集合中某个数据组进行比较的另一个数据集合中的数据组包括大小在大于或等于该某个数据组中关键值最小值且小于或等于该某个数据组中关键值最大值的范围内的关键值,并且使得该某个数据组与该另一个数据集合中仅包括该范围之外的关键值的数据组进行比较的可能性降低,提高运算效率,降低运算量。
所述数据处理装置可以包括处理矩阵,所述处理矩阵包括v×v个处理单元,v为正整数,第一目标数据组和第二目标数据组中每个目标数据组中至少一个数据的数量小于或等于v。
在进行每次迭代的过程中,可以将所述第一目标数据组和所述第二目标数据组按照输入规则输入处理矩阵,所述输入规则使得所述第二目标数据组中的第p个第二数据是在所述迭代的第q个输入周期输入位于第二边缘的v个所述处理单元中沿第一方向的第q个所述处理单元的,所述第一目标数据组第i个第一数据是在所述迭代的第j个输入周期输入位于第一边缘的v个所述处理单元中沿第二方向的第j个所述处理单元的,所述第一目标数据组与所述第二数据组是在同一个所述输入周期开始输入的,所述第一边缘与所述第二边缘相邻,所述第一方向为从所述第二边缘指向所述处理矩阵内部且垂直所述第二边缘的方向,所述第二方向为从所述第一边缘指向所述处理矩阵内部且垂直所述第一边缘的方向。
所述处理矩阵中的每个处理单元用于,确定在同一个所述输入周期输入所述处理单元的第一数据中的所述关键值与第二数据中的所述关键值是否相等,所述第一数据为属于所述第一目标数据组的所述数据,所述第二数据为属于所述第二目标数据组的所述数据。
在v大于1的情况下,所述处理矩阵中的每个处理单元还用于,在接收所述第一数据和所述第二数据的下一个输入周期,将所述第一数据传输至沿所述第一方向的下一个所述处理单元,将所述第二数据传输至沿所述第二方向的下一个所述处理单元。
利用处理矩阵对第一目标数据组和第二目标数据组进行处理,可以提高处理效率。
处理矩阵可以理解为逻辑上的矩阵,处理矩阵中各个处理单元实际的物理位置是否按照行列的方式排列,本申请实施例不做限制。第一方向、第二方向可以理解为处理矩阵中的逻辑方向。
在每个数据集合中不同的数据中的所述关键值不同的情况下,处理矩阵中的每个处理单元用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值不相等的情况下,将所述第一数据传输至沿所述第一方向的下一个所述处理单元,并将所述第二数据传输至沿所述第二方向的下一个所述处理单元。
在各个数据集合中不同的数据中的所述关键值不同的情况下,在第一数据中的关键值与第二数据中的关键值相等的情况下,该相等的关键值不会再与其他数据中的关键值相等。因此,处理单元可以仅在第一数据中的关键值与第二数据中的关键值不相等的情况下,将第一数据传输至沿第一方向的下一个所述处理单元,并将第二数据传输至沿第二方向的下一个所述处理单元。从而,可以减少数据的传输,并且可以降低运算量。
数据处理装置还可以包括过滤矩阵,所述过滤矩阵包括v个过滤单元,所述v个过滤单元分别位于所述处理矩阵沿所述第一方向的v行中每一行沿所述第二方向的最后一个处理单元之后。
所述处理矩阵中的每个处理单元还用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值相等的情况下,在接收所述第一数据和所述第二数据的下一个所述输入周期,将所述处理单元的处理结果沿所述第二方向传输至下一个单元,所述单元为所述处理单元或所述过滤单元,所述处理结果包括相等的所述关键值。
所述处理矩阵中的每个处理单元还用于,在接收所述处理结果的下一个所述输入周期,将所述处理结果沿所述第二方向传输至下一个单元。
方法2200还包括,在所述第一关键值大于或等于所述第二关键值的情况下,控制沿所述第一方向的所述v个过滤单元按照所述输入周期依次输出所述第二目标数据组对应的所述处理结果。
从而,可以将对应于某个第二数据组中各个关键值的处理结果在该第二数据组最后一次输入数据处理装置后统一输出,提高处理结果输出的灵活度。
数据处理装置还可以包括压缩三角矩阵。所述压缩三角矩阵包括沿所述第一方向的v行压缩单元,沿所述第一方向所述压缩单元的数量逐行增加。
v行压缩单元压缩单元可以分别沿第二方向位于一个过滤单元之后。
所述多个压缩单元中的每个压缩单元用于,接收沿所述第二方向所述压缩单元之前的所述过滤单元输出的所述处理结果,或者,接收沿所述第一方向上一行的所述压缩单元输出的所述处理结果。
所述多个压缩单元中的每个压缩单元用于,在接收所述处理结果的下一个所述输入周期,向沿所述第一方向下一行的所述压缩单元传输所述处理结果。
通过在数据处理装置中设置压缩三角矩阵,可以使得某个第二数据组对应的处理结果在同一个输入周期输出,提高处理结果输出的灵活度。
方法2200可以应用于图挖掘。
不同的所述关键值对应于关系图中不同的点集,所述第一数据用于表示关系图中第一目标点与所述第一数据中的所述关键值对应的所述点集中的至少一个点之间是否具有关系,所述第二数据用于表示关系图中第二目标点与所述第二数据中的所述关键值对应的所述点集中的至少一个点之间是否具有关系。
每个处理矩阵还用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值相等的情况下,输出处理结果,所述处理结果用于指示所述关系图中的查询点,所述查询点与所述两个目标点的之间的关系情况符合预设情况。
预设情况可以是与第一目标点、第二目标点均具有关系,与第一目标点具有关系而与第二目标点不具有关系,与第一目标点不具有关系而与第二目标点具有关系,与第一目标点、第二目标点均不具有关系这四种情况中的一种。预设情况可以是根据图挖掘中的子图模型确定的。
利用方法2200,可以确定关系图中与两个目标点之间的连接情况预设情况的查询点,从而可以识别关系图中具有某种特定子图模型结构的子图。
对于两个目标点,各个数据中相同的关键值至多只有一个。因此,在已经确定第一目标点的某个数据与第二目标点的某个数据中的关键值相等的情况下,处理单元可以不再对第一目标点的该数据与第二目标点的该数据进行传输,从而降低运算量。
也就是说,在进行图挖掘的过程中,每个处理单元可以用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值不相等的情况下,将所述第一数据传输至沿所述第一方向的下一个所述处理单元,并将所述第二数据传输至沿所述第二方向的下一个所述处理单元。
应当理解,目标点的每个数据中不同关键值对应的点集中的点的数量可以相同或不同。各个关键值对应的点集中可以包括一个或多个点。
在一些实施例中,不同的关键值对应的点集中的点的数量可以均为1,则目标点的每个数据可以仅包括关键值。目标点的不同关键值可以用于指示关系图中与该目标点具有关系的不同点,或者,目标点的不同关键值可以用于指示关系图中与该目标点不具有关系的不同点。目标点的关键值指示的点是否与目标点具有关系,例如可以根据需要确定的查询点与两个目标点之间的关系情况确定,本申请实施例对此不作限定。
在另一些实施例中,不同的关键值对应的点集中的点的数量可以为多个。目标点的每个数据可以包括关键值和该关键值对应的目标点的关系值组。该关键值对应的目标点的关系值组表示所述目标点与所述关键值对应的所述点集中的各个点是否具有关系。
也就是说,所述第一数据还包括所述关键值对应的所述第一目标点的第一关系值组,所述第二数据还包括所述关键值对应的所述第二目标点的第二关系值组。
所述处理矩阵中的每个处理单元还用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值相等的情况下,对所述第一关系值组和所述第二关系值组的各个位分别进行预设运算,相等的所述关键值对应的所述第一关系值组和第二关系值组中相同的位对应于所述相等的关键值对应的所述点集中相同的所述点,每个位的所述预设运算的结果用于指示所述位对应的所述点与所述两个目标点之间的关系情况是否符合所述预设情况。
第一数据中的关键值与第二数据中的关键值相等,即第一数据中的关键值与第二数据中关键值指示相同的点集,从而,根据对第一关系值组与第二关系值组的按位预设运算的结果,可以确定查询点。
应当理解,该处理单元的处理结果还可以包括对第一关系值组和第二关系值组的各个位进行预设运算的结果。
示例性地,所述过滤矩阵中的每个过滤单元用于,根据接收的所述处理结果中,确定是否存在所述查询点,并输出存在所述查询点的所述处理结果。
也就是说,过滤矩阵可以用于对处理矩阵输出的处理结果进行筛选,在处理矩阵输出的各个处理结果中,确定存在查询点的处理结果。
过滤矩阵具体可以参见图10和图11的说明。压缩三角矩阵具体可以参见图12和图13的说明。
在每个数据集合中的所述数据组按照所述第一顺序排列的情况下,每个第一数据组中的所述关键值从小到大排列;在每个数据集合中的所述数据组按照所述第二顺序排列的情况下,每个第一数据组中的所述关键值从大到小排列。
每个数据集合中的数据可以按照关键值从小到大或从大到小的顺序排列。从而,数据集合中数据组可以按照划分后的格式存储。或者,执行方法2000的装置可以对数据集合进行划分。
示例性地,在每个数据集合中的所述数据组按照所述第一顺序排列的情况下,在S2210,可以获取至少一个第一数据和至少一个第二数据,该至少一个第一数据即为第一目标数据组,该至少一个第二数据即为第二目标数据组。在进行S2220的过程中,每次获取的至少一个第一数据可以作为一个第一目标数据组,每次获取的至少一个第二数据即为第二目标数据组。在迭代结束后,可以将未曾获取的至少一个第一数据作为一个或多个第一数据组,将未曾获取的至少一个第二数据作为一个或多个第二数据组。
在利用包括处理矩阵的数据处理装置进行数据处理的情况下,每次可以获取v个第一数据和/或v个第二数据,从而能够提高运算处理效率。
每个数据集合中各个数据按照关键值的大小顺序排列,使得数据组的划分更加灵活。
示例性地,在迭代过程中,可以将从第一数据集合中获取数量不超过v的至少一个数据作为第一目标数据组。
类似的,每个第二数据组中的所述关键值沿所述第二顺序从小到大排列。
图4是本申请实施例提供的一种数据处理方法的示意性结构图。数据处理方法500包括S510至S530。
在S510,获取关系图中两个目标点中第一目标点的至少一个键值对和第二目标点的至少一个键值对,所述目标点的每个键值对包括所述目标点的关键值和所述关键值对应的所述目标点的关系值组,不同的所述关键值对应于所述关系图中不同的点集,所述目标点的关键值对应的所述目标点的关系值组用于指示所述目标点与所述关键值对应的点集中的每个点是否具有关系,在所述目标点的每个键值对中所述关键值对应的点集中存在与所述目标点具有关系的点。
在S520,确定所述第一目标点的至少一个所述关键值与所述第二目标点的的至少一个所述关键值中的相等关键值。
在S530,根据所述相等关键值对应的所述第一目标点的所述关系值组和所述第二目标点的关系值组,确定所述关系图中的查询点,所述查询点与所述两个目标点之间的关系情况符合预设情况。
一般情况下,在关系图中,每个点仅与关系图中少量的点具有关系。也就是说,如果利用每个点的关系向量中的各个位表示该点与关系图中各个点是否具有关系,其中,“1”表示具有关系,“0”表示不具有关系,则各个点的关系向量可以认为是稀疏数据。
将关系图中的各个点划分为多个点集,每个点集对应于一个关键值。对于每个点,可以利用每个关键值对应的该点的关系值组表示该关键值对应的点集中各个点与该点是否具有关系。如果某个点集中存在与该点对应的点,则该点集对应的关键值以及该关键值对应的该点的关系值组可以作为该点的一个键值对。
利用关系图中各个点的键值对表示关系图,可以实现数据压缩。
方法500利用关系图中各个点的键值对,通过确定关系图中两个目标点的键值对中相等的关键值,并根据相等的关键值对应的该两个点的关系值组确定与该两个目标点之间的关系情况符合预设情况的查询点。在降低用于表示关系图的数据的数据量的同时,可以降低确定查询点所需的处理时间。
在图3所示方法中,基于队列的集合合并,确定两个点的列索引队列中相同列索引的方式确定与该两个点均具有关系的点。与图3所示的方法相比,方法500中,通过关键值对中的关键值表示存在与目标点之间有关系的点的点集,关键值对的数量一般小于列索引的数量,从而,对关键值大小的比较能够降低运算量,降低运算时间。
不同关键值对应的点集可以包括或不包括相同的点。不同关键值对应的点集不包括相同的点,可以进一步提高数据压缩的程度,降低存储用于表示关系图的各个点的键值对占用的存储空间。
在S510,可以获取关系图数据,并根据关系图数据,确定所述两个目标点中每个目标点的至少一个键值对。
关系图的各个点的键值对可以利用关系图数据表示。关系图数据包括行偏移向量、关键值向量、关系值向量。
关键值向量包括关系图中每个点的至少一个关键值。
行偏移向量用于指示每个点的至少一个关键值在关键值向量中的位置。
示例性地,行偏移向量可以包括多个偏移信息,每个偏移信息用于表示一个点的至少一个关键值在关键值向量中的起始位置。关系图中各个点的偏移信息在行偏移向量中的顺序可以与该各个点的关键值在关键值向量中的顺序相同。
偏移信息可以是序号。每个点的关键值在关键值向量中连续。某个点的偏移信息用于指示该点的至少一个关键值在关键值向量中的起始的序号。
关系值向量包括关系图中每个点的关键值对应的点的关系值组。每个点的至少一个关键值在关键值向量中的顺序与每个点的关键值对应的点的关系值组在所述关系值向量中的顺序相同。
利用关系图数据表示关系图可以进一步提高数据压缩程度。
不同的关键值对应的点集中点的数量可以相等或不相等。示例性地,基数和偶数的关键值可以对应于点集中不同的点的数量。
可以根据关键值向量中位于目标点的至少一个关键值之前的各个关键值对应的点集中点的数量,确定目标点的各个关键值对应的关系值组在关系值向量的起始位置。之后,以该起始位置为起点,根据目标点的各个关键值对应的点集中点的数量,确定目标点的各个关键值对应的关系值组。
在不同的关键值对应的点集中点的数量相等的情况下,根据目标点的至少一个关键值在关键值向量中的位置,以及点集中相等的点的数量,即可确定目标点的各个关键值对应的关系值组。从而使得根据关系图数据确定目标点的键值对的方式更为简便。
在S530,可以对所述相等关键值对应的所述第一目标点的所述关系值组和所述第二目标点的关系值组的各个位分别进行预设运算。
相同的关键值对应的不同点的关系值组中,相同的位对应于该关键值对应的点集中相同的点。
相同的关键值对应的关系值组中,不同的位可以对应于该关键值对应的点集中不同的点,从而能够降低计算量。
相同的关键值对应的关系值组中,对每个位的预设运算的结果用于指示该位对应的点与两个目标点之间的关系情况是否符合预设情况。
对相同的关键值对应的两个目标点的关系值组中的各个位分别进行的预设运算,可以并行进行。从而,可以提高计算效率。
进一步地,可以利用处理矩阵对第一目标点的至少一个键值对和第二目标点的至少一个键值对进行处理。
在S520,可以将所述第一目标点的至少一个键值对依次输入位于处理矩阵的第一边缘的多个所述处理单元,将所述第二目标点的至少一个键值对依次输入位于所述处理矩阵的第二边缘的多个所述处理单元,以确定所述相等关键值,所述处理矩阵包括v×v个处理单元,v为大于1的正整数,第一目标数据组中的第i个键值对在第j个输入周期输入位于第一边缘的至少一个所述处理单元中沿第二方向的第j个所述处理单元的,所述第二目标数据中的第p个键值对是在第q个输入周期输入位于第二边缘的至少一个所述处理单元中沿第一方向的第q个所述处理单元的,所述第一边缘与所述第二边缘相邻,所述第一方向为从所述第二边缘指向所述处理矩阵内部且垂直所述第二边缘的方向,所述第二方向为从所述第一边缘指向所述处理矩阵内部且垂直所述第一边缘的方向,每个处理单元用于确定输入所述处理单元的所述第一目标点的所述关键值与所述第二目标点的的所述关键值是否相等。
在S530,可以利用所述处理矩阵对所述相等关键值对应的所述第一目标点的所述关系值组和所述第二目标点的关系值组进行处理,以确定所述查询点,所述多个处理单元中的每个处理单元用于,在所述第一目标点的所述关键值与所述第二目标点的的所述关键值相等的情况下,根据输入所述处理单元的所述第一目标点的所述关系值组和所述第二目标点的关系值组,确定所述关系图中的查询点,所述查询点与所述两个目标点之间的关系情况符合预设情况。
所述多个处理单元中的每个处理单元还用于,按照所述输入周期,将所述第一目标点的所述键值对传输至沿所述第一方向的下一个所述处理单元,将第二目标点的所述键值对传输至沿所述第二方向的下一个所述处理单元。
处理矩阵可以理解为脉动阵列(systolic array),各个目标点的键值对按“流水”方式在处理矩阵的处理单元间有节奏地“流动”,所有的处理单元并行地对流经的数据进行处理可以提高处理速度,降低处理时间。
处理矩阵的具体结构可以参见图7至图15的说明。
每个处理单元可以具体用于:在所述第一目标点的所述关键值与所述第二目标点的的所述关键值不相等的情况下,将所述第一目标点的所述键值对传输至沿所述第一方向的下一个所述处理单元,将第二目标点的所述键值对传输至沿所述第二方向的下一个所述处理单元。
一个目标点的各个键值对中的关键值是不同的。在第一目标点的关键值对第二目标点的关键值不相等的情况下,处理单元对第一目标点、第二目标点的关键值进行传输。而在在第一目标点的关键值对第二目标点的关键值相等的情况下,不再进行键值对的传输。从而,可以不再将该相等的关键值与其他关键值进行比较,降低运算量。
在第一目标点的关键值对的数量大于v的情况下,仍然可以利用处理矩阵对第一目标点的关键值对和第二目标点的关键值对进行处理。具体地,可以参见图10和图15的说明。
图5是本申请实施例提供的一种生成关系图数据的方法的示意性流程图。生成关系图数据的方法600包括S601至S603。
关系图包括相互连接的多个点,以及用于连接点的边。关系图可以表示为关系图中各个点的邻居向量。每个邻居向量中包括相同的位数。每个点的邻居向量中的第i位用于表示该点与关系图中的第i个点是否存在关系。也就是所,邻居向量中的第i位对应于关系图中的第i个点。可以用“0”表示不存在关系,用“1”表示存在关系。
对于关系图110,点0对应的邻居向量为N(0)=01010011,点1对应的邻居向量为N(1)=10101110。
在S601,可以按照预设方式将邻居向量划分为多个组。
每个组包括的位数可以是相同的。
例如,可以按照邻居向量中各个位的序号除以某个除数的余数,将邻居向量划分为多个组,不同的组对应于不同的余数。该除数可以是预设值。
或者,可以按照从左到右的顺序,按照固定的位数对各个邻居向量进行划分。对于邻居向量的位数不能整除组的位数的情况,可以在邻居向量的最后补“0”,从而使得各个组的位数相同。
下面以按照位数2对邻居向量进行划分为例进行说明。
各个邻居向量中对应于点0和点1的位为一组,对应于对应于点2和点3的位为一组,以此类推,完成对邻居向量的划分。
划分后的邻居向量N(0)包括4个组,依次为01、01、00、11。划分后的邻居向量N(1)包括4个组,依次为10、10、11、11。
在S602,为每个组分配关键值(key)。
一个组的关键值也可以理解为该组的标识。不同的邻居向量划分后的组中,包括邻居向量中相同位的组,关键值相同。示例性地,每个组的关键值可以为该组在邻居向量划分后的多个组中的序号。
对N(0)划分得到4个组01、01、00、11对应的关键值分别为0、1、2、3。对N(1)划分得到4个组10、10、11、11对应的关键值分别为0、1、2、3。
每个点的关键值数组可以包括该组的多个关键值,关键值数组中的关键值对应的组的各个位不全为0。也就是说,在形成关键值数组时,舍弃各个位均为0的组对应的关键值。
点0的关键值数组可以包括0、1、3,点1的关键值数组可以包括0、1、2、3。
关键值数组中,各个关键值可以按照预设顺序排列。示例性地,关键值数组中,各个关键值可以按照升序或降序排列。下面以关键值数组中,各个关键值按照升序排列为例记性说明。
每个点对应的关键值数组中的一个关键值和该关键值对应的组可以理解为一个键值对(<key,value>pair,KVP)。也就是说,每个点的键值对可以为一个或多个。
在S603,生成行关系图数据。
关系图数据包括行偏移、关键值向量、关系值向量。
关系值向量包括关系图中各个点的关键值数组。关系值向量中的第j个关系值数组为关系图中第j个点的关系值数组。
行偏移用于指示关系图中各个点的关系值数组在关系值向量中的起始位置。行偏移也可以称为row数据。行偏移的第j个数指示了关系图中第j个点的关键值数组在关系值向量中的起始位置。
关系值向量包括各个关键值数组对应的组。关系值向量中组的顺序与关键值数组的顺序相同。关系值向量也可以称为value数据。
关键值向量也可以称为key数据。
关系图数据的数据格式可以称为使用压缩稀疏行的位图(bitmap withcompressed sparse row,BCSR)格式。
邻居矩阵包括多行,每一场用于表示一个点的邻居向量。通过方法600,可以实现对邻居矩阵的压缩。特别是在邻居矩阵中“0”的比例较高时,具有较好的压缩效果。
在图挖掘的过程中,需要计算两个点邻居集合的交集。对于通过方法600生成的关系图数据,可以利用图6所示的数据处理方法进行处理。
图6是本申请实施例提供的一种数据处理方法的示意性流程图。方法700包括S701至S702。
在S701之前,可以获取关系图数据。
关系图数据用于表示关系图中各个点之间是否存在关系。关系图数据包括行偏移、关键值向量、关系值向量。
在S701,根据关系图数据,确定两个点相等的关键值。
该两个点可以是根据子图模型确定的。
根据关系图数据,可以确定关系图中各个点的键值对,即确定各个点的关键值数组,以及各个点的关键值组中各个关键值对应的组。
对于关系图110的关系图数据,可以确定点0的关键值数组“0、1、3”,点1的关键值数组“0、1、2、3”。对于点0,关键值0对应的组为01,关键值1对应的组为01,关键值3对应的组为11。对于点1,关键值0对应的组为10,关键值1对应的组为10,关键值2对应的组为11,关键值3对应的组为10。
从而,对于点0和点1,相等的关键值包括0、1、3。
在S702,确定该两个点在每个相等的关键值对应的组中按照预设计算方式得到的计算结果中值为1的位。
不同的预设计算方式对应于与该两个点之间关系的不同情况。例如,两个点的共同邻居,即与两个点均存在关系的情况,预设计算方式为a·b,其中,a、b表示该两个点在某个位的值;与点A具有关系,与点B不具有关系的情况,预设计算方式为其中,a表示点A在某个位的值,/>表示对点B在该某个位的值取反。从而,计算结果为1的位,可以理解为与该两个点之间关系情况满足预设情况的位。下面,以确定两个点的共同邻居为例进行说明。
对于关键值0,点0对应的组为01,点1对应的组为10。对“01”和“10”进行按位比较,确定按位与运算结果为1的位。
示例性地,可以对两个点在每个相等的关键值对应的组进行按位与运算,计算结果为1的位即为与该两个均具有关系的点对应的位。
根据相等的关键值,可以确定该相等的关键值对应的点集。再根据该计算结果为1的位在所属的组中的位置,可以确定该位对应的关系图中的点。
示例性地,还可以获取对邻居矩阵的组的划分方式。根据对邻居矩阵的组的划分方式,以及包括计算结果为1的位的组对应的关键值,以及该计算结果为1的位在所属的组中的位置,确定该位对应的关系图中的点。
例如,对点0和点1在关键值为0对应的组、关键值为1对应的组、关键值为3对应的组分别进行比较,可以确定关键值为0和1对应的组不存在计算结果为1的位,关键值为3的组中计算结果为1的位为组中的第0位。关键值3对应的组在邻居矩阵中对应的组包括点6和点7,其中,第0位对应的点为点6。从而,可以确定点0和点1的共同邻居为点6。
通过方法700,通过确定两个点对应的关键值数组中相等的关键值,并确定两个点在每个相等的关键值对应的组中相等的位,可以确定两个点的共同邻居。
确定两个点对应的关键值数组中相等的关键值,可以利用图3所示的基于队列的集合合并实现。确定两个点在每个相等的关键值对应的组中相等的位,可以利用按位比较实现。
按位比较过程中,对多个位的值的比较可以并行进行,计算效率较高。
相比于对图2中CSR格式的数据中两个点对应的不同列索引部分进行比较,方法700中确定两个点对应的关键值数组中相等的关键值,能够有效减少需要进行比较的数的数量,提高处理效率。
上文结合图1至图6的描述了本申请实施例的方法实施例,下面结合图7至图10,描述本申请实施例的装置实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
图7是本申请实施例提供的一种数据处理装置的示意性结构图。
数据处理装置800包括处理矩阵(processing matrix,PM)810、过滤阵列(filterarray,FA)820、压缩三角(compact triangle,CT)830。
处理矩阵810包括v×v个处理单元(processing element,PE),用于对两个点的键值对进行处理。
每个点的键值对包括该点的关键值数组,以及各个关键值对应的组。处理矩阵810中最左侧的v个处理单元可以接收关系图中点A的多个键值对,不同的处理单元用于接收A的键值对中不同的键值对。处理矩阵810中最上侧的v个处理单元可以接收关系图中点B的多个键值对,不同的处理单元用于接收B的键值对中不同的键值对。点A和点B是不同的点。
最左侧的v个处理单元沿从上至下的顺序,在上一个处理单元接收键值对之后一个时钟周期后,下一个处理单元接收键值对。最上侧的v个处理单元沿从左至右的顺序,在上一个处理单元接收键值对之后一个时钟周期后,下一个处理单元接收键值对。
处理单元用于对接收的两个点的键值对中的关键值进行比较。也可以理解为,处理单元用于对接收的两个点的键值对中的关键值进行匹配。如果接收的两个点的键值对中的关键值相等,则可以认为该两个点的关键值匹配成功。
如果关键值相等,则处理单元对两个点的键值对中的组进行预设计算方式的计算,以确定组中符合该预设计算方式对应的关系情况的位,并输出该关键值以及计算结果输出。
如果关键值不相等,则处理单元对两个点的键值对中的组不再进行预设计算方式的计算比较,并在下一个时钟周期将从左侧相邻的处理单元接收的键值对传输至右侧的相邻的处理单元,将从上侧相邻的处理单元接收的关键值以及该关键值对应的组传输至下侧的相邻的处理单元。
如图8中的(a)所示,在时间点t0,点A的键值对A0输入从左侧第一行第一列的处理单元PE 0,点B的键值对B0从上侧输入PE 0。
PE 0对键值对A0与键值对B0中的关键值进行比较。如果键值对A0与键值对B0中的关键值相等,PE 0对键值对A0与键值对B0中的组的各个位进行预设计算方式的计算。PE 0对键值对A0和键值对B0不再进行传输。处理矩阵810可以将该相等的关键值以及计算结果输出。
如果键值对A0与键值对B0中的关键值不相等,PE 0可以不再对键值对A0与键值对B0中的组中进行预设计算方式的计算。
如图8中的(B)所示,PE 0可以在时间点t1将键值对A0传输至右侧即第一行第二列的PE 1,将键值对B0传输至下侧即第二行第一列的PE 2。并且,在时间点t1,点A的键值对A1输入从左侧第二行第一列的处理单元PE 2,点B的键值对B1从上侧输入PE1。
从而,PE 1可以对键值对A0与键值对B1中的关键值进行比较。如果键值对A0与键值对B1中的关键值相等,PE 1对键值对A0与键值对B1中的组中的各个位进行进行预设计算方式的计算。PE 1对键值对A0和键值对B1不再进行传输。处理矩阵810可以将该关键值以及计算结果输出。
如果键值对A0与键值对B1中的关键值不相等,PE 1可以不再确定键值对A0与键值对B1中的组中相等的位,并可以在时间点t2将键值对A0传输至右侧的PE,将键值对B1传输至下侧的PE 3。如果PE 1右侧不存在其他PE,则PE 1可以可以删除从左侧接收的键值对,即删除键值对A0。
PE 2可以对键值对A1与键值对B0中的关键值进行比较。如果键值对A1与键值对B0中的关键值相等,PE 2对键值对A1与键值对B0中的组各个位进行进行预设计算方式的计算。PE 2对键值对A1和键值对B0不再进行传输。处理矩阵810可以将该相等的关键值以及对各个位计算结果输出。
如果键值对A1与键值对B0中的关键值不相等,PE 2可以不再对键值对A1与键值对B0中的组进行预设计算方式的计算,并可以在时间点t2将键值对A1传输至右侧的PE3,将键值对B1传输至下侧的PE。如果PE 2下侧不存在其他PE,则PE 2可以可以删除从上侧接收的键值对,即删除键值对B0。
如果键值对A0与键值对B1、键值对A1与键值对B0中的关键值均不相等,则在时间点t2,键值对A1与键值对B1传输至PE 3,从而,PE 3可以对键值对A1与键值对B1中的关键值进行比较。
图9是本申请实施例提供的一种处理单元的示意性结构图。
处理单元1000包括比较单元1010和计算单元1020。
比较单元1010用于比较从上方输入的关键值kt与从左侧输入的关键值kl。比较单元1010可以理解为键值比较器。
计算单元1020用于,在关键值kt与关键值kl相等的情况下,对从上方输入的组vt与从左侧输入的组vl的各个位分别进行预设计算方式的计算。
在关键值kt与关键值kl相等的情况下,处理单元1000的输出数据可以包括关键值kt以及对从上方和从左侧输入处理单元1000的两个组的各个位分别进行计算的结果。处理单元1000的输出数据可以传输至位于处理单元1000右侧的处理单元。
比较单元1010还可以接收从左侧输入的有效指示1。有效指示1用于指示处理单元1000所在行位于处理单元1000左侧的处理单元对输入该行的点A的关键值是否与点B的关键值匹配成功。
在处理单元1000接收的有效指示1指示匹配成功的情况下,处理单元1000中的比较单元1010、计算单元1020可以不再进行运算。从而,可以降低计算量。
处理单元1000还可以输出有效指示2。在有效指示1指示匹配成功,或关键值kt与kl相等的情况下,处理单元100输出的有效指示2指示处理单元1000所在行已经匹配成功。处理单元1000输出的有效指示2可以传输至处理单元1000右侧的处理单元。示例性地,有效指示1、有效指示2为“1”,可以表示匹配成功;反之,有效指示1、有效指示2为“0”,可以表示未匹配成功。
也就是说,在有效指示1指示未匹配成功的情况下,处理单元1000可以接收上方输入的关键值kt、组vt,以及从左侧输入的关键值kl、组vl。比较单元1010用于对关键值kt与关键值kl进行比较。
在关键值kt与关键值kl不相等的情况下,处理单元1000输出的有效指示2有关于指示未匹配成功。
在关键值kt与关键值kl相等的情况下,计算单元1020用于,对组vt与组vl的各个位分别进行预设计算方式的计算。在关键值kt与关键值kl相等的情况下,处理单元1000输出的有效指示2有关于指示匹配成功,并且,处理单元1000输出匹配成功的关键值以及组的计算结果。
在有效指示1指示匹配成功的情况下,处理单元1000可以接收左侧处理单元输出的关键值以及组的计算结果,并输出指示信息2以指示匹配成功,并输出该关键值以及组的计算结果。
点A和/或点B的键值对的数量可能超过v个。在点A、点B中各个或多个点的键值对的数量可能超过v个的情况下,可以将超过v个的键值对划分为多个键值对集合,每个键值对集合中键值对的数量不超过v。
从而,某些键值对集合需要多侧输入处理矩阵810,存在某个键值对集合需要与其他多个键值对集合中的关键值进行比较的情况,如图10所示。
处理矩阵810可以包括3×3个处理单元,点A的关键值包括1、4、7、8、10等,点B的关键值包括1、2、3、4、5、6、7、8、9等。
将点A的多个键值对、点B的多个键值对分别按照从关键值小到大排列,并按照每个键值对集合中包括3个键值对的方式分别对点A的多个键值对、点B的多个键值进行划分。点A的2个关键值集合中关键值分别为1、4、7和8、10,点B的3个关键值集合中关键值分别为1-3、4-6和7-9。
首先,利用处理矩阵810,对点A的多个键值对集合中关键值最小的关键值集合、点B的多个键值对集合中关键值最小的键值对集合进行处理,也就是将包括关键值1、4、7的点A的键值对集合、包括关键值1-3的点B的键值对集合分别从左侧和上侧输入处理矩阵810,如图10所示。
之后,可以对输入处理矩阵810的两个键值对集合中最大的关键值进行大小比较。
分别属于两个键值对集合的两个最大关键值大小不相等的情况下,将两个最大关键值中较大的关键值所属的键值对集合再次输入处理矩阵810,并将另一个点的下一个最小关键值的键值对集合输入处理矩阵810。
如图10所示,点A的键值对集合中关键值7大于点B的键值对集合中的关键值3,将包括关键值1、4、7点A的键值对集合、包括关键值4-6的点B的键值对集合,分别从左侧和上侧输入处理矩阵810。
包括关键值1、4、7的点A的键值对集合、包括关键值1-3的点B的键值对集合在同一个时钟周期开始输入处理矩阵810。包括关键值1、4、7的点A的键值对集合、包括关键值4-6的点B的键值对集合也是在同一个时钟周期开始输入处理矩阵810。
应当理解,从包括关键值1-3的点B的键值对集合开始输入处理矩阵810的时间,到包括关键值4-6的点B的键值对集合开始输入处理矩阵810的时间,之间的时间差可以是一个或多个时钟周期。
过滤阵列820可以用于对某个键值对集合与其他多个键值对集合中的关键值进行比较的结果进行合并,从而输出对应于该某个键值对的中间结果。
过滤阵列820包括v个过滤单元(filter unit,FU)。示例性地,每个过滤单元可以对应于处理矩阵810中的一行。在处理矩阵810左侧重复输入某个键值对集合的情况下,过滤阵列820用于将该键值对集合与其他多个键值对集合进行关键值比较的结果进行合并。
另外,过滤单元还可以用于根据组vt与组vl的各个位的计算结果,确定是否存在符合预设关系情况的点。符合预设关系情况的点,即计算结果为1的位对应的点。
图11是本申请实施例提供的一种过滤单元的示意性结构图。
过滤单元1200包括逻辑处理单元1210、有效指示更新单元1220、有效指示寄存器1230、结果寄存器1240。
逻辑处理单元1210用于确定过滤单元1200对应的处理矩阵810的行中处理单元1000输出的对组的计算结果是否为全“0”。
在确定对组的计算结果为全“0”的情况下,可以认为该行的数据无效。在对组的计算结果为全“0”的情况下,逻辑处理单元1210可以输出“0”;反之,在对组的计算结果为不全“0”的情况下,逻辑处理单元1210可以输出“1”。
有效指示更新单元1220可以接收逻辑处理单元1210的输出,以及过滤单元1200对应的处理矩阵810的行中最后一个处理单元1000输出的有效指示2。
在该逻辑处理单元1210对应的处理矩阵810的行中最后一个处理单元1000输出有效指示2为“0”(即指示过滤单元1200对应的处理单元1000的行对关键值未匹配成功的),或逻辑处理单元1210输出“0”的情况下,有效指示更新单元1220输出的结果为“0”,即指示输出无效。
有效指示寄存器1230用于存储有效指示更新单元1220输出的结果。
结果寄存器1240用于在逻辑处理单元1210输出为“1”的情况下,存储组的计算结果。
过滤单元1200还可以获取信号F与信号L。信号F与信号L可以存储在寄存器中。信号F的初始值为1,信号L的初始值为0。
在将点A的键值对集合从左侧输入处理矩阵810,将点B的键值对集合从上方输入处理矩阵810之后,可以确定点A的键值对集合中最大关键值与点B的键值对集合中最大关键值之间的大小关系。
示例性地,键值对集合输入周期可以等于每个键值对集合中各个键值对输入处理矩阵的周期的v倍。在点A对应的最大关键值大于点B对应的最大关键值的情况下,信号F被设置为在下一个键值对集合输入周期值为“0”,信号L被立刻设置为“0”;反之,信号F被设置为在下一个键值对集合输入周期值为“1”,信号L被立刻设置为“1”。
或者,在点A对应的最大关键值大于点B对应的最大关键值的情况下,信号F被设置为在下一个键值对集合输入周期值为“0”,信号L被立刻设置为“0”;在点A对应的最大关键值等于点B对应的最大关键值的情况下,信号F被设置为在下一个键值对集合输入周期值为“1”,信号L被立刻设置为“0”;在点A对应的最大关键值小于点B对应的最大关键值的情况下,信号F被设置为在下一个键值对集合输入周期值为“1”,信号L被立刻设置为“1”。
根据值为“0”的信号F输入处理矩阵810的点A的键值对集合是重复输入的。有效指示更新单元1220可以根据逻辑处理单元1210的输出、过滤单元1200对应的处理矩阵810的行中最后一个处理单元1000输出的有效指示2、以及有效指示寄存器1230中存储的结果,对有效指示3进行更新。
根据逻辑处理单元1210的输出、过滤单元1200对应的处理矩阵810的行中最后一个处理单元1000输出的有效指示2,可以确定新的有效指示结果。在逻辑处理单元1210的输出、过滤单元1200对应的处理矩阵810的行中最后一个处理单元1000输出的有效指示2均为“1”的情况下,新的有效指示结果可以是有效,即有效指示3指示有效;反之,在逻辑处理单元1210的输出、过滤单元1200对应的处理矩阵810的行中最后一个处理单元1000输出的有效指示2中的任一个为“0”的情况下,新的有效指示结果可以是无效,即有效指示3指示无效。
在有效指示寄存器1230中存储的结果可以理解为历史有效指示结果。
在新的有效指示结果与历史有效指示结果中任一个为有效的情况下,有效指示更新单元1220输出的结果可以是“1”,即指示有效。也就是所,可以对新的有效指示结果与历史有效指示结果进行与运算。
有效指示寄存器1230用于存储有效指示更新单元1220输出的结果,实现对有效指示寄存器1230的输出(即有效指示3)的更新。
在逻辑处理单元1210输出为“1”的情况下,过滤单元1200将新的组的计算结果写入结果寄存器1240。
信号L设置为“1”的情况下,输入处理矩阵810的点A的键值对集合是最后一次输入处理矩阵810。因此,在信号L设置为“1”的情况下,可以在过滤单元1200完成对结果寄存器1240中存储的组的计算结果的更新之后,结果寄存器1240可以输出存储的数据。
示例性地,在信号L设置为“1”的情况下,如果有效指示寄存器1230中存储的有效指示结果为“1”,则结果寄存器1240输出存储的数据。反之,如果有效指示寄存器1230中存储的有效指示结果为“0”,则结果寄存器1240可以不进行数据输出。
之后,结果寄存器1240和有效指示寄存器1230可以清空存储的数据。
在下一个键值对集合输入周期,如果信号F为“1”,则在该周期输入处理矩阵810的点A的键值对集合是非重复输入的。结果寄存器1240可以在信号F为“1”的情况下可以进行初始化。
在一些实施例中,初始化可以是结果寄存器1240存储的数据清空。
在另一些实施例中,初始化可以是在该过滤单元1200对应的处理矩阵的行输入的点A的键值对中的组写入结果寄存器1240。从而,在逻辑处理单元1210输出为“1”的情况下,可以将新的组的计算结果与结果寄存器1240中的数据进行与运算,从而实现对组的计算结果的更新。
信号L设置为“1”的情况下,输入处理矩阵810的点A的键值对集合是还需要再次输入处理矩阵810。过滤单元1200的输出为无效状态。
数据处理装置800还可以包括控制器(未示出)。控制器用于设置信号F和信号L。
压缩三角830包括形成直角三角形的v×(v+1)/2个压缩单元(compaction unit,CU),用于对过滤阵列820输出的数据进行压缩。
在压缩三角830中,第一行中的压缩单元为1个,从上到下的每一行压缩单元的数量逐渐减小,相邻两行间压缩单元的数量相差一个。
如图12所示,压缩三角830的每一行对应于过滤矩阵820中的一个过滤单元。
对于压缩三角830的每一行,在对应的过滤单元没有输出有效数据的情况下,压缩三角830的该行中的每个压缩单元接收该压缩单元上方的压缩单元中的数据;在对应的过滤单元输出有效数据的情况下,压缩三角830的该行中最左侧的压缩单元用于接收该过滤单元输出的点A和点B相等的关键值以及该关键值对应的组的计算结果,其他压缩单元接收该压缩单元左上方的压缩单元中的数据。
在过滤单元输出的有效指示3为“1”的情况下,可以理解为过滤单元输出有效数据。
图13是本申请实施例提供的一种压缩单元的示意性结构图。
压缩单元1400包括接口1401、接口1402、接口1403、寄存器1404。
接口1401用于连接压缩单元1400上方的压缩单元。接口1402用于连接压缩单元1400左上方的压缩单元。接口1403用于接收压缩单元1400所在行对应的过滤单元输出的有效指示3。
在有效指示3为“1”的情况下,接口1401将压缩单元1400上方的压缩单元中的数据存储在寄存器1404中。在有效指示3为“0”的情况下,接口1402将压缩单元1400左上方的压缩单元中的数据存储在寄存器1404中。
示例性地,过滤矩阵820中第1、3、4个过滤单元输出有效数据,其中,第1个过滤单元输出的有效数据包括关键值1以及关键值1对应的组的计算结果,第3个过滤单元输出的有效数据包括关键值3以及关键值3对应的组的计算结果,第4个过滤单元输出的有效数据包括关键值9以及关键值9对应的组的计算结果.
压缩三角830中的第1、3、4行分别对应于第1、3、4个过滤单元。压缩三角830中的第1、2、3、4行中压缩单元的数量分别为1、2、3、4。
第1个过滤单元输出有效数据。压缩三角830中第1行的压缩单元接收第1个过滤单元输出的有效数据。
第2个过滤单元未输出的有效数据。压缩三角830中第2行的各个压缩单元从压缩三角830中第1行中位于该过滤单元上方的压缩单元获取数据。压缩三角830中第2行的第1个压缩单元获取第1行的压缩单元中的数据;第2行的第1个压缩单元上方不存在压缩单元,不进行数据获取。
第3个过滤单元输出有效数据。压缩三角830中第3行第1个(即第3行最左侧)压缩单元接收第3个过滤单元输出的有效数据。压缩三角830中第3行其他压缩单元从压缩三角830中第2行中位于该过滤单元左上方的压缩单元获取数据,即压缩三角830中第3行的第2、3个压缩单元分别获取第2行的2个压缩单元中的数据。
第4个过滤单元输出有效数据。压缩三角830中第4行第1个压缩单元接收第4个过滤单元输出的有效数据。压缩三角830中第4行其他压缩单元从压缩三角830中第2行中位于该过滤单元左上方的压缩单元获取数据,即压缩三角830中第4行的第2-4个压缩单元分别获取第3行的3个压缩单元中的数据。
由此方式,压缩三角830最下方一行的压缩单元可以将获取的数据输出,从而,输出结果即为压缩后的数据。
如图14所示,处理矩阵810中,对于任意一行,从第1列的处理单元接收数据(即接收点A和点B的键值对),到第v列的处理单元接收数据(接收的数据可以是点A和点B的键值对,也可以是键值对和该键值对对应的组的计算结果)需要经过v个时钟周期(clockcycles,CCs)。而从第1行第1列的处理单元数据输入,到第v行第1列的处理单元数据输入也需要经过v个时钟周期。
过滤矩阵820中,各个过滤单元均利用一个时钟周期对该过滤单元对应的处理矩阵810的行输出的数据进行过滤。
压缩三角830中,从第一行接收数据到最后一行输出数据需要经过v个时钟周期,从最后一行接收数据到最后一行输出数据需要经过1个时钟周期。
从而,压缩三角830可以将各个行对应的数据在同一时钟周期输出。
数据处理装置800可以基于双列直插式存储模块(dual inline memory module,DIMM)实现,例如可以设置在中低负载双列直插式存储模块(load reduced dual inlinememory module,LRDIMM),从而形成近存储计算架构。
数据处理装置800还可以包括计数单元。计数单元用于对符合要求的子图进行计数。
也就是说,计数单元可以记录压缩三角830输出的关键值的数量。并且,对于不同的输入数据,计数单元可以累计计数。
计数单元可以包括加法器和寄存器。
图15是本申请实施例提供的一种数据处理系统的示意性结构图。
数据处理系统1600包括控制器1610和处理矩阵1620。
处理矩阵1620包括v×v个处理单元,v为大于1的正整数。
控制器1610用于,将关系图的两个目标点中第一目标点的至少一个键值对沿第二方向按照输入周期依次输入位于所述处理矩阵1620的第一边缘的多个所述处理单元,将所述两个目标点中第二目标点的至少一个键值对沿第一方向按照所述输入周期依次输入位于所述处理矩阵1620的第二边缘的多个所述处理单元。
输入周期可以是时钟周期,也可以是时钟周期的正整数倍。
所述第一目标点的至少一个键值对与所述第二目标点的至少一个键值对是在同一个所述输入周期开始输入所述处理矩阵的。
所述第一边缘与所述第二边缘相邻,所述第一方向为远离所述第二边缘的方向,所述第二方向为远离所述第一边缘的方向。第一边缘与第二边缘可以理解为处理矩阵1620的两个相邻的边。
所述目标点的每个键值对包括所述目标点的关键值和所述关键值对应的所述目标点的关系值组,不同的所述关键值对应于所述关系图中不同的点集,所述目标点的关键值对应的所述目标点的关系值组用于指示所述目标点与所述关键值对应的点集中的每个点是否具有关系,在所述目标点的每个键值对中所述关键值对应的点集中存在与所述目标点具有关系的点。
所述多个处理单元中的每个处理单元用于:确定输入所述处理单元的所述第一目标点的所述关键值与所述第二目标点的的所述关键值是否相等。
每个处理单元还用于:在所述第一目标点的所述关键值与所述第二目标点的的所述关键值相等的情况下,根据输入所述处理单元的所述第一目标点的所述关系值组和所述第二目标点的关系值组,确定所述关系图中的查询点,所述查询点与所述两个目标点之间的关系情况符合预设情况。
每个处理单元还用于:按照所述输入周期,将所述第一目标点的所述键值对传输至沿第一方向的下一个所述处理单元,将第二目标点的所述键值对传输至沿第二方向的下一个所述处理单元,所述第一方向与所述第一边缘垂直,所述第二方向与所述第二边缘垂直。
处理矩阵1620可以理解为脉动阵列结构(systolic array architecture)。在脉动阵列结构中,数据按预先确定的“流水”方式在阵列的处理单元间有节奏地“流动”。在数据流动的过程中,所有的处理单元同时并行地对流经它的数据进行处理,因而它可以达到很高的并行处理速度。
可选地,所述多个处理单元中的每个处理单元具体用于:在所述第一目标点的所述关键值与所述第二目标点的的所述关键值不相等的情况下,将所述第一目标点的所述键值对传输至沿所述第一方向的下一个所述处理单元,将第二目标点的所述键值对传输至沿所述第二方向的下一个所述处理单元。
一个目标点的各个键值对中的关键值是不同的。在第一目标点的关键值对第二目标点的关键值不相等的情况下,处理单元对第一目标点、第二目标点的关键值进行传输。而在在第一目标点的关键值对第二目标点的关键值相等的情况下,不再进行键值对的传输。从而,可以不再将该相等的关键值与其他关键值进行比较,降低运算量。
可选地,控制器1610还用于,根据关系图数据,确定所述第一目标点的至少一个键值对和第二目标点的至少一个键值对,所述关系图数据包括行偏移向量、关键值向量、关系值向量,所述关键值向量包括所述关系图中多个点中每个点的至少一个关键值,所述行偏移向量用于指示每个点的至少一个关键值在所述关键值向量中的位置,所述关系值向量包括所述多个点中每个点的关键值对应的点的关系值组,每个点的至少一个关键值在所述关键值向量中的顺序与所述每个点的关键值对应的点的关系值组在所述关系值向量中的顺序相同。
可选地,不同的所述关键值对应的所述点集中点的数量相等。
可选地,所述多个处理单元中的每个处理单元用于:在所述第一目标点的所述关键值与所述第二目标点的的所述关键值相等的情况下,对所述相等关键值对应的所述第一目标点的所述关系值组和所述第二目标点的关系值组的各个位分别进行预设运算,每个关键值对应的不同的所述点的所述关系值组中相同的位对应于所述关键值对应的所述点集中相同的所述点,每个位的所述预设运算的结果用于指示所述位对应的所述点与所述两个目标点之间的关系情况是否符合预设情况。
可选地,所述第一目标点的至少一个键值对的数量大于v,控制器1610还用于,
按照所述键值对中关键值的大小顺序,将所述第一目标点的至少一个键值对划分为多个第一键值对组,并将所述第二目标点的至少一个键值对划分为至少一个第二键值对组,所述多个第一键值对组和所述至少一个第二键值对组中的每个键值对组中所述键值对的数量小于或等于v,其中,所述多个第一键值对组中关键值最小的键值对组为第三键值对组,所述多个第二键值对组中关键值最小的键值对组为所述第四键值对组。
控制器1610还用于,进行多次迭代,直到所述第三键值对组中的最大关键值大于所述第四键值对组中的最大关键值。
每次迭代包括:将所述第三键值对组中的多个所述键值对按照输入周期依次输入所述多个处理单元中的位于第一边缘的多个所述处理单元,将所述第四键值对组中的多个所述键值对按照输入周期依次输入所述多个处理单元中的位于第一边缘的多个所述处理单元;在所述第三键值对组中最大的关键值小于所述第四键值对组中最大的关键值的情况下,将按照关键值从小到大顺序排列的所述多个所述第一键值对组中所述第三键值对组的下一个第一键值对组作为所述第三键值对组。
所述控制器具体用于,在进行所述多次迭代之前以及每次迭代之后,将所述第三键值对组的多个键值对按照所述输入周期依次输入位于所述处理矩阵的第一边缘的多个所述处理单元,将所述第四键值对组的多个键值对按照所述输入周期依次输入所述多个处理单元中的位于所述处理矩阵的第二边缘的多个所述处理单元。
在某个目标点的键值对的数量大于处理矩阵中一个边缘的键值对数量的情况下,可以按照该某个目标点的键值对中关键值的大小,对该目标点的键值对进行分组。之后,可以按照关键值从小到大的顺序,选取关键值最小的键值对组输入处理矩阵。在该某个目标点输入处理矩阵的键值对组中的最大关键值小于另一个目标点输入处理矩阵的键值对组的最大关键值的情况下,将该某个目标点的下一个键值对组输入处理矩阵,与该另一个目标点再次输入处理矩阵的键值对组进行比较。
从而,在目标点的键值对的数量大于处理矩阵中一个边缘的键值对数量的情况下,降低运算量。
数据处理系统1600中的处理矩阵1620的结构具体可以参见图7至图9的说明。装置1600还可以包括图7所示的过滤阵列820、压缩三角830。
图16是本申请实施例提供的一种数据处理系统的示意性结构图。
数据处理系统1700包括装置800和存储器1710。其中,存储器用于存储关系图数据和装置800对关系图数据进行处理得到的处理结果。
装置800可以是ASIC。存储器1710可以理解为装置800的片外存储器。示例性地,存储器1710可以是装置800的片外内存。
因此,数据处理系统1700可以理解为存算分离的计算系统。
图17是本申请实施例提供的一种数据处理系统的示意性结构图。
数据处理系统1800包括地址索引模块1810、两个存储等级(rank)级近存储计算单元(near memory computing,NMC)1820、存储模块1830。
存储模块1830可以包括多个动态随机存取存储器(dynamic random accessmemory,DRAM)芯片(chip)1831。
在采用8字节(x8)DRAM chip的情况下,存储模块1830中x8 DRAM chip的数量可以是8个,半个rank为一个NMC提供数据(32字节(byte))。也就是说,一个rank的64byte数据被拆分为两个32byte,分别为一个NMC提供数据。
地址索引模块1810可以是注册时钟驱动器(registering clock driver,RCD)。
存储模块1830可以包括KVP数据区、KVP地址索引区和结果数据区。
KVP数据区用于存储关系图中各个点的KVP。关系图中各个点的KVP可以是根据关系图数据确定的。关系图数据包括行偏移向量、关键值向量和关系值向量确定的。
示例性地,各个点的KVP可以存储为32位(bit),其中,关键值可以位于该32位中较低的位,关键值对应的关系值组可以位于该32位中较高的位。32位即4字节,一个x8 DRAMchip可以同时输出两个节点的键值对。
KVP地址索引区用于存储行偏移(row数据)。KVP地址索引区中存储的行偏移可以是关系图数据中的行偏移向量。也就是说,行偏移中的各个数以索引地址的形式存在KVP地址索引区中。关系图中的每个点对应于行偏移中的一个偏移信息。根据每个点的偏移信息,可以确定该点的KVP在KVP数据区的索引地址。
结果数据区用于存储NMC 1820的中间计算结果、最终计算结果等。示例性地,结果数据区可以包括有效指示各个过滤单元1200的寄存器1230和结果寄存器1240、各个压缩单元1400的寄存器1404等。
在需要确定关系图中与两个目标点具有某种关系情况的查询点的情况下,地址索引模块1810用于确定根据每个目标点在行偏移中的序号,确定该目标点的KVP的索引地址。
行偏移中的各个数可以是连续存储的。行偏移中的每个数对应于关系图中的一个点。地址索引模块1810可以基于基地址+目标点的序号×偏移量的方式确定该点的索引地址。
索引地址可以包括芯片选择(chip select,CS)信号与指令地址信号(command/address,C/A)。
NMC 1820可以根据索引地址确定该点的KVP在KVP数据区中存储的位置。NMC1820可以执行方法500、方法700。NMC 1820可以包括数据处理装置800,或者,NMC 1820可以是数据处理系统1600。NMC 1820可以称为DIMMining。
数据处理系统1800可以是LRDIMM。
数据处理系统1800是在不改变LRDIMM传统存储功能、不修改动态随机存取存储器(dynamic random access memory,DRAM)芯片(chip)内部电路的前提下实现的。
由于多个rank之间、同一个rank内不同NMC完全并行且不占用外部带宽,理论情况下数据处理系统1800的有效带宽利用率可以达到一个通道中rank数量的2倍。
示例性地,NMC 1820包括控制器、数据转发单元和数据处理装置800。
存储模块1830还可以包括数据缓存(data buffer,DB)、缓存(cache)等。
示例性地,关系图中各个点的KVP可以存储在DRAM chip中,在计算过程中,关系图中各个点的KVP可以加载到DB中。
由于关系图的不规则,部分点对应的数据会被频繁访问。因此,可以将频繁访问的点的KVP可以存储在cache中。示例性地,当某个点KVP的访问频率高于第一预设值,可以将该点的KVP可以存储在cache中;当某个点KVP的访问频率低于第二预设值,可以将该点的KVP可以从cache中删除。第二预设值可以小于或等于第一预设值。某个点KVP的访问频率可以是根据一段时间内的访问次数确定的。该一段时间的时间长度可以是预设的。
数据转发单元(data forwarding)用于获取DRAM chip、DB或缓存(cache)中的数据,并将该数据输入数据处理装置800的处理阵列810。
本申请实施例提供的数据处理系统1800,基于DIMM的近存储图挖掘计算架构,可以实现内存rank级的并行计算。多个DIMM rank可以并行进行读数和计算,能够提高运算效率。并且,并且与数据处理系统1700相比,数据处理系统1800避免了CPU和内存之间频繁的数据搬运,而且多个rank无需竞争内存总线的使用权。因此,近存储计算架构相比于传统CPU+内存的存算分离架构可以取得显著的性能提升。
图18是本申请实施例提供的数据处理系统的性能对比的示意图。
为分别确定关系图中子图模型为三节点全连接(clique finding,CF)、四节点全连接(4CF)、五节点全连接(5CF)和3节点链(motif counting,MF)的子图,利用系统1700和系统1800分别对关系图中各个点的键值对进行处理。以利用系统1700进行处理所需的总时间为1,利用系统1800进行处理所需的总时间如图18所示。关系图1和关系图2为不同的关系图数据。
可以看出,系统1700、系统1800在运行过程中,进行DRAM访问、缓存访问以及运算所需的时间几乎相同。与系统1700相比,系统1800避免了CPU和内存之间频繁的数据搬运,降低了通信的时间,可以取得显著的性能提升。
图20是本申请实施例提供的一种数据处理装置的控制装置的示意性结构图。
数据处理装置的控制装置2000可以包括获取模块2010和处理模块2020。
获取模块2010用于,获取第一目标数据组和第二目标数据组,所述第一目标数据组为第一数据集合的多个第一数据组中的第一个数据组,所述第二目标数据组为第二数据集合的至少一个第二数据组中的第一个数据组,所述第一数据集合和所述第二数据集合的每个数据集合中的每个数据组包括至少一个数据,每个数据包括关键值,每个数据集合中的所述数据组是按照第一顺序或第二顺序排列的,在按照所述第一顺序排列的情况下每个数据集合中任一个所述数据组中的每个关键值均小于位于所述任一个数据组之后的数据组中每个关键值,在按照所述第二顺序排列的情况下每个数据集合中任一个所述数据组中的每个关键值均大于位于所述任一个数据组之后的数据组中每个关键值。
处理模块2020用于,进行多次迭代。
每次迭代包括,将所述第一目标数据组和所述第二目标数据组输入所述数据处理装置,所述数据处理装置用于确定所述第一目标数据组和所述第二目标数据中相等的所述关键值。
每次迭代还包括,在每个数据集合中的所述数据组按照所述第一顺序排列,且第一关键值小于或等于第二关键值的情况下,或者,在每个数据集合中的所述数据组按照所述第二顺序排列,且第三关键值大于或等于第四关键值的情况下,获取所述第一数据集合中位于所述第一目标数据组之后的第一数据组作为所述第一目标数据组,所述第一关键值为所述第一目标数据组中最大的关键值,所述第二关键值为所述第二目标数据组中最大的关键值,所述第三关键值为所述第一目标数据组中最小的关键值,所述第四关键值为所述第二目标数据组中最小的关键值。
可选地,至少一个第二数据组的数量为多个。
在每个数据集合中的所述数据组按照所述第一顺序排列,且所述第一关键值大于或等于所述第二关键值的情况下,或者,在每个数据集合中的所述数据组按照所述第二顺序排列,且所述第三关键值小于或等于所述第四关键值的情况下,获取所述第二数据集合中位于所述第二目标数据组之后的第二数据组作为第二目标数据组。
可选地,所述数据处理装置包括处理矩阵,所述处理矩阵包括v×v个处理单元,v为正整数,第一目标数据组和第二目标数据组中每个目标数据组中至少一个数据的数量小于或等于v。
所述将所述第一目标数据组和所述第二目标数据组输入所述数据处理装置,包括:将所述第一目标数据组和第二目标数据组按照输入规则输入处理矩阵,所述输入规则使得所述第二目标数据组中的至少一个所述数据是沿第一方向按照输入周期依次输入位于第二边缘的所述处理单元的,所述第一目标数据组中的至少一个所述数据是沿第二方向按照所述输入周期依次输入位于第一边缘的所述处理单元的,所述第一目标数据组与所述第二数据组是在同一个所述输入周期开始输入的,所述第一边缘与所述第二边缘相邻,所述第一方向为远离所述第二边缘的方向,所述第二方向为远离所述第一边缘的方向。
所述处理矩阵中的每个处理单元用于,确定在同一个所述输入周期输入所述处理单元的第一数据中的所述关键值与第二数据中的所述关键值是否相等,所述第一数据为属于所述第一目标数据组的所述数据,所述第二数据为属于所述第二目标数据组的所述数据。
在v大于1的情况下,所述处理矩阵中的每个处理单元还用于,在接收所述第一数据和所述第二数据的下一个输入周期,将所述第一数据传输至沿所述第一方向的下一个所述处理单元,将所述第二数据传输至沿所述第二方向的下一个所述处理单元。
可选地,每个数据集合中不同的数据中的所述关键值不同,所述处理矩阵中的每个处理单元用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值不相等的情况下,将所述第一数据传输至沿所述第一方向的下一个所述处理单元,并将所述第二数据传输至沿所述第二方向的下一个所述处理单元。
可选地,所述数据处理装置还包括过滤矩阵,所述过滤矩阵包括v个过滤单元,所述v个过滤单元分别位于所述处理矩阵沿所述第一方向的v行中每一行沿所述第二方向的最后一个处理单元之后。
所述处理矩阵中的每个处理单元还用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值相等的情况下,在接收所述第一数据和所述第二数据的下一个所述输入周期,将所述处理单元的处理结果沿所述第二方向传输至下一个单元,所述单元为所述处理单元或所述过滤单元,所述处理结果包括相等的所述关键值;或者,在接收所述处理结果的下一个所述输入周期,将所述处理结果沿所述第二方向传输至下一个单元。
处理模块2020还用于,在所述第一关键值大于或等于所述第二关键值的情况下,控制沿所述第一方向的所述v个过滤单元按照所述输入周期依次输出所述第二目标数据组对应的所述处理结果。
可选地,所述数据处理装置还包括压缩三角矩阵,所述压缩三角矩阵包括沿所述第一方向的v行压缩单元,沿所述第一方向所述压缩单元的数量逐行增加。
所述多个压缩单元中的每个压缩单元用于,接收沿所述第二方向所述压缩单元之前的所述过滤单元输出的所述处理结果,或者,接收沿所述第一方向上一行的所述压缩单元输出的所述处理结果。
所述多个压缩单元中的每个压缩单元还用于,在接收所述处理结果的下一个所述输入周期,向沿所述第一方向下一行的所述压缩单元传输所述处理结果。
可选地,不同的所述关键值对应于关系图中不同的点集,所述第一数据用于表示关系图中第一目标点与所述第一数据中的所述关键值对应的所述点集中的至少一个点之间是否具有关系,所述第二数据用于表示关系图中第二目标点与所述第二数据中的所述关键值对应的所述点集中的至少一个点之间是否具有关系。
每个处理矩阵还用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值相等的情况下,输出处理结果,所述处理结果用于指示所述关系图中的查询点,所述查询点与所述两个目标点的之间的关系情况符合预设情况。
可选地,所述第一数据还包括所述关键值对应的所述第一目标点的第一关系值组,所述第二数据还包括所述关键值对应的所述第二目标点的第二关系值组。
所述处理矩阵中的每个处理单元还用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值相等的情况下,对所述第一关系值组和所述第二关系值组的各个位分别进行预设运算,相等的所述关键值对应的所述第一关系值组和第二关系值组中相同的位对应于所述相等的关键值对应的所述点集中相同的所述点,每个位的所述预设运算的结果用于指示所述位对应的所述点与所述两个目标点之间的关系情况是否符合所述预设情况。
可选地,在每个数据集合中的所述数据组按照所述第一顺序排列的情况下,每个第一数据组中的所述关键值从小到大排列;在每个数据集合中的所述数据组按照所述第二顺序排列的情况下,每个第一数据组中的所述关键值从大到小排列。
在另一些实施例中,装置2000还可以是数据处理装置。
获取模块2010用于,获取关系图中两个目标点中第一目标点的至少一个键值对和第二目标点的至少一个键值对,所述目标点的每个键值对包括所述目标点的关键值和所述关键值对应的所述目标点的关系值组,不同的所述关键值对应于所述关系图中不同的点集,所述目标点的关键值对应的所述目标点的关系值组用于指示所述目标点与所述关键值对应的点集中的每个点是否具有关系,在所述目标点的每个键值对中所述关键值对应的点集中存在与所述目标点具有关系的点;
处理模块2020用于,确定所述第一目标点的至少一个所述关键值与所述第二目标点的的至少一个所述关键值中的相等关键值;
处理模块2020还用于,根据所述相等关键值对应的所述第一目标点的所述关系值组和所述第二目标点的关系值组,确定所述关系图中的查询点,所述查询点与所述两个目标点之间的关系情况符合预设情况。
可选地,获取模块2010用于,获取所述关系图数据,所述关系图数据包括行偏移向量、关键值向量、关系值向量;根据所述关系图数据,确定所述两个目标点中每个目标点的至少一个键值对,所述关键值向量包括所述关系图中多个点中每个点的至少一个关键值,所述行偏移向量用于指示每个点的至少一个关键值在所述关键值向量中的位置,所述关系值向量包括所述多个点中每个点的关键值对应的点的关系值组,每个点的至少一个关键值在所述关键值向量中的顺序与所述每个点的关键值对应的点的关系值组在所述关系值向量中的顺序相同。
可选地,不同的所述关键值对应的所述点集中点的数量相等。
可选地,处理模块2020还用于,对所述相等关键值对应的所述第一目标点的所述关系值组和所述第二目标点的关系值组的各个位分别进行预设运算,每个关键值对应的不同的所述点的所述关系值组中相同的位对应于所述关键值对应的所述点集中相同的所述点,每个位的所述预设运算的结果用于指示所述位对应的所述点与所述两个目标点之间的关系情况是否符合所述预设情况。
可选地,处理模块2020包括控制器和处理矩阵。
所述控制器用于,将所述第一目标点的至少一个键值对沿第二方向按照输入周期依次输入位于处理矩阵的第一边缘的多个所述处理单元,将所述第二目标点的至少一个键值对沿第一方向按照所述输入周期依次输入位于所述处理矩阵的第二边缘的多个所述处理单元,以确定所述相等关键值。
所述处理矩阵包括v×v个处理单元,v为大于1的正整数,所述第一目标点的至少一个键值对与所述第二目标点的至少一个键值对是在同一个所述输入周期开始输入所述处理矩阵的,所述第一边缘与所述第二边缘相邻,所述第一方向为远离所述第二边缘的方向,所述第二方向为远离所述第一边缘的方向,每个处理单元用于确定输入所述处理单元的所述第一目标点的所述关键值与所述第二目标点的的所述关键值是否相等。
所述多个处理单元中的每个处理单元用于,在所述第一目标点的所述关键值与所述第二目标点的的所述关键值相等的情况下,根据输入所述处理单元的所述第一目标点的所述关系值组和所述第二目标点的关系值组,确定所述关系图中的查询点,所述查询点与所述两个目标点之间的关系情况符合预设情况。
所述多个处理单元中的每个处理单元还用于,按照所述输入周期,将所述第一目标点的所述键值对传输至沿所述第一方向的下一个所述处理单元,将第二目标点的所述键值对传输至沿所述第二方向的下一个所述处理单元。
可选地,所述多个处理单元中的每个处理单元具体用于:在所述第一目标点的所述关键值与所述第二目标点的的所述关键值不相等的情况下,将所述第一目标点的所述键值对传输至沿所述第一方向的下一个所述处理单元,将第二目标点的所述键值对传输至沿所述第二方向的下一个所述处理单元。
可选地,所述第一目标点的至少一个键值对的数量大于v。所述控制器还用于,按照所述键值对中关键值的大小顺序将所述第一目标点的至少一个键值对划分为多个第一键值对组,并按照所述键值对中关键值的大小顺序将所述第二目标点的至少一个键值对划分为至少一个第二键值对组,所述多个第一键值对组和所述至少一个第二键值对组中的每个键值对组中所述键值对的数量小于或等于v,其中,所述多个第一键值对组中关键值最小的键值对组为第三键值对组,所述多个第二键值对组中关键值最小的键值对组为所述第四键值对组。
所述控制器还用于,进行多次迭代,直到所述第三键值对组中的最大关键值大于所述第四键值对组中的最大关键值。
所述迭代包括:将所述第三键值对组中的至少一个所述键值对按照输入周期依次输入所述多个处理单元中的位于第一边缘的多个所述处理单元,将所述第四键值对组中的至少一个所述键值对按照输入周期依次输入所述多个处理单元中的位于第二边缘的多个所述处理单元;在所述第三键值对组中最大的关键值小于所述第四键值对组中最大的关键值的情况下,将按照关键值从小到大顺序排列的所述多个所述第一键值对组中所述第三键值对组的下一个第一键值对组作为所述第三键值对组。
所述控制器还用于,在进行所述多次迭代之前以及每次迭代之后,将所述第三键值对组的多个键值对按照所述输入周期依次输入位于所述处理矩阵的第一边缘的多个所述处理单元,将所述第四键值对组的多个键值对按照所述输入周期依次输入所述多个处理单元中的位于所述处理矩阵的第二边缘的多个所述处理单元。
图21是本申请实施例提供的一种数据处理装置的控制装置的示意性结构图。
控制装置3000包括存储器3010和至少一个处理器3020。
存储器3010用于存储程序指令。处理器3020用于执行该程序指令,以实现前文中的数据处理装置执行的各个步骤或方法或操作或功能。
示例性地,处理器3020用于,获取第一目标数据组和第二目标数据组,所述第一目标数据组为第一数据集合的多个第一数据组中沿第一顺序的第一个数据组,所述第二目标数据组为第二数据集合的至少一个第二数据组中的的第一个数据组,所述第一数据集合和所述第二数据集合的每个数据集合中的每个数据组包括至少一个数据,每个数据包括关键值,每个数据集合中的所述数据组是按照第一顺序或第二顺序排列的,在按照所述第一顺序排列的情况下每个数据集合中任一个所述数据组中的每个关键值均小于位于所述任一个数据组之后的数据组中每个关键值,在按照所述第二顺序排列的情况下每个数据集合中任一个所述数据组中的每个关键值均大于位于所述任一个数据组之后的数据组中每个关键值。
处理器3020还用于,进行多次迭代。
每次迭代包括,将所述第一目标数据组和所述第二目标数据组输入所述数据处理装置,所述数据处理装置用于确定所述第一目标数据组和所述第二目标数据中相等的所述关键值。
每次迭代还包括,在每个数据集合中的所述数据组按照所述第一顺序排列,且第一关键值小于或等于第二关键值的情况下,或者,在每个数据集合中的所述数据组按照所述第二顺序排列,且第三关键值大于或等于第四关键值的情况下,获取所述第一数据集合中位于所述第一目标数据组之后的第一数据组作为所述第一目标数据组,所述第一关键值为所述第一目标数据组中最大的关键值,所述第二关键值为所述第二目标数据组中最大的关键值所述第三关键值为所述第一目标数据组中最小的关键值,所述第四关键值为所述第二目标数据组中最小的关键值。
可选地,至少一个第二数据组的数量为多个。
在每个数据集合中的所述数据组按照所述第一顺序排列,且所述第一关键值大于或等于所述第二关键值的情况下,或者,在每个数据集合中的所述数据组按照所述第二顺序排列,且所述第三关键值小于或等于所述第四关键值的情况下,获取所述第二数据集合中位于所述第二目标数据组之后的第二数据组作为第二目标数据组。
可选地,所述数据处理装置包括处理矩阵,所述处理矩阵包括v×v个处理单元,v为正整数,第一目标数据组和第二目标数据组中每个目标数据组中至少一个数据的数量小于或等于v。
所述将所述第一目标数据组和所述第二目标数据组输入所述数据处理装置,包括:将所述第一目标数据组和第二目标数据组按照输入规则输入处理矩阵,所述输入规则使得所述第二目标数据组中的至少一个所述数据是沿第一方向按照输入周期依次输入位于第二边缘的所述处理单元的,所述第一目标数据组中的至少一个所述数据是沿第二方向按照所述输入周期依次输入位于第一边缘的所述处理单元的,所述第一目标数据组与所述第二数据组是在同一个所述输入周期开始输入的,所述第一边缘与所述第二边缘相邻,所述第一方向为远离所述第二边缘的方向,所述第二方向为远离所述第一边缘的方向。
所述处理矩阵中的每个处理单元用于,确定在同一个所述输入周期输入所述处理单元的第一数据中的所述关键值与第二数据中的所述关键值是否相等,所述第一数据为属于所述第一目标数据组的所述数据,所述第二数据为属于所述第二目标数据组的所述数据。
在v大于1的情况下,所述处理矩阵中的每个处理单元还用于,在接收所述第一数据和所述第二数据的下一个输入周期,将所述第一数据传输至沿所述第一方向的下一个所述处理单元,将所述第二数据传输至沿所述第二方向的下一个所述处理单元。
可选地,每个数据集合中不同的数据中的所述关键值不同,所述处理矩阵中的每个处理单元用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值不相等的情况下,将所述第一数据传输至沿所述第一方向的下一个所述处理单元,并将所述第二数据传输至沿所述第二方向的下一个所述处理单元。
可选地,所述数据处理装置还包括过滤矩阵,所述过滤矩阵包括v个过滤单元,所述v个过滤单元分别位于所述处理矩阵沿所述第一方向的v行中每一行沿所述第二方向的最后一个处理单元之后。
所述处理矩阵中的每个处理单元还用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值相等的情况下,在接收所述第一数据和所述第二数据的下一个所述输入周期,将所述处理单元的处理结果沿所述第二方向传输至下一个单元,所述单元为所述处理单元或所述过滤单元,所述处理结果包括相等的所述关键值;或者,在接收所述处理结果的下一个所述输入周期,将所述处理结果沿所述第二方向传输至下一个单元;
处理器3020还用于,在所述第一关键值大于或等于所述第二关键值的情况下,控制沿所述第一方向的所述v个过滤单元按照所述输入周期依次输出所述第二目标数据组对应的所述处理结果。
可选地,所述数据处理装置还包括压缩三角矩阵,所述压缩三角矩阵包括沿所述第一方向的v行压缩单元,沿所述第一方向所述压缩单元的数量逐行增加。
所述多个压缩单元中的每个压缩单元用于:,接收沿所述第二方向所述压缩单元之前的所述过滤单元输出的所述处理结果,或者,接收沿所述第一方向上一行的所述压缩单元输出的所述处理结果。
所述多个压缩单元中的每个压缩单元用于,在接收所述处理结果的下一个所述输入周期,向沿所述第一方向下一行的所述压缩单元传输所述处理结果。
可选地,不同的所述关键值对应于关系图中不同的点集,所述第一数据用于表示关系图中第一目标点与所述第一数据中的所述关键值对应的所述点集中的至少一个点之间是否具有关系,所述第二数据用于表示关系图中第二目标点与所述第二数据中的所述关键值对应的所述点集中的至少一个点之间是否具有关系。
每个处理矩阵还用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值相等的情况下,输出处理结果,所述处理结果用于指示所述关系图中的查询点,所述查询点与所述两个目标点的之间的关系情况符合预设情况。
可选地,所述第一数据还包括所述关键值对应的所述第一目标点的第一关系值组,所述第二数据还包括所述关键值对应的所述第二目标点的第二关系值组。
所述处理矩阵中的每个处理单元还用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值相等的情况下,对所述第一关系值组和所述第二关系值组的各个位分别进行预设运算,相等的所述关键值对应的所述第一关系值组和第二关系值组中相同的位对应于所述相等的关键值对应的所述点集中相同的所述点,每个位的所述预设运算的结果用于指示所述位对应的所述点与所述两个目标点之间的关系情况是否符合所述预设情况。
可选地,在每个数据集合中的所述数据组按照所述第一顺序排列的情况下,每个第一数据组中的所述关键值从小到大排列;在每个数据集合中的所述数据组按照所述第二顺序排列的情况下,每个第一数据组中的所述关键值从大到小排列。
具体地,此外,以上装置中的各单元可以全部或部分可以集成在一起,或者可以独立实现。在一种实现中,这些单元集成在一起,以片上系统(system-on-a-chip,SOC)的形式实现。该SOC中可以包括至少一个处理器,用于实现以上任一种方法或实现该装置各单元的功能,该至少一个处理器的种类可以不同,例如包括CPU和FPGA,CPU和人工智能处理器,CPU和图形处理器(graphics processing unit,GPU)等。
本申请实施例还提供一种计算机程序存储介质,其特征在于,所述计算机程序存储介质具有程序指令,当所述程序指令被执行时,使得前文中的方法被执行。
本申请实施例还提供一种芯片系统,其特征在于,所述芯片系统包括至少一个处理器,当程序指令在所述至少一个处理器中执行时,使得前文中的方法被执行。
本申请实施例还提供一种程序产品,所述计算机程序产品包括程序指令,当所述程序指令在计算机设备中被执行时,使得前文的数据处理方法被执行。
本申请实施例还提供一种数据处理系统,包括前文所述的数据处理装置和数据处理装置的控制装置。
应理解,本申请实施例中的处理器可以为中央处理单元(central processingunit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random accessmemory,RAM)可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系,但也可能表示的是一种“和/或”的关系,具体可参考前后文进行理解。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
本申请实施例中采用诸如“第一”、“第二”的前缀词,仅仅为了区分不同的描述对象,对被描述对象的位置、顺序、优先级、数量或内容等没有限定作用。例如,被描述对象为“关键值”,则“第一关键值”和“第二关键值”中“关键值”之前的序数词并不限制“接口”之间的位置或顺序或优先级;再如,被描述对象为“方向”,则“第一方向”和“第二方向”中“方向”之前的序数词并不限制“方向”之间的位置或顺序或优先级。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (23)

1.一种数据处理装置的控制方法,其特征在于,所述方法包括:
获取第一目标数据组和第二目标数据组,所述第一目标数据组为第一数据集合的多个第一数据组中的第一个数据组,所述第二目标数据组为第二数据集合的至少一个第二数据组中的第一个数据组,所述第一数据集合和所述第二数据集合的每个数据集合中的每个数据组包括至少一个数据,每个数据包括关键值,每个数据集合中的所述数据组是按照第一顺序或第二顺序排列的,在按照所述第一顺序排列的情况下每个数据集合中任一个所述数据组中的每个关键值均小于位于所述任一个数据组之后的数据组中每个关键值,在按照所述第二顺序排列的情况下每个数据集合中任一个所述数据组中的每个关键值均大于位于所述任一个数据组之后的数据组中每个关键值;
进行多次迭代,每次迭代包括:
将所述第一目标数据组和所述第二目标数据组输入所述数据处理装置,所述数据处理装置用于确定所述第一目标数据组和所述第二目标数据中相等的所述关键值;
在每个数据集合中的所述数据组按照所述第一顺序排列,且第一关键值小于或等于第二关键值的情况下,或者,在每个数据集合中的所述数据组按照所述第二顺序排列,且第三关键值大于或等于第四关键值的情况下,获取所述第一数据集合中位于所述第一目标数据组之后的第一数据组作为所述第一目标数据组,所述第一关键值为所述第一目标数据组中最大的关键值,所述第二关键值为所述第二目标数据组中最大的关键值,所述第三关键值为所述第一目标数据组中最小的关键值,所述第四关键值为所述第二目标数据组中最小的关键值。
2.根据权利要求1所述的方法,其特征在于,至少一个第二数据组的数量为多个,
在每个数据集合中的所述数据组按照所述第一顺序排列,且所述第一关键值大于或等于所述第二关键值的情况下,或者,在每个数据集合中的所述数据组按照所述第二顺序排列,且所述第三关键值小于或等于所述第四关键值的情况下,获取所述第二数据集合中位于所述第二目标数据组之后的第二数据组作为第二目标数据组。
3.根据权利要求1或2所述的方法,其特征在于,所述数据处理装置包括处理矩阵,所述处理矩阵包括v×v个处理单元,v为正整数,第一目标数据组和第二目标数据组中每个目标数据组中至少一个数据的数量小于或等于v,
所述第一目标数据组中的第i个第一数据是在所述迭代的第j个输入周期输入位于第一边缘的v个所述处理单元中沿第二方向的第j个所述处理单元的,所述第二目标数据中的第p个第二数据是在所述迭代的第q个输入周期输入位于第二边缘的v个所述处理单元中沿第一方向的第q个所述处理单元的,所述第一边缘与所述第二边缘相邻,每个目标数据组中不同的所述数据输入的所述处理单元不同,所述第一方向为从所述第二边缘指向所述处理矩阵内部且垂直所述第二边缘的方向,所述第二方向为从所述第一边缘指向所述处理矩阵内部且垂直所述第一边缘的方向,i、j、p、q均为正整数;
所述处理矩阵中的每个处理单元用于,确定在同一个所述输入周期输入所述处理单元的第一数据中的所述关键值与第二数据中的所述关键值是否相等;
在v大于1的情况下,所述处理矩阵中的每个处理单元还用于,在接收所述第一数据和所述第二数据的下一个输入周期,将所述第一数据传输至沿所述第一方向的下一个所述处理单元,将所述第二数据传输至沿所述第二方向的下一个所述处理单元。
4.根据权利要求3所述的方法,其特征在于,每个数据集合中不同的数据中的所述关键值不同,所述处理矩阵中的每个处理单元用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值不相等的情况下,将所述第一数据传输至沿所述第一方向的下一个所述处理单元,并将所述第二数据传输至沿所述第二方向的下一个所述处理单元。
5.根据权利要求3或4所述的方法,其特征在于,所述数据处理装置还包括过滤矩阵,所述过滤矩阵包括v个过滤单元,所述v个过滤单元分别位于所述处理矩阵沿所述第一方向的v行中每一行沿所述第二方向的最后一个处理单元之后,
所述处理矩阵中的每个处理单元还用于:
在所述第一数据中的所述关键值与所述第二数据中的所述关键值相等的情况下,在接收所述第一数据和所述第二数据的下一个所述输入周期,将所述处理单元的处理结果沿所述第二方向传输至下一个单元,所述单元为所述处理单元或所述过滤单元,所述处理结果包括相等的所述关键值;或者,
在接收所述处理结果的下一个所述输入周期,将所述处理结果沿所述第二方向传输至下一个单元;
所述方法还包括:在所述第一关键值大于或等于所述第二关键值的情况下,控制沿所述第一方向的所述v个过滤单元按照所述输入周期依次输出所述第二目标数据组对应的所述处理结果。
6.根据权利要求5所述的方法,其特征在于,所述数据处理装置还包括压缩三角矩阵,所述压缩三角矩阵包括沿所述第一方向的v行压缩单元,沿所述第一方向所述压缩单元的数量逐行增加,
所述多个压缩单元中的每个压缩单元用于:
接收沿所述第二方向所述压缩单元之前的所述过滤单元输出的所述处理结果,或者,接收沿所述第一方向上一行的所述压缩单元输出的所述处理结果;
在接收所述处理结果的下一个所述输入周期,向沿所述第一方向下一行的所述压缩单元传输所述处理结果。
7.根据权利要求3-6中任一项所述的方法,其特征在于,不同的所述关键值对应于关系图中不同的点集,所述第一数据用于表示关系图中第一目标点与所述第一数据中的所述关键值对应的所述点集中的至少一个点之间是否具有关系,所述第二数据用于表示关系图中第二目标点与所述第二数据中的所述关键值对应的所述点集中的至少一个点之间是否具有关系,
每个处理矩阵还用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值相等的情况下,输出处理结果,所述处理结果用于指示所述关系图中的查询点,所述查询点与所述两个目标点的之间的关系情况符合预设情况。
8.根据权利要求3-7中任一项所述的方法,其特征在于,所述第一数据还包括所述关键值对应的所述第一目标点的第一关系值组,所述第二数据还包括所述关键值对应的所述第二目标点的第二关系值组,
所述处理矩阵中的每个处理单元还用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值相等的情况下,对所述第一关系值组和所述第二关系值组的各个位分别进行预设运算,相等的所述关键值对应的所述第一关系值组和第二关系值组中相同的位对应于所述相等的关键值对应的所述点集中相同的所述点,每个位的所述预设运算的结果用于指示所述位对应的所述点与所述两个目标点之间的关系情况是否符合所述预设情况。
9.根据权利要求1-8中任一项所述的方法,其特征在于,在每个数据集合中的所述数据组按照所述第一顺序排列的情况下,每个第一数据组中的所述关键值从小到大排列;在每个数据集合中的所述数据组按照所述第二顺序排列的情况下,每个第一数据组中的所述关键值从大到小排列。
10.一种数据处理装置的控制装置,其特征在于,包括:获取模块和处理模块,
所述获取模块用于,获取第一目标数据组和第二目标数据组,所述第一目标数据组为第一数据集合的多个第一数据组中的第一个数据组,所述第二目标数据组为第二数据集合的至少一个第二数据组中的第一个数据组,所述第一数据集合和所述第二数据集合的每个数据集合中的每个数据组包括至少一个数据,每个数据包括关键值,每个数据集合中的所述数据组是按照第一顺序或第二顺序排列的,在按照所述第一顺序排列的情况下每个数据集合中任一个所述数据组中的每个关键值均小于位于所述任一个数据组之后的数据组中每个关键值,在按照所述第二顺序排列的情况下每个数据集合中任一个所述数据组中的每个关键值均大于位于所述任一个数据组之后的数据组中每个关键值;
所述处理模块用于,进行多次迭代,每次迭代包括:
将所述第一目标数据组和所述第二目标数据组输入所述数据处理装置,所述数据处理装置用于确定所述第一目标数据组和所述第二目标数据中相等的所述关键值;
在每个数据集合中的所述数据组按照所述第一顺序排列,且第一关键值小于或等于第二关键值的情况下,或者,在每个数据集合中的所述数据组按照所述第二顺序排列,且第三关键值大于或等于第四关键值的情况下,获取所述第一数据集合中位于所述第一目标数据组之后的第一数据组作为所述第一目标数据组,所述第一关键值为所述第一目标数据组中最大的关键值,所述第二关键值为所述第二目标数据组中最大的关键值,所述第三关键值为所述第一目标数据组中最小的关键值,所述第四关键值为所述第二目标数据组中最小的关键值。
11.根据权利要求10所述的装置,其特征在于,至少一个第二数据组的数量为多个,
在每个数据集合中的所述数据组按照所述第一顺序排列,且所述第一关键值大于或等于所述第二关键值的情况下,或者,在每个数据集合中的所述数据组按照所述第二顺序排列,且所述第三关键值小于或等于所述第四关键值的情况下,获取所述第二数据集合中位于所述第二目标数据组之后的第二数据组作为第二目标数据组。
12.根据权利要求10或11所述的装置,其特征在于,所述数据处理装置包括处理矩阵,所述处理矩阵包括v×v个处理单元,v为正整数,第一目标数据组和第二目标数据组中每个目标数据组中至少一个数据的数量小于或等于v,
所述第一目标数据组中的第i个第一数据是在所述迭代的第j个输入周期输入位于第一边缘的v个所述处理单元中沿第二方向的第j个所述处理单元的,所述第二目标数据中的第p个第二数据是在所述迭代的第q个输入周期输入位于第二边缘的v个所述处理单元中沿第一方向的第q个所述处理单元的,所述第一边缘与所述第二边缘相邻,每个目标数据组中不同的所述数据输入的所述处理单元不同,所述第一方向为从所述第二边缘指向所述处理矩阵内部且垂直所述第二边缘的方向,所述第二方向为从所述第一边缘指向所述处理矩阵内部且垂直所述第一边缘的方向,i、j、p、q均为正整数;
所述处理矩阵中的每个处理单元用于,确定在同一个所述输入周期输入所述处理单元的第一数据中的所述关键值与第二数据中的所述关键值是否相等;
在v大于1的情况下,所述处理矩阵中的每个处理单元还用于,在接收所述第一数据和所述第二数据的下一个输入周期,将所述第一数据传输至沿所述第一方向的下一个所述处理单元,将所述第二数据传输至沿所述第二方向的下一个所述处理单元。
13.根据权利要求12所述的装置,其特征在于,每个数据集合中不同的数据中的所述关键值不同,所述处理矩阵中的每个处理单元用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值不相等的情况下,将所述第一数据传输至沿所述第一方向的下一个所述处理单元,并将所述第二数据传输至沿所述第二方向的下一个所述处理单元。
14.根据权利要求12或13所述的装置,其特征在于,所述数据处理装置还包括过滤矩阵,所述过滤矩阵包括v个过滤单元,所述v个过滤单元分别位于所述处理矩阵沿所述第一方向的v行中每一行沿所述第二方向的最后一个处理单元之后,
所述处理矩阵中的每个处理单元还用于:在所述第一数据中的所述关键值与所述第二数据中的所述关键值相等的情况下,在接收所述第一数据和所述第二数据的下一个所述输入周期,将所述处理单元的处理结果沿所述第二方向传输至下一个单元,所述单元为所述处理单元或所述过滤单元,所述处理结果包括相等的所述关键值;或者,在接收所述处理结果的下一个所述输入周期,将所述处理结果沿所述第二方向传输至下一个单元;
所述处理模块还用于,在所述第一关键值大于或等于所述第二关键值的情况下,控制沿所述第一方向的所述v个过滤单元按照所述输入周期依次输出所述第二目标数据组对应的所述处理结果。
15.根据权利要求14所述的装置,其特征在于,所述数据处理装置还包括压缩三角矩阵,所述压缩三角矩阵包括沿所述第一方向的v行压缩单元,沿所述第一方向所述压缩单元的数量逐行增加,
所述多个压缩单元中的每个压缩单元用于:
接收沿所述第二方向所述压缩单元之前的所述过滤单元输出的所述处理结果,或者,接收沿所述第一方向上一行的所述压缩单元输出的所述处理结果;
在接收所述处理结果的下一个所述输入周期,向沿所述第一方向下一行的所述压缩单元传输所述处理结果。
16.根据权利要求12-15中任一项所述的装置,其特征在于,不同的所述关键值对应于关系图中不同的点集,所述第一数据用于表示关系图中第一目标点与所述第一数据中的所述关键值对应的所述点集中的至少一个点之间是否具有关系,所述第二数据用于表示关系图中第二目标点与所述第二数据中的所述关键值对应的所述点集中的至少一个点之间是否具有关系,
每个处理矩阵还用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值相等的情况下,输出处理结果,所述处理结果用于指示所述关系图中的查询点,所述查询点与所述两个目标点的之间的关系情况符合预设情况。
17.根据权利要求12-16中任一项所述的装置,其特征在于,所述第一数据还包括所述关键值对应的所述第一目标点的第一关系值组,所述第二数据还包括所述关键值对应的所述第二目标点的第二关系值组,
所述处理矩阵中的每个处理单元还用于,在所述第一数据中的所述关键值与所述第二数据中的所述关键值相等的情况下,对所述第一关系值组和所述第二关系值组的各个位分别进行预设运算,相等的所述关键值对应的所述第一关系值组和第二关系值组中相同的位对应于所述相等的关键值对应的所述点集中相同的所述点,每个位的所述预设运算的结果用于指示所述位对应的所述点与所述两个目标点之间的关系情况是否符合所述预设情况。
18.根据权利要求10-17中任一项所述的装置,其特征在于,在每个数据集合中的所述数据组按照所述第一顺序排列的情况下,每个第一数据组中的所述关键值从小到大排列;在每个数据集合中的所述数据组按照所述第二顺序排列的情况下,每个第一数据组中的所述关键值从大到小排列。
19.一种数据处理装置的控制装置,其特征在于,包括存储器和至少一个处理器,所述存储器用于存储程序,当所述程序在所述至少一个处理器中执行时,所述处理器用于执行如权利要求1至9中任一项所述的方法。
20.一种计算机程序产品,其特征在于,包括程序指令,当所述程序指令被执行时,如权利要求1至9中任一项所述的方法被执行。
21.一种计算机可读存储介质,其特征在于,所述计算机可读介质存储用于设备执行的程序代码,当所述程序指令被执行时,如权利要求1至9中任一项所述的方法被执行。
22.一种芯片,其特征在于,所述芯片包括至少一个处理器,当程序指令被所述至少一个处理器中执行时,使得如权利要求1至9中任一项所述的方法被执行。
23.一种数据处理系统,其特征在于,包括权利要求10-19中任一项所述的数据处理装置的控制装置和所述数据处理装置。
CN202210447052.8A 2022-04-26 2022-04-26 数据处理装置的控制方法与装置 Pending CN116991910A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210447052.8A CN116991910A (zh) 2022-04-26 2022-04-26 数据处理装置的控制方法与装置
PCT/CN2023/090020 WO2023207832A1 (zh) 2022-04-26 2023-04-23 数据处理装置的控制方法与装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210447052.8A CN116991910A (zh) 2022-04-26 2022-04-26 数据处理装置的控制方法与装置

Publications (1)

Publication Number Publication Date
CN116991910A true CN116991910A (zh) 2023-11-03

Family

ID=88517679

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210447052.8A Pending CN116991910A (zh) 2022-04-26 2022-04-26 数据处理装置的控制方法与装置

Country Status (2)

Country Link
CN (1) CN116991910A (zh)
WO (1) WO2023207832A1 (zh)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1323230A (en) * 1971-01-15 1973-07-11 Ibm Data processing apparatus
JP2637862B2 (ja) * 1991-05-29 1997-08-06 甲府日本電気株式会社 要素番号算出装置
JP2001306300A (ja) * 2000-04-25 2001-11-02 Nec Microcomputer Technology Ltd ソート処理方法及び送受信データの順序決定方法
WO2003091872A1 (fr) * 2002-04-26 2003-11-06 Nihon University School Juridical Person Dispositif de tri par fusion en parallele, procede et programme y relatifs
CN103294702A (zh) * 2012-02-27 2013-09-11 上海淼云文化传播有限公司 一种数据处理方法、装置及系统
CN111259012B (zh) * 2020-01-20 2024-03-12 中国平安人寿保险股份有限公司 数据均匀化方法、装置、计算机设备及存储介质
CN113850395B (zh) * 2021-09-24 2022-11-25 北京九章云极科技有限公司 一种数据处理方法及系统

Also Published As

Publication number Publication date
WO2023207832A1 (zh) 2023-11-02

Similar Documents

Publication Publication Date Title
US10366009B2 (en) Methods and systems for handling data received by a state machine engine
Dogramacl et al. Bilkent University Lecture Series
KR102335955B1 (ko) 컨볼루션 신경망 시스템 및 그것의 동작 방법
JP7387017B2 (ja) アドレス生成方法及びユニット、深層学習処理器、チップ、電子機器並びにコンピュータプログラム
CN115485695A (zh) 用于分层权重稀疏卷积处理的方法和系统
KR20100013257A (ko) 멀티 프로세서 시스템 상에서 데이터 세트를 분할 및 정렬하는 방법 및 장치
CN110278719B (zh) 编码方法、解码方法和装置
US11763150B2 (en) Method and system for balanced-weight sparse convolution processing
CN110796236B (zh) 多样本多通道卷积神经网络池化的向量化实现方法
CN110750381B (zh) 基于nand flash存储器的纠错方法及装置
Leng et al. Hashing for distributed data
Zhang et al. cublastp: Fine-grained parallelization of protein sequence search on cpu+ gpu
CN104809161B (zh) 一种对稀疏矩阵进行压缩和查询的方法及系统
CN112257844A (zh) 一种基于混合精度配置的卷积神经网络加速器及其实现方法
CN114003201A (zh) 矩阵变换方法、装置及卷积神经网络加速器
CN116991910A (zh) 数据处理装置的控制方法与装置
CN110554886B (zh) 数据拆分结构、方法及其片上实现
Wong et al. Low bitwidth CNN accelerator on FPGA using Winograd and block floating point arithmetic
Nguyen et al. Parallel progressive multiple sequence alignment on reconfigurable meshes
EP4398123A1 (en) Control method and device of data processing device
Yang et al. Conflict-free sorting algorithms under single-channel and multi-channel broadcast communication models
CN117407640A (zh) 一种矩阵计算方法及装置
CN111198714B (zh) 重训练方法及相关产品
Anikeev et al. Efficient implementation of fast hough transform using CPCA coprocessor
CN112784977B (zh) 一种目标检测卷积神经网络加速器

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