论文部分内容阅读
随着互联网的发展和大数据时代的到来,对海量大规模数据进行快速分析的需求变得更加迫切,图作为一种抽象数据结构,许多实际应用中的大数据都是以图的形式呈现,使用图数据结构来描述数据间的关系,如社交网络关系挖掘、电子商务推荐系统、交通事故对路网的影响等大规模图计算问题。此外,许多非图数据结构的大数据,也常常会被转换为图模型后再进行处理和分析,面向大规模图数据处理的研究正成为学术界和工业界广泛关注的焦点。为适应图数据规模巨大、动态变化等特点,实现大规模图数据的高效分析计算,近年来在计算模型和运行时优化方面(包括分布式系统、异构系统等)涌现出许多具有前瞻性的技术和图计算系统。基于此,设计实现高性能图计算系统具有理论研究和实际应用的重要意义。本文针对异构多核架构的图计算系统进行了深入的研究,主要工作如下:第一,目前GPU图计算的研究分为专用的图计算系统和通用的图计算框架,前者使用GPU加速某一种特定的图算法,如广度优先搜索算法,后者侧重于设计适用于各种不同的图算法的通用计算架构。这两类系统都取得了很好的研究成果,但它们之间在设计、实现、优化等方面存在哪些异同点,仍然缺乏清晰的认识。通用图计算框架可以在多大程度上接近专用系统的性能?在所有测试条件下,专用系统是否总是胜过通用图计算框架?考虑到这两种类型系统的不同优化目标,该如何确定与性能紧密相关的关键指标来对这两类系统进行分析?为了回答以上这些问题,本文从图计算系统的通用化和专用化两个角度对两个最有代表性的GPU图计算系统进行了全面的评估,评估实验是从总体性能和底层关键性能度量指标(包括负载均衡,同步和内存等相关问题)两个方面来进行,分析结果揭示了 GPU图计算系统在设计和实现层面的几个关键问题,对未来的GPU图计算研究具有启发性。第二,从易编程的角度看,现有GPU图编程模型相比传统的顶点模型过于复杂,编写图算法时需要考虑较多的底层细节,大大增加了编程的难度。另外,从性能角度看,现有GPU图计算系统的设计仍然存在计算任务负载不均衡、运行时系统效率不高、对全局内存的非合并访问等问题。针对这些问题,提出了一种新的GPU图计算模型,并以此模型为基础,设计并实现了一个高性能的GPU图计算系统。新模型以边和顶点为计算的组成部分,由边计算函数将消息发送到消息缓存,而顶点函数负责从消息缓存中接收消息并进行计算。基于快速近似排序实现负载均衡的优化,使用列式数据存储优化全局内存访问,高效的运行时系统确保在复杂硬件环境下的执行性能。通过一系列的优化策略和设计选择,实现了几倍于现有GPU图计算系统的性能。第三,现有的单机图计算系统在设计上侧重于优化I/O访问(磁盘或SSD)或内存访问(内存图计算系统),而忽视了多核并行编程模型上的研究,因此系统潜在性能受到一定的限制。本文基于多核处理器架构,设计实现了一个高性能单机图计算系统,重点考虑以下三个问题。首先,利用多核处理器的多线程,设计具有高扩展性的基于协程的图计算编程模型,避免现有操作系统或运行时系统在线程管理方面的开销;其次,针对多核处理器的特点,为配合新的图编程模型设计高效的基于消息传递的同步机制;最后,在继承现有图计算框架易编程特点的基础上,设计了高效的数据访问模式和基于内存映射I/O的数据读写过程。与现有高性能单机图计算系统相比,设计的系统达到数倍高的性能提升。