一种基于多GPU的图数据处理系统及方法技术方案

技术编号:16128534 阅读:43 留言:0更新日期:2017-09-01 20:42
本发明专利技术公开了一种基于多GPU的图数据处理系统及方法,首先通过数据划分模块对输入的原始图数据进行划分,并将划分后的数据分配到各个GPU设备中;然后通过任务管理模块对每个GPU设备上的顶点按照计算属性分配不同的计算任务,并管理各种任务的执行顺序;接着通过执行模块在保证数据一致性的同时,完成各个GPU设备上并行计算任务的执行;最后通过数据收集模块在计算完成以后,完成数据收集的过程。本发明专利技术提出新的任务分配和管理机制,最大化并行效率,利用计算掩盖通信,解决目前基于GPU的图处理系统存在GPU‑CPU通信开销大以及能够处理图数据的规模有限的问题,从而提高了在GPU上处理大规模图数据的效率。

A graph data processing system and method based on multi GPU

The invention discloses a data processing system and method based on multi GPU, divided by the original first map data module of data input, and divides the data assigned to each GPU device; and then through the task management module of each vertex on the GPU device according to the different distribution of computing tasks attribute, the execution order and management tasks; then through the implementation of modules to ensure data consistency and completion of various GPU devices parallel computing task execution; finally through the data collection module in the calculation process after the completion of data collection. The invention proposes task allocation and management mechanism, to maximize the efficiency of parallel, using computational masking, solve the existing problems based on the limited size of the GPU CPU communication overhead and can handle data graph processing system GPU, so as to improve the efficiency of processing the large graph data on GPU.

