一种基于任务调度的分布式gpu计算机系统的制作方法

文档序号:6377056阅读:129来源:国知局
专利名称:一种基于任务调度的分布式gpu计算机系统的制作方法
技术领域
本发明涉及计算机领域,尤其涉及一种基于任务调度的分布式GPU计算机系统。
背景技术
目前,单核CPU的发展已经遇到了瓶颈,传统CPU架构也不利于多核心效率的提高。而图形处理器(Graphics Processing Unit,GPU)因为用途不同,其架构从一开始就是专为大量并行运算核心优化设计的,所以同时期GPU效能与核心数量保持了成正比的增长势头。另外,图形处理器(GPU)和CPU —样普遍存在于计算机系统中,随着GPU计算能力的不断提高和通用技术应用的快速发展,如何利用互联网上的计算机系统中的GPU计算资源也成为另一个需要解决的问题。早期的计算机系统都是进行独立计算工作的,随着网络的出现,特别是基于TCP/IP协议的互联网的出现,将这些连接到互联网中的独立计算机协同起来共同完成应用计算 任务和问题,从而形成了分布式计算。通过分布式计算,用户不必投资于一台功能强大的计算机,而是使用多台功能一般,价格便宜的计算机完成相同的任务。如今,分布式计算已经发展成为计算机领域中的一门高性能计算科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。最初计算机图形处理器(GPU)主要用于图像处理和输出显示。近年来,GPU得到极大的发展,并且开始应用于图形学之外的通用计算领域。GPU用于通用计算的研究也开始成为热点。特别是2006年推出的新的GPU采用了统一渲染架构(Unified Shader, US)以取代传统的分离式渲染架构。在统一渲染架构中,PS单元和VS单元都被通用的US单元所取。这种US单元既可以处理顶点数据,又可以处理像素数据。因此,GPU可以根据实际处理需求进行灵活的分配,这样便有效地解决了传统分离式架构中VS和PS工作量不均的问题,从而提高了资源利用率。基于该架构的GPU产品包括NVIDIA的GeForce 8000系列和ATI的Radeon X2000系列。此外,NVIDIA还推出专业的高性能计算GPU产品,包括Tesla8 系列 GPU (如 Tesla C870/D870/S870)、和 Tesla 10 系列 GPU (如 Tesla C1060/S1070)和Tesla 20 系列 GPU (如 TeslaC2050/C2070/C2075)。其中,单核 Tesla C870 GPU 拥有 128个流处理单元,单精度浮点计算性能可达350 GFLOPS ;第二代的单核Tesla C1060 GPU拥有240个流处理单元,单精度浮点计算性能可达933 GFLOPS ;而基于新一代Fermi CUDA架构的Tesla C2075 GPU更是拥有448个流处理单元,单精度浮点计算性能可达1030 GFLOPS,双精度浮点计算性能可达515 GFLOPS0上述基于GPU的计算机集群,通过专用网络设备和通信接口互联实现集群计算,但是其存在诸多问题,如系统设计复杂,扩展性差,很难做到动态加载计算节点。

