面向海量数据高性能计算的CPU/GPU协同处理方法技术

技术编号:7843275 阅读:471 留言:0更新日期:2012-10-13 01:38
本发明专利技术提出了一种面向海量数据高性能计算的CPU/GPU协同处理方法,用于解决海量数据计算运行效率偏低的问题。通过设计一套JAVA注释码规范以及搭建一个由多台计算机组成的计算机集群,在集群中部署改进后的Hadoop平台,改进后的平台中被加入设计好的Java注释码规范和GPU?Class?loader;在每个计算节点上安装好某一版本的CUDA,使用户在编写程序时可通过注释码在MapReduce的Map函数中方便的使用GPU计算资源。本方法实现了对计算机集群上CPU和GPU计算能力的统一调度利用,使兼具数据密集型和计算密集型特点的应用可被高效的实现,编写好的源代码具有可移植性,便于程序员进行开发。

【技术实现步骤摘要】

本专利技术涉及一种使用建立CPU/GPU协同计算平台的方法,属于海量数据处理与高性能计算处理

技术介绍
在当今的计算机领域,有诸多应用都需要进行海量数据处理。目前,最被广泛采用的海量数据处理方法是M apReduce计算模型。MapReduce是Google提出的一种实现分布式并行计算任务的编程模型。它可以将海量数据分布在大规模集群上进行并行处理。 MapReduce编程模型将计算过程分为Map阶段和Reduce阶段。其原理是,数据被切分为特定大小的分块,采用〈Key,Value)的形式在集群中分布式存储。集群中的每个节点都有一些Map和Reduce任务。Map任务将输入的〈Key, Value〉进行处理,然后生成另外一些〈Key, Value) ;Reduce任务将具有相同Key的〈Key, Value〉数据进行集中处理。MapReduce就是通过这种简单的模型来处理海量数据。但是,有一类非常重要的海量数据处理应用却很难用MapReduce计算模型解决,这类应用同时具有数据密集(Data_intensive)和计算密集 (Computational-intensive)两个特点,比如能源勘探行业数据成像。能源行业中石油天然气工业是高风险、高投入和高技术产业,其上游业务,即油气勘探开发的发展高度依赖于各种高新技术,特别是信息技术的综合应用。其中,成像和建模技术是油气勘探软件系统的核心功能。勘探地震数据处理是大容量(数PB)和高密度的计算,一直以来是勘探数据分析整个流程中最大的瓶颈。以ITB的数据成像为例,如果仅采用高性能CPU集群进行计算的话,需要数周的时间。MapReduce模型下每个节点的运算能力无法满足这些应用在计算密集型上的需求。随着GPU技术的发展使解决这个难题成为可能。GPU即图形处理器,但今天的GPU 已经不再局限于3D图形处理。在浮点计算、并行计算等部分计算方面,GPU可以提供数十倍乃至于上百倍于CPU的性能。当前,计算行业正在从只使用CPU的“中央处理”向CPU 与GPU并用的“协同处理”发展。为打造这一全新的计算典范,NVIDIA(英伟达)专利技术了 CUDA (Compute Unified Device Architecture,统一计算设备架构)这一编程模型,能够在应用程序中充分利用CPU和GPU各自的优点。CUDA是一个完整的GPU解决方案,提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问。在架构上采用了一种全新的计算体系结构来使用GPU提供的硬件资源,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。如果能将MapReduce的功能延伸到对GPU的调用,即设计出一种CPU/GPU协同计算的处理方法,便可使那些兼具数据密集型和计算密集型特点的应用被高效的实现。中国专利申请(200910020566. X) “一种GPU与CPU复合处理器的组建方法”,提出了一种针将CPU与GPU耦合组建成复合处理器的方法,从而使CPU和GPU可以进行协同工作。但是,一方面该方法针对的是单台计算机,无法对一个拥有大量计算机的集群上的CPU 和GPU计算资源进行整合;另一方面,该方法中的CPU只能负责操作系统、系统软件和通用应用程序等拥有复杂指令调度、循环、分支、逻辑判断的通用处理任务,而无法参与大规模数据的并行计算处理。
技术实现思路
本专利技术的目的是为了克服现有技术的缺陷,为解决诸如能源勘探行业数据成像、 快速雷达成像以及金融数据分析等领域中所面临的海量数据计算运行效率偏低的问题,提出一种面向海量数据高性能计算的CPU/GPU协同处理方法,从而使那些兼具数据密集型和计算密集型特点的应用可以被高效的实现。为实现上述目的,本专利技术所采用的技术方案如下一种面向海量数据高性能计算的CPU/GPU协同处理方法,包括以下步骤步骤一、建立一个计算机集群,并将集群上各个节点的计算和存储资源进行整合。所述集群上包含一个调度节点,负责对所有任务进行调度控制,其余节点作为计算节点。 所述各节点均有自己独立的CPU、GPU、内存和本地磁盘。在磁盘访问上,各节点只能访问本地磁盘,不能访问其他节点的磁盘。步骤二、选用CUDA作为GPU计算模型,并安装在计算机集群的每个计算节点上,作为使用GPU计算资源的基础。步骤三、采用MapReduce计算模型,在调度节点上的主控程序将任务分割为若干任务块,为每个任务块启动一个Map任务,并将这些Map任务分配给计算节点进行计算。步骤四、各计算节点执行Map过程。所述Map过程如下首先,设计一套Java注释码并将其应用于Map函数中,用于标记程序员想要使之并行的代码部分,类似于OpenMP中的注释码模式。例如“//#gmP parallelfor”,该注释码即表示紧接着的循环或函数是需要并行的。然后,编译含有该种注释码的源代码,得到含有注释码的Java字节码。之后,在传统Java类加载器(class loader)的基础上设计一个新的Java类加载器,将其命名为GPU Class loader。GPU Class loader可以识别Java字节码中被注释的部分,即需要在GPU上运行的部分。同时,将GPU Class loader部署在每个计算节点上。而后,GPU Class loader自动检测本地计算环境,判断本地GPU资源是否可用,若不可用,则直接利用CPU进行计算;若可用,则测得当前CUDA的具体版本,以生成适应于该版本的CUDA代码。随后,GPU Class loader对于识别出的Java字节码中被注释的部分,生成相应 CUDA代码并编译。所述CUDA代码包括一段功能函数代码和一段执行代码。调用已编译完成的CUDA代码,使该部分代码实现在GPU上的运行,调用可采用JNI的方式。在生成CUDA 代码时,只有当该段代码符合一定独立性条件,且计算环境中的GPU计算资源可用时,才可完成,否则发出错误提示。此时,获取GPU的运算结果。未被注释的代码部分在CPU上正常运行,直到运行完成。最后,调度节点对于运行失败的Mapper,使其重新运行,从而完成Map阶段。步骤五、进行Reduce阶段,汇总Map阶段运算结果,完成全部计算处理。有益效果 本专利技术方法具有以下优点(I)该方法实现了对计算机集群上CPU和GPU计算能力的统一调度、利用。从而使兼具数据密集型和技术密集型特点的应用得以高效的实现。(2)该平台可自动检测本地GPU计算环境,进行相应选择,使编写好的源代码具有可移植性。(3)本专利技术用注释码的方式引入GPU资源,使程序员只需要了解相应注释码便可进行开发,易于学习。附图说明图I为本专利技术方法的流程示意图;图2为本专利技术方法实施框架示意图;图3为利用GPU计算能力的实现过程示意图。具体实施例方式下面结合附图对本专利技术的具体实施方式作进一步详细说明。一种面向海量数据高性能计算的CPU/GPU协同处理方法,其基本原理为首先设计一套JAVA注释码规范,在传统Java类加载器的基础上设计一个本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向海量数据高性能计算的CPU/GPU协同处理方法,其特征在于,包括以下步骤 步骤一、建立一个计算机集群,整合集群上各个节点的计算和存储资源;在集群上设置ー个调度节点,负责对所有任务进行调度控制,其余节点作为计算节点; 步骤ニ、选用CUDA作为GPU计算模型,安装在集群每个计算节点上,作为使用GPU计算资源的基础; 步骤三、采用MapReduce计算模型,调度节点上的主控程序将任务分割为若干任务块,为每个任务块启动ー个Map任务,并将这些Map任务分配给计算节点进行计算; 步骤四、各计算节点执行Map过程; 步骤五、进行Reduce阶段,汇总Map阶段运算结果,完成全部计算处理。2.如权利要求I所述的ー种面向海量数据高性能计算的CPU/GPU协同处理方法,其特征在于,所述集群中的每个节点均有自己独立的CPU、GPU、内存和本地磁盘。3.如权利要求2所述的ー种面向海量数据高性能计算的CPU/GPU协同处理方法,其特征在于,在磁盘访问上,各节点只能访问本地磁盘,不能访问其他节点的磁盘。4.如权利要求I所述的ー种面向海量数据高性能计算的CPU/GPU协同处理方法,其特征在于,所述步骤四中各计算节点执行Map过程如下 首先,设计ー套Java注释码并将其...

【专利技术属性】
技术研发人员:翟岩龙刘培志罗壮黄河燕宿红毅郭琨毅
申请(专利权)人:北京理工大学
类型:发明
国别省市:

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

1