一种实现GPU调度的集群管理方法和系统与流程

文档序号:11707452阅读:274来源:国知局
一种实现GPU调度的集群管理方法和系统与流程

本发明涉及通信和计算机领域,具体涉及一种实现gpu调度的集群管理方法和系统。



背景技术:

近年来,图形处理器gpu在并行处理能力和图形处理能力上增长很快,而cuda和opencl可编程架构的推广也为gpu应用走向成熟提供了支持。越来越多的高性能集群集成了gpu,如何合理的管理和调度gpu资源,充分发挥其并行处理能力,提高系统效能是当前gpu应用支撑技术的重要研究方向。目前,基于国产平台的高性能集群管理系统还比较少,对于gpu资源的管理和调度的支持不够。

因此,需要一种实现gpu调度的集群管理方法和系统以增强集群中对gpu资源的管理和调度的支持。



技术实现要素:

针对上述现有技术中集群对gpu资源的管理和调度的支持不够的问题,本发明的目的在于提供一种实现gpu调度的集群管理方法和系统。

为了实现上述目的,本发明采用的技术方案如下:

一种实现gpu调度的集群管理方法,集群管理器上部署有控制进程、作业调度器和gpu调度模块,具体包括以下步骤:

s000:用户提交gpu作业,控制进程将gpu作业放入队列并发送调度指令;

s100:请求并获取gpu资源信息;

s200:作业调度器根据gpu资源信息进行作业调度;

s300:控制进程分配并发送作业;

s400:gpu调度模块接收并执行控制进程发来的作业,并将执行结果反馈给控制进程。

进一步地,步骤s100具体包括以下步骤:

s110:作业调度器初始化请求队列和gpu资源;

s120:控制进程请求向gpu调度模块获取gpu资源信息;

s130:gpu调度模块向控制进程查询并报告本机gpu资源信息;

s140:控制进程向作业调度器返回队列和gpu资源信息。

进一步地,步骤s200具体包括以下步骤:

s210:作业调度器根据调度策略选择在队列中优先级最高的作业;

s220:作业调度器检查作业是否可以执行;

s230:作业调度器选择最优节点。

进一步地,步骤s300中,控制进程发送作业到最优节点。

进一步地,步骤s130具体包括以下步骤:

s131:gpu调度模块查询并记录gpu资源信息;

s132:gpu调度模块向控制进程反馈gpu资源信息;

s133:gpu调度模块等待控制进程分配的作业。

进一步地,gpu资源信息包括显卡设备的类型和基本信息;

显卡设备的基本信息包括流处理单元、显存大小和可用显存。

进一步地,步骤s300具体包括以下步骤:

s310:控制进程根据显卡列表、和作业申请的资源信息并执行统一的资源分配策略,计算作业对应的节点;

s320:控制进程将作业分配给相应的节点;

s330:控制进程发送作业。

一种实现gpu调度的集群管理系统,包括集群管理器,集群管理器上部署有:

控制进程,部署在控制节点,用于集群资源管理和分配作业到节点;

作业调度器,用于初始化请求队列和gpu资源,以及对gpu资源信息进行作业调度;

gpu调度模块,部署在计算节点,用于反馈节点gpu资源信息和执行分配到节点的作业。

进一步地,集群管理系统移植有opencl和opengl,用于搭建并行应用和图形应用的运行环境;

还包括web访问端,用于用户通过所述web访问端直接访问集群管理系统。

一种计算机可读存储介质,其上存储有计算机程序(指令),用于实现gpu调度的集群管理方法,计算机程序(指令)被处理器执行时实现以下步骤:

s000:用户提交gpu作业,控制进程将gpu作业放入队列并发送调度指令;

s100:请求并获取gpu资源信息;

s200:作业调度器根据gpu资源信息进行作业调度;

s300:控制进程分配并发送作业;

s400:gpu调度模块接收并执行控制进程发来的作业,并将执行结果反馈给控制进程。

进一步地,步骤s100具体包括以下步骤:

s110:作业调度器初始化请求队列和gpu资源;

s120:控制进程请求向gpu调度模块获取gpu资源信息;

s130:gpu调度模块向控制进程查询并报告本机gpu资源信息;

s140:控制进程向作业调度器返回队列和gpu资源信息。

进一步地,步骤s200具体包括以下步骤:

s210:作业调度器根据调度策略选择在队列中优先级最高的作业;

s220:作业调度器检查作业是否可以执行;

s230:作业调度器选择最优节点。

进一步地,步骤s300中,控制进程发送作业到最优节点。

进一步地,步骤s130具体包括以下步骤:

s131:gpu调度模块查询并记录gpu资源信息;

s132:gpu调度模块向控制进程反馈gpu资源信息;

s133:gpu调度模块等待控制进程分配的作业。

进一步地,gpu资源信息包括显卡设备的类型和基本信息;

显卡设备的基本信息包括流处理单元、显存大小和可用显存。

