面向众核环境的分治映射/归约并行编程模型的制作方法

文档序号:6599236阅读:546来源:国知局
专利名称:面向众核环境的分治映射/归约并行编程模型的制作方法
技术领域
本发明属计算机软件应用领域,具体涉及一种面向众核环境的分治映射/归约并行编程模型。本发明映射/归约模型可应用在众核计算系统中处理大规模数据。
背景技术
随着多核和众核技术的不断普及和持续发展,计算机的处理能力得以继续遵循摩尔定律以每十八个月一倍的速度增长。目前四核乃至八核处理器已成为商用服务器配置的主流,逾期具有一百个以上核的处理器也将在数年内诞生。飞速增长的计算能力为实现对海量数据的快速处理提供了契机。海量数据是指数据量超过万亿字节数量级以上的数据集合,对于它们的分析处理已经成为当今商业行为和科学计算的重要组成部分。例如,在世界搜索类服务领域具有领导地位的谷歌(Google)公司的崛起正是凭借其对海量数据的高速搜索能力,而生物基因学的研究也依赖于对海量基因片段的比对和分析。目前对于海量数据的处理还只能通过大规模的分布式系统来完成, 但是众核计算环境提供的巨大计算潜力已经引起了人们的极大关注,并尝试使用众核计算环境来处理海量数据。针对海量数据的应用由于其除了业务逻辑本身外还需要考虑执行效率、并行安全性、系统可靠性等多方面问题,因此具有较高的复杂度。当前业界的大型系统主要采用基于并行编程模型的方式来简化和规范并行程序的开发。并行编程模型通过高效可靠的运行时环境向应用程序员提供一套简单的编程接口,使他们仅关注于业务逻辑本身而不再需要考虑其他由于海量数据和高并行性执行带来的问题。其中由谷歌(Google)公司于2004年在国际操作系统设计与实现大会(OSDI)上首次提出的映射/规约(MapReduce)并行编程模型(以下简称“映射/规约模型”),因其简单合理的编程接口被业界广泛接受和采用。该模型针对大规模分布式集群环境设计,能够使用上万计算节点同时对百万亿字节规模的海量数据进行高效的并行处理。仅谷歌公司在过去5年中,每日都有超过10万个基于映射/规约模型的任务运行在分布于世界各地的超大规模数据中心的集群上,对2亿亿字节以上的海量数据进行处理。其他不同领域的企业,如雅虎(Yahoo !),百度(Baidu),易趣(ekiy) 和沃尔玛(Walmart)等均使用基于映射/规约并行编程模型的系统来处理日常业务中的海量数据。映射/规约模型主要由“映射(Map)”和“规约(Reduce)”两个阶段构成,“映射” 阶段根据输入数据产生一系列的中间键值对,“规约”阶段则把具有相同键的所有中间键值对规约到一起(如图1所示)。映射/规约模型的运行时环境使用分布式文件系统做为持久存储层,实现海量数据的读写和存储。运行时环境由一个控制节点和大量计算节点构成, 控制节点负责任务的分发和监控,计算节点负责任务的实际计算。“映射”阶段产生的中间数据存储于分布式文件系统,并通过网络传递给“规约”阶段。这样的设计能够在充份发掘数据处理中的并行性发挥计算节点的计算能力的同时,又能够有效的解决大规模分布式系统运行中存在的可靠性问题。
随着众核处理能力的飞速增长,采用众核平台来进行海量数据处理成为可能。众核平台因其不需要依赖硬盘存储和网络传输中间数据,相比同计算能力下的集群具有更高的执行效率。因此并行编程模型被移植到众核环境下来支持针对大量数据的应用,比如斯坦福大学将映射/规约模型移植到了共享内存体系结构下。但是这些实现都遵循原有针对大型分布式环境设计的并行编程模型的设计,尚存在如下不足不能充分发挥众核平台特性。在编程模型和运行时设计两方面都限制了综合平台在海量数据处理应用方面的能力。