发明内容
本发明设计开发了一种基于任务调度的分布式GPU计算机系统。系统内的GPU处理单元来自于网络,在与中央处理单元建立通信之前,可能正处于运算状态,利用任务调度模块根据计算机系统内的各GPU处理单元的当前处理能力对任务块进行分配,根据各GPU处理单元的性能分配工作,保证对资源的高效率利用;同时,实时计算GPU处理单元的利用率,以便及时将系统内多余的GPU处理单元转入待机状态或者在系统内GPU处理单元处理能力不足时,激活GPU处理单元以满足系统需要,也可以保证充分利用GPU处理单元的资源。本发明所述的基于任务调度的分布式GPU计算机系统,利用GPU的大规模并行计算能力,解决现有传统的CPU计算存在的计算能力不足的问题,大大提高计算能力。系统设计简单,具有良好的扩展性。本发明提供的技术方案为一种基于任务调度的分布式GPU计算机系统,包括GPU处理单元,所述GPU处理单元用于处理任务块; 中央处理单元,所述GPU处理单元与所述中央处理单元通信,其包括任务分解模块和任务调度模块,所述中央处理单元监测当前与所述中央处理单元通信的GPU处理单元的个数N以及N个GPU处理单元中的各GPU处理单元的当前处理能力Wi,并计算各GPU处理单元的当前处理能力在N个GPU处理单元的当前处理能力的总和的权重i,其中i =Wi/ Σ Wi,所述任务分解模块将当前任务均分为M个任务块,所述任务调度模块依据各GPU处理单元的当前处理能力在所有GPU处理单元的当前处理能力的总和的权重i,向各GPU处理单元分配η个任务块,其中n = i XM,所述任务调度模块向各中央处理单元分配任务块时,所述中央处理单元建立有一任务队列响应程序,其中所述任务队列响应程序中包括有一任务队列文件,且所述任务队列文件中记录有η个任务块以及处理所述η个任务块的GPU处理单元,当所述GPU处理单元完成对一个任务块的处理,所述GPU处理单元首先将处理完成的一个任务块的任务数据发送到所述中央处理单元,并响应所述任务队列响应程序,所述中央处理单元将已经被响应的任务块从所述任务队列文件中删除,并且计算所述N个GPU处理单元中各GPU处理单元的利用率,向所述N个GPU处理单元中利用率低于30 %的GPU处理单元发出待机命令,则由所述任务调度模块将其当前处理的任务块迁移至剩余GPU处理单元中利用率最低的GPU处理单元,所述中央处理单元修改所述任务队列文件,当位于所述任务队列文件中的GPU处理单元的利用率均高于80%时,所述中央处理单元向当前处于待机状态的GPU处理单元发出激活命令,由所述任务调度模块将当前利用率最高的GPU处理单元的当前处理的任务块迁移至被激活的GPU处理单元,所述中央处理单元修改所述任务队列文件,直至所述任务队列文件中的GPU处理单元的平均利用率达到70%。优选的是,所述的基于任务调度的分布式GPU计算机系统中,所述中央处理单元设置在一管理节点服务器内;所述N个GPU处理单元分别设置在N个GPU计算节点客户端内;其中所述管理节点服务器与所述N个GPU计算节点客户端通信连接。优选的是,所述的基于任务调度的分布式GPU计算机系统中,所述通信连接为通过网络连接。优选的是,所述的基于任务调度的分布式GPU计算机系统中,所述中央处理单元还包括有GPU计算节点认证模块,所述GPU处理单元也包括有GPU计算节点登录模块,所述GPU计算节点登录模块向所述GPU计算节点认证模块提出登录请求,以实现所述GPU处理单元与所述中央处理单元的通信。优选的是,所述的基于任务调度的分布式GPU计算机系统中,所述N个GPU处理单元中各GPU处理单元依据其被所述任务调度模块所分配的任务块建立本地任务队列文件,并依据本地任务队列文件顺序处理任务块。本发明所述的基于任务调度的分布式GPU计算机系统,系统内的GPU处理单元来自于网络,在与中央处理单元建立通信之前,可能正处于运算状态,利用任务调度模块根据计算机系统内的各GPU处理单元的当前处理能力对任务块进行分配,根据各GPU处理单元的性能分配工作,保证对资源的高效率利用;同时,实时计算GPU处理单元的利用率,以便及时将系统内多余的GPU处理单元转入待机状态或者在系统内GPU处理单元处理能力不足时,激活GPU处理单元以满足系统需要,也可以保证充分利用GPU处理单元的资源。本发明所述的基于任务分解与调度的分布式GPU计算机系统,利用GPU的大规模并行计算能力,解决现有传统的CPU计算存在的计算能力不足的问题,大大提高计算能力。系统设计简单,具 有良好的扩展性。


