论文部分内容阅读
我们生活在数据爆炸的时代,每时每刻都有着成千上万的数据产生,信息总量以几何级数的方式增长。但数据量的快速增长也同时给我们带来了很多困扰,如何能够快速高效的对这些数据进行分析和处理成为了一个急需解决的难题。MapReduce是一种最先由Google公司提出来的可用于大数据处理的分布式并行编程模型,它通过把大数据集分发到集群中各个节点共同处理来实现数据的快速处理。因此,利用不同的并行结构来加速MapReduce计算成为了当前的研究热点。不同于CPU,图形处理单元GPU有着特殊的硬件结构,在处理能力和存储器带宽上相对CPU有着明显优势。同时,随着GPGPU计算技术的快速发展,利用GPU完成通用计算的研究渐渐活跃起来,越来越多的数据密集型的传统应用可以通过GPU来完成,并且可以获得几十倍甚至几百倍的性能提升。因此,利用GPU来加速MapReduce计算得到了广泛关注。然而之前那些基于GPU的MapReduce模型都有着自身的缺陷,它们大多只能以单节点单GPU或者单节点多GPU的方式运行,不能充分利用计算集群的优势去加速计算过程,而且所处理的数据量也十分有限。在本文中,我们通过CUDA和MPI技术实现了一个基于GPU集群系统并且支持大数据处理的MapReduce编程模型GCMR。在该模型中,我们通过一个双层并行机制(节点间并行和节点内并行)把MapReduce计算扩展到了GPU集群上,利用原子操作实现了一个GPU上的动态存储机制,并且通过一个多线程流水线机制优化了模型的整体性能。与之前的实现Mars相比,在处理小规模数据时,GCMR带来了单节点2.6倍到四个节点9.1倍的性能提升。而在GPU集群上处理大数据集时,则表现出了良好的扩展性。