发明内容
本发明的目的是克服现有技术的不足,主要解决如何有效利用众核环境中计算资源来高效处理海量数据。众核环境相对于大规模集群环境存在计算资源固定且相对有限的问题,但同时也具有数据交换迅捷和计算单元协同好的优势。而目前的映射/规约模型在众核上的设计和实现并没有考虑到上述差异,仍然直接对整个海量数据集进行处理。当需要处理的数据规模超出系统资源限制时,该模型会导致缓存和主存耗尽,以及处理器单元闲置等问题,极大的影响了处理效率。为解决上述问题,本发明提供了一种面向众核环境的分治映射/归约并行编程模型,其特征在于,其包括分治映射/规约并行编程模型,主存复用,众核调度和流水线执行技术,其中分治映射/规约并行编程模型对海量数据进行分块处理,主存复用、众核调度和流水线执行技术优化众核环境的资源使用。所述的分治映射/规约模型有效限制每次数据处理的规模,所述的三项优化技术充份利用模型和平台特性。本发明中,分治映射/规约模型的最大特点在于采用多次循环执行映射/规约操作,并且每次操作只处理海量数据中的一部分。在每一组映射/规约阶段前依据当前众核系统资源状况划分数据,并在完成映射/规约操作后在主存中保存生成的“部分结果”。当完成对全部海量数据的处理后,再通过额外的“最终规约”阶段将前面循环产生的所有“部分结果”规约成“最终结果”。该模型能够有效的避免由于单次映射/规约的数据量过大而引起的缓存和主存颠簸问题。在执行映射/规约操作时,绝大部分的主存被用来存储输入数据和临时中间数据。主存复用技术利用分治映射/规约模型中每组映射/规约操作的“部分结果”都被独立保存这一特点,使用同一主存空间来存储循环中每组映射/规约操作所需的输入数据和临时中间数据。该技术解决了对主存空间的消耗随输入数据的增加而线性增加的问题,避免主存耗尽引发昂贵的主存与外存交换开销;同时也解决了大量主存空间被不再使用的输入数据和临时中间数据占用的问题,有效提高了主存利用率。众核调度技术针对众核体系结构中同一处理器上的多个核共享缓存的特征,将单次映射/规约操作涉及的计算任务调度到属于同一处理器的多个核上,避免跨处理器的缓存访问。由于处理器内部的核间共享缓存访问速度远远快于跨处理器的缓存访问速度,众核调度技术能够极大的提高缓存命中率从而提升映射/规约操作的数据访问速度。映射/规约模型的每个阶段具有强依赖关系,比如最终结果必须等待规约阶段的所有并行操作全部完成,这样必然导致系统中处理单元的闲置。流水线执行技术利用分治映射/规约模型循环执行映射/规约过程中,前一组的“规约”操作与后一组的“映射”操作不存在强依赖关系的特征,让较早完成“规约”操作的处理单元提前开始后一次的“映射” 操作。该技术能够避免处理单元闲置提高处理单元利用率。本发明的有益效果是,有效提高众核环境下海量数据处理能力,利用众核体系结构特征,复用主存减少使用量、优化缓存访问提高命中率、避免处理单元闲置提高执行效率。本发明提出的分治映射/规约模型和三项优化技术对应用程序员透明,无需改动程序源代码。输入与输出也完全与映射/规约模型一致。为了便于理解,以下将通过具体的附图和实施例对本发明的进行详细地描述。需要特别指出的是,具体实例和附图仅是为了说明,显然本领域的普通技术人员可以根据本文说明,在本发明的范围内对本发明做出各种各样的修正和改变,这些修正和改变也纳入本发明的范围内。


