CN110659278A - 基于cpu-gpu异构架构的图数据分布式处理系统 - Google Patents
基于cpu-gpu异构架构的图数据分布式处理系统 Download PDFInfo
- Publication number
- CN110659278A CN110659278A CN201810598182.5A CN201810598182A CN110659278A CN 110659278 A CN110659278 A CN 110659278A CN 201810598182 A CN201810598182 A CN 201810598182A CN 110659278 A CN110659278 A CN 110659278A
- Authority
- CN
- China
- Prior art keywords
- graph
- node
- cpu
- gpu
- processing
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明公开一种基于CPU‑GPU异构架构的图数据分布式处理系统,包括:实现一个图概要生成方法,用于生成大规模图数据的概要图并用于加速图算法收敛或运算;运行时两级负载均衡系统,用于均衡各计算节点间的负载以及各异构计算节点内CPU和GPU处理器上的负载;一个消息处理方法,通过压缩和合并消息以提高通信效率;将大规模图数据进行划分,采用BSP同步模式在多个计算节点上分布式地处理图数据。本发明实现了一个基于CPU‑GPU异构架构的图计算系统,分布式处理系统能够提高处理图数据的效率与规模,利用GPU的强大计算能力能够进一步提高系统性能。
Description
技术领域
本发明属于图数据处理和高性能计算领域,具体涉及一种基于CPU-GPU异构架构的分布式图数据处理系统。
背景技术
图数据结构表示被广泛应用于各种科学领域和工程领域来表示各种网络。 一些问题被映射为非常大规模的图,包含百万甚至数十亿个顶点和边。例如,VLSI芯片布局,物流网络分析、车辆线路规划与调度、社交网络分析和数据挖掘往往需要在大规模的图数据上运行图算法。在这个大数据时代,随着社交网络和电商网络等规模的不断增长,带来了图数据的爆炸式增长。 万维网目前拥有超过48.4亿个页面和超过一万亿个网址。 此外,社交网络Facebook的图拥有超过14.4亿顶点(用户)和140亿条边(社交链接)。 随着图规模的急速增长,如何高效率地执行图算法分析图数据成为了一个挑战。
近年来,研究者们提出了各种图数据计算框架用于分析和挖掘大规模的图,特别是网络图和社交图。早期的图计算框架如Stratosphere是基于MapReduce模型的,然而不是所有图算法都能很自然地映射到MapReduce模型上,并且近期的研究已经表明基于MapReduce模型的图处理框架效率不高。近期的图计算框架大部分都基于谷歌于2010年在Pregel图计算系统中提出的Vertex-centric(以节点为中心)的计算模型。这些图计算框架可分为单机计算框架及分布式计算框架两类。单机计算框架包括GraphChi、Ligra、gGraph和Totem等,它们只能运行在单台计算机上,其中GraphChi和Ligra是纯CPU计算框架,而gGraph及Totem是基于CPU-GPU混合异构架构的计算框架。受内存大小及磁盘性能的限制,单机系统不能高效地处理大规模的图。分布式计算框架可以将大规模的图划分后在多个计算节点上并行进行处理,因此可以处理大规模的图。根据计算框架在每轮迭代后是否进行同步,可将它们进一步划分为同步系统及异步系统。典型的分布式同步图计算框架包括Pregel和GPS,而GraphLab和PowerGraph是两个典型的分布式异步图计算框架。现有的这些分布式图计算框架均为纯CPU计算框架,不能利用数据中心计算节点中已大量配置的GPU协处理器的强大处理能力。
GPU协处理器由众核、高带宽显存与大量的寄存器及缓存构成,具备比常规CPU处理器高得多的计算能力及能效。通过使用GPU来加速各种通用计算包括机器学习、大数据分析、图像处理等,在运行时间上可获得相比单个CPU的十几倍甚至几十倍的加速比。谷歌、腾讯、阿里、百度等的数据中心均大量配备了GPU协处理器。要利用GPU的强大计算能力,需要把计算的各个步骤映射到GPU的线程和内存体系上。
大多数的图算法均为迭代式算法,一般需迭代至收敛或者迭代指定的次数后终止。图算法的并行度一般均随着图的规模(节点及边的数量)增大而增大,这为它们在GPU上的并行实现提供了可能。同时,GPU的强大计算能力,为加速大规模图数据处理提供了强有力的基础。因此本发明致力于实现一个可运行在CPU-GPU异构架构集群上的高效率分布式图计算系统,可将大规模图数据进行划分后分配到多个计算节点上,利用节点中的CPU处理器和GPU处理器进行并行计算,并处理算法迭代过程中的同步、负载均衡及通信等问题。
发明内容
针对当前单机图处理系统不能处理大规模图数据,分布式图处理系统不能利用计算节点中的GPU协处理器来加速计算的情况,本发明提出了一种基于CPU-GPU异构架构的分布式图处理系统,将大规模的图数据划分为图的分片,分配到多个计算节点上并行处理,采用同步模式进行算法迭代,在算法运行过程中进行动态负载均衡和消息的压缩处理,充分利用数据中心异构集群的CPU和GPU强大的计算能力,大幅提高大规模图数据处理的性能。
为实现上述目的,本发明提供了一种基于CPU-GPU异构架构的分布式图处理系统,包括图的概要生成模块、图划分模块、迭代处理模块、两级负载均衡模块、消息处理模块和计算执行模块,其中:
所述图的概要生成模块,用于根据概要生成方法所定义的4种变换将原始图数据G中的部分节点及边删除,从而得到新的较小规模的图数据G’,即图的概要。在后续进行图数据处理时,图的概要G’可用于初始化G或者直接替换G,然后运行图算法。图的概要生成模块在集群管理节点(master node)的CPU中执行完成。
所述图划分模块,用于根据集群中计算节点(computing node)的个数及其处理能力将图分片,给每计算个节点分配1个图分片。计算节点由于其CPU处理器、GPU处理器及存储等硬件配置的不同而具有不同的图数据处理能力,图划分模块进行划分时给某个节点的图分片大小与该节点的处理能力成正比。该模块在在集群管理节点的CPU中执行完成。
所述迭代处理模块,用于根据算法迭代执行的设置,在集群完成当前轮次的计算任务后,判断是否达到了设置的结束条件。如果达到,则终止集群执行;如果没有,则使集群继续进行下一轮迭代。该模块在在集群管理节点的CPU中执行完成。
所述两级负载均衡模块,包含第一级负载均衡子模块及第二级负载均衡子模块,用于进行计算节点间以及计算节点内CPU处理器和GPU处理器之间的负载均衡。第一级负载均衡子模块运行在集群管理节点的CPU上,通过动态调整计算节点的负载来达到计算节点之间的均衡,使各计算节点的每一轮迭代以相同或相近的时间完成。第二级负载均衡子模块运行在各计算节点的CPU上,通过调节计算节点内CPU和GPU处理器上的负载,使它们以相同或相近的时间结束每轮迭代。
所述消息处理模块,用于在每个节点内维护一个收信箱及一个发信箱,分别用于接收消息及发送消息。待发送的消息先按照目标节点号、消息类型和算法类型进行压缩然后发送。该模块在每个计算节点的CPU上运行完成。
所述计算执行模块,包含CPU计算执行模块(CPU Worker)及GPU计算执行模块(GPUWorker),分别运行在每个计算节点的CPU处理器及GPU处理器上,执行图算法对图数据进行并行处理。
在本发明的一个实施例中,所述概要生成方法中定义的4种变换(Transform)的条件及对应操作具体为:Transform 1(V):如果节点V的出度(out degree)为0,删除节点V和它的所有入边;Transform 2(V):如果节点V的入度(in degree)为0,删除节点V和它的所有出边;Transform 3(V):如果节点V仅有1条入边(M,V)和1条出边(V,N),则删除节点V和它的所有入边及出边,并增加边(M,N);Transform 4(V):如果节点V有1条入边(M,V)且存在另外一个任意节点K,存在边(M,K)和(K,V),则删除边(M,V)。
在本发明的一个实施例中,所述概要生成方法对原始图数据G的每个节点V逐个进行处理,具体过程为:1)检查V是否满足Transform 1的条件,如果满足则执行Transform 1(V)后转入5),否则转入2);2)检查V是否满足Transform 2的条件,如果满足则执行Transform 2(V)后转入5),否则转入3);3)检查V是否满足Transform 3的条件,如果满足则执行Transform 3(V)后转入5),否则转入4);4)检查V是否满足Transform 4的条件,如果满足则执行Transform 4(V);5)结束对此节点的处理。
在本发明的一个实施例中,所述概要生成方法对原始图数据G的所有节点均处理一遍后,得到规模较小的概要图G’,分两种情况应用:对于完整查询,在运行图算法之前,使用G’去初始化原始图数据G,可使图算法在处理G时更快收敛;对于部分查询,直接使用G’代替G,供图算法处理,这样由于数据规模变小,可更快得到结果。完整查询是指形如“查找图中Pagerank最高的10个节点”或“从图中找到所有的社区”这类搜索全局结果的查询,而部分查询是指形如“查找图中Pagerank大于5的10个节点”或“从图中找到10个节点数大于50的社区”这类搜索局部结果的查询。
在本发明的一个实施例中,所述图划分具体执行方法为:采用点分割(Vertex-Cut),每条边只存储一次,只会被划分到一个图的分片里。如果一个节点的边被划分到了多个图的分片S1、S2…、Sn里,则这个节点会被复制到所有n个分片中。图划分后,图的分片的数量与计算节点的数量相等,即每个计算节点处理1个图分片。根据是否有计算节点的图数据处理性能数据,图划分的策略分为两种:如果没有性能数据,就进行均匀划分,使每个图分片中边的数量大致相当;如果有性能数据,就进行带权重的划分,使每个图分片中边的数量和该图分片将被分配的计算节点的处理能力成正比。计算节点的图数据处理能力可以用Graph500(https://graph500.org/)中定义的TEPS(Traversed Edges Per Second,每秒钟访问的边数)来衡量,可以由其它系统获得,或者用本系统在集群上运行BFS(BreadthFirst Search)或SSSP(Single Source Shortest Path)等算法处理中等规模的图数据来获得。获得各计算节点的图数据处理能力为一次性过程,一旦获得后就可以存储到集群管理节点上,并用于本系统的多次运行中。
在本发明的一个实施例中,所述迭代处理模块具体用于,在对图算法进行迭代处理的过程中,监测判断迭代过程是否达到了算法的终止条件。终止条件分为两种:迭代指定的次数;迭代至算法收敛。通过计算上一轮迭代和当前迭代轮次各个顶点值之间的差异,当所有顶点的差异值均小于所设定的全局阈值时,认为算法收敛。
在本发明的一个实施例中,所述两级负载均衡模块包含第一级负载均衡子模块及第二级负载均衡子模块,其执行具体为:第一级负载均衡子模块运行在集群管理节点的CPU上,在每轮迭代结束时统计各计算节点的本轮迭代运行时间,然后将运行时间较长的计算节点上的数据按照运行时间取一部分重新分配至运行时间较短的计算节点上,使下一轮迭代中各计算节点的运行时间趋于一致;第二级负载均衡子模块运行在各计算节点的CPU上,在每轮迭代结束时统计计算节点内各CPU处理器及GPU处理器的TEPS(Traversed EdgesPer Second),据此确定下一轮迭代时节点内CPU处理器和GPU处理器的数据分配比例,使它们在下一轮迭代时以相同或相近的时间结束。
在本发明的一个实施例中,所述消息处理模块的执行具体为:在每个计算节点内维护一个收信箱及一个发信箱,分别用于接收消息及发送消息。其中收信箱设置一块缓冲区,而发信箱为集群中的每一个其它节点设置一块缓冲区。从一个节点K发往其它节点的消息M=(节点号,值)可根据操作符(Operator)进行压缩,将发往同一个节点的多条消息合并为1条后发送。操作符是由图算法决定的。以Pagerank算法为例,在每轮迭代中,每个节点V将从它的所有入边获取邻居节点的最新值,计算出V的最新值后再顺着它的所有出边将V的新值扩散出去,因此这个算法的操作符是“+”。如果有3条消息(5, 0.15)、(5, 0.25)及(5,0.05),则可以被合并为(5,0.15+0.25+0.05),即(5,0.45)。
在本发明的一个实施例中,所述计算执行模块的执行具体为:所有集群节点的同步运行及通信使用MPI(Message Passing Interface);计算节点内基于CUDA计算模型,在CPU处理器和GPU处理器上同时运行图算法,各自处理分配给该节点处理的图分片的一部分数据,CPU处理器和GPU处理器的数据分配比例由第二级负载均衡子模块确定及动态调节。CPU上的图算法线程称做CPU Worker,而GPU上的图算法线程被称做GPU Worker。
与现有技术相比,本图计算系统具有以下的有益效果:
(1)高效的图数据处理效率
首先,本图数据处理系统是一个分布式的计算系统,可运行在集群上,充分利用集群中的多个计算节点并行计算,每个计算节点处理一个图的分片,从而可以高效地处理大规模的图数据。其次,本系统利用计算节点内的CPU处理器及GPU处理器来并行处理图数据。CPU和GPU协同工作,高效地完成整个图数据处理任务。本系统所采用的两级负载均衡及消息处理方法进一步提高了处理图数据的效率。
(2)加快图算法的迭代收敛及执行速度
本图数据处理系统包括了概要生成方法,可生成较小规模的概要图G’。对于全部查询,G’可用于初始化原始图数据G后供图算法处理,可加快图算法的收敛速度。对于部分查询,可直接用G’代替G供图算法处理,可加快图算法的执行速度。
(3)易于使用的图数据处理框架
本系统基于MPI及CUDA(Compute Unified Device Architecture),采用同步编程模型,实现了一个基于CPU和GPU混合异构架构的分布式图处理系统。用户可以较为容易地通过使用本系统来达到在CPU和GPU混合异构集群上进行分布式大规模图数据处理的目标,而不需要具备大量GPU编程开发的知识和经验。
附图说明
图1是基于CPU-GPU异构架构的图数据分布式处理方法执行流程。
图2是基于CPU-GPU异构架构的图数据分布式处理系统模块示意图。
图3是图数据概要生成方法中的4种变换。
图4是基于CPU-GPU异构架构的图数据分布式处理系统的性能实验结果图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。
本发明采用基于CPU-GPU异构架构的分布式图处理方法,将大规模的图数据划分为图的分片分配到多个计算节点上使用CPU及GPU并行处理,采用同步模式进行算法迭代,在算法运行前生成图的概要,在算法运行过程中进行动态负载均衡和消息的压缩处理,解决了当前单机图处理系统不能处理大规模图数据,分布式图处理系统不能利用计算节点中的GPU协处理器来加速计算的问题,充分利用数据中心异构集群的CPU和GPU强大的并行计算优势来加速图数据处理过程。如图1所示,本发明基于CPU-GPU异构架构的图数据分布式处理方法执行流程如下:
(1)图的概要生成模块,用于根据概要生成方法所定义的4种变换将原始图数据G中的部分节点及边删除,从而得到新的较小规模的图数据G’,即图的概要。在后续进行图数据处理时,图的概要G’可用于初始化G或者直接替换G,然后运行图算法。图的概要生成模块在集群管理节点(master node)的CPU中执行完成,如图2所示;
其中所述概要生成方法中定义的4种变换(Transform)的条件及对应操作具体为:Transform 1(V):如果节点V的出度(out degree)为0,删除节点V和它的所有入边,如图3(a)所示;Transform 2(V):如果节点V的入度(in degree)为0,删除节点V和它的所有出边,如图3(b)所示;Transform 3(V):如果节点V仅有1条入边(M,V)和1条出边(V,N),则删除节点V和它的所有入边及出边,并增加边(M,N),如图3(c)所示;Transform 4(V):如果节点V有1条入边(M,V)且存在另外一个任意节点K,存在边(M,K)和(K,V),则删除边(M,V),如图3(d)所示。
所述概要生成方法对原始图数据G的每个节点V逐个进行处理,具体过程为:1)检查V是否满足Transform 1的条件,如果满足则执行Transform 1(V)后转入5),否则转入2);2)检查V是否满足Transform 2的条件,如果满足则执行Transform 2(V)后转入5),否则转入3);3)检查V是否满足Transform 3的条件,如果满足则执行Transform 3(V)后转入5),否则转入4);4)检查V是否满足Transform 4的条件,如果满足则执行Transform 4(V);5)结束对此节点的处理。
所述概要生成方法对原始图数据G的所有节点均处理一遍后,得到规模较小的概要图G’。概要图G’具体有两种用途:对于完整查询,在运行图算法之前,使用G’去初始化原始图数据G,可使图算法在处理G时更快收敛;对于部分查询,直接使用G’代替G,供图算法处理,这样由于数据规模变小,可更快得到结果。完整查询是指形如“查找图中Pagerank最高的10个节点”或“从图中找到所有的社区”这类搜索全局结果的查询,而部分查询是指形如“查找图中Pagerank大于5的10个节点”或“从图中找到10个节点数大于50的社区”这类搜索局部结果的查询。
(2)图划分模块,用于根据集群中计算节点(computing node)的个数及其处理能力将图分片,给每计算个节点分配1个图分片。计算节点由于其CPU处理器、GPU处理器及存储等硬件配置的不同而具有不同的图数据处理能力,图划分模块进行划分时给某个节点的图分片大小与该节点的处理能力成正比。该模块在在集群管理节点的CPU中执行完成,如图2所示;
具体地,所述图划分具体执行方法为:采用点分割(Vertex-Cut),每条边只存储一次,只会被划分到一个图的分片里。如果一个节点的边被划分到了多个图的分片S1、S2…、Sn里,则这个节点会被复制到所有n个分片中。图划分后,图的分片的数量与计算节点的数量相等,即每个计算节点处理1个图分片。根据是否有计算节点的图数据处理性能数据,图划分的策略分为两种:如果没有性能数据,就进行均匀划分,使每个图分片中边的数量大致相当;如果有性能数据,就进行带权重的划分,使每个图分片中边的数量和该图分片将被分配的计算节点的处理能力成正比。计算节点的图数据处理能力可以用Graph500(https://graph500.org/)中定义的TEPS(Traversed Edges Per Second,每秒钟访问的边数)来衡量,可以由其它系统获得,或者用本系统在集群上运行BFS(Breadth First Search)或SSSP(Single Source Shortest Path)等算法处理中等规模的图数据来获得。获得各计算节点的图数据处理能力为一次性过程,一旦获得后就可以存储到集群管理节点上,并用于本系统的多次运行中。
(3)迭代处理模块,用于根据算法迭代执行的设置,在集群完成当前轮次的计算任务后,判断是否达到了设置的结束条件。如果达到,则终止集群执行;如果没有,则使集群继续进行下一轮迭代。此模块运行在集群管理节点上,如图2所示;
具体地,所述迭代处理模块具体用于,在对图算法进行迭代处理的过程中,监测判断迭代过程是否达到了算法的终止条件。终止条件分为两种:迭代指定的次数;迭代至算法收敛。通过计算上一轮迭代和当前迭代轮次各个顶点值之间的差异,当所有顶点的差异值均小于所设定的全局阈值时,认为算法收敛。
(4)负载均衡模块,包含第一级负载均衡子模块及第二级负载均衡子模块,用于进行计算节点间以及计算节点内CPU处理器和GPU处理器之间的负载均衡。如图2所示,第一级负载均衡子模块运行在集群管理节点的CPU上,通过动态调整计算节点的负载来达到计算节点之间的均衡,使各计算节点的每一轮迭代以相同或相近的时间完成。如图2所示,第二级负载均衡子模块运行在各计算节点的CPU上,通过调节计算节点内CPU和GPU处理器上的负载,使它们以相同或相近的时间结束每轮迭代;
具体地,所述两级负载均衡模块包含第一级负载均衡子模块及第二级负载均衡子模块,其执行具体为:第一级负载均衡子模块运行在集群管理节点的CPU上,在每轮迭代结束时统计各计算节点的本轮迭代运行时间,然后将运行时间较长的计算节点上的数据按照运行时间取一部分重新分配至运行时间较短的计算节点上,使下一轮迭代中各计算节点的运行时间趋于一致;第二级负载均衡子模块运行在各计算节点的CPU上,在每轮迭代结束时统计计算节点内各CPU处理器及GPU处理器的TEPS(Traversed Edges Per Second),据此确定下一轮迭代时节点内CPU处理器和GPU处理器的数据分配比例,使它们在下一轮迭代时以相同或相近的时间结束。
(5)消息处理模块,用于在每个节点内维护一个收信箱及一个发信箱,分别用于接收消息及发送消息。待发送的消息先按照目标节点号、消息类型和算法类型进行压缩然后发送。该模块在每个计算节点的CPU上运行完成,如图2所示;
具体地,所述消息处理模块的执行具体为:在每个计算节点内维护一个收信箱及一个发信箱,分别用于接收消息及发送消息。其中收信箱设置一块缓冲区,而发信箱为集群中的每一个其它节点设置一块缓冲区。从一个节点K发往其它节点的消息M=(节点号,值)可根据操作符(Operator)进行压缩,将发往同一个节点的多条消息合并为1条后发送。操作符是由图算法决定的。以Pagerank算法为例,在每轮迭代中,每个节点V将从它的所有入边获取邻居节点的最新值,计算出V的最新值后再顺着它的所有出边将V的新值扩散出去,因此这个算法的操作符是“+”。如果有3条消息(5, 0.15)、(5, 0.25)及(5, 0.05),则可以被合并为(5,0.15+0.25+0.05),即(5,0.45)。
(6)计算执行模块,包含CPU计算执行模块(CPU Worker)及GPU计算执行模块(GPUWorker),分别运行在每个计算节点的CPU处理器及GPU处理器上,执行图算法对图数据进行处理,如图2所示;
具体地,所述计算执行模块的执行具体为:所有集群节点的同步运行及通信使用MPI(Message Passing Interface);计算节点内基于CUDA计算模型,在CPU处理器和GPU处理器上同时运行图算法,各自处理分配给该节点处理的图分片的一部分数据,CPU处理器和GPU处理器的数据分配比例由第二级负载均衡子模块确定及动态调节。CPU上的图算法线程称做CPU Worker,而GPU上的图算法线程被称做GPU Worker。
(7)性能测试结果。本发明还包含详细的测试结果,测试使用了33个Amazong2.2xlarge云计算主机构成的集群,每个g2.2xlarge主机包括1个Nvidia GPU,8个vCPU,15GB内存和60GB SSD硬盘。其中Nvidia GPU有1536个CUDA核以及4GB DDR显存。33个主机中的1个作为集群管理节点,其它32个作为计算节点。在本发明的图数据处理系统上运行单源最短路径算法(SSSP)、连通分支(CC)和Pagerank算法处理Twitter2010等5个图数据,并和两个典型的图数据处理系统GraphLab及GPS进行性能比较。如图4所示,本发明的图数据处理系统在运行3种图算法时的性能均优于比较的图数据处理系统GraphLab及GPS。主要原因为:1)本发明能够利用GPU对图数据处理进行加速;2)本发明中的图概要方法和两级负载均衡等方法对性能有提升。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围内。
Claims (9)
1.一种基于CPU-GPU异构架构的分布式图处理系统,其特征在于,所述系统包括图的概要生成模块、图划分模块、迭代处理模块、两级负载均衡模块、消息处理模块和计算执行模块,其中:
所述图的概要生成模块,用于根据概要生成方法所定义的4种变换将原始图数据G中的部分节点及边删除,从而得到新的较小规模的图数据G’,即图的概要。在后续进行图数据处理时,图的概要G’可用于初始化G或者直接替换G,然后运行图算法。图的概要生成模块在集群管理节点(master node)的CPU中执行完成。
所述图划分模块,用于根据集群中计算节点(computing node)的个数及其处理能力将图分片,给每计算个节点分配1个图分片。计算节点由于其CPU处理器、GPU处理器及存储等硬件配置的不同而具有不同的图数据处理能力,图划分模块进行划分时给某个节点的图分片大小与该节点的处理能力成正比。该模块在在集群管理节点的CPU中执行完成。
所述迭代处理模块,用于根据算法迭代执行的设置,在集群完成当前轮次的计算任务后,判断是否达到了设置的结束条件。如果达到,则终止集群执行;如果没有,则使集群继续进行下一轮迭代。该模块在在集群管理节点的CPU中执行完成。
所述两级负载均衡模块,包含第一级负载均衡子模块及第二级负载均衡子模块,用于进行计算节点间以及计算节点内CPU处理器和GPU处理器之间的负载均衡。第一级负载均衡子模块运行在集群管理节点的CPU上,通过动态调整计算节点的负载来达到计算节点之间的均衡,使各计算节点的每一轮迭代以相同或相近的时间完成。第二级负载均衡子模块运行在各计算节点的CPU上,通过调节计算节点内CPU和GPU处理器上的负载,使它们以相同或相近的时间结束每轮迭代。
所述消息处理模块,用于在每个节点内维护一个收信箱及一个发信箱,分别用于接收消息及发送消息。待发送的消息先按照目标节点号、消息类型和算法类型进行压缩然后发送。该模块在每个计算节点的CPU上运行完成。
所述计算执行模块,包含CPU计算执行模块(CPU Worker)及GPU计算执行模块(GPUWorker),分别运行在每个计算节点的CPU处理器及GPU处理器上,执行图算法对图数据进行并行处理。
2.根据权利要求1所述的基于CPU-GPU异构架构的分布式图处理系统,其特征在于,所述概要生成方法中定义的4种变换(Transform)的条件及对应操作具体为:Transform 1(V):如果节点V的出度(out degree)为0,删除节点V和它的所有入边;Transform 2(V):如果节点V的入度(in degree)为0,删除节点V和它的所有出边;Transform 3(V):如果节点V仅有1条入边(M,V)和1条出边(V,N),则删除节点V和它的所有入边及出边,并增加边(M,N);Transform 4(V):如果节点V有1条入边(M,V)且存在另外一个任意节点K,存在边(M,K)和(K,V),则删除边(M,V)。
3.根据权利要求2所述的基于CPU-GPU异构架构的分布式图处理系统,其特征在于,其中,所述概要生成方法对原始图数据G的每个节点V逐个进行处理,具体过程为:1)检查V是否满足Transform 1的条件,如果满足则执行Transform 1(V)后转入5),否则转入2);2)检查V是否满足Transform 2的条件,如果满足则执行Transform 2(V)后转入5),否则转入3);3)检查V是否满足Transform 3的条件,如果满足则执行Transform 3(V)后转入5),否则转入4);4)检查V是否满足Transform 4的条件,如果满足则执行Transform 4(V);5)结束对此节点的处理。
4.根据权利要求2或3所述的基于CPU-GPU异构架构的分布式图处理系统,其特征在于,其中,所述概要生成方法对原始图数据G的所有节点均处理一遍后,得到规模较小的概要图G’,分两种情况应用:对于搜索全局结果的查询,在运行图算法之前,使用G’去初始化原始图数据G,可使图算法在处理G时更快收敛;对于搜索局部结果的查询,直接使用G’代替G,供图算法处理,这样由于数据规模变小,可更快得到结果。
5.根据权利要求1或2所述的基于CPU-GPU异构架构的分布式图处理系统,其特征在于,所述图划分具体执行方法为:采用点分割(Vertex-Cut),每条边只存储一次,只会被划分到一个图的分片里。如果一个节点的边被划分到了多个图的分片S1、S2…、Sn里,则这个节点会被复制到所有n个分片中。图划分后,图的分片的数量与计算节点的数量相等,即每个计算节点处理1个图分片。根据是否有计算节点的图数据处理性能数据,图划分的策略分为两种:如果没有性能数据,就进行均匀划分,使每个图分片中边的数量大致相当;如果有性能数据,就进行带权重的划分,使每个图分片中边的数量和该图分片将被分配的计算节点的处理能力成正比。
6.根据权利要求1或2所述的基于CPU-GPU异构架构的分布式图处理系统,其特征在于,所述迭代处理模块具体用于,在对图算法进行迭代处理的过程中,监测判断迭代过程是否达到了算法的终止条件。终止条件分为两种:迭代指定的次数;迭代至算法收敛。通过计算上一轮迭代和当前迭代轮次各个顶点值之间的差异,当所有顶点的差异值均小于所设定的全局阈值时,认为算法收敛。
7.根据权利要求1或2所述的基于CPU-GPU异构架构的分布式图处理系统,其特征在于,所述两级负载均衡模块包含第一级负载均衡子模块及第二级负载均衡子模块,其执行具体为:第一级负载均衡子模块运行在集群管理节点的CPU上,在每轮迭代结束时统计各计算节点的本轮迭代运行时间,然后将运行时间较长的计算节点上的数据按照运行时间取一部分重新分配至运行时间较短的计算节点上,使下一轮迭代中各计算节点的运行时间趋于一致;第二级负载均衡子模块运行在各计算节点的CPU上,在每轮迭代结束时统计计算节点内各CPU处理器及GPU处理器的TEPS(Traversed Edges Per Second),据此确定下一轮迭代时节点内CPU处理器和GPU处理器的数据分配比例,使它们在下一轮迭代时以相同或相近的时间结束。
8.根据权利要求1或2所述的基于CPU-GPU异构架构的分布式图处理系统,其特征在于,所述消息处理模块的执行具体为:在每个计算节点内维护一个收信箱及一个发信箱,分别用于接收消息及发送消息。其中收信箱设置一块缓冲区,而发信箱为集群中的每一个其它节点设置一块缓冲区。从一个节点K发往其它节点的消息M=(节点号,值)可根据操作符(Operator)进行压缩,将发往同一个节点的多条消息合并为1条后发送。操作符由具体图算法决定。
9.根据权利要求1或2所述的基于CPU-GPU异构架构的分布式图处理系统,其特征在于,所述计算执行模块的执行具体为:所有集群节点的同步运行及通信使用MPI(MessagePassing Interface);计算节点内基于CUDA计算模型,在CPU处理器和GPU处理器上同时运行图算法,各自处理分配给该节点处理的图分片的一部分数据,CPU处理器和GPU处理器的数据分配比例由第二级负载均衡子模块确定及动态调节。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810598182.5A CN110659278A (zh) | 2018-06-12 | 2018-06-12 | 基于cpu-gpu异构架构的图数据分布式处理系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810598182.5A CN110659278A (zh) | 2018-06-12 | 2018-06-12 | 基于cpu-gpu异构架构的图数据分布式处理系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110659278A true CN110659278A (zh) | 2020-01-07 |
Family
ID=69026177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810598182.5A Pending CN110659278A (zh) | 2018-06-12 | 2018-06-12 | 基于cpu-gpu异构架构的图数据分布式处理系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110659278A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110851178A (zh) * | 2020-01-14 | 2020-02-28 | 江苏鸿程大数据技术与应用研究院有限公司 | 一种基于分布式图可达计算的过程间程序静态分析方法 |
CN112148474A (zh) * | 2020-08-20 | 2020-12-29 | 安徽中科龙安科技股份有限公司 | 面向负载均衡的龙芯大数据一体机自适应任务分割方法及系统 |
CN112632155A (zh) * | 2021-01-15 | 2021-04-09 | 万文兰 | 一种基于云计算的信息处理方法及系统 |
CN112989082A (zh) * | 2021-05-20 | 2021-06-18 | 南京甄视智能科技有限公司 | Cpu和gpu混合的自适应人脸搜索方法及系统 |
WO2022016833A1 (zh) * | 2020-07-24 | 2022-01-27 | 苏州浪潮智能科技有限公司 | 一种图计算方法、装置、设备及存储介质 |
CN114742691A (zh) * | 2022-05-19 | 2022-07-12 | 支付宝(杭州)信息技术有限公司 | 一种图数据采样方法和系统 |
CN115269209A (zh) * | 2022-09-30 | 2022-11-01 | 浙江宇视科技有限公司 | 一种gpu集群调度方法及服务器 |
CN115587222A (zh) * | 2022-12-12 | 2023-01-10 | 阿里巴巴(中国)有限公司 | 分布式图计算方法、系统及设备 |
CN112148474B (zh) * | 2020-08-20 | 2024-06-04 | 安徽中科龙安科技股份有限公司 | 面向负载均衡的龙芯大数据一体机自适应任务分割方法及系统 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006228162A (ja) * | 2005-02-21 | 2006-08-31 | Advanced Telecommunication Research Institute International | 情報処理装置およびプログラム |
US20090240682A1 (en) * | 2008-03-22 | 2009-09-24 | International Business Machines Corporation | Graph search system and method for querying loosely integrated data |
CN102099788A (zh) * | 2008-06-06 | 2011-06-15 | 苹果公司 | 用于在多处理器上进行数据并行计算的应用编程接口 |
CN103699606A (zh) * | 2013-12-16 | 2014-04-02 | 华中科技大学 | 一种基于顶点切割与社区聚集的大规模图划分方法 |
CN104965761A (zh) * | 2015-07-21 | 2015-10-07 | 华中科技大学 | 一种基于gpu/cpu混合架构的流程序多粒度划分与调度方法 |
US20160125566A1 (en) * | 2014-10-29 | 2016-05-05 | Daegu Gyeongbuk Institute Of Science And Technology | SYSTEM AND METHOD FOR PROCESSING LARGE-SCALE GRAPHS USING GPUs |
CN105653204A (zh) * | 2015-12-24 | 2016-06-08 | 华中科技大学 | 一种基于磁盘的分布式图计算方法 |
CN105787865A (zh) * | 2016-03-01 | 2016-07-20 | 西华大学 | 基于游戏引擎和gpu并行处理的分形图生成与渲染方法 |
CN106777351A (zh) * | 2017-01-17 | 2017-05-31 | 中国人民解放军国防科学技术大学 | 基于art树分布式系统图存储计算系统及其方法 |
CN107122244A (zh) * | 2017-04-25 | 2017-09-01 | 华中科技大学 | 一种基于多gpu的图数据处理系统及方法 |
CN107168795A (zh) * | 2017-05-12 | 2017-09-15 | 西南大学 | 基于cpu‑gpu异构复合式并行计算框架的密码子偏差系数模型方法 |
US20170371665A1 (en) * | 2016-06-23 | 2017-12-28 | Advanced Micro Devices, Inc. | System and method for processing data in a computing system |
US20180089002A1 (en) * | 2016-09-28 | 2018-03-29 | Futurewei Technologies, Inc. | Apparatus and method for scheduling graph computing on heterogeneous platforms based on energy efficiency |
-
2018
- 2018-06-12 CN CN201810598182.5A patent/CN110659278A/zh active Pending
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006228162A (ja) * | 2005-02-21 | 2006-08-31 | Advanced Telecommunication Research Institute International | 情報処理装置およびプログラム |
US20090240682A1 (en) * | 2008-03-22 | 2009-09-24 | International Business Machines Corporation | Graph search system and method for querying loosely integrated data |
CN102099788A (zh) * | 2008-06-06 | 2011-06-15 | 苹果公司 | 用于在多处理器上进行数据并行计算的应用编程接口 |
CN103699606A (zh) * | 2013-12-16 | 2014-04-02 | 华中科技大学 | 一种基于顶点切割与社区聚集的大规模图划分方法 |
US20160125566A1 (en) * | 2014-10-29 | 2016-05-05 | Daegu Gyeongbuk Institute Of Science And Technology | SYSTEM AND METHOD FOR PROCESSING LARGE-SCALE GRAPHS USING GPUs |
CN104965761A (zh) * | 2015-07-21 | 2015-10-07 | 华中科技大学 | 一种基于gpu/cpu混合架构的流程序多粒度划分与调度方法 |
CN105653204A (zh) * | 2015-12-24 | 2016-06-08 | 华中科技大学 | 一种基于磁盘的分布式图计算方法 |
CN105787865A (zh) * | 2016-03-01 | 2016-07-20 | 西华大学 | 基于游戏引擎和gpu并行处理的分形图生成与渲染方法 |
US20170371665A1 (en) * | 2016-06-23 | 2017-12-28 | Advanced Micro Devices, Inc. | System and method for processing data in a computing system |
US20180089002A1 (en) * | 2016-09-28 | 2018-03-29 | Futurewei Technologies, Inc. | Apparatus and method for scheduling graph computing on heterogeneous platforms based on energy efficiency |
CN106777351A (zh) * | 2017-01-17 | 2017-05-31 | 中国人民解放军国防科学技术大学 | 基于art树分布式系统图存储计算系统及其方法 |
CN107122244A (zh) * | 2017-04-25 | 2017-09-01 | 华中科技大学 | 一种基于多gpu的图数据处理系统及方法 |
CN107168795A (zh) * | 2017-05-12 | 2017-09-15 | 西南大学 | 基于cpu‑gpu异构复合式并行计算框架的密码子偏差系数模型方法 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110851178B (zh) * | 2020-01-14 | 2020-05-19 | 江苏鸿程大数据技术与应用研究院有限公司 | 一种基于分布式图可达计算的过程间程序静态分析方法 |
CN110851178A (zh) * | 2020-01-14 | 2020-02-28 | 江苏鸿程大数据技术与应用研究院有限公司 | 一种基于分布式图可达计算的过程间程序静态分析方法 |
WO2022016833A1 (zh) * | 2020-07-24 | 2022-01-27 | 苏州浪潮智能科技有限公司 | 一种图计算方法、装置、设备及存储介质 |
CN112148474A (zh) * | 2020-08-20 | 2020-12-29 | 安徽中科龙安科技股份有限公司 | 面向负载均衡的龙芯大数据一体机自适应任务分割方法及系统 |
CN112148474B (zh) * | 2020-08-20 | 2024-06-04 | 安徽中科龙安科技股份有限公司 | 面向负载均衡的龙芯大数据一体机自适应任务分割方法及系统 |
CN112632155A (zh) * | 2021-01-15 | 2021-04-09 | 万文兰 | 一种基于云计算的信息处理方法及系统 |
CN112989082B (zh) * | 2021-05-20 | 2021-07-23 | 南京甄视智能科技有限公司 | Cpu和gpu混合的自适应人脸搜索方法及系统 |
CN112989082A (zh) * | 2021-05-20 | 2021-06-18 | 南京甄视智能科技有限公司 | Cpu和gpu混合的自适应人脸搜索方法及系统 |
CN114742691A (zh) * | 2022-05-19 | 2022-07-12 | 支付宝(杭州)信息技术有限公司 | 一种图数据采样方法和系统 |
CN114742691B (zh) * | 2022-05-19 | 2023-08-18 | 支付宝(杭州)信息技术有限公司 | 一种图数据采样方法和系统 |
CN115269209A (zh) * | 2022-09-30 | 2022-11-01 | 浙江宇视科技有限公司 | 一种gpu集群调度方法及服务器 |
CN115269209B (zh) * | 2022-09-30 | 2023-01-10 | 浙江宇视科技有限公司 | 一种gpu集群调度方法及服务器 |
CN115587222A (zh) * | 2022-12-12 | 2023-01-10 | 阿里巴巴(中国)有限公司 | 分布式图计算方法、系统及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110659278A (zh) | 基于cpu-gpu异构架构的图数据分布式处理系统 | |
Li et al. | The strategy of mining association rule based on cloud computing | |
CN107330516B (zh) | 模型参数训练方法、装置及系统 | |
US9152601B2 (en) | Power-efficient nested map-reduce execution on a cloud of heterogeneous accelerated processing units | |
Cheng et al. | Network-aware locality scheduling for distributed data operators in data centers | |
CN111367630A (zh) | 一种基于云计算的多用户多优先级的分布式协同处理方法 | |
GB2511471A (en) | Generating a map-reduce framework for a multi-core cluster | |
CN106055311A (zh) | 基于流水线多线程的MapReduce任务并行化方法 | |
US11363093B2 (en) | Multi-stage pipelining for distributed graph processing | |
CN105445792A (zh) | 一种叠前多次波逆时偏移地震数据处理方法及系统 | |
US11221890B2 (en) | Systems and methods for dynamic partitioning in distributed environments | |
US10162830B2 (en) | Systems and methods for dynamic partitioning in distributed environments | |
dos Anjos et al. | Smart: An application framework for real time big data analysis on heterogeneous cloud environments | |
CN111782404A (zh) | 一种数据处理方法及相关设备 | |
Koh et al. | MapReduce skyline query processing with partitioning and distributed dominance tests | |
Lee et al. | Performance improvement of mapreduce process by promoting deep data locality | |
Hefny et al. | Comparative study load balance algorithms for map reduce environment | |
Shirahata et al. | A scalable implementation of a mapreduce-based graph processing algorithm for large-scale heterogeneous supercomputers | |
Nguyen et al. | Parallel two-phase K-means | |
CN110502337B (zh) | 针对Hadoop MapReduce中混洗阶段的优化系统 | |
CN109254844B (zh) | 一种大规模图的三角形计算方法 | |
Kanezashi et al. | Performance optimization for agent-based traffic simulation by dynamic agent assignment | |
Hassan et al. | An efficient parallel algorithm for evaluating join queries on heterogeneous distributed systems | |
Liu et al. | A-MapCG: an adaptive MapReduce framework for GPUs | |
Jayasekara et al. | Enhancing the scalability and performance of iterative graph algorithms on apache storm |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200107 |