基于numa架构的时变图处理方法、电子设备、介质
技术领域
1.本发明涉及时变图计算技术领域,具体涉及一种基于numa架构的时变图处理方法、电子设备、介质。
背景技术:
2.大数据时代的来临,推动着时变图计算的发展。时变图由多张
快照组成,每个快照表示图数据结构演变过程中某个时间点的状态,通过分析时变图,可以预测现实世界未来的发展趋势,为国家安全、政府、企业等提供决策支持。时变图算法往往需要在多快照上执行同一静态图算法,当执行每个快照时,
顶点被并行执行;每个顶点需要访问它的邻居顶点,产生高频率细粒度的内存访问。
3.numa(non-uniform memory access)架构,是指计算机的系统架构由多个
节点(node)组成,而每个节点内部可以拥有多个cpu,节点内部的cpu使用共有的内存控制器;节点之间通过互联模块进行连接和信息交互。numa架构的远程随机访问的速度要比顺序访问的速度慢一个数量级。对于时变图计算而言,每个顶点需要访问它的邻居顶点,由于图数据结构的复杂性,邻居顶点随机地分布在本地节点的内存和远程节点的内存,因此整个计算过程产生大量的远程随机内存访问(即访问远程节点的内存),很大程度上降低了时变图算法的执行速度。尽管该问题可能会对图计算的效率产生很大的影响,但是现有的大部分图处理系统并没有考虑numa架构对算法执行效率的影响,如graphchi、ligra、x-stream等,它们主要专注于其他方面,如改进外存访问效率等。
4.尽管也存在少量系统也有关注numa架构,如polymer,hygn等。polymer改善了节点的访问方式,将大量的远程访问转化成本地访问,将大量的随机访问转化成顺序访问,优化了数据访问的局部性,提高了计算效率;hygn利用同步和异步两种处理模式的特点,能够根据算法、执行阶段和图拓扑的不同,系统自行根据情况切换计算模式,支持复杂的任务调度程序,提高计算效率。但是这些系统只关注静态图的计算,而无法支持时变图的计算。要计算时变图,它们需要在多快照上分别执行静态图算法,因此算法执行时间往往与快照数量成正比,导致算法执行时间过长。
5.针对上述大多数图处理系统都忽视了numa架构的影响和缺乏针对在numa架构下的时变图的计算方法的问题,亟需一种基于numa架构的大规模时变图计算方法。
技术实现要素:
6.本发明的目的在于针对现有技术的不足,提供了一种基于numa架构的notify-fly-notify时变图处理方法。
7.为实现上述技术目的,本发明的技术方案为:本发明实施例的第一方面提出了一种基于numa架构的时变图处理方法,
所述方法包括:
8.将顶点在不同快照上的若干副本组织成顶点组,并设计基于顶点组的时变图数据结构;
9.采用时变图分割方法将顶点组分配存储至不同numa节点;
10.通过notify-fly-notify进行时变图处理包括:依次对每个numa节点进行聚合计算,在每轮聚合计算的过程中,每个numa节点的每个顶点组向下一个numa节点发送聚合请求,下一个numa节点完成聚合任务后,再向其下一个numa节点发送聚合请求,直到所有numa节点都完成聚合,其中,每个numa节点对应的所有顶点组被并行执行。
11.进一步地,所述顶点组由顶点的id及n个表示顶点在不同快照的状态值组成,其中n为快照的数量。
12.进一步地,基于顶点组的时变图数据结构包括:顶点组id、顶点在不同快照的状态值、顶点在不同快照的聚合值。
13.进一步地,numa节点的数据布局包括设计的基于顶点组的时变图数据结构和任务队列数据结构。
14.进一步地,任务队列数据结构包括:顶点id、入边邻居id列表、顶点在不同快照的聚合值。
15.进一步地,所述时变图分割方法选自metis、sgp或roundrobin。
16.进一步地,通过notify-fly-notify进行时变图处理的过程具体包括:
17.收集本地入边邻居的顶点组状态,每个顶点组在本地numa节点完成本地聚合计算;
18.本地numa节点将每个顶点组的聚合计算结果批量发送到第一下游numa节点,第一下游numa节点接收聚合计算结果并与其本地的数据进行聚合计算,完成聚合计算后,然后将聚合结果发送给第一下游numa节点的下游节点;
19.当最后一个下游numa节点完成聚合计算后,将聚合计算结果回返给本地numa节点,在本地numa节点处对下游numa节点输出的聚合结果与本地聚合结果进行合并计算,得到最终的聚合计算结果;
20.重复以上步骤,直至最终的聚合计算结果达到预设的精度阈值。
21.进一步地,通过notify-fly-notify进行时变图处理还包括:在对每个numa节点进行聚合计算的过程中每个numa节点对应的所有顶点组被并行执行。
22.本发明实施例的第二方面提出了一种电子设备,包括存储器和处理器,所述存储器与所述处理器耦接;其中,所述存储器用于存储程序数据,所述处理器用于执行所述程序数据以实现上述的基于numa架构的时变图处理方法。
23.本发明实施例的第三方面提出了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述的基于numa架构的时变图处理方法。
24.与现有技术相比,本发明的有益效果为:本发明通过notify-fly-notify时变图处理方法,设计基于顶点组的时变图数据结构,将顶点组分配存储至不同numa节点,依次对每个numa节点进行聚合计算,避免了numa节点的远程随机访问,有效减少了远程numa节点的随机访问次数,使时变图计算的内存访问效率得到显著提升。
附图说明
25.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于
本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
26.图1为本发明方法的流程图;
27.图2是本发明实施例的系统架构示意图;
28.图3为本技术实施例提供的一种电子设备。
29.图标:101-存储器;102-处理器;103-通信接口。
具体实施方式
30.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
31.在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
32.应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
33.下面结合附图,对本发明进行详细说明。在不冲突的情况下,下述的实施例及实施方式中的特征可以相互组合。
34.如图1和图2所示,本发明提出了一种基于numa架构的notify-fly-notify时变图处理方法,所述方法包括以下步骤:
35.步骤1:将顶点在不同快照上的若干副本组织成顶点组,并设计基于顶点组的时变图数据结构。
36.具体地,本发明将顶点在不同快照上的多副本组织成顶点组,每个顶点组由该顶点的id及n个表示该顶点在不同快照的状态值组成,其中n为快照的数量。
37.示例性地,如图2中的(a)和图2中的(b)所示,共有两个快照s0和s1,顶点组v1{v
10
,v
11
}共有两个副本v
10
和v
11
,它们分别属于快照s0和s1。如图2中的(d)所示,每个顶点组的内存数据结构设计如下:顶点组id+该顶点不同快照的状态值(n个)+该顶点不同快照的聚合值(n个)。其中n为快照的数量。
38.步骤2:采用时变图分割方法将顶点组分配存储至不同numa节点。
39.其中,分配后的numa节点的数据布局包括按照步骤1设计的顶点组数据结构和任务队列数据结构。
40.具体地,时变图分割方法包括metis、sgp、roundrobin等;在本实例中采用轻量级且分割质量好的随机图分割方法roundrobin,roundrobin处理效率较高,速度较快。
41.每个numa节点的数据布局分为顶点组数据结构和任务队列数据结构两部分:
42.顶点组数据结构:如图2中的(d)所示,每个顶点组的内存数据结构设计如下:顶点组id+该顶点不同快照的状态值+该顶点不同快照的聚合值。
43.任务队列数据结构:每个任务队列(task queue)中有若干个任务,每个任务的数据结构如下:顶点id+入边邻居id列表+该顶点不同快照的聚合值;如图2中的(d)中顶点组0的任务数据结构为:{0,3,4,5,6,7,8,sum0,sum1}。
44.步骤三:通过notify-fly-notify进行时变图处理;所述时变图处理任务由依次对每个numa节点进行聚合计算组成,在每轮聚合计算的过程中,假设服务有m个numa节点,每个numa节点的每个顶点组向下一个numa节点发送聚合请求,下一个numa节点完成聚合任务后,向其下一个numa节点发送聚合请求,以此类推,直到所有numa节点都完成聚合任务。每个numa节点对应的所有顶点组被并行执行。
45.具体地,所述步骤三具体包括以下子步骤:
46.步骤3.1:收集本地入边邻居的顶点组状态,每个顶点组在本地numa节点完成本地聚合计算,如图2中的(c)所示;
47.步骤3.2:本地numa节点将步骤3.1得到的每个顶点组的聚合计算结果批量发送(notify)到第一下游numa节点,第一下游numa节点接收聚合计算结果并与其本地的数据进行聚合计算,完成聚合计算后,然后将聚合结果发送给它的下游节点;示例性地,以顶点组v0为例,当完成步骤3.2后,任务v0{0,3,4,5,6,7,8,sum0,sum1}将被发送到第一远程numa节点,如图2中的(d)所示,第一远程numa节点将针对顶点组v0的顶点组v3、v4、v5进行聚合计算;并将计算任务v0{0,6,7,8,sum0,sum1}发送到第二下游远程numa节点。
48.步骤3.3:第二下游远程numa节点,完成聚合任务后,再向其下一个numa节点发送聚合请求。以此类推,当最后一个下游numa节点完成聚合计算后,将聚合计算结果回返(notify)给本地numa节点,在本地numa节点处对下游numa节点输出的聚合结果与本地聚合结果进行合并计算,得到最终的聚合计算结果;如图2中的(e)所示,第二远程numa节点完成任务v0{0,6,7,8,sum0,sum1}的聚合计算,得到计算结果v0{0,sum0,sum1};该计算结果返回给本地numa节点,与本地计算结果进行合并,得到最终的聚合计算结果。
49.步骤3.4:循环上述步骤3.1~3.3,直至最终的聚合计算结果达到预设的精度阈值。
50.实施例1:基于上述的一种基于numa架构的notify-fly-notify时变图处理方法,本实施例1进行详细说明,如图2所示,在本实例中,假定有两个快照,该台计算机有3个numa节点。如图2共有两个快照s0和s1,图2中的(a)和图2中的(b)分别表示采用传统的pull 模式执行快照s0和s1。以为快照s0例,当在本地numa节点执行顶点v0时,该顶点共有7个邻居(v1,v2,v3,v4,v5,v6,v7),由于顶点v3,v4,v5,v6,v7分布在第一远程numa节点和第二远程numa节点上,因此共产生5次远程访问。同理,对于快照s1而言,当在本地numa节点执行顶点v0时,共产生6次远程访问。与传统方法不同,在本例中,采用基于numa架构的notify-fly-notify时变图处理方法工作过程如下,当在本地numa节点执行顶点v0时,两个快照的顶点v0被同时处理(即顶点组v0包含两个顶点v00和v01,分别表示顶点v0在快照s0和s1的副本),顶点组v0首先向第一远程numa节点发送聚合请求,当第一远程numa节点接收到请求后,分别进行三次聚合(sum);当完成聚合后,第一远程numa节点向第二远程numa节点发送聚合请求,当第二远程numa节点完成聚合请求后,将聚合结果发送给本地numa节点;整个过程只需要3次远程numa节点访问。图2中的(b)和图2中的(c)是第一远程numa节点和第二远程numa节点的数据
结构,以第一远程numa节点为例,为了提高计算效率,设计多个任务队列(本例子为两个),每个队列由独立核(core)管理,以第一独立核core 管理的队列为例,当收到任务v0(0,3,4,5,6,7,8,sum0,sum1)时,由于第三顶点,第四顶点,第五顶点在第一远程numa节点,第一独立核core 进行一次聚合操作,每次聚合操作将该顶点在两个快照的值分别与sum0和sum1的值进行聚合;当三次聚合完成后,第一独立核core将任务v0(0,6,7,7.8,sum0,sum1)发送给下一个numa节点,即第二远程numa节点。
51.综上所述,本发明通过notify-fly-notify时变图处理方法,设计基于顶点组的时变图数据结构,将顶点组分配存储至不同numa节点,依次对每个numa节点进行聚合计算,避免了numa节点的远程随机访问,有效减少了远程numa节点的随机访问次数,使时变图计算的内存访问效率得到显著提升。
52.如图3所示,本技术实施例提供一种电子设备,其包括存储器101,用于存储一个或多个程序;处理器102。当一个或多个程序被处理器102执行时,实现如上述第一方面中任一项的方法。
53.还包括通信接口103,该存储器101、处理器102和通信接口103相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。存储器101可用于存储软件程序及模块,处理器102通过执行存储在存储器101内的软件程序及模块,从而执行各种功能应用以及数据处理。该通信接口103可用于与其他节点设备进行信令或数据的通信。
54.其中,存储器101可以是但不限于,随机存取存储器101(random access memory,ram),只读存储器101(read only memory,rom),可编程只读存储器101(programmable read-only memory,prom),可擦除只读存储器101(erasable programmable read-only memory,eprom),电可擦除只读存储器101(electric erasable programmable read-only memory,eeprom)等。
55.处理器102可以是一种集成电路芯片,具有信号处理能力。该处理器102可以是通用处理器102,包括中央处理器102(central processing unit,cpu)、网络处理器102(network processor,np)等;还可以是数字信号处理器102(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
56.在本技术所提供的实施例中,应该理解到,所揭露的方法及系统,也可以通过其它的方式实现。以上所描述的方法及系统实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本技术的多个实施例的方法及系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
57.另外,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
58.另一方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器102执行时实现如上述第一方面中任一项的方法。所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器101(rom,read-only memory)、随机存取存储器101(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
59.本领域技术人员在考虑说明书及实践这里公开的内容后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的。
60.应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。
技术特征:
1.一种基于numa架构的时变图处理方法,其特征在于,所述方法包括:将顶点在不同快照上的若干副本组织成顶点组,并设计基于顶点组的时变图数据结构;采用时变图分割方法将顶点组分配存储至不同numa节点;通过notify-fly-notify进行时变图处理,包括:依次对每个numa节点进行聚合计算,在每轮聚合计算的过程中,每个numa节点的每个顶点组向下一个numa节点发送聚合请求,下一个numa节点完成聚合任务后,再向其下一个numa节点发送聚合请求,直到所有numa节点都完成聚合。2.根据权利要求1所述的基于numa架构的时变图处理方法,其特征在于,所述顶点组由顶点的id及n个表示顶点在不同快照的状态值组成,其中n为快照的数量。3.根据权利要求2所述的基于numa架构的时变图处理方法,其特征在于,基于顶点组的时变图数据结构包括:顶点组id、顶点在不同快照的状态值、顶点在不同快照的聚合值。4.根据权利要求1或3所述的基于numa架构的时变图处理方法,其特征在于,numa节点的数据布局包括设计的基于顶点组的时变图数据结构和任务队列数据结构。5.根据权利要求4所述的基于numa架构的时变图处理方法,其特征在于,任务队列数据结构包括:顶点id、入边邻居id列表、顶点在不同快照的聚合值。6.根据权利要求1所述的基于numa架构的时变图处理方法,其特征在于,所述时变图分割方法选自metis、sgp或roundrobin。7.根据权利要求1所述的基于numa架构的时变图处理方法,其特征在于,通过notify-fly-notify进行时变图处理的过程具体包括:收集本地入边邻居的顶点组状态,每个顶点组在本地numa节点完成本地聚合计算;本地numa节点将每个顶点组的聚合计算结果批量发送到第一下游numa节点,第一下游numa节点接收聚合计算结果并与其本地的数据进行聚合计算,完成聚合计算后,然后将聚合结果发送给第一下游numa节点的下游节点;当最后一个下游numa节点完成聚合计算后,将聚合计算结果回返给本地numa节点,在本地numa节点处对下游numa节点输出的聚合结果与本地聚合结果进行合并计算,得到最终的聚合计算结果;重复以上步骤,直至最终的聚合计算结果达到预设的精度阈值。8.根据权利要求1或7所述的基于numa架构的时变图处理方法,其特征在于,通过notify-fly-notify进行时变图处理还包括:在对每个numa节点进行聚合计算的过程中每个numa节点对应的所有顶点组被并行执行。9.一种电子设备,包括存储器和处理器,其特征在于,所述存储器与所述处理器耦接;其中,所述存储器用于存储程序数据,所述处理器用于执行所述程序数据以实现上述权利要求1-8任一项所述的基于numa架构的时变图处理方法。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-8中任一所述的基于numa架构的时变图处理方法。
技术总结
本发明公开了一种基于NUMA架构的时变图处理方法、电子设备、介质,所述方法将顶点在不同快照上的若干副本组织成顶点组,并设计基于顶点组的时变图数据结构;采用时变图分割方法将顶点组分配存储至不同NUMA节点;再进行时变图处理,包括:依次对每个NUMA节点进行聚合计算,在每轮聚合计算的过程中,每个NUMA节点的每个顶点组向下一个NUMA节点发送聚合请求,下一个NUMA节点完成聚合任务后,再向其下一个NUMA节点发送聚合请求,直到所有NUMA节点都完成聚合,其中,每个NUMA节点对应的所有顶点组被并行执行。本发明方法有效减少了远程NUMA节点的随机访问次数,使时变图计算的内存访问效率得到显著提升。率得到显著提升。率得到显著提升。
技术研发人员:
程永利 陈光 曾令仿
受保护的技术使用者:
之江实验室
技术研发日:
2023.02.10
技术公布日:
2023/3/10