下面结合附图和实施例对本发明进一步说明。图1为现有技术映射/规约模型示意图。图2为本发明的分治映射/规约模型示意图。图3为本发明的主存复用技术示意图。图4为本发明的众核调度技术示意图。图5为本发明的流水线执行技术示意图。
具体实施例方式实施例1示例性的分治映射/规约模型的执行流程如图2所示,相对于映射/规约模型,分治模型采用循环执行“映射/规约”阶段,而每次映射/规约阶段的操作相当于原来映射/ 规约模型下的一次完整操作,所不同的仅仅是输入只是整个海量数据集的一部分。因此模型的运行时系统首先依据当前系统资源状况在粗粒度上划分海量数据集作为循环执行“映射/规约”的输入,而每次的“映射/规约”阶段再将输入的部分数据进行细粒度的划分,分发给“映射”阶段的每个执行单元。一次映射/规约操作产生的“部分结果”被保存在主存中等待进一步的处理。当整个海量数据集完成映射/规约操作,“最终规约”阶段再将所有的“部分结果”规约成为“最终结果”。该阶段的操作以及输出数据与“规约”阶段完全一致, 所不同的仅仅是输入数据是经过映射/规约处理的“部分结果”而非映射产生的中间数据。 最后的合并操作与映射/规约模型中的合并操作相同。图3描述了主存复用技术。该技术使用固定的主存空间来存储输入数据和中间数据,每次执行“映射/规约”阶段的操作都复用该主存空间。空间大小由运行时系统依据当前系统资源状况配置,并根据空间的大小来划分每次“映射/规约”操作的输入数据大小。 主存空间在开始第一次“映射/规约”操作前分配,在最后一次“映射/规约”操作后释放。示例性的众核调度技术如图4所示运行时系统的任务调度器将所有的处理单元分组,属于同一个处理器的核被分在一个组。调度器以组为单位进行调度,将一个“映射/ 规约”任务调度给属于一个组的核来处理。在“映射/规约”循环处理过程中,各组间无需跨处理器数据传递并独占缓存。处理器间可以并行执行“映射/规约”任务。
5
示例性的流水线执行技术如图5所示图的左列描述了“映射/规约”阶段正常执行下的处理器使用情况。由于原映射/规约模型存在依赖关系,后一阶段的执行必须等待前一阶段的执行全部结束,因此执行过程中存在处理器闲置(图中黑色部分)。流水线执行技术利用前一次“规约”操作和后一次“映射”操作间的不存在依赖关系的特点,消除“规约”阶段的处理器闲置现象,从而缩短整个过程的执行时间时间。
权利要求
1.面向众核环境的分治映射/归约并行编程模型,其特征在于,其包括分治映射/规约并行编程模型,主存复用,众核调度和流水线执行技术,其中分治映射/规约并行编程模型对海量数据进行分块处理,主存复用、众核调度和流水线执行技术优化众核环境的资源使用。
2.按权利要求1所述的面向众核环境的分治映射/归约并行编程模型,其特征在于,所述的分治映射/规约模型限制每次数据处理的规模,所述的主存复用、众核调度和流水线执行技术利用模型和平台特性。
3.按权利要求1所述的面向众核环境的分治映射/归约并行编程模型,其特征在于,所述的分治映射/规约模型采用多次循环执行映射/规约操作,每次操作只处理海量数据中的一部分。
4.按权利要求1所述的面向众核环境的分治映射/归约并行编程模型,其特征在于, 所述的分治映射/规约模型在每一组映射/规约阶段前依据当前众核系统资源状况划分数据,并在完成映射/规约操作后在主存中保存生成的“部分结果”;当完成对全部海量数据的处理后,再通过额外的“最终规约”阶段将前面循环产生的所有“部分结果”规约成“最终结果”
5.按权利要求1所述的面向众核环境的分治映射/归约并行编程模型,其特征在于,所述的主存复用技术使用同一主存空间存储循环中每组映射/规约操作所需的输入数据和临时中间数据。
6.按权利要求1所述的面向众核环境的分治映射/归约并行编程模型,其特征在于,所述的众核调度技术将单次映射/规约操作涉及的计算任务调度到属于同一处理器的多个核上。
7.按权利要求1所述的面向众核环境的分治映射/归约并行编程模型,其特征在于,所述的流水线执行技术将较早完成“规约”操作的处理单元提前开始后一次的“映射”操作。
全文摘要
本发明属计算机软件应用领域,具体涉及一种面向众核环境的分治映射/归约并行编程模型。其包括分治映射/规约并行编程模型,主存复用,众核调度和流水线执行技术,其中分治映射/规约并行编程模型对海量数据进行分块处理,主存复用、众核调度和流水线执行技术优化众核环境的资源使用。本发明能有效提高众核环境下海量数据处理能力,利用众核体系结构特征,复用主存减少使用量、优化缓存访问提高命中率、避免处理单元闲置提高执行效率。本发明对应用程序员透明,无需改动程序源代码。输入与输出也完全与映射/规约模型一致。可应用在众核计算系统中处理大规模数据。
文档编号G06F9/50GK102193830SQ20101012499
公开日2011年9月21日 申请日期2010年3月12日 优先权日2010年3月12日
发明者臧斌宇, 陈榕, 陈海波 申请人:复旦大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1