一种处理图数据的方法及装置的制造方法_4

文档序号:9911122阅读:来源:国知局
,则一个源节点对应的第一目标数据为该源节点的节点数据以及与该源节点相连的全部边的权值。
[0130]示例性的,以图5为例,计算机首先将目标边数据块I读入本地内存,并依次对目标边数据块I中的源节点(即节点I和节点2)的节点数据进行计算,每计算完一个节点的节点数据,对该节点的节点数据进行更新,然后将目标边数据块2读入本地内存,并依次对目标边数据块2中的源节点(即节点3和节点4)的节点数据进行计算,每计算完一个节点的节点数据,对该节点的节点数据进行更新,最后将目标边数据块3读入本地内存,并依次对目标边数据块3中的源节点(即节点5和节点6)的节点数据进行计算,每计算完一个节点的节点数据,对该节点的节点数据进行更新,更新后判断图数据中的全部节点的节点数据是否收敛,若是,计算结束,若否,则继续根据上述方法从目标边数据块I开始计算,直至图数据中的全部节点的节点数据收敛。
[0131]在另一种应用场景下,可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,既需要使用该节点的入边数据,也需要使用该节点的出边数据,所述构成边数据的节点为构成边数据的源节点和目的节点。对图数据中的边数据进行处理的方法可以参见基于图2所述的方法。
[0132]可选的,所述图数据中的全部节点的节点数据存储在所述本地内存中,当一个节点的节点数据变化时,在所述本地内存中更新该节点的节点数据。
[0133]需要说明的是,由于在计算的过程中会频繁的用到各个节点的节点数据,因此,可以将节点数据存储在本地内存中,当节点数据变化时,直接在本地内存中进行更新,在下次计算时,使用更新后的节点数据,待计算完成后,将节点数据写入磁盘中。这样一来,可以避免反复地在磁盘中读写节点数据,进一步提高图计算的效率。
[0134]可选的,上述方法还可以包括:在将一个目标边数据块读入所述本地内存后,实时监测所述本地内存的空闲容量是否大于该目标边数据块的下一个目标边数据块的数据量;若是,将所述下一个目标边数据块读入所述本地内存中。
[0135]具体的,可以通过磁盘I/O线程实时监测本地内存的空闲容量,该可选的方法,可以使得计算机系统在计算一个目标边数据块中的节点的节点数据的同时,读入下一个目标边数据块,而不用在计算完一个目标边数据块中的节点的节点数据后,再读入下一个目标边数据块,可以充分利用时间,提高图计算的效率。
[0136]本发明实施例还提供一种处理图数据的装置60,用于执行上述方法,如图6所示,装置60包括:
[0137]获取单元601,用于获取图数据中的边数据和对所述图数据进行图计算的计算算法;
[0138]确定单元602,用于根据所述计算算法,确定对所述图数据中的边数据进行分割的分割算法,所述分割算法为根据构成边数据的节点对所述图数据中的边数据进行分割的算法,所述构成边数据的节点为构成边数据的源节点和/或目的节点;
[0139]分割单元603,用于根据所述分割算法和本地内存的内存容量,将所述图数据中的边数据分割为N个初始边数据块,所述N个初始边数据块中的每个初始边数据块的数据量均小于所述内存容量,I,N为整数;
[0140]排列单元604,用于将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,得到N个目标边数据块。
[0141]可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的出边数据,对应同一目的节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的目的节点;
[0142]所述排列单元604具体用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据连续排列,得到N个目标边数据块。
[0143]进一步的,所述排列单元604还用于:
[0144]将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据按照该全部边数据的源节点由小至大或由大至小顺序排列,得到N个目标边数据块。
[0145]可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的入边数据,对应同一源节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的源节点;
[0146]所述排列单元604具体用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据连续排列,得到N个目标边数据块。
[0147]进一步的,所述排列单元604还用于:
[0148]将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据按照该全部边数据的目的节点由小至大或由大至小顺序排列,得到N个目标边数据块。
[0149]可选的,如图7所示,所述装置60还包括计算单元605,用于:
[0150]从所述N个目标边数据块中的第I个目标边数据块开始,循环执行S11-S13,直至所述N个目标边数据块中的每个目的节点的节点数据均计算完成;
[0151]Sll:将所述N个目标边数据块中的第M个目标边数据块读入所述本地内存,IN,M为整数;
[0152]S12:依次对所述第M个目标边数据块中的每个目的节点的节点数据进行计算,并根据计算结果更新该目的节点对应的第一目标数据,一个目的节点对应的第一目标数据为该目的节点的节点数据或者该目的节点的节点数据以及与该目的节点相连的全部边的权值;
[0153]S13:将M加 I;
[0154]在对所述N个目标边数据块中的每个目的节点的节点数据均计算完成后,执行下述装置:
[0155]判断所述N个目标边数据块中的每个目的节点对应的第一目标数据中的数据是否均收敛;
[0156]若所述N个目标边数据块中的每个目的节点对应的第一目标数据中的数据均收敛,则结束计算过程;
[0157]若所述N个目标边数据块中的任意一个目的节点对应的第一目标数据中的任意一个数据不收敛,则继续从所述N个目标边数据块中的第I个目标边数据块开始,循环执行SI 1-S13,直至所述N个目标边数据块中的每个目的节点对应的第一目标数据中的数据均收敛。
[0158]可选的,如图7所示,所述装置60还包括计算单元605,用于:
[0159]从所述N个目标边数据块中的第I个目标边数据块开始,循环执行S21-S23,直至所述N个目标边数据块中的每个源节点的节点数据均计算完成;
[0160]S21:将所述N个目标边数据块中的第M个目标边数据块读入所述本地内存,I SMgN,M为整数;
[0161 ] S22:依次对所述第M个目标边数据块中的每个源节点的节点数据进行计算,并根据计算结果更新该源节点对应的第二目标数据,一个源节点对应的第二目标数据为该源节点的节点数据或者该源节点的节点数据以及与该源节点相连的全部边的权值;
[0162]S23:将M加 I;
[0163]在对所述N个目标边数据块中的每个源节点的节点数据均计算完成后,执行下述装置:
[0164]判断所述N个目标边数据块中的每个源节点对应的第二目标数据中的数据是否均收敛;
[0165]若所述N个目标边数据块中的每个源节点对应的第二目标数据中的数据均收敛,则结束计算过程;
[0166]若所述N个目标边数据块中的任意一个源节点对应的第二目标数据中的任意一个数据不收敛,则继续从所述N个目标边数据块中的第I个目标边数据块开始,循环执行S21-S23,直至所述N个目标边数据块中的每个源节点对应的第二目标数据中的数据均收敛。
[0167]可选的,所述图数据中的全部节点的节点数据存储在所述本地内存中,当一个节点的节点数据变化时,在所述本地内存中更新该节点的节点数据。
[0168]可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,既需要使用该节点的入边数据,也需要使用该节点的出边数据,所述构成边数据的节点为构成边数据的源节点和目的节点。
[0169]本发明实施例提供的装置,在获取图数据中的边数据和对该图数据进行图计算的计算算法之后,根据计算算法和本地内存的内存容量对图数据中的边数据进行分割得到N个初始边数据块,并对N个初始边数据块按照构成边数据的节点进行排列,得到N个目标边数据块,目标边数据块能够适应计算算法,使得在采用计算算法在对一个目标边数据块中的节点的节点数据进行计算的过程中,不需要花费过多的时间在数据的重新整理(例如,对目标边数据块中的边数据的重新排序)上,与现有技术相比,能够提高图计算的效率。
[0170]在硬件实现上,装置60中的各个单元可以以硬件形式内嵌于或独立于装置60的处理器中,也可以以软件形式存储于装置60的存储器中,以便于处理器调用执行以上各个单元对应的操作,该处理器可以为中央处理器(Central Processing Unit,简称CPU)、特定集成电路(Applicat1n Specific Integrated Circuit,简称ASIC)或者是被配置成实施本发明实施例的一个或多个集成电路。
[0171]本发明实施例还提供一种处理图数据的装置80,用于执行上述方法,如图8所示,装置80包括:存储器801和处理器802,所述存储器801中用于存储一组代码,所述处理器802根据该代码执行以下动作:
[0172]获取图数据中的边数据和对所述图数据进行图计算的计算算法;
[0173]根据所述计算算法,确定对所述图数据中的边数据进行分割的分割算法,所述分割算法为根据构成边数据的节点对所述图数据中的边数据进行分割的算法,所述构成边数据的节点为构成边数据的源节点和/或目的节点;
[0174]根据所述分割算法和本地内存的内存容量,将所述图数据中的边数据分割为N个初始边数据块,所述N个初始边数据块中的每个初始边数据块的数据量均小于所述内存容量,N 2 I,N为整数;
[0175]将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,得到N个目标边数据块。
[0176]可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的出边数据,对应同一目的节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的目的节点;
[0177]所述处理器802具体用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据连续排列,得到N个目标边数据块。
[0178]进一步的,所述处理器802还用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据按照该全部边数据的源节点由小至大或由大至小顺序排列,得到N个目标边数据块。
[0179]可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的入边数据,对应同一源节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的源节点;
[0180]所述处理器802具体用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据连续排列,
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1