gpu算力资源调度方法、装置、设备和介质与流程-j9九游会真人

文档序号:35696977发布日期:2023-10-11 19:58阅读:1来源:国知局

gpu算力资源调度方法、装置、设备和介质
技术领域
1.本公开涉及云计算领域,特别是涉及gpu算力资源调度方法、装置、设备和介质。


背景技术:

2.在当前云计算中,为了提高计算效率,需要使用额外的算力资源,例如,gpu算力资源。如果直接将gpu算力资源与进行计算的设备进行绑定,会带来很高的计算成本。因此,在现有技术中,将多个gpu设备的算力资源进行池化,在服务器上形成资源池。用户可以根据任务需要调用资源池中的算力资源。但是,在进行资源池化时,还需要对所有gpu卡进行显存划分,这会造成算力资源的损耗。而且用户每一次使用gpu算力资源时,都需要经过服务器才能读取到算力资源存储的位置,降低了数据传输效率,在传输过程中,也会出现算力资源的损耗。


技术实现要素:

3.本公开实施例提供了gpu算力资源调度方法、装置、设备和介质,能够实现自动化调用gpu算力资源的同时,减少算力资源的损耗,提高数据传输效率。
4.根据本公开的一方面,提供了一种gpu算力资源调度方法,包括:
5.接收来自目标虚拟机的gpu算力资源请求;
6.根据所述gpu算力资源请求在多个所述gpu设备中选择目标gpu设备;
7.基于目标gpu设备,生成配置文件;
8.利用设备管理驱动加载所述配置文件,利用设备传输驱动建立所述目标虚拟机与所述目标gpu设备的直通连接;
9.利用所述设备传输驱动将所述目标gpu设备中的资源数据透传给所述目标虚拟机;
10.在所述目标虚拟机使用所述目标gpu设备中的算力资源计算结束后,修改所述配置文件,并利用所述设备管理驱动加载所述配置文件,解除所述目标虚拟机与所述目标gpu设备的直通连接。
11.根据本公开的一方面,提供了一种gpu算力资源调度装置,包括:
12.接收单元,用于接收来自目标虚拟机的gpu算力资源请求;
13.分配单元,用于根据所述gpu算力资源请求在多个所述gpu设备中选择目标gpu设备;
14.生成单元,用于基于目标gpu设备,生成配置文件;
15.直通建立单元,用于利用设备管理驱动加载所述配置文件,利用设备传输驱动建立所述目标虚拟机与所述目标gpu设备的直通连接;
16.透传单元,用于利用设备传输驱动将所述目标gpu设备中的资源数据透传给所述目标虚拟机;
17.直通解绑单元,用于在所述目标虚拟机使用所述目标gpu设备中的算力资源计算
结束后,修改所述配置文件,并利用所述设备管理驱动加载所述配置文件,解除所述目标虚拟机与所述目标gpu设备的直通连接。
18.可选地,多个所述gpu设备与所述服务器绑定;
19.所述直通建立单元还用于:
20.获取所述目标虚拟机的节点地址;
21.解除所述目标gpu设备与所述服务器的绑定;
22.利用所述设备管理驱动加载所述配置文件,利用所述设备传输驱动按照所述节点地址建立所述目标虚拟机与所述目标gpu设备的直通连接。
23.可选地,所述直通建立单元还用于:
24.获取所述目标gpu设备的总端口地址;
25.将所述总端口地址转化为第一虚拟地址;
26.获取所述目标gpu设备的功能端口地址;
27.将所述功能端口地址转换为第二虚拟地址;
28.建立所述总端口地址与所述第一虚拟地址、所述功能端口地址与所述第二虚拟地址之间的映射关系。
29.可选地,所述直通建立单元还用于:
30.基于所述第一虚拟地址与所述第二虚拟地址,利用所述设备传输驱动在所述目标虚拟机中创建一个虚拟gpu设备;
31.建立所述虚拟gpu设备与所述目标gpu设备的直通连接。
32.可选的,所述透传单元包括:
33.将所述目标gpu设备中的所述资源数据封装为资源包,对所述资源包进行加密;
34.将加密后的资源包透传给所述目标虚拟机。
35.可选地,所述直通解绑单元还用于:
36.按照预定周期检测所述目标gpu设备的算力资源使用情况;
37.如果所述目标gpu设备停止计算,在预定时间段后再次检测,如果所述目标gpu设备依旧停止计算,修改所述配置文件;
38.利用所述设备管理驱动加载所述配置文件,解除所述目标gpu设备与所述目标虚拟机之间的所述直通连接。
39.可选地,所述gpu算力资源调度装置还包括:
40.监测单元,用于实时监测所述目标gpu设备的算力资源使用情况;
41.可视化单元,用于将所述算力资源使用情况可视化呈现;
42.特征生成单元,用于基于所述算力资源使用情况生成gpu设备算力资源使用特征。
43.可选地,所述gpu算力资源调度装置还包括:
44.训练单元,用于利用所述算力资源使用特征训练目标gpu设备确定模型;
45.所述分配单元还用于:将所述gpu算力资源请求输入所述目标gpu设备确定模型,得到所述目标gpu设备。
46.根据本公开的一方面,提供了一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如上所述的gpu算力资源调度方法。
47.根据本公开的一方面,提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的gpu算力资源调度方法。
48.根据本公开的一方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,所述计算机程序被计算机设备的处理器读取并执行,使得该计算机设备执行如上所述的gpu算力资源调度方法。
49.本公开实施例中,服务器在接收到来自目标虚拟机的gpu算力资源请求后,在多个gpu设备中选择一个作为分配给目标虚拟机的目标gpu设备;生成目标gpu的配置文件,利用设备管理驱动加载配置文件,并利用建立目标虚拟机与目标gpu设备之间的直通连接。设备管理驱动用来管理目标虚拟机,并且检测目标gpu设备的使用情况,使得gpu算力资源调度过程是可监测的,以便应对突发情况进行处理。通过配置文件对目标虚拟机与目标gpu设备建立连接可以提高连接稳定性。设备传输驱动可以提高建立直通连接的效率,还可以将目标gpu设备中的资源数据透传给目标虚拟机,提高了数据传输的准确性。通过上述框架,目标虚拟机可以使用一个完整的gpu设备,gpu设备也不需要进行显存划分,保留了完整的计算性能。同时,目标虚拟机可以直接访问目标gpu设备存储的位置,不需要再经过服务器才能找到分配的gpu算力资源,提高了数据传输效率,减少了算力资源损耗。在目标虚拟机计算完成后,解除与目标gpu设备的直通连接,避免因持续绑定而导致的计算成本增高与资源浪费的问题。因此,本公开实施例实现了自动化gpu资源调度,在节省计算成本的同时,提高了gpu算力资源调度过程中的数据传输效率,减少了算力资源损耗。
50.本公开的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本公开而了解。本公开的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
51.附图用来提供对本公开技术方案的进一步理解,并且构成说明书的一部分,与本公开的实施例一起用于解释本公开的技术方案,并不构成对本公开技术方案的限制。
52.图1是本公开实施例提供的gpu算力资源调度方法的一种体系架构图;
53.图2是本公开实施例的gpu算力资源调度方法的流程图;
54.图3是图2中步骤240的一个具体流程图;
55.图4是图2中步骤240的一个具体流程图;
56.图5是图2中步骤240的一个具体流程图;
57.图6是站在目标虚拟机的角度调取gpu算力资源的示意图;
58.图7是在步骤240之后添加检测算力资源使用情况的一个具体流程图;
59.图8是本公开实施例添加了数据库处理工具与可视化服务器的体系架构图;
60.图9是图2中步骤250的一个具体流程图;
61.图10是图2中步骤260的一个具体流程图;
62.图11是本公开实施例的示例性结构示意图;
63.图12是根据本公开实施例的gpu算力资源调度装置的框图;
64.图13是根据本公开实施例图2所示的gpu算力资源调度方法的终端结构图;
65.图14是根据本公开实施例图2所示的gpu算力资源调度方法的服务器结构图。
具体实施方式
66.为了使本公开的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本公开进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本公开,并不用于限定本公开。
67.对本公开实施例进行进一步详细说明之前,对本公开实施例中涉及的名词和术语进行说明,本公开实施例中涉及的名词和术语适用于如下的解释:
68.云计算:通过网络按需提供可动态伸缩的计算服务。按照用户需求,提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络、服务器、存储、应用软件、服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。
69.graphics processing unit(gpu):gpu是一种在个人电脑、工作站、游戏机和移动设备上进行图像和图形相关运算工作的图形处理器。
70.显存:位于显卡的内存,其主要用途是存储要处理的图形信息的部件,与gpu配合进行图形处理。
71.虚拟机:通过软件模拟的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。
72.peripheral component interconnect express(pcie):是一种高速串行计算机扩展总线标准。属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽。pcie有两种存在形式m.2接口通道形式和pcie标准插槽。pcie的可拓展性强,可以支持插入多种设备,例如:显卡、无线网卡、声卡等。
73.api接口:应用程序接口。应用程序接口是一组定义、程序及协议的集合,通过api接口实现计算机软件之间的相互通信。api的一个主要功能是提供通用功能集。程序员通过调用api函数对应用程序进行开发,可以减轻编程任务。api同时也是一种中间件,为各种不同平台提供数据共享。
74.直接存储器访问(dma):用来提供外设和存储器之间,或者存储器和存储器之间的高速数据传输。无须cpu控制,数据可以通过dma传输,它通过硬件为ram与i/o设备之间开辟一条直接传送数据的通道,这节省cpu的资源,使cpu效率提高。
75.virsh:是一个由c语言编写的、用来管理虚拟机虚拟化的命令行工具,系统管理员可以通过vish命令操作虚拟机。
76.图1是根据本公开的实施例的数据库测试方法所应用的系统构架图。它包括目标虚拟机110、互联网120、服务器130、pcie140、与gpu设备141。
77.目标虚拟机110是具有调用gpu算力资源进行计算的需求的虚拟机。它包括在桌面电脑、膝上型电脑、pda(个人数字助理)、专用终端、计算机设备等多种形式中划出的虚拟机。另外,它由单台设备构成,也可以由多台设备组成的集合构成。例如,多台设备通过局域网连接,公用一台显示设备进行协同工作,共同构成一个目标虚拟机110。目标虚拟机110可以以有线或无线的方式与互联网120进行通信,交换数据。
78.服务器130是指向目标虚拟机110提供gpu资源调度服务的计算机系统。服务器130
可以是网络平台中的一台高性能计算机、多台高性能计算机的集群等。服务器130通过可以以有线或无线的方式与互联网120进行通信,交换数据。
79.pcie140是服务器130上用于插入gpu设备141的插槽。每个gpu设备141在pcie140上有一个唯一的接口地址。
80.根据本公开的一个实施例,提供了一种gpu算力资源调度方法。
81.gpu算力资源受服务器130管理,用于支持目标虚拟机110中的一项任务的计算。当目标虚拟机110发送一个gpu算力资源请求时,根据gpu算力资源请求向目标虚拟机110分配gpu算力资源。在现有的方案中,多个gpu设备141的算力资源在服务器130中形成资源池,根据gpu算力资源请求调用资源池中的算力资源。同时,还要对所有gpu设备141进行显存划分,在这个过程中,算力资源会出现损耗。不仅如此,目标虚拟机110在调用gpu数据时,一定要首先经过服务器130才可以找到分配的gpu算力资源,不仅数据传输效率低,而且也会出现算力资源损耗。本公开实施例的gpu算力资源调度方法可以提高数据传输效率,减少算力资源损耗。
82.本公开实施例提供的gpu算力资源调度方法应用于服务器130对多个gpu设备141的算力资源调度,如图2所示,该方法包括:
83.步骤210、接收来自目标虚拟机的gpu算力资源请求;
84.步骤220、根据gpu算力资源请求在多个gpu设备中选择目标gpu设备;
85.步骤230、基于目标gpu设备,生成配置文件;
86.步骤240、利用设备管理驱动加载配置文件,利用设备传输驱动建立目标虚拟机与目标gpu设备的直通连接;
87.步骤250、利用设备传输驱动将目标gpu设备中的资源数据透传给目标虚拟机;
88.步骤260、在目标虚拟机使用目标gpu设备中的算力资源计算结束后,修改配置文件,并利用设备管理驱动加载配置文件,解除目标虚拟机与目标gpu设备的直通连接。
89.为了保证本公开实施例提供的gpu算力资源调度方法可以顺利实施,在一个实施例中,在接收来自目标虚拟机110的gpu算力资源请求之前,还需要对服务器130系统进行配置,具体包括:
90.检测服务器130系统是否可以与目标虚拟机110正常连接。例如,当目标虚拟机110是虚拟机时,需要检验服务器130系统是否可以实现正常创建、启动、与连接虚拟机。检测服务器130系统是否支持i/o设备的虚拟化,以确保目标gpu设备的资源可以直接分配给目标虚拟机110。
91.启动内核参数,确保目标虚拟机110在进行内存映射时,可以快速且准确地访问服务器130中大量的连续物理内存,还可以访问到服务器130的高端内存地址。如果不启动内核参数,在一些设备需要大量的物理连续内存时,服务器130无法为其分配。同时,大多数服务器130在进行直接存储器访问时,只能指出32位的寻址,为了访问高端内存地址中的数据,需要在低端内存中为高端内存分配一个临时数据缓存,将高端内存中的数据复制到临时数据缓存,在想要访问高端内存中的数据时,需要通过临时数据缓存访问高端内存地址。临时数据缓存会额外占用许多内存,而且在进行数据复制时,会额外增加服务器130内存的负担。在启动内核参数后,在后续过程中目标虚拟机110对目标gpu设备的访问时,可以根据虚拟内存与物理内存之间的映射表,直接访问目标gpu设备在服务器130中的物理地址,无
论是低端内存地址还是高端内存地址。总的来说,启动内核参数可以提高内存地址访问效率与准确性,也可以节约内存空间,提高内存运行效率。
92.获取gpu设备141在服务器130上的总线地址。总线地址是服务器130可以直接访问gpu设备141的地址。当多个gpu设备141在服务器130上共享一块范围较大的内存空间时,获取gpu设备141的总线地址还包括:获取gpu设备141所处内存组的地址;进而获取gpu的总线地址。通过gpu设备141的总线地址可以确定寄存器中存储的gpu设备141的端口地址。
93.基于gpu设备141的端口地址确定gpu设备141的功能端口数量。功能端口数量用来表示gpu设备141中具体包含了几个功能,例如,有些gpu设备141通过usb端口可以实现与其他设备进行数据交换的功能。每个gpu设备141只有一个总线地址,但可以包含多个功能端口。各个功能端口之间不是相互独立的,全部功能端口共同配合才可以正常运行gpu设备141。因此,在后续的地址映射过程中,需要将所有功能端口地址映射过去,以保证gpu设备141可以正常运行。
94.在进行gpu算力资源调度之前,对服务器130系统进行以上配置过程,可以确保在后续进行gpu算力资源调度时,服务器130可以高效稳定的运行。
95.步骤210中,目标虚拟机110的gpu算力资源请求中包含目标虚拟机110的节点地址、发起gpu算力资源请求的时间、与目标虚拟机110中待处理事务的类型。
96.在目标虚拟机110中设置一个监测代理节点,用于根据目标虚拟机110的待处理事务生成gpu算力资源请求,并将gpu算力资源请求通过服务器130上用于接收请求的api接口发送给服务器130。当服务器130为目标虚拟机110与目标gpu设备建立直通连接后,监测代理节点可以用来监测目标gpu设备的使用情况。当目标虚拟机110使用目标gpu设备完成计算后,监测代理节点生成gpu算力资源释放请求,并将该请求通过上述用于接收请求的api接口发送给服务器130,由服务器130进行后续的解除连接操作。设置监测代理节点的优点是,可以代替目标虚拟机110对目标gpu设备进行管理,避免占用目标虚拟机110的计算空间,提高了目标虚拟机110利用目标gpu设备处理待处理事务的效率。
97.在步骤220中,服务器130在通过用于接收请求的api接收到来自目标虚拟机110的gpu算力资源请求后,从多个gpu设备141中选择一个作为目标gpu设备。
98.选择目标gpu设备主要基于gpu算力资源请求中的待处理事务。根据待处理事务的类型、与计算量等特征选择合适的gpu设备141。例如,待处理事务是对游戏中的场景界面图进行3d渲染,那么目标gpu设备需要能够支持3d渲染的运行,同时还有保证算力资源可以满足场景界面图中大量数据进行计算的需要。
99.在一个实施例中,根据gpu算力资源请求在多个gpu设备中选择目标gpu设备,包括:将gpu算力资源请求输入目标gpu设备确定模型,得到目标gpu设备。
100.目标gpu设备确定模型可以是一个机器学习模型,用于根据gpu算力资源请求的特征从多个gpu设备中确定目标gpu设备。目标gpu设备确定模型是根据历史调度中的gpu使用情况特征进行训练的,在后续步骤中将详细说明。
101.将gpu算力资源请求输入目标gpu设备确定模型中,模型会首先从gpu算力资源请求提取出多个可供模型识别的特征。例如,从gpu算力资源请求中提取出待处理请求类型、数据规模、期望精准度等。基于上述特征,目标gpu设备确定模型可以确定出适用于目标虚拟机110的gpu算力资源请求的目标gpu设备。
102.由于目标gpu设备确定模型是基于历史调度中gpu设备141的使用情况的经验训练生成的,因此,利用该模型确定目标gpu设备的优点是,使得目标gpu设备可以满足目标虚拟机110中待处理事务的处理需求,提高了确定目标gpu设备的准确性。
103.步骤230中,在确定目标gpu设备后,服务器130需要生成目标gpu设备的配置文件。
104.生成配置文件的作用是为了可以让目标虚拟机110使用目标gpu设备。因此,配置文件需要根据目标gpu设备的多项属性值生成,以保证目标虚拟机110与目标gpu设备可以正常连通。
105.用于生成配置文件的多项属性值至少包括:目标gpu设备的网域地址、目标gpu设备的总线地址、目标gpu设备的接口位置、与目标gpu设备的功能端口数量。
106.网域地址用于在进行数据传输时对目标gpu设备进行定位的定位标识。总线地址是服务器130可以直接访问gpu设备141的内存地址。接口位置是指目标gpu设备在pcie140设备中的接口编号,由于pcie140设备中有多个插槽,对应多个接口编号。接口位置指示了目标gpu设备具体插在哪个插槽中。
107.功能端口数量用来表示目标gpu设备中具体包含了几个功能。在生成配置文件时,需要确定目标gpu设备的端口数量,并将每一个端口的地址加入到配置文件中,以便目标虚拟机110可以识别目标gpu设备上的全部功能端口,保证目标gpu设备可以正常运行。
108.上述四个属性值在xml文件中可以表示为:
109.domain="0x"${result:4:4}#4bit
110.bus="0x"${result:9:2}#2bit
111.slot="0x"${result:12:2}#2bit
112.function="0x"${result:-1}#1bit
113.其中,domain是目标gpu设备的网域地址,其属性值长度为4比特;bus为目标gpu设备的总线地址,其属性值长度为2比特;slot为目标gpu设备的接口位置,其属性值长度为2比特;function为目标gpu设备的功能端口数量,其属性值长度为1比特。
114.在前述实施例的对服务器130的配置过程中,可以获取与服务器130连接的多个gpu设备141的上述属性值,因此,直接调取目标gpu的属性值,用于生成配置文件。配置文件可以是xml文件。
115.步骤240中,首先利用设备管理驱动加载配置文件。设备管理驱动用于管理与服务器130建立连接的目标虚拟机110。针对目标虚拟机110,所使用的的设备管理驱动可以是libvirt。libvirt用于对虚拟机进行管理的工具和api。下面以libvirt为例,示例性地说明本步骤。
116.libvirt可以为连接的目标虚拟机110提供api以实现在服务器130上对目标虚拟机110的操作与管理。libvirt可以被本地调用,也就是可以管理服务器130本地的虚拟机。也可以被远程调用,也就是虚拟机的运行程序与域不在本服务器130上。libvirt支持多种通用的远程协议,也就是说在目标虚拟机110与gpu设备141直通连接的过程中,libvirt可以为目标虚拟机110提供多种管理服务,例如:命令行界面管理、文件传输管理、数据加密管理等。
117.libvirt上还包含了一个守护进程,libvirtd,可以实现对目标虚拟机110进行实时监测,避免被服务器130中产生的其他信息打断。当目标虚拟机110与gpu设备141的直通
连接出现问题,通过守护进程可以及时感知错误并解决问题。其他上层管理工具,例如界面管理工具、数据管理工具等,也可以通过守护程序连接到目标虚拟机110。守护程序执行到来自其他上层管理工具的操作指令对目标虚拟机110进行操作。
118.在libvirtd中使用命令行工具virsh对目标虚拟机110进行管理,例如虚拟机的启动、关闭、重启、与迁移等,还可以收集目标虚拟机110与服务器130的配置、和资源使用情况。
119.在设备管理驱动加载配置文件时,可以通过virsh命令在于配置文件,通过运行配置文件,建立目标虚拟机110与目标gpu设备的直通连接。
120.在一个实施例中,多个gpu设备141与服务器130是直接绑定的,因此,如图3所示,利用设备管理驱动加载配置文件,利用设备传输驱动建立目标虚拟机与目标gpu设备的直通连接,包括:
121.步骤310、获取目标虚拟机的节点地址;
122.步骤320、解除目标gpu设备与服务器的绑定;
123.步骤330、利用设备管理驱动加载配置文件,利用设备传输驱动按照节点地址建立目标虚拟机与目标gpu设备的直通连接。
124.目标虚拟机110的节点地址通过目标虚拟机110的gpu算力资源请求可以直接获取。
125.通过获取的目标gpu设备的总线地址,找到目标gpu设备的总端口地址,将目标gpu设备的总端口地址与服务器130进行解除绑定。解除绑定后,目标gpu设备可以直接与目标虚拟机110建立连通关系。
126.在设备管理驱动加载配置文件时,加载目标gpu设备的网域地址、总线地址、接口位置、与功能端口数量,基于网域地址、总线地址、与接口位置获取目标gpu设备的位置,以便将目标gpu设备映射到目标虚拟机110。基于功能端口数量,依次遍历目标gpu上的功能端口,获取每个功能端口的位置,以便将所有功能端口映射到目标虚拟机110。
127.具体实现的源码如下:
[0128][0129]
在上述源码中,通过result_deal()方法加载配置文件。node是指目标虚拟机节点
地址,例如:i-0000002d。读取目标虚拟机节点地址,获取xml配置文件,通过vi rsh attch命令将目标虚拟机节点与配置文件连通在一起。
[0130]
在建立直通连接后,在配置文件中设置启动参数,用来表示目标虚拟机与目标gpu设备绑定。在后续的服务器或虚拟机重新启动后,目标虚拟机与目标gpu设备也会按照配置文件进行绑定。这提高了目标虚拟机与目标gpu设备之间直通连接的稳定性。
[0131]
本实施例的优点是,通过解除目标gpu设备与服务器130的绑定关系,防止服务器130占用目标gpu设备的算力资源,避免服务器130对目标虚拟机110访问目标gpu设备的过程产生影响。
[0132]
在一个实施例中,如图4所示,利用设备管理驱动加载配置文件,利用设备传输驱动建立目标虚拟机与目标gpu设备的直通连接,包括:
[0133]
步骤410、获取目标gpu设备的总端口地址;
[0134]
步骤420、将总端口地址转化为第一虚拟地址;
[0135]
步骤430、获取目标gpu设备的功能端口地址;
[0136]
步骤440、将功能端口地址转换为第二虚拟地址;
[0137]
步骤450、建立总端口地址与第一虚拟地址、功能端口地址与第二虚拟地址之间的映射关系。
[0138]
目标gpu设备的总端口地址是目标gpu设备用来直接与目标gpu进行数据交换的物理地址。利用内存管理单元将总端口地址转化为第一虚拟地址。功能端口地址是目标gpu设备中的功能对应的端口地址,可以用来与目标gpu中对应的功能进行数据交换。由于虚拟机无法识别物理地址,如果直接将物理地址传输给虚拟机,那么虚拟机无法存储物理地址,导致虚拟机不知道具体哪一个gpu设备141与它连通。当要进行直接存储器访问时,可能会破坏内存,也可能会访问错误的gpu设备141。因此,将总端口地址与功能端口地址通过内存管理单元转换成为目标虚拟机110可以识别的第一虚拟地址与第二虚拟地址,并建立总端口地址与第一虚拟地址、功能端口地址与第二虚拟地址之间的映射关系,使得目标虚拟机110可以根据映射关系正确且高效地访问到目标gpu设备。
[0139]
在建立直通连接时,启动目标虚拟机110对应的设备传输驱动。设备传输驱动用于将目标gpu设备与其所有的功能端口映射到目标虚拟机110上。设备传输驱动可以是vfio驱动。在一个实施例中,如图5所示,利用设备传输驱动建立目标虚拟机110与目标gpu设备的直通连接,包括:
[0140]
步骤510、基于第一虚拟地址与第二虚拟地址,利用设备传输驱动在目标虚拟机中创建一个虚拟gpu设备;
[0141]
步骤520、建立虚拟gpu设备与目标gpu设备的直通连接。
[0142]
设备传输驱动可以在目标虚拟机110上基于第一虚拟地址与第二虚拟地址创建一个虚拟gpu设备141,虚拟gpu设备141的在目标虚拟机110上的地址实际上就是第一虚拟地址,目标虚拟机110上也包括与目标虚拟机110相同的功能端口,功能端口在目标虚拟机110上的地址实际上就是第二虚拟地址。建立目标虚拟机110与目标gpu设备之间的直通连接,实际上是建立虚拟gpu设备141与目标gpu设备的直通连接。
[0143]
建立虚拟gpu设备与目标gpu设备的直通连接的过程通过以下源码实现:
[0144][0145]
在上述源码中,首先获取目标gpu设备的总线地址;通过访问总线地址获取目标gpu设备的功能端口数量;针对每一个功能端口,生成对应的xml配置。对于每一个功能端口,都需要配置domain(网域地址)、bus(总线地址)、slot(接口位置)、与function(功能端口数量)。在生成功能端口对应的xml配置后,将xml配置添加到目标gpu设备所处内存区间的xml文件(iommugroup_number.xml)中。在对功能端口进行配置后,利用设备传输驱动(vfio),将功能端口映射到目标虚拟机中,使得生成的虚拟gpu设备的每一个属性值地址与功能端口的属性值地址相同。
[0146]
目标虚拟机110在想要调取连通的目标gpu设备中的算力资源进行计算时,可以直接访问自己空间内的虚拟gpu设备141的第一虚拟地址与第二虚拟地址,根据第一虚拟地址与总端口地址、第二虚拟地址与功能端口地址之间的映射关系,可以直接访问到目标gpu设备,无需再向服务器130发送访问目标gpu设备的请求。
[0147]
在本实施例中,通过虚拟gpu设备141与目标gpu设备的直通连接,目标虚拟机110可以直接访问真实的目标gpu的硬件设备,不需要再向服务器130发送访问请求,减少了在目标虚拟机110访问目标gpu的过程中产生的资源损耗,以提高了访问效率。同时,每一个目标虚拟机110上的虚拟gpu设备141直通连接唯一一个目标gpu设备,通过虚拟gpu设备141的地址可以直接访问到目标gpu设备的物理地址,目标虚拟机110无法操作与其他虚拟机连接的gpu设备141,避免虚拟机访问错误的gpu设备141,提高了gpu算力资源调度过程中数据传
输的独立性。
[0148]
在目标虚拟机110的角度,从发起gpu算力资源请求到建立与目标gpu设备的直通连接的过程如图6所示,目标虚拟机110向服务器130上的设备管理驱动发起gpu算力资源请求;设备管理驱动获取确定好的目标gpu设备的配置文件,并加载目标gpu设备的配置文件;加载完成后,启动目标虚拟机110对应的设备传输驱动;设备传输驱动将目标gpu设备映射在目标虚拟机110上,建立目标gpu设备与目标虚拟机110的直通连接。
[0149]
在一个实施例中,如图7所示,在利用设备管理驱动加载配置文件,利用设备传输驱动建立目标虚拟机与目标gpu设备的直通连接之后,gpu算力资源调度方法还包括:
[0150]
步骤710、实时监测目标gpu设备的算力资源使用情况;
[0151]
步骤720、将算力资源使用情况可视化呈现;
[0152]
步骤730、基于算力资源使用情况生成gpu设备算力资源使用特征。
[0153]
在本实施例中,在建立目标虚拟机110与目标gpu设备的直通连接后,对目标gpu设备的算力资源使用情况进行实时监测。
[0154]
将算力资源使用情况可视化展示给后台操作人员,以便后台操作人员可以随时监测目标gpu设备。将算力资源使用情况可视化呈现可以通过web服务器。web服务器与用于gpu算力资源调度的服务器是同一台,可以使用独立的web服务器进行可视化处理。
[0155]
将算力资源使用情况利用数据库处理工具进行数据统计,并生成gpu设备141算力资源使用特征。数据库处理工具可以是mysql数据库。gpu设备141算力资源使用特征可以包括,目标gpu设备在应对目标虚拟机110上的待处理任务时的算力消耗情况、处理速度、处理准确度等维度。
[0156]
本实施例的系统构架如图8所示,服务器130用于对算力资源使用情况进行实时监测;数据库处理工具150用于将算力资源使用情况数据化处理,生成算力资源使用特征;可视化服务器160用于将算力资源使用情况可视化呈现。
[0157]
本实施例的优点是,方便后台操作人员可以实时获取目标gpu设备的算力资源使用情况,为之后的gpu算力资源调度提供更多经验数据,进而逐步提高gpu算力资源调度方法的调度准确性。
[0158]
基于本实施例中生成的gpu设备141算力资源使用特征,在一个实施例中,在基于算力资源使用情况生成gpu设备141算力资源使用特征之后,gpu算力资源调度方法还包括:利用算力资源使用特征训练目标gpu设备确定模型。在步骤220的一个实施例中,目标gpu设备确定模型用于根据gpu算力资源请求确定目标gpu设备。目标gpu设备确定模型就是通过算力资源使用特征数据进行训练的。这使得训练出的模型以实际gpu算力资源调度的经验为基础,更加贴合服务器130中gpu算力资源调度场景,提高了确定目标gpu设备的准确性。
[0159]
步骤250中,在建立目标虚拟机110与目标gpu设备的直通连接后,目标gpu设备通过直接存储器访问将资源数据透传给目标虚拟机110。透传是指在数据传输过程中,将数据原封不动地传输到目标虚拟机110,不对数据进行任何更改。使用透传的优点是,保证了数据的完整性和准确性。
[0160]
在一个实施例中,如图9所示,利用设备传输驱动将目标gpu设备中的资源数据透传给目标虚拟机,包括:
[0161]
步骤910、将目标gpu设备中的资源数据封装为资源包,对资源包进行加密;
[0162]
步骤920、将加密后的数据透传给目标虚拟机。
[0163]
在本实施例中,为了进一步保证数据传输的安全性,将资源数据进行加密传输;又为了保证在加密过程中数据不被修改,在进行加密之前,将资源数据封装为资源包,之后再对资源包进行加密。加密方式可以有多种,例如,利用哈希算法进行加密、或者对称加密等。
[0164]
在目标虚拟机110接收到加密后的资源包后,首先基于加密算法对资源包进行解密,再获取到来自目标gpu的资源数据。
[0165]
本实施例的优点是,提高了数据透传过程中的安全性。
[0166]
步骤260中,当目标虚拟机110利用目标gpu设备完成待处理事务后,目标虚拟机110向服务器130发送解绑请求,服务器130将配置文件中命令目标gpu设备与目标虚拟机110进行绑定的指令修改为命令目标gpu设备与目标虚拟机110进行解绑。配置文件修改完成后,由设备管理驱动再一次运行配置文件,就可以解除目标虚拟机110与目标gpu设备之间的直通连接。在目标gpu设备与目标虚拟机110解绑后,需要再一次与服务器130进行绑定,以便应对之后的gpu算力资源请求。
[0167]
但是,可能会出现目标虚拟机110利用目标gpu设备完成待处理事务后,没有即时向服务器130发送解绑请求,导致目标gpu设备算力资源空闲。因此,在一个实施例中,如图10所示,在目标虚拟机110使用目标gpu设备中的算力资源计算结束后,修改配置文件,并利用设备管理驱动加载配置文件,解除目标虚拟机110与目标gpu设备的直通连接,包括:
[0168]
步骤1010、按照预定周期检测目标gpu设备的算力资源使用情况;
[0169]
步骤1020、如果目标gpu设备停止计算,在预定时间段后再次检测,如果目标gpu设备依旧停止计算,修改配置文件;
[0170]
步骤1030、利用设备管理驱动加载配置文件,解除目标gpu设备与目标虚拟机之间的直通连接。
[0171]
在本实施例中,对目标gpu设备上的算力资源使用情况做周期性检测。例如,每隔1小时查看一次算力资源使用情况。如果目标gpu设备停止计算,那么表示目标gpu设备可能中断使用,或者已经结束使用。此时启动预定时间段,例如,在20分钟后再一次检测目标gpu设备的算力资源使用情况。如果在预定时间段后再次检测时发现目标gpu设备已经恢复计算,那么代表目标gpu设备仍被使用;如果发现目标gpu设备依旧停止计算,那么代表目标gpu设备很大概率已经完成了计算任务,此时,修改配置文件。
[0172]
通过设备管理确定加载修改后的配置文件,解除目标虚拟机110与目标gpu设备的直通连接。
[0173]
本实施例的优点是,避免因目标虚拟机110未主动提出解绑请求而造成gpu算力资源浪费,同时,采用两次检测确保目标gpu设备已完成计算任务,避免对目标虚拟机110中的事务处理产生影响。
[0174]
如图11所示,示例性地展示了本公开实施例的整体构架。其中服务器130根据目标虚拟机110b的gpu算力资源请求确定目标gpu设备后,由设备管理确定加载配置文件,由设备传输驱动生成虚拟gpu设备141,在虚拟gpu设备141与目标gpu设备之间建立直通连接,目标gpu设备与服务器130解绑。当目标虚拟机110b访问虚拟gpu设备141时,也就是在访问目标gpu设备。本公开实施例还应用数据库处理工具实时统计目标gpu设备的算力资源使用情况,并通过可视化服务器130将算力资源使用情况的数据可视化呈现。
[0175]
下面对本公开实施例的装置和设备进行描述。
[0176]
可以理解的是,虽然上述各个流程图中的各个步骤按照箭头的表征依次显示,但是这些步骤并不是必然按照箭头表征的顺序依次执行。除非本实施例中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时间执行完成,而是可以在不同的时间执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0177]
需要说明的是,在本技术的各个具体实施方式中,当涉及到需要根据目标虚拟机属性信息或属性信息集合等与目标虚拟机特性相关的数据进行相关处理时,都会先获得目标虚拟机的许可或者同意,而且,对这些数据的收集、使用和处理等,都会遵守相关国家和地区的相关法律法规和标准。此外,当本技术实施例需要获取目标虚拟机属性信息时,会通过弹窗或者跳转到确认页面等方式获得目标虚拟机的单独许可或者单独同意,在明确获得目标虚拟机的单独许可或者单独同意之后,再获取用于使本技术实施例能够正常运行的必要的目标虚拟机相关数据。
[0178]
图12为本公开实施例提供的gpu算力资源调度装置1200的结构图。该gpu算力资源调度装置1200包括:
[0179]
接收单元1210,用于接收来自目标虚拟机的gpu算力资源请求;
[0180]
分配单元1220,用于根据gpu算力资源请求在多个gpu设备中选择目标gpu设备;
[0181]
生成单元1230,用于基于目标gpu设备,生成配置文件;
[0182]
直通建立单元1240,用于利用设备管理驱动加载配置文件,利用设备传输驱动建立目标虚拟机与目标gpu设备的直通连接;
[0183]
透传单元1250,用于利用设备传输驱动将目标gpu设备中的资源数据透传给目标虚拟机;
[0184]
直通解绑单元1260,用于在目标虚拟机使用目标gpu设备中的算力资源计算结束后,修改配置文件,并利用设备管理驱动加载配置文件,解除目标虚拟机与目标gpu设备的直通连接。
[0185]
可选地,多个gpu设备与服务器绑定;
[0186]
直通建立单元1240还用于:
[0187]
获取目标虚拟机的节点地址;
[0188]
解除目标gpu设备与服务器的绑定;
[0189]
利用设备管理驱动加载配置文件,利用设备传输驱动按照节点地址建立目标虚拟机与目标gpu设备的直通连接。
[0190]
可选地,直通建立单元1240还用于:
[0191]
获取目标gpu设备的总端口地址;
[0192]
将总端口地址转化为第一虚拟地址;
[0193]
获取目标gpu设备的功能端口地址;
[0194]
将功能端口地址转换为第二虚拟地址;
[0195]
建立总端口地址与第一虚拟地址、功能端口地址与第二虚拟地址之间的映射关
系。
[0196]
可选地,直通建立单元1240还用于:
[0197]
基于第一虚拟地址与第二虚拟地址,利用设备传输驱动在目标虚拟机中创建一个虚拟gpu设备;
[0198]
建立虚拟gpu设备与目标gpu设备的直通连接。
[0199]
可选的,透传单元1250包括:
[0200]
将目标gpu设备中的资源数据封装为资源包,对资源包进行加密;
[0201]
将加密后的资源包透传给目标虚拟机。
[0202]
可选地,直通解绑单元1260还用于:
[0203]
按照预定周期检测目标gpu设备的算力资源使用情况;
[0204]
如果目标gpu设备停止计算,在预定时间段后再次检测,如果目标gpu设备依旧停止计算,修改配置文件;
[0205]
利用设备管理驱动加载配置文件,解除目标gpu设备与目标虚拟机之间的直通连接。
[0206]
可选地,gpu算力资源调度装置1200还包括:
[0207]
监测单元(未示出),用于实时监测目标gpu设备的算力资源使用情况;
[0208]
可视化单元(未示出),用于将算力资源使用情况可视化呈现;
[0209]
特征生成单元(未示出),用于基于算力资源使用情况生成gpu设备算力资源使用特征。
[0210]
可选地,gpu算力资源调度装置1200还包括:
[0211]
训练单元(未示出),用于利用算力资源使用特征训练目标gpu设备确定模型;
[0212]
分配单元1220还用于:将gpu算力资源请求输入目标gpu设备确定模型,得到目标gpu设备。
[0213]
参照图13,图13为实现本公开实施例的终端的部分的结构框图,该终端包括:射频(radio frequency,简称rf)电路1310、存储器1315、输入单元1330、显示单元1340、传感器1350、音频电路1360、无线保真(wireless fidelity,简称wifi)模块1370、处理器1380、以及电源1390等部件。本领域技术人员可以理解,图13示出的终端结构并不构成对手机或电脑的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0214]
rf电路1310可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1380处理;另外,将设计上行的数据发送给基站。
[0215]
存储器1315可用于存储软件程序以及模块,处理器1380通过运行存储在存储器1315的软件程序以及模块,从而执行终端的各种功能应用以及数据处理。
[0216]
输入单元1330可用于接收输入的数字或字符信息,以及产生与终端的设置以及功能控制有关的键信号输入。具体地,输入单元1330可包括触控面板1331以及其他输入装置1332。
[0217]
显示单元1340可用于显示输入的信息或提供的信息以及终端的各种菜单。显示单元1340可包括显示面板1341。
[0218]
音频电路1360、扬声器1361,传声器1362可提供音频接口。
[0219]
在本实施例中,该终端所包括的处理器1380可以执行前面实施例的gpu算力资源
调度方法。
[0220]
本公开实施例的终端包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端、飞行器等。本发明实施例可应用于各种场景,包括但不限于y云计算、人工智能等。
[0221]
图14为实施本公开实施例的服务器130的部分的结构框图。服务器130可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,简称cpu)1422(例如,一个或一个以上处理器)和存储器1432,一个或一个以上存储应用程序1442或数据1444的存储介质1430(例如一个或一个以上海量存储装置)。其中,存储器1432和存储介质1430可以是短暂存储或持久存储。存储在存储介质1430的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器130中的一系列指令操作。更进一步地,中央处理器1422可以设置为与存储介质1430通信,在服务器130上执行存储介质1430中的一系列指令操作。
[0222]
服务器130还可以包括一个或一个以上电源1426,一个或一个以上有线或无线网络接口1450,一个或一个以上输入输出接口1458,和/或,一个或一个以上操作系统1441,例如windows servertm,mac os xtm,unixtm,linuxtm,freebsdtm等等。
[0223]
服务器130中的中央处理器1422可以用于执行本公开实施例的gpu算力资源调度方法。
[0224]
本公开实施例还提供一种计算机可读存储介质,计算机可读存储介质用于存储程序代码,程序代码用于执行前述各个实施例的gpu算力资源调度方法。
[0225]
本公开实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序。计算机设备的处理器读取该计算机程序并执行,使得该计算机设备执行实现上述的gpu算力资源调度方法。
[0226]
本公开的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“包含”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或装置不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或装置固有的其它步骤或单元。
[0227]
应当理解,在本公开中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
[0228]
应了解,在本公开实施例的描述中,多个(或多项)的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。
[0229]
在本公开所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,
仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0230]
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0231]
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0232]
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器130,或者网络装置等)执行本公开各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0233]
还应了解,本公开实施例提供的各种实施方式可以任意进行组合,以实现不同的技术效果。
[0234]
以上是对本公开的实施方式的具体说明,但本公开并不局限于上述实施方式,熟悉本领域的技术人员在不违背本公开精神的条件下还可作出种种等同的变形或替换,这些等同的变形或替换均包括在本公开权利要求所限定的范围内。
当前第1页1  
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
网站地图