【技术实现步骤摘要】
一种基于多GPU的图数据处理系统及方法
本专利技术属于图数据处理和高性能计算
,更具体地,涉及一种基于多GPU的图数据处理系统及方法。
技术介绍
目前,许多现实应用都涉及到图数据的处理,传统的单机图系统主要通过数据划分,优化访存效率和减少磁盘I/O开销等手段提高大规模图数据处理的效率,但仍存在着并行计算效率低,磁盘带宽利用率不足和访存效率低等问题。GraphChi系统将大规模图数据划分成小的数据块,提出了Shards的概念和并行滑动窗口的机制,在提高内存数据访问连续性的同时,按需调入Shard块,减少了磁盘的随机访问,但是由于不同shard块之间存在碎片访问以及块内数据关联性高,因此造成磁盘的带宽利用率不足和并行计算效率低。X-stream系统提出了以边为中心的图处理模型,采用流划分的方式,划分后按照边随机存储,避免了排序带来的开销,同时由于相对于以顶点为中心的访问方式,以边的访问方式是连续的,可以提高磁盘访问的带宽。但是由于缺乏合理调度数据块的机制,使得访存命中率不高。近几年,通用计算图形处理器(General-PurposecomputationonGraphicsProcessingUnits,GPGPU)技术越来越成熟。GPU具有强大的并行能力和高带宽等特点,而图计算需要满足高性能及实时性等需求,因此利用GPU来加速图计算的研究得到越来越多的关注。基于GPU的图处理系统关键在于解决图计算局部性差、任务并行度低和GPU-CPU之间通信开销大等问题。Cusha系统针对传统的图数据表达方法CSR(CompressedSparseRow)结构存在不规则访存和GPU利用率不足等缺点,引入了单机图系统GraphChi提出的Shards的概念,提出了新的基于GPU图处理的数据表达方式G-Shards和CW(ConcatenatedWindows),起到提高空间局部性的作用,达到加速图计算的目的。但Cusha系统设计的前提是假设GPU的显存是可以放下所有的图数据的,而实际上,目前GPU的显存大小是远远满足不了当前大规模图计算需求的。Medusa系统利用消息传递的方式,实现了多GPU环境下的图处理。同时,Medusa系统为用户提供应用程序接口(ApplicationProgrammingInterface,API)方便用户在GPU上进行图处理的编程。同时,采用多跳副本机制,达到减少GPU和CPU之间通信开销的目的。但Medusa系统没有尝试解决GPU中图计算任务并行度低的问题,而且多跳副本的机制虽然减少了GPU-CPU之间消息通信的次数,但是增加了数据存储的空间,且每次通信的数据量仍然很大。
技术实现思路
针对现有技术的以上缺陷或改进需求,本专利技术提供了一种基于多GPU的图数据处理系统及方法,根据图数据划分后顶点计算特征,对任务进行分类处理,最大化并行效率,同时结合GPU异步流的技术,协调不同任务的执行,利用计算掩盖通信,达到加速图计算的目的。由此解决现有技术中基于GPU的图系统存在GPU-CPU之间通信开销大、任务并行度低和可以处理图数据的规模有限的技术问题。为实现上述目的,按照本专利技术的一个方面,提供了一种基于多GPU的图数据处理系统,包括:数据划分模块、任务管理模块、执行模块以及数据收集模块;所述数据划分模块,用于对原始图数据进行划分,并将划分后的数据分配到各个GPU设备中;所述任务管理模块,用于对每个GPU设备中的顶点按照计算属性分配不同的计算任务,并管理GPU上不同粒度的计算任务、GPU与CPU之间的消息通信任务以及CPU上消息聚合任务的执行顺序;所述执行模块,用于在保证数据一致性的同时,完成各个GPU设备中并行计算任务的执行;所述数据收集模块,用于在计算任务完成以后,将计算结果从所有GPU设备中传输到CPU中,完成数据收集。优选地,所述数据划分模块包括:顶点划分模块、边分配模块以及存储模块;所述顶点划分模块,用于将原始图数据中的所有顶点按照顶点的度数大小分配到不同的数据块;所述边分配模块,用于根据预设约束条件依次将原始图数据中的边分配到不同的数据块中,其中,预设约束条件表示最大化保证每个数据块中的边的个数一致;所述存储模块,用于将各数据块中的划分结果按照顶点编号的顺序,依次存储在内存单元中。优选地,所述任务管理模块包括任务分配模块以及任务流管理模块;所述任务分配模块,用于根据预设分类方法将每个GPU设备上的所有顶点根据计算属性分为Outer点和Inner点,利用CUDAStream方式,为Outer点和Inner点分配不同的计算任务;所述任务流管理模块,用于协调GPU上不同粒度的计算任务、GPU与CPU之间的消息通信任务以及CPU上消息聚合任务之间的执行顺序,利用计算时间掩盖通信时间,使得CPU和GPU的资源充分利用。优选地,所述预设分类方法为:将在其他GPU设备上存在副本的顶点作为Outer点,将在其他GPU设备上不存在副本的顶点作为Inner点。优选地,所述任务流管理模块包括优先级确定模块以及任务流管理子模块;所述优先级确定模块,用于将Outer点所在的计算任务设置高优先级,将Inner点所在的计算任务设置低优先级以确定各GPU设备中的任务执行顺序;所述任务流管理子模块,用于通过控制Outer点和Inner点的计算任务,GPU与CPU之间的通信任务以及CPU上消息聚合任务的执行顺序,使得在执行计算任务的同时进行通信任务,互不干扰且保证各设备资源的充分利用。优选地,其特征在于,所述任务流管理子模块,具体用于在GPU设备中若CUDAstream1开始执行通信任务,则CUDAstream2开始执行Inner点的计算任务,从而每个GPU设备的资源都得到充分利用,当GPU上执行Inner点的计算任务时,由于Inner点不需要完成消息通信和消息聚合任务,因此在CPU中执行CPU消息聚合任务,从而避免了在GPU与CPU进行通信时,CPU和GPU的计算资源浪费。优选地,所述执行模块,具体用于在计算任务执行的过程中利用整体同步并行计算模型BSP和原子操作保证数据的一致性,且在BSP模型的计算过程中,根据不同的应用需求从预设应用程序编程接口API中选取目标应用程序编程接口API完成并行计算任务的执行。优选地,所述预设应用程序编程接口API包括:以顶点为中心的编程方法,提供API为VertexMap,以及以边为中心的编程方法,提供API为EdgeMap。优选地,所述数据收集模块,具体用于将所有GPU设备中得到的计算结果传输到CPU上,获取Inner点的最新计算结果,并获取所有Outer点及其副本的最新计算结果,从而得到最终结果。按照本专利技术的另一方面,提供了一种基于多GPU的图数据处理方法,包括:对原始图数据进行划分,并将划分后的数据分配到各个GPU设备中;对每个GPU设备中的顶点按照计算属性分配不同的计算任务,并管理GPU上不同粒度的计算任务、GPU与CPU之间的消息通信任务以及CPU上消息聚合任务的执行顺序;在保证数据一致性的同时,完成各个GPU设备中并行计算任务的执行;在计算任务完成以后,将计算结果从所有GPU设备中传输到CPU中,完成数据收集。总体而言,通过本专利技术所构思的以上技术方案与现有技术相比,能够本文档来自技高网
...
一种基于多GPU的图数据处理系统及方法

