首页 / 专利库 / 软件 / 软件套件 / 软件组件 / 软件代码 / 一种基于Mapreduce的多GPU协同计算方法

一种基于Mapreduce的多GPU协同计算方法

阅读:43发布:2024-02-28

专利汇可以提供一种基于Mapreduce的多GPU协同计算方法专利检索,专利查询,专利分析的服务。并且本 发明 公开一种基于Mapreduce的多GPU协同计算方法,属计算机 软件 应用领域。对应于一般的GPU 高性能计算 和MapReduce并行计算的 单层 并行架构,本发明的编程模型采用双层的GPU和MapReduce并行架构,通过 云 计算并行计算的MapReduce编程模型,结合GPU+CPU异构体系结构的特征,而且帮助开发人员简化编程模型和复用已有的并行代码,减少编程的复杂度,并兼具一定的系统容灾能 力 ,减少设备依赖性。本发明能在云计算平台或者一般的分布式计算系统中,使用GPU+MapReduce双重并行模型,实现多 块 GPU卡上的MapReduce任务并行处理。,下面是一种基于Mapreduce的多GPU协同计算方法专利的具体信息内容。

1.一种基于Mapreduce的多GPU协同计算方法,其特征在于包括以下几个步骤:
1)首先,客户端向管理阶段传递任务请求
2)然后,管理阶段中的命名节点NameNode负责管理文件系统的命名空间、计算阶段集群配置信息、存储位置信息;工作追踪器JobTracker负责对计算任务进行启动和调度,并且实现跟踪任务的执行情况和计算阶段的状态;
3)在计算阶段中:
①数据节点DataNode接收到来自命名节点NameNode的读写请求后,调用CPU,对海量数据进行读取扫描,再平划分,分成M个固定大小的数据子集splits片段,M为自然数,其大小根据计算系统中计算节点的个数以及数据划分结果所决定;
②空闲CPU的任务追踪器TaskTracker向工作追踪器JobTracker请求任务并得到响应之后,对M个数据子集split进行格式化,进一步分解成一批键/值对
③空闲GPU的任务追踪器TaskTracke向工作追踪器JobTracker请求任务并得到响应之后,对输入的每一个数据子集split,创建一个Map任务,将对应split中的每个记录对作为输入并进行扫描,并将其针对GPU上运行特定算法进行格式化,使用GPU的CUDA库实现一个局部组合器Combiner,产生并输出中间键/值对;
④利用分区函数hash(key)mod R将Map函数产生的中间键/值对分成R个不同的分区,这里的R为一个小于M的自然数,接着GPU将中间结果按照key2进行相关排序,并将key2值相同的value2数据聚合在一起形成一个新列表,形成对, list(value2)为由相同key2值的value2所组成的数组,再将这些键/值对分成R个不同的分区,将每个分区分配到指定的Reduce任务;
⑤被分配了Reduce任务的工作站调用空闲的CPU,启动CPU的任务追踪器TaskTracker去读取Map函数提交的数据,在遍历排序后的中间数据后,CPU的任务追踪器TaskTracker将每一个分区传递给空闲的GPU的任务追踪器TaskTracker,由其进行格式化,使用GPU并行技术做相应处理操作,得到Reduce任务的多个输出结果,启动合并操作获得最终的输出值;
⑥GPU的任务追踪器TaskTracker将最终结果交给CPU调用部分。

说明书全文

一种基于Mapreduce的多GPU协同计算方法

技术领域

[0001] 本发明涉及一种基于Mapreduce的多GPU协同计算方法,所属计算机软件应用领域。

背景技术