进一步地,步骤s300具体包括以下步骤:

s310:控制进程根据显卡列表、和作业申请的资源信息并执行统一的资源分配策略,计算作业对应的节点;

s320:控制进程将作业分配给相应的节点;

s330:控制进程发送作业。

本发明通过以上技术方案,能够获得以下有益技术效果:

(1)通过设置和部署gpu调度模块,用于反馈节点gpu资源信息和执行分配到节点的作业,增强了集群系统对gpu资源的管理和调度的支持;

(2)通过设置web访问端,采用bs架构,用户可以通过所述web访问端直接访问集群管理系统,而不需要安装客户端软件;

(3)通过移植有opencl和opengl,用来搭建并行应用和图形应用的运行环境,具有更好的通用性和可移植性。

当然,实施本发明的任一产品必不一定需要同时达到以上所述的所有技术效果。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明实施例所述的实现gpu调度的集群管理方法的流程图;

图2为图1中s100的子流程图;

图3为图1中s200的子流程图;

图4为图2中s130的子流程图;

图5为图1中s300的子流程图;

图6为本发明实施例所述的实现gpu调度的集群管理系统的框图。

具体实施方式

如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包括”为一开放式用语,故应解释成“包括但不限定于”。说明书后续描述为实施本发明的较佳实施方式,然所述描述乃以说明本发明的一般原则为目的,并非用以限定本发明的范围。本发明的保护范围当视所附权利要求所界定者为准。

实施例1

如图1-5所示,本实施例提供的一种实现gpu调度的集群管理方法,集群管理器上部署有控制进程、作业调度器和gpu调度模块,具体包括以下步骤:首先,用户提交gpu作业,控制进程将gpu作业放入队列并发送调度指令;然后,请求并获取gpu资源信息;之后,作业调度器根据gpu资源信息进行作业调度;之后,控制进程分配并发送作业;然后,gpu调度模块接收并执行控制进程发来的作业,并将执行结果反馈给控制进程。

进一步地,请求并获取gpu资源信息步骤具体包括以下步骤:1.作业调度器初始化请求队列和gpu资源,并向控制进程请求获取gpu资源信息;2.控制进程接收请求后,转发给gpu调度模块,向gpu调度模块请求获取gpu资源信息;3.gpu调度模块向控制进程查询并报告本机gpu资源信息;4.控制进程向作业调度器返回队列和gpu资源信息。其中,gpu调度模块向控制进程查询并报告本机gpu资源信息步骤具体包括以下步骤:(1)gpu调度模块查询并记录gpu资源信息;(2)gpu调度模块向控制进程反馈gpu资源信息;(3)gpu调度模块等待控制进程分配的作业。其中,gpu资源信息包括显卡设备的类型和基本信息;显卡设备的基本信息包括流处理单元、显存大小和可用显存。

进一步地,作业调度器根据gpu资源信息进行作业调度步骤具体包括以下步骤:1.作业调度器根据调度策略选择在队列中优先级最高的作业;2.作业调度器检查作业是否可以执行;3.作业调度器选择最优节点。然后,控制进程发送作业到最优节点。

进一步地,控制进程分配并发送作业步骤具体包括以下步骤:1.控制进程根据显卡列表、和作业申请的资源信息并执行统一的资源分配策略,计算作业对应的节点;2.控制进程将作业分配给相应的节点;3.控制进程发送作业。

实施例2

如图1-6所示,本实施例提供的一种实现gpu调度的集群管理系统,包括集群管理器,集群管理器上部署有:控制进程、作业调度器和gpu调度模块。控制进程部署在控制节点,用于集群资源管理和分配作业到节点;作业调度器,用于初始化请求队列和gpu资源,以及对gpu资源信息进行作业调度;gpu调度模块部署在计算节点,用于反馈节点gpu资源信息和执行分配到节点的作业。

进一步地,集群管理系统移植有opencl和opengl,用于搭建并行应用和图形应用的运行环境;并且还包括web访问端,用于用户通过所述web访问端直接访问集群管理系统,采用了bs架构。

opencl是一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(cpu)、图形处理器(gpu)、cell类型架构以及数字信号处理器(dsp)等其他并行处理器。其与另外两个异构编程框架cuda和c++amp相比,opencl更加通用,cuda仅支持nvidia显卡,而c++amp只能用于windows系统平台。进而选用opencl作为gpu并行编程框架。opengl(opengraphicslibrary)是一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。其用于三维/二维图像,是一个功能强大,调用方便的底层图形库,opengl是个软件接口,与硬件无关,可以在不同的平台如windows95、windowsnt、unix、linux、macos、os/2之间进行移植。因此,支持opengl的软件具有很好的移植性。然而,微软的directx只能用于windows平台。所以选择opengl作为图形api。搭建opengl环境是为了高性能集群应对3d图形应用。

