并行运行gpu运算程序的实现方法及装置的制造方法

文档序号:9910846阅读:818来源:国知局
并行运行gpu运算程序的实现方法及装置的制造方法
【技术领域】
[0001]本发明涉及GPU运算程序管理技术领域,特别是涉及一种在一台物理主机上运行不同GPU运算程序的实现方法及装置。
【背景技术】
[0002]虚拟化技术目前在计算机体系结构、操作系统、编译器和编程语言等领域得到了广泛应用。该技术实现了资源的逻辑抽象和统一表示,在服务器、网络及存储管理等方面都有着突出的优势,降低了管理复杂度,提高了资源利用率和运营效率,有效地控制了成本。目前的虚拟化技术已经能很好的支持CPU、内存、网卡等计算资源的虚拟化,但是对于一些特定的设备,比如显卡、声卡等多媒体设备的支持并不完善。
[0003]近几年GPU的出现,对高性能计算领域发展起到了不可估量的推动作用,GPU相对于CPU在硬件架构上具有计算单元优势,但GPU本身在虚拟化驱动支持程度相比成熟的CPU技术有较大的差距,例如:目前的物理主机的GPU硬件只能串行处理,即同一时间段内只能运行一个GPU运算程序。无法将一台物理主机上的GPU硬件虚拟化为多个能够单独运行GPU运算程序的GPU资源,也就是说,无法实现在一台物理机上并行运行不同的GPU运算程序。

【发明内容】