[0002] 近年来在硬件技术推动下,图形处理器(GPU)的计算能和可编程能力得到快速的发展,具有高度并行化计算的特点使得GPU不再局限于日常的图形处理任务,开始涉及更为广泛的高性能通用计算(GPGPU)领域。因为GPU拥有高性能的多处理器阵列与高带宽、隐藏延迟的显存系统,这使得在大量重复数据集运算和密集内存存取的计算应用上,GPU具有比传统CPU更具优势。而且常用数据和程序的计算都需要靠CPU来完成,对用户而言,如果过多的占用CPU的时间会使得用户运行大型程序或者进行比较大的数据计算时感觉计算机很慢,降低系统性能;GPU在普通用户中主要用于游戏或图形的计算,空闲时间明显多于CPU,因此适度使用GPU会带来良好的效果,即降低了CPU的占用时间,又能使处于过度空闲的GPU得到充分利用。
[0003] 同样在高性能并行计算领域得到关注的热点是MapReduce海量数据处理框架,通过廉价的普通计算机集群我们能得到过去只有昂贵大型服务器才拥有的大规模数据计算能力,而且在稳定性和扩展性等方面比后者更好。现在MapReduce模型被应用于天文信息计算处理、海量病例存储分析、病毒库存储、网络检索服务等方面,解决数据爆炸式增长与计算机存储能力和计算能力不足之间的矛盾。
[0004] 到目前为止很多对这两方面的研究都局限在某些方面,如针对单台计算机GPU协助CPU对算法和程序进行加速以及由多台计算机GPU组成的集群来进行分布式计算,不可否认这些方面都取得相当大的进展,但不足也是存在的。在面对规模越来越大的游戏和程序时单台计算机GPU加速并不能带来多么大的改观,数据海量的增长和计算机的计算能力之间的矛盾不会得到解决;同样普通分布式计算机GPU集群虽然在计算能力方面很不错,但是一旦出现节点故障或其他的问题,整个集群的性能会受到很大的影响:还有MapReduce模型进行Map和Reduce操作时需要频繁的CPU进行计算,有时甚至CPU占用率为百分之百,因此也非常必要使用GPU的参与来平衡系统的计算能力。

发明内容