本实施例提供的实现gpu调度的集群管理系统,主要应用于国产平台,并支持对gpu的资源管理,gpu作业的分配、管理,充分利用gpu的并行处理能力和图形计算能力,提升集群的计算性能。本集群管理系统是基于slurm开发,slurm是一个可用于大型计算节点集群的高度可伸缩的集群管理器和作业调度系统,维护着一个待处理工作的队列并管理此工作的整体资源利用,slurm将作业分发给一组已分配的节点来执行。slurm主要包括部署在控制节点的控制进程和计算节点的执行进程,控制进程负责集群资源管理和作业调度,执行进程负责反馈节点资源信息和执行分配到节点的作业。

本实施例提供的实现gpu调度的集群管理系统执行以下方法:

具体包括以下步骤:首先,用户向本集群管理系统提交gpu作业,控制进程将gpu作业放入队列并发送调度指令;然后,作业调度器接收调度指令,初始化请求队列和gpu资源,并向控制进程请求获取gpu资源信息;控制进程接收请求后,转发给gpu调度模块,向gpu调度模块请求获取gpu资源信息;gpu调度模块接收请求后查询本机gpu资源信息,并向控制进程报告本机gpu资源信息;控制进程向作业调度器返回队列和gpu资源信息;作业调度器根据调度策略选择在队列中优先级最高的作业;作业调度器检查作业是否可以执行;作业调度器选择最优节点告知控制进程;控制进程发送作业到指定最优节点;然后,gpu调度模块接收并执行控制进程发来的作业,并将执行结果反馈给控制进程。

其中,gpu调度模块向控制进程查询并报告本机gpu资源信息步骤具体包括以下步骤:(1)gpu调度模块查询并记录gpu资源信息;(2)gpu调度模块向控制进程反馈gpu资源信息;(3)gpu调度模块等待控制进程分配的作业。其中,gpu资源信息包括显卡设备的类型和基本信息;显卡设备的基本信息包括流处理单元、显存大小和可用显存。

进一步地,控制进程分配并发送作业步骤具体包括以下步骤:1.控制进程根据显卡列表、和作业申请的资源信息并执行统一的资源分配策略,计算作业对应的节点;2.控制进程将作业分配给相应的节点;3.控制进程发送作业。

实施例3

如图1-5所示,本实施例提供的一种计算机可读存储介质,其上存储有计算机程序(指令),用于实现gpu调度的集群管理方法,计算机程序(指令)被处理器执行时实现以下步骤:

首先,用户提交gpu作业,控制进程将gpu作业放入队列并发送调度指令;然后,请求并获取gpu资源信息;之后,作业调度器根据gpu资源信息进行作业调度;之后,控制进程分配并发送作业;最后,gpu调度模块接收并执行控制进程发来的作业,并将执行结果反馈给控制进程。

进一步地,请求并获取gpu资源信息步骤具体包括以下步骤:1.作业调度器初始化请求队列和gpu资源,并向控制进程请求获取gpu资源信息;2.控制进程接收请求后,转发给gpu调度模块,向gpu调度模块请求获取gpu资源信息;3.gpu调度模块向控制进程查询并报告本机gpu资源信息;4.控制进程向作业调度器返回队列和gpu资源信息。其中,gpu调度模块向控制进程查询并报告本机gpu资源信息步骤具体包括以下步骤:(1)gpu调度模块查询并记录gpu资源信息;(2)gpu调度模块向控制进程反馈gpu资源信息;(3)gpu调度模块等待控制进程分配的作业。其中,gpu资源信息包括显卡设备的类型和基本信息;显卡设备的基本信息包括流处理单元、显存大小和可用显存。

进一步地,作业调度器根据gpu资源信息进行作业调度步骤具体包括以下步骤:1.作业调度器根据调度策略选择在队列中优先级最高的作业;2.作业调度器检查作业是否可以执行;3.作业调度器选择最优节点。然后,控制进程发送作业到最优节点。

进一步地,控制进程分配并发送作业步骤具体包括以下步骤:1.控制进程根据显卡列表、和作业申请的资源信息并执行统一的资源分配策略,计算作业对应的节点;2.控制进程将作业分配给相应的节点;3.控制进程发送作业。

术语解释:

slurm:一种开源分布式资源管理软件,用于超级计算机和大型计算节点集群。

bs架构:browser/server,浏览器/服务器结构,该模式统一了客户端,简化了系统的开发、维护和使用。

本实施例提供的一种实现gpu调度的集群管理方法和系统,具有以下优点:

(1)通过设置和部署gpu调度模块,用于反馈节点gpu资源信息和执行分配到节点的作业,增强了集群系统对gpu资源的管理和调度的支持;

(2)通过设置web访问端,采用bs架构,用户可以通过所述web访问端直接访问集群管理系统,而不需要安装客户端软件;

(3)通过移植有opencl和opengl,用来搭建并行应用和图形应用的运行环境,具有更好的通用性和可移植性。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上所述仅为本发明的若干实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1