当前位置: 首页 > 专利查询>北京大学专利>正文

一种支持动态伸缩的并行计算的方法技术

技术编号:10068860 阅读:122 留言:0更新日期:2014-05-23 11:52
本发明专利技术公开了一种支持动态伸缩的并行计算的方法,主要包括以下内容:(1)将并行作业转化成由若干任务构成的集合,并将任务集管理与处理器组群的管理进行解耦,以支持可伸缩的计算;(2)通过任务缓冲池实现对并行作业的任务集的管理和调度。本发明专利技术可以很轻便地实现动态伸缩,使得程序员能够简单、高效地开发多种类型及特定领域的并行计算程序。

【技术实现步骤摘要】
【专利摘要】本专利技术公开了,主要包括以下内容:(1)将并行作业转化成由若干任务构成的集合,并将任务集管理与处理器组群的管理进行解耦,以支持可伸缩的计算;(2)通过任务缓冲池实现对并行作业的任务集的管理和调度。本专利技术可以很轻便地实现动态伸缩,使得程序员能够简单、高效地开发多种类型及特定领域的并行计算程序。【专利说明】
本专利技术涉及计算机网络
,具体涉及一种在开放、易变的动态网络环境下支持动态伸缩的并行计算方法。
技术介绍
并行计算是指同时使用多种计算资源来解决问题的模式,它是提高计算机系统的运算速度和处理能力的一种高效手段。随着并行计算领域的发展,一系列支持并行计算的编程接口和处理系统不断出现。从POSIXThreads、MPI到OpenMP、PVM,再到现在非常流行的用于特定领域的MapReduce、Dryad、Pregel等编程框架,用户可以方便地编写和运行并行程序。然而,互联网的快速发展对并行计算技术提出新的挑战。一方面,互联网信息量的飞速增长使得并行计算的应用场景越来越广泛,从早期的科学计算,到现在的网页搜索、海量数据分析等,其应用类型逐渐多样化。另一方面,并行计算的载体由封闭的、面向专门应用的系统逐渐转变成开放的,由众多计算资源通过网络构成的运算平台。这种运算平台的特点在于参与计算的资源规模可能在运行时发生改变,可能有计算资源在运行中宕机或离线,或者有新资源随时加入。这就要求平台上的并行计算具有伸缩性,以更好地利用计算资源,并在计算过程中保证作业成功运行或实现加速。然而,上述提到的编程接口或框架均无法满足这种需求。此外,诸如MapReduce、Drayd、Pregel等编程框架均面向领域特定的并行程序,不具有通用性。
技术实现思路
本专利技术的目的是提供一种在开放、易变的动态网络环境下支持动态伸缩的并行计算方法,使得程序员能够简单、高效地开发多种类型及特定领域的并行计算程序。本专利技术主要包括以下内容:(I)将并行作业转化成由若干任务构成的集合,并将任务集管理与处理器组群的管理进行解耦,以支持可伸缩的计算;(2)通过任务缓冲池实现对并行作业的任务集的管理和调度。为了实现上述目的,本专利技术采用以下技术方案:,首先提出将任务集的管理与处理器进行解耦。任务集的管理只负责维护作业的逻辑流,决定在某一时刻哪些任务可以被调度执行、哪些任务因尚未满足执行条件而待命。在对任务集进行管理时,不需要考虑处理器的情况。具体包括以下步骤:I)将并行作业分解成若干任务构成的任务集;2)利用任务缓冲池维护上述任务集,并创建动态任务表,用于跟踪记录已被调度到处理器集群中的处理器上执行的任务;3)处理器集群中的处理器只要空闲,便向任务缓冲池请求任务,获得任务缓冲池调度的待执行的任务进行处理,而后将执行结果提交到任务缓冲池;4)当任务缓冲池接收到处理器提交的任务的执行结果时,更新任务集及动态任务表;5)当任务集和动态任务表中没有待执行的任务时,任务缓冲池结束对任务的调度,并行作业完成。进一步地,步骤2)中,所述任务缓冲池中任务的状态包括:尚未调度状态、已被调度尚未提交状态和执行结果已提交状态。进一步地,步骤2)中,所述任务集中的任务在第一次被调度后,该任务从任务集中移除,添加到动态任务表中。进一步地,步骤3)中,所述处理器集群中的处理器相互独立,新加入的处理器可以直接向任务缓冲池请求任务。进一步地,步骤3)中,所述处理器集群中的每个处理器均包含两种状态,空闲及忙碌,并在两种状态间循环转换。若处理器空闲,则向任务缓冲池请求任务并执行,转换成忙碌状态。等任务执行完提交后,处理器恢复成空闲状态。进一步地,步骤3)中,所述处理器向任务缓冲池请求任务时,任务缓冲池可能返回三种结果,处理器根据任务缓冲池返回的不同结果进行相应操作。若结果为一个待执行的任务,则处理该任务;若结果为stop标记,说明任务缓冲池已确认该并行作业的完成,处理器可以停止运行;若结果为standby标记,说明任务缓冲池目前暂时无法提供任务,但该并行作业尚未完成(可能会有新的待执行任务添加到任务缓冲池中),此时处理器应稍后再请求任务。进一步地,步骤3)中,如果处理器在执行任务的过程中生成新的子任务,则需要在提交执行结果的同时将新的子任务添加到任务缓冲池中。进一步地,步骤4)中,如果处理器所提交的任务记录在任务动态表中,任务缓冲池会将该任务项删除;如果该任务未记录在任务动态表中,表示之前已经有其它处理器成功提交过该任务,则忽略此次提交。进一步地,步骤4)中,当有处理器离线或异常结束时,其所执行的任务处于已被调度尚未提交状态,所以其它在线的处理器在向任务缓冲池请求任务时,仍然可以获得该任务执行,当且仅当某一个处理器提交该任务的执行结果时,任务集将该任务设为完成状态,任务缓冲池将该任务从动态任务表中彻底删除。本专利技术可以很轻便地实现动态伸缩,程序员在使用本方法时只需考虑如何将作业划分成一系列任务,如何定义每个任务的数据结构,如何确定每个任务的依赖和触发时间,但不必关心处理器的管理问题。由于任务集不绑定在处理器组群上,因而处理器不需要掌握作业的业务逻辑。这就使得处理器之间相互独立,处理器伸缩性的实现较为容易。【专利附图】【附图说明】图1本专利技术支持动态伸缩的并行计算的方法流程图。图2本专利技术并行计算方法对应的编程接口。【具体实施方式】本专利技术的具体技术方案如下:(I) 一般对于并行作业的处理是基于分而治之的思想,将作业分解成若干任务(task)构成的集合,任务是其最小的并发单位。一个作业的不同任务间可能存在数据依赖或时序依赖等关系。对并行作业的处理过程就是依次将它的所有任务调度到多个处理器上执行,待任务完成后进行汇总或创建新任务继续执行。因而,运算平台需要负责对任务集和处理器进行管理。为了支持动态伸缩性,本专利技术提出将任务集的管理与处理器进行解耦。任务集的管理只负责维护作业的逻辑流,决定在某一时刻哪些任务可以被调度执行、哪些任务因尚未满足执行条件而待命。一个任务在三种状态间依次转换:静态(尚未调度)、运行(已被调度尚未提交)和完成(执行结果被提交)。在对任务集进行管理时,不需要考虑处理器的情况。本方法要求处理器具有如下的重复行为逻辑:当处理器空闲时,以主动的方式向任务集请求获取新任务;若当前任务集没有更多任务,该处理器终止或进入短暂的休眠状态;若获得新任务,该处理器计算该任务,将其结果提交给任务集;而后进入下一轮的处理行为。由于任务集不绑定在处理器组群上,因而处理器不需要掌握作业的业务逻辑。这就使得处理器之间相互独立,处理器伸缩性的实现较为容易。当有新的处理器加入运算平台时,新处理器可以直接向任务集请求新任务,实现运算的加速;当有处理器离线或异常结束时,其所执行的任务处于尚未提交状态,所以其它在线的处理器在向任务集请求任务时,仍然可以获得该任务执行,当且仅当某一个处理器提交该任务的结果时,任务集将该任务设为完成状态,从而保证了处理器异常情况下作业的正确执行。通过上述设计,本专利技术可以很轻便地实现动态伸缩,程序员在使用本方法时只需考虑如何将作业划分成一系列任务,如何定义每个任务的数据结构,如何确定每个任务的依赖和触发时间,但不必关心处理器的管理问题。本专利技术根据程序员的作业描本文档来自技高网
...

【技术保护点】
一种支持动态伸缩的并行计算的方法,包括以下步骤:1)将并行作业分解成若干任务构成的任务集;2)利用任务缓冲池维护上述任务集,并创建动态任务表,用于跟踪记录已被调度到处理器集群中的处理器上执行的任务;3)处理器集群中的处理器只要空闲,便向任务缓冲池请求任务,获得任务缓冲池调度的待执行的任务进行处理,而后将执行结果提交到任务缓冲池;4)当任务缓冲池接收到处理器提交的任务的执行结果时,更新任务集及动态任务表;5)当任务集和动态任务表中没有待执行的任务时,任务缓冲池结束对任务的调度,并行作业完成。

【技术特征摘要】

【专利技术属性】
技术研发人员:曹东刚詹杭龙
申请(专利权)人:北京大学
类型:发明
国别省市:北京;11

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

1