[0005] 由于MapReduce模型进行Map和Reduce操作时需要频繁的CPU计算,面对大量并行计算任务时,CPU占用率甚至达到百分之百。而GPU有比CPU更好的数据宽度和并行计算能力,适度使用GPU,即降低了CPU的占用时间,又能使用GPU的参与来平衡系统的计算能力。
[0006] 本发明的目的是结合GPU技术和MapReduce技术的不同优势,在MapReduce并行编程的基础上,使用GPU的参与来平衡系统的计算能力,最终提供一种通过GPU计算和MapReduce技术融合编程模型支持大规模分布式并行计算的方法。
[0007] 本发明所述的一种基于Mapreduce的多GPU协同计算方法,包括以下几个步骤:1)首先,客户端向管理阶段传递任务请求
[0008] 2)然后,管理阶段中的命名节点NameNode负责管理文件系统的命名空间、计算阶段集群配置信息、存储位置等信息;工作追踪器JobTracker负责对计算任务进行启动和调度,并且能实现跟踪任务的执行情况和计算阶段的状态。
[0009] 3)在计算阶段中:①数据节点DataNode接收到来自命名节点NameNode的读写请求后,调用CPU,对海量数据进行读取扫描,再平划分,分成M个固定大小的数据子集splits片段,M为自然数,通常其大小是根据计算系统中计算节点的个数以及数据划分结果所决定;
②空闲CPU的任务追踪器TaskTracker向工作追踪器JobTracker请求任务并得到响应之后,对M个数据子集split进行格式化,进一步分解成一批键/值对
③空闲GPU的任务追踪器TaskTracke向工作追踪器JobTracker请求任务并得到响应之后,对输入的每一个数据子集split,创建一个Map任务,将对应split中的每个记录对作为输入并进行扫描,并将其针对GPU特定算法进行格式化,使用GPU的CUDA库实现一个局部组合器Combiner,产生并输出中间键/值对;
④利用分区函数hash(key)mod R将Map函数产生的中间键/值对分成R个不同的分区,这里的R为一个小于M的自然数。接着GPU将中间结果按照key2进行相关排序,并将key2值相同的value2数据聚合在一起形成一个新列表,形成对,这里的list(value2)为由相同key2值的value2所组成的数组。再将这些键/值对分成R个不同的分区,将每个分区分配到指定的Reduce任务
⑤被分配了Reduce任务的工作站调用空闲的CPU,启动CPU的任务追踪器
TaskTracker去读取Map函数提交的数据。在遍历排序后的中间数据后,CPU的任务追踪器TaskTracker将每一个分区传递给空闲的GPU的任务追踪器TaskTracker,由其进行格式化,使用GPU并行技术做相应处理操作,得到Reduce任务的多个输出结果,启动合并操作获得最终的输出值。
[0010] ⑥GPU的任务追踪器TaskTracker将最终结果交给CPU调用部分,至此,一个MapReduce技术过程已完成。
[0011] 本发明的有益效果是本发明的编程模型将GPU通用计算和MapReduce模型二者的优点相结合,研究和实现一个完整的高性能并行计算系统,以GPU为硬件配合基于MapReduce并行计算模型软件进行大规模数据处理。
[0012] 如今,在高性能计算方面,GPU技术和计算技术的独立应用已经相对成熟,且有很多应用的具体实例。实现使用GPU配合CPU计算的通用架构,利用海量数据的数据结构,使得数据和并行计算的程序部分在GPU上存储和运行。该架构在图形硬件和应用程序之间形成一个抽象层,具有很强的通用性,最大限度减少GPU和CPU的通信,提高系统整体的计算能力和改善系统性能。
[0013] 但将此两大技术进行融合,使之能够进行双重层次的并行计算,把效率进一步提升。通过对基于MapReduce的分布式计算框架的研究,提出了对基于GPU的分布式计算改进,通过这种改进可以利用现有的计算设备来达到更高的并行计算速度。附图说明
[0014] 图 1基于GPGPU的MapReduce并行计算模型硬件拓扑结构图;图 2基于CPU的MapReduce并行计算逻辑结构图;
图 3基于GPGPU的MapReduce并行计算模型逻辑结构图;
图 4基于GPGPU的MapReduce并行计算模型TaskTracker计算任务模块图。

具体实施方式