[0004]本发明实施例的目的在于提供一种在一台物理主机上并行运行GPU运算程序的实现方法及装置,以提高虚拟化技术对GPU的支持程度。
[0005]为达到上述目的,本发明实施例公开了一种在一台物理机上运行不同GHJ运算程序的实现方法,所述方法包括:
[0006]获得待运行的至少一个GPU运算程序;
[0007]分别获得每个待运行的GPU运算程序适用的容器镜像;所述容器镜像为依据所述物理主机已安装的GPU的相关信息预先构建的;所述GPU的相关信息至少包括:已安装的各个GPU的硬件型号、每种型号GPU的驱动程序及每种型号GPU的运算框架;
[0008]根据每个待运行的GPU运算程序适用的容器镜像,为每个待运行的GPU运算程序创建对应的容器;
[0009]为每个容器配置非GPU的硬件资源;
[0010]按照预设的绑定粒度为每个容器绑定GPU硬件资源;
[0011]将各个GPU运算程序提交给对应的容器;
[0012]各个容器利用自身被配置的非GPU的硬件资源和绑定的GPU硬件资源,运行GPU运算程序。
[0013]优选的,所述获得待运行的至少一个GPU运算程序,包括:
[0014]获得存储在所述物理主机中的GPU运算程序;
[0015]和/或
[0016]通过网络接收GPU运算程序。
[0017]优选的,所述的GPU运算程序中包含有与GPU相关的描述信息;所述描述信息中包括:该GPU运算程序所需要的GPU的硬件型号、该GPU的驱动程序及该GPU的运算框架;
[0018]所述分别获得每个待运行的GPU运算程序适用的容器镜像,包括:
[0019]获得每个待运行的GPU运算程序中的与GPU相关的描述信息;
[0020]将获得的每个待运行的GPU运算程序的所述描述信息,与预先构建的各个容器镜像的GPU的相关信息进行匹配;
[0021]将匹配成功的容器镜像,确定为待运行的GPU运算程序适用的容器镜像。
[0022]优选的,所述容器镜像保存在所述物理主机中或预先设置的容器镜像服务器中;
[0023]所述分别获得每个待运行的GPU运算程序适用的容器镜像,包括:
[0024]分别从所述物理主机中保存的容器镜像中或容器镜像服务器中储存的容器镜像中获得每个待运行的GPU运算程序使用的容器镜像。
[0025]优选的,所述非GPU的硬件资源,至少包括:
[0026]CPU核心的使用数量、CPU的占用比、内存容量和磁盘容量。
[0027]优选的,所述预设的绑定粒度,包括:
[0028]物理显卡中至少一个芯片或GPU芯片中至少一个计算单元。
[0029]优选的,所述的容器镜像为利用Linux容器镜像构建指令,或者通过容器镜像构建工具构建的。
[0030]优选的,所述根据每个待运行的GHJ运算程序适用的容器镜像,为每个待运行的GHJ运算程序创建对应的容器,包括:
[0031 ]调用Linux容器构建指令或通过容器构建工具创建容器。
[0032]优选的,还包括:在运行完GPU运算程序后,保存为该GPU运算程序创建的容器,继续执行所述获得待运行的至少一个GHJ运算程序;
[0033]针对所获得的每个GPU运算程序,从已保存的容器中查找与所述再次获得的GPU运算程序相匹配的容器;
[0034]如查找到与该GPU运算程序相匹配的容器,则将该GPU运算程序提交给与其相匹配的容器,与该GPU运算程序相匹配的容器利用自身被配置的非GPU的硬件资源和绑定的GPU硬件资源,运行该GPU运算程序;
[0035]如未查找到与该GPU运算程序相匹配的容器,则获得该GPU运算程序使用的容器镜像;根据该容器镜像,创建该GPU运算程序对应的容器;为该容器配置非GPU的硬件资源;按照预设的绑定粒度为该容器绑定GHJ硬件资源;将该GPU运算程序提交给该容器;该容器利用自身被配置的非GHJ的硬件资源和绑定的GPU硬件资源,运行该GPU运算程序。
[0036]为达到上述目的,本发明实施例还提供了一种在一台物理主机上并行运行GPU运算程序的实现装置,所述装置包括:
[0037]GPU运算程序获得单元,用于获得待运行的至少一个GPU运算程序;
[0038]容器镜像获得单元,用于分别获得每个待运行的GPU运算程序适用的容器镜像;所述的容器镜像为依据所述物理主机已安装的GHJ的相关信息预先构建的;所述GPU的相关信息至少包括:已安装的各个GPU的硬件型号、每种型号GPU的驱动程序及每种型号GPU的运算框架;
[0039]容器创建单元,用于根据每个待运行的GPU运算程序适用的容器镜像,为每个待运行的GPU运算程序创建对应的容器;
[0040]非GPU的硬件资源配置单元,用于为每个容器配置非GPU的硬件资源;
[0041]GPU硬件资源绑定单元,用于按照预设的绑定粒度为每个容器绑定GPU硬件资源;
[0042]程序提交单元,用于将各个GPU运算程序提交给对应的容器;
[0043]容器运行单元,用于各个容器利用自身被配置的非GPU的硬件资源和绑定的GPU硬件资源,运行GPU运算程序。
[0044]优选的,所述GPU运算程序获得单元,具体用于:
[0045]获得存储在所述物理主机中的GPU运算程序;和/或通过网络接收GPU运算程序。
[0046]优选的,所述的GPU运算程序中包含有与GPU相关的描述信息;所述描述信息中包含:该GPU运算程序所需要的GPU的硬件型号、该GPU驱动程序及该GPU的运算框架;
[0047]所述的容器镜像获得单元包括:描述信息获得子单元、匹配子单元和确定子单元;
[0048]所述描述信息获得子单元,用于获得每个待运行的GPU运算程序中的与GPU相关的描述信息;
[0049]所述匹配子单元,用于将获得的每个待运行的GPU运算程序的所述描述信息,与预先构建的各个容器镜像的GHJ的相关信息进行匹配;
[0050]所述确定子单元,用于将匹配成功的容器镜像,确定为待运行的GPU运算程序适用的容器镜像。
[0051 ]优选的,所述容器镜像保存在所述物理主机中或预先设置的容器镜像服务器中;
[0052]所述容器镜像获得单元,具体用于:
[0053]分别从所述物理主机中保存的容器镜像中或容器镜像服务器中存储的容器镜像中获得每个待运行的GPU运算程序适用的容器镜像。
[0054]优选的,还包括:容器存储单元和容器匹配单元;
[0055]所述容器存储单元,用于在运行完GPU运算程序后,保存为该GPU运算程序创建的容器,触发所述GPU运算程序获得单元;
[0056]所述
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1