图I为本发明所述的基于任务调度的分布式计算机系统的结构示意图;图2为本发明所述的基于任务调度的分布式计算机系统的中央处理单元的结构示意图;图3为本发明所述的基于任务调度的分布式计算机系统的GPU处理单元的结构示意图。
具体实施例方式下面结合附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。如图I所示,本发明提供一种基于任务调度的分布式GPU计算机系统,包括GPU处理单元,所述GPU处理单元用于处理任务块;中央处理单元,所述GPU处理单元与所述中央处理单元通信,其包括任务分解模块和任务调度模块,所述中央处理单元监测当前与所述中央处理单元通信的GPU处理单元的个数N以及N个GPU处理单元中的各GPU处理单元的当前处理能力Wi,并计算各GPU处理单元的当前处理能力在N个GPU处理单元的当前处理能力的总和的权重i,其中i = Wi/ Σ Wi,所述任务分解模块将当前任务均分为M个任务块,所述任务调度模块依据各GPU处理单元的当前处理能力在所有GPU处理单元的当前处理能力的总和的权重i,向各GPU处理单元分配η个任务块,其中n = i ΧΜ,所述任务调度模块向各中央处理单元分配任务块时,所述中央处理单元建立有一任务队列响应程序,其中所述任务队列响应程序中包括有一任务队列文件,且所述任务队列文件中记录有η个任务块以及处理所述η个任务块的GPU处理单元,当所述GPU处理单元完成对一个任务块的处理,所述GPU处理单元首先将处理完成的一个任务块的任务数据发送到所述中央处理单元,并响应所述任务队列响应程序,所述中央处理单元将已经被响应的任务块从所述任务队列文件中删除,并且计算所述N个GPU处理单元中各GPU处理单元的利用率,向所述N个GPU处理单元中利用率低于30%的GPU处理单元发出待机命令,则由所述任务调度模块将其当前处理的任务块迁移至剩余GPU处理单元中利用率最低的GPU处理单元,所述中央处理单元修改所述任务队列文件,当位于所述任务队列文件中的GPU处理单元的利用率均高于80%时,所述中央处理单元向当前处于待机状态的GPU处理单元发出激活命令,由所述任务调度模块将当前利用率最高的GPU处理单元的当前处理的任务块迁移至被激活的GPU处理单元,所述中央处理单元修改所述任务队列文件,直至所述任务队列文件中的GPU处理单元的平均利用率达到70%。所述的基于任务调度的分布式GPU计算机系统中,所述中央处理单元设置在一管理节点服务器内;所述N个GPU处理单元分别设置在N个GPU计算节点客户端内;其中所述管理节点服务器与所述N个GPU计算节点客户端通信连接。 所述的基于任务调度的分布式GPU计算机系统中,所述通信连接为通过网络连接。所述的基于任务调度的分布式GPU计算机系统中,所述中央处理单元还包括有GPU计算节点认证模块,所述GPU处理单元也包括有GPU计算节点登录模块,所述GPU计算节点登录模块向所述GPU计算节点认证模块提出登录请求,以实现所述GPU处理单元与所述中央处理单元的通信。所述的基于任务调度的分布式GPU计算机系统中,所述N个GPU处理单元中各GPU处理单元依据其被所述任务调度模块所分配的任务块建立本地任务队列文件,并依据本地任务队列文件顺序处理任务块。本发明根据网络上的GPU处理单元各自的处理能力来进行任务的分配,这里的处理能力可能产生于GPU硬件或者软件编程上的差异。为了保证充分利用GPU处理单元的资源,通过实时监测利用率来进行任务的动态分配,这是因为,当GPU处理单元的利用率比较低,也需要中央处理单元协调管理,这样会造成运算资源的浪费。利用率是指对一个任务块处理的时间/GPU最大运算水平。本发明的基于任务调度的分布式GPU计算系统,包括管理节点服务器(简称管理节点)、GPU计算节点客户端(简称计算节点)、通信节点和通信链路,GPU计算节点通过通信节点和通信链路与管理节点通信。管理节点服务器内部设置了中央处理单元,GPU计算节点客户端内部设置了 GPU处理单元。每一个GPU计算节点客户端都对应一台分布于网络上的计算机,并通过网络与管理节点服务器通信,从而形成了一个分布式的计算机系统。图I为本发明所述的基于任务调度的分布式GPU计算系统的框架结构图。从图I中,我们可以看出分布式GPU计算系统由管理节点(服务器)和分布在网络上的多个GPU计算节点(客户端)组成。在管理节点上,首先将一项大型的计算任务分解为一组小型的工作单元,然后通过网络将小工作单元分配给连接到该管理节点服务器上的多个GPU计算节点客户端进行处理。当GPU计算节点客户端完成小工作单元的处理之后,立即将得到的子结果通过网络反馈给管理节点服务器。管理节点服务器收集到所有GPU计算节点客户端反馈的小工作单元的处理结果后,再将所有的子结果综合起来得到最终的结果。图2中给出了中央处理单元的结构图(中央处理单元建立在管理节点服务器上,因此,也可看作是图I中的管理节点的结构图)。中央处理单元包含有网络接口单元、控制单元、任务管理单元、GPU计算节点管理单元、结果管理单元。其中,任务管理单元又包括任务分解模块、任务调度模块和数据中心模块;GPU计算节点管理单元包括GPU计算节点认证模块和GPU计算节点管理模块;结果管理单元包括结果处理模块和结果显示模块。控制单元是中央处理单元的核心单元,它负责中央处理单元的其它单元的操作。中央处理单元的控制单元是系统任务调度和资源分配的核心模块,它可以由支持X86架构的Intel或AMD CPU等组件构成,也可以有ARM架构的嵌入式MCU等组件构成,但不限于此。控制单元主要负责控制客户端的登录认证与管理、分析任务的生成和分割、任务块的分发调度,以及分析结果的处理等。任务管理单元通过任务分解模块将数据中心模块的需要计算的任务数据根据GPU计算节点管理模块中GPU计算节点的计算资源进行任务分解,并由任务调度模块通过控制单元和网络接口单元将分解后的任务块发送到各个GPU计算节点。网络接口单元包括支持802. X系列的以太网接口,它负责向注册的GPU计算节点发送中央处理单元的计算任务,并接收来自GPU计算节点注册请求信息及注册GPU计算节点的计算结果信息。结果管理单元中的结果处理模块根据GPU计算节点客户端完成当前任务块后向其发送的通知消息,决定是否继续工作,即向空闲GPU计算节点继续分配计算任务,或终止当前正在工作的GPU计算节点的计算任务,同时将处理结果输出到数据中心模块或结果显示模块中。结果显示模块的信息窗口中显示计算任务的进度和最终结果。GPU计算节点管 理单元中的GPU计算节点管理模块主要负责保存GPU计算节点的通信IP地址信息、GPU计算资源信息(可用于评价各GPU处理单元的当前处理能力)和维护GPU计算节点的任务队列(这个任务队列中包括任务队列响应程序和任务队列文件)。GPU计算节点认证模块主要负责对GPU计算节点的合法身份的认证,采用的认证方法包括基于用户名/ 口令的身份认证、基于指纹的身份认证等,但不限于此。图3给出了 GPU处理单元的结构图。GPU处理单元包含了网络接口单元、控制单元、计算单元和GPU计算节点登录模块。计算单元由GPU计算部件和存储器部件构成。GPU处理单元的控制单元和中央处理单元的控制单元类似,负责管理节点其它单元的操作。控制单元主要负责GPU处理单元的登录、响应中央处理单元的任务分配请求、调用计算单元对收到的任务块进行分析计算、向管理节点提交任务计算结果等。网络接口单元代表GPU处理单元和中央处理单元进行交互,负责向管理节点发送登录请求,或接收合法管理节点的计算任务。计算单元是系统的核心单元,它对中央处理单元所分配的任务块进行任务计算,对任务的计算工作主要由该模块来完成。其中GPU计算器进行数据运算操作,它可以采用支持统一设备架构的NVIDIA或AMD的GPU芯片,软件开发平台使用CUDA或OpenCL,但不限于此。存储器用于数据的存储和交互。计算单元在对任务块的计算过程中,如果获得计算结果,将及时向管理节点进行汇报。如果在当前任务块都计算完成之后仍未有计算结果,GPU处理单元将向管理节点汇报当前任务计算的进度,然后从本地任务队列中取出下一个子任务块继续进行计算。通信节点可以是局域网的交换机部件组成,也可以是由城域网、互联网的交换机、路由器等部件组成。本发明不但比传统的CPU运算系统相比具有更强的运算能力,而且能充分利用互联网上的GPU计算资源,大大提高系统的运算能力,具有很高的性价比。尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图 例。
权利要求
1.一种基于任务调度的分布式GPU计算机系统,其特征在于,包括 GPU处理单元,所述GPU处理单元用于处理任务块; 中央处理单元,所述GPU处理单元与所述中央处理单元通信,其包括任务分解模块和任务调度模块,所述中央处理单元监测当前与所述中央处理单元通信的GPU处理单元的个数N以及N个GPU处理单元中的各GPU处理单元的当前处理能力Wi,并计算各GPU处理单元的当前处理能力在N个GPU处理单元的当前处理能力的总和的权重i,其中i =Wi/ Σ Wi,所述任务分解模块将当前任务均分为M个任务块,所述任务调度模块依据各GPU处理单元的当前处理能力在所有GPU处理单元的当前处理能力的总和的权重i,向各GPU处理单元分配η个任务块,其中n = i XM, 所述任务调度模块向各中央处理单元分配任务块时,所述中央处理单元建立有一任务队列响应程序,其中所述任务队列响应程序中包括有一任务队列文件,且所述任务队列文件中记录有η个任务块以及处理所述η个任务块的GPU处理单元,当所述GPU处理单元完成对一个任务块的处理,所述GPU处理单元首先将处理完成的一个任务块的任务数据发送到所述中央处理单元,并响应所述任务队列响应程序,所述中央处理单元将已经被响应的任务块从所述任务队列文件中删除,并且计算所述N个GPU处理单元中各GPU处理单元的利用率,向所述N个GPU处理单元中利用率低于30 %的GPU处理单元发出待机命令,则由所述任务调度模块将其当前处理的任务块迁移至剩余GPU处理单元中利用率最低的GPU处理单元,所述中央处理单元修改所述任务队列文件,当位于所述任务队列文件中的GPU处理单元的利用率均高于80%时,所述中央处理单元向当前处于待机状态的GPU处理单元发出激活命令,由所述任务调度模块将当前利用率最高的GPU处理单元的当前处理的任务块迁移至被激活的GPU处理单元,所述中央处理单元修改所述任务队列文件,直至所述任务队列文件中的GPU处理单元的平均利用率达到70%。
2.如权利要求I所述的基于任务调度的分布式GPU计算机系统,其特征在于,所述中央处理单元设置在一管理节点服务器内;所述N个GPU处理单元分别设置在N个GPU计算节点客户端内;其中所述管理节点服务器与所述N个GPU计算节点客户端通信连接。
3.如权利要求2所述的基于任务调度的分布式GPU计算机系统,其特征在于,所述通信连接为通过网络连接。
4.如权利要求2所述的基于任务调度的分布式GPU计算机系统,其特征在于,所述中央处理单元还包括有GPU计算节点认证模块,所述GPU处理单元也包括有GPU计算节点登录模块,所述GPU计算节点登录模块向所述GPU计算节点认证模块提出登录请求,以实现所述GPU处理单元与所述中央处理单元的通信。
5.如权利要求I所述的基于任务调度的分布式GPU计算机系统,其特征在于,所述N个GPU处理单元中各GPU处理单元依据其被所述任务调度模块所分配的任务块建立本地任务队列文件,并依据本地任务队列文件顺序处理任务块。
全文摘要
本发明公开了一种基于任务调度的分布式GPU计算机系统,系统内的GPU处理单元来自于网络,在与中央处理单元建立通信之前,可能正处于运算状态,利用任务调度模块根据计算机系统内的各GPU处理单元的当前处理能力对任务块进行分配,根据各GPU处理单元的性能分配工作,保证对资源的高效率利用;同时,实时计算GPU处理单元的利用率,以便及时将系统内多余的GPU处理单元转入待机状态或者在系统内GPU处理单元处理能力不足时,激活GPU处理单元以满足系统需要,也可以保证充分利用GPU处理单元的资源。本发明所述的基于任务分解与调度的分布式GPU计算机系统,解决现有传统的CPU计算存在的计算能力不足的问题,大大提高计算能力。系统设计简单,具有良好的扩展性。
文档编号G06F9/50GK102929718SQ20121034432
公开日2013年2月13日 申请日期2012年9月17日 优先权日2012年9月17日
发明者谢小轩, 乐德广, 胡永禄 申请人:江苏九章计算机科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1