[0015] 下面结合附图和具体实施方式对本发明的加入了GPU并行技术之后的MapReduce框架的编程流程进行详细说明:图1所描述的模型硬件拓扑结构图是真实硬件平台的可视化描述,主要由已经普通计算机、百兆以太网交换机和它们之间的线路链接组成。通常其他成熟的MapReduce模型也有由机架式服务器代替普通计算机,或者提取出文件系统模块由单独的设备来进行数据的存储,使得计算节点集群仅仅用于计算等多种并行计算平台模式。
[0016] 图2所示为基于CPU的MapReduce并行计算模型系统的实现Hadoop平台,Hadoop并非一个单纯用于存储的分布式文件系统.而是一个被设计用束在由普通硬件没备组成的大型集群上执行分布式应用的框架。Hadoop包含两个部分:一个分伟式文件系统HDFS(Hadoop Distributed File System),和一个MapReduce实蜕。因此,Hadoop的目标是为开发分布式应用提供一个框架,我们将改进Hadoop的MapReduce模块来实现我们的基于GPGPU的MapReduce并行计算模型。
[0017] Hadoop平台在逻辑上分为三层,在层与层之间土要通过基于TCP/IP协议进行通讯。第一层为客户端层,客户端向管理节点传递计算任务请求,当计算任务完成后由管理节点向客户端返回结果。第二层为管理节点层,管理节点具有两个部分:命名节点NameNode是模型系统中的管理者,主要负责管理文件系统的命名空间、计算节点集群配置信息、存储块的位置等信息;工作追踪器JobTracker负责对计算任务进行启动和调度,并且能实时跟踪任务的执行情况和计算节点的状态。第三层为计算节点层,该层也分为两部分:数据节点DataNode负责处理来自命名节点NameNode的读写请求,同时还可以执行数据块的创建、删除和复制;任务追踪器TaskTracker则负责向工作追踪器JobTracker请求任务以及得到任务后在计算节点启动该计算任务的运行。
[0018] 图3 将给出我们基于GPGPU的MapReduce并行计算模型逻辑结构图,从图中可以看出第一和第二层同基于CPU的模型没有区别,而区别主要在于第三层计算节点中任务追踪器TaskTracker部分被划分成两块,一块是CPU调用模块,另一块是GPU计算模块,会在图4中的模块设计给出详细的解释。
[0019] 虽然管理节点Master中命名节点NameNode和工作追踪器JobTracker模块都可以采用GPU进行计算以平衡整个模型系统的性能,但是我们先对负载最大的任务追踪器TaskTracker计算任务模块部分进行改进。
[0020] 正如图4中所表述,将任务追踪器TaskTracker模块拆解成由CPU调用部分和由GPU计算部分,GPU并不能取代CPU的其他非计算功能,如访问硬盘、获取物理地址、读写文件等还是由CPU来做,而计算这种繁重的任务则可以让GPU去完成。在这里,首先CPU调用部分将根据选项从硬盘或内存中读取数据文件并且将其分块,然后调用GPU计算部分将每一个数据分块交给GPU中的多个Map操作,并启动GPU中的这些Map任务。GPU中的Map任务运行完成后会产生多个中间键/值对,紧接着GPU又启动排序操作将这些中间键/值对按关键字进行排序操作。接下来由CPU调用部分接手,把由关键字进行排序的中间键/值对再进行分块,并将每一个分块再交给GPU计算部分中的多个Reduce操作,然后启动GPU中的这些Reduce任务,最后得到Reduce任务的多个输出结果,启动合并操作获得最终的输出值交给CPU调用部分,至此,一个MapReduce计算过程就算初步完成。
[0021] 本发明的基于Mapreduce的多GPU协同计算方法具体步骤如下:1. 数据节点DataNode接收到来自NameNode的读写请求后,MapReduce库将大规模数据集进行水平划分,分成M个固定大小的数据子集splits片段,此部分工作有CPU进行处理。M为自然数,通常其大小是根据计算系统中计算节点的个数来以及数据划分结果所决定。
[0022] 2.对M个数据子集split进行格式化,进一步分解成一批键/值对,具体格式化为何种数据格式,可根据具体数据集的特点设置key值和value值,例如在事物数据库中可将设置为,Tid表示事物数据库中的事物标识符,list为事物数据库中的事物对应的列表值。由于此部分包含访问硬盘、获取物理地址、读写文件等操作,此部分由CPU完成,然后调用GPU相关Map函数进行计算操作。
[0023] 3.Map函数的任务是对输入的每一个数据子集split,创建一个Map任务,将对应split中的每个记录对作为输入并进行扫描,并将其针对GPU算法进行格式化,使用GPU算法实现一个局部组合器Combiner,产生并输出中间键/值对,例如在事物数据库中可定义为键/值对,sup表示itemsets在数据子集中的支持度计数,itemsets表示候选k项集。
[0024] 4.利用分区函数hash(key)mod R将Map函数产生的中间键/值对分成R个不同的分区,这里的R为一个小于M的自然数。接着GPU将中间结果按照key2进行排序,并将key2值相同的value2数据聚合在一起形成一个新列表,形成 键/值对,list(value2)为由相同key2值的value2所组成的数组,再将这些键/值对分成R个不同的分区,将每个分区分配到指定的Reduce任务。
[0025] 5.被分配了Reduce任务的工作站调用CPU,读取Map函数提交的数据 键/值对。在遍历排序后的中间数据,CPU将每一个分区传递给GPU,由其进行格式化,使用GPU并行技术做相应处理操作,得到Reduce任务的多个输出结果,启动合并操作获得最终的输出值。
[0026] 6.GPU将最终结果交给CPU调用部分,至此,一个MapReduce技术过程已完成。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