【技术保护点】
一种基于多GPU的图数据处理系统,其特征在于,包括:数据划分模块、任务管理模块、执行模块以及数据收集模块;所述数据划分模块,用于对原始图数据进行划分,并将划分后的数据分配到各个GPU设备中;所述任务管理模块,用于对每个GPU设备中的顶点按照计算属性分配不同的计算任务,并管理GPU上不同粒度的计算任务、GPU与CPU之间的消息通信任务以及CPU上消息聚合任务的执行顺序;所述执行模块,用于在保证数据一致性的同时,完成各个GPU设备中并行计算任务的执行;所述数据收集模块,用于在计算任务完成以后,将计算结果从所有GPU设备中传输到CPU中,完成数据收集。

【技术特征摘要】
1.一种基于多GPU的图数据处理系统,其特征在于,包括:数据划分模块、任务管理模块、执行模块以及数据收集模块;所述数据划分模块,用于对原始图数据进行划分,并将划分后的数据分配到各个GPU设备中;所述任务管理模块,用于对每个GPU设备中的顶点按照计算属性分配不同的计算任务,并管理GPU上不同粒度的计算任务、GPU与CPU之间的消息通信任务以及CPU上消息聚合任务的执行顺序;所述执行模块,用于在保证数据一致性的同时,完成各个GPU设备中并行计算任务的执行;所述数据收集模块,用于在计算任务完成以后,将计算结果从所有GPU设备中传输到CPU中,完成数据收集。2.根据权利要求1所述的系统,其特征在于,所述数据划分模块包括:顶点划分模块、边分配模块以及存储模块;所述顶点划分模块,用于将原始图数据中的所有顶点按照顶点的度数大小分配到不同的数据块;所述边分配模块,用于根据预设约束条件依次将原始图数据中的边分配到不同的数据块中,其中,预设约束条件表示最大化保证每个数据块中的边的个数一致;所述存储模块,用于将各数据块中的划分结果按照顶点编号的顺序,依次存储在内存单元中。3.根据权利要求2所述的系统,其特征在于,所述任务管理模块包括任务分配模块以及任务流管理模块;所述任务分配模块,用于根据预设分类方法将每个GPU设备上的所有顶点根据计算属性分为Outer点和Inner点,利用CUDAStream方式,为Outer点和Inner点分配不同的计算任务;所述任务流管理模块,用于协调GPU上不同粒度的计算任务、GPU与CPU之间的消息通信任务以及CPU上消息聚合任务之间的执行顺序,利用计算时间掩盖通信时间,使得CPU和GPU的资源充分利用。4.根据权利要求3所述的系统,其特征在于,所述预设分类方法为:将在其他GPU设备上存在副本的顶点作为Outer点,将在其他GPU设备上不存在副本的顶点作为Inner点。5.根据权利要求4所述的系统,其特征在于,所述任务流管理模块包括优先级确定模块以及任务流管理子模块;所述优先级确定模块,用于将Outer点所在的计算任务设置高优先级,将Inner点所在的计...

【专利技术属性】
技术研发人员:石宣化金海罗璇赵鹏
申请(专利权)人:华中科技大学
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1