CN105122210B - Gpu虚拟化的实现方法及相关装置和*** - Google Patents

Gpu虚拟化的实现方法及相关装置和*** Download PDF

Info

Publication number
CN105122210B
CN105122210B CN201380071416.6A CN201380071416A CN105122210B CN 105122210 B CN105122210 B CN 105122210B CN 201380071416 A CN201380071416 A CN 201380071416A CN 105122210 B CN105122210 B CN 105122210B
Authority
CN
China
Prior art keywords
gpu
nth
mth front
nth back
mth
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201380071416.6A
Other languages
English (en)
Other versions
CN105122210A (zh
Inventor
韩伟东
刘迎冬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN105122210A publication Critical patent/CN105122210A/zh
Application granted granted Critical
Publication of CN105122210B publication Critical patent/CN105122210B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Facsimiles In General (AREA)
  • Bus Control (AREA)

Abstract

本发明实施例公开了GPU虚拟化的实现方法及相关装置和***。其中,GPU虚拟化的实现方法,应用于物理主机,物理主机包括:包括GPU的硬件层、运行在硬件层之上的宿主机Host、以及运行在Host之上的N个后端GPUDomain和M个前端VM,N个后端GPU Domain与M个前端VM之间分别具有对应的前后端服务通道,该方法包括:基于第n后端GPU Domain与第m前端VM之间的前后端服务通道,第m前端VM将GPU命令传递给第n后端GPUDomain;第n后端GPU Domain利用GPU对GPU命令进行处理,得到相应的处理结果数据;第n后端GPU Domain的操作***类型与第m前端VM的操作***类型相同。本发明实施例有利于优化GPU虚拟化***的性能。

Description

GPU虚拟化的实现方法及相关装置和***
技术领域
本发明涉及计算机技术领域,具体涉及GPU虚拟化的实现方法及相关装置和集群***。
背景技术
图形处理器(Graphics Processing Unit,GPU)一方面能够提供图形处理能力支持各种图形应用(如:工程制图、高清视频、3D游戏等),另一方面能够提供通用计算能力加速各种并行计算应用(如高性能计算等)。
随着虚拟化和云计算的发展,越来越多的数据中心和物理主机(即物理服务器)被虚拟化了,而且越来越多的业务被迁移到虚拟机上,人们希望在虚拟机上也能像物理主机上一样使用GPU来支持各种各样的GPU应用(包括图形应用和通用计算应用)。并且,在大规模虚拟化场景下,单一物理主机会部署越来越多的虚拟机(Virtual Machine,VM)。随着VM数量的增多,VM操作***类型也越趋复杂化。
目前的GPU虚拟化技术是用GPU命令重定向的方式实现的,也就是在VM里截获GPU应用调用GPU命令库的命令,然后把截获的命令转发到宿主机操作***(即Host OS),在Host OS里调用宿主机(Host)端的原生GPU命令库,利用GPU对命令进行处理。然而,一旦VM的操作***与Host OS不同,则VM上的GPU命令库与Host OS上的GPU命令库将会不同,就会导致GPU命令库转换的问题。而业界主流的Host OS是Linux,且当下对GPU虚拟化需求最迫切的桌面云场景下的虚拟机的操作***大多是Windows,而Linux和Windows上的GPU命令库存在较大不同,例如:对于3D渲染,Linux支持的是OpenGL命令库,而Windows主要支持的是Direct 3D命令库;对于视频加速,Linux支持VA API命令库,而Windows支持DXVA命令库。而这些命令库都很大,而且实现机制也不同,一旦要实现相互之间的转换比较困难,而且转换会引入额外的开销、时延甚至稳定性的问题,从而导致GPU虚拟化***的性能低下。
发明内容
本发明实施例提供GPU虚拟化的实现方法、管理GPU Domain的方法及相关装置和集群***,以避免进行不同GPU命令库之间的转换,从而保证GPU虚拟化***的性能。
本发明实施例提供以下技术方案:
第一方面,本发明实施例提供了一种图形处理器GPU虚拟化的实现方法,应用于物理主机,所述物理主机包括:包括GPU的硬件层、运行在所述硬件层之上的宿主机Host、以及运行在所述Host之上的N个后端GPU域GPU Domain和M个前端虚拟机VM,所述N个后端GPUDomain与所述M个前端VM之间分别具有对应的前后端服务通道,所述N为大于或等于1的正整数,所述M为大于或等于1的正整数,M大于或等于N,M大于或等于N,所述n为小于或等于N的正整数,所述m为小于或等于M的正整数,所述方法包括:
基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,所述第m前端VM将待传递的GPU命令传递给第n后端GPUDomain,所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同;
所述第n后端GPU Domain利用一个或多个所述GPU对传递过来的所述GPU命令进行处理,得到相应的处理结果数据。
在第一方面的第一种可能的实现方式中,所述方法还包括:
基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,所述第n后端GPU Domain将相应的所述处理结果数据传递给所述第m前端VM。
结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述物理主机还包括:运行在所述Host之上的宿主机操作***Host OS,所述方法还包括:
所述Host OS建立所述N个后端GPU Domain与所述M个前端VM之间的前后端服务通道,其中所述N个后端GPU Domain与所述M个前端VM之间的前后端服务通道包括:所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述Host OS建立所述N个后端GPU Domain与所述M个前端VM之间的前后端服务通道,包括:
当所述M个前端VM中第m前端VM被启动时,所述Host OS根据所述启动的第m前端VM的操作***类型,确定具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;
所述Host OS基于所述第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述方法还包括:
所述Host OS根据配置的GPU Domain创建策略,创建N个后端GPU Domain,其中所述N个后端GPU Domain具有多种类型的操作***,所述GPU Domain创建策略包括:GPUDomain的个数、直通给GPU Domain的GPU个数、GPU Domain的操作***类型中的一个或多个;
所述当所述M个前端VM中第m前端VM被启动时,所述Host OS根据所述启动的第m前端VM的操作***类型,确定具有对应类型的操作***的第n后端GPU Domain,包括:当所述M个前端VM中第m前端VM被启动时,所述Host OS根据所述启动的第m前端VM的操作***类型,从所述创建的N个后端GPU Domain中选择具有对应类型的操作***的第n后端GPU Domain。
结合第一方面的第三种可能的实现方式,在第一方面的第五种可能的实现方式中,所述当所述M个前端VM中第m前端VM被启动时,所述Host OS根据所述启动的第m前端VM的操作***类型,确定具有对应类型的操作***的第n后端GPU Domain,包括:当所述M个前端VM中第m前端VM被启动时,所述Host OS根据所述启动的第m前端VM的操作***类型,创建具有对应类型的操作***的第n后端GPU Domain。
结合第一方面的第三至第五种中任一种可能的实现方式,在第一方面的第六种可能的实现方式中,如果所述通信信息为共享内存设备标识,则所述第m前端VM与第n后端GPUDomain之间建立前后端服务通道,包括:
基于所述第m前端VM的共享内存设备标识和第n后端GPU Domain的共享内存设备标识,进行第m前端VM与第n后端GPU Domain之间的事件通道的绑定。
结合第一方面的第六种可能的实现方式,在第一方面的第七种可能的实现方式中,所述基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,所述第m前端VM将待传递的GPU命令传递给第n后端GPUDomain,包括:
所述第m前端VM将待传递的GPU命令写入所述第m前端VM与第n后端GPU Domain之间的共享内存;
所述第m前端VM通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道向所述第n后端GPU Domain发送第m前端事件通知,所述第m前端事件通知用于表示待传递的GPU命令在所述共享内存中的位置信息;
所述第n后端GPU Domain利用一个或多个所述GPU对所述GPU命令进行处理,得到相应的处理结果数据,包括:
所述第n后端GPU Domain根据收到的所述第m前端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述GPU命令;
所述第n后端GPU Domain利用直通给第n后端GPU Domain的一个或多个GPU对读取出的所述GPU命令进行处理,得到相应的处理结果数据。
结合第一方面的第七种可能的实现方式,在第一方面的第八种可能的实现方式中,所述方法还包括:
所述第n后端GPU Domain通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道向所述第m前端VM发送第n后端事件通知,所述第n后端事件通知用于表示数据读取完成;
所述第m前端VM根据收到的所述第n后端事件通知释放已被所述第n后端GPUDomain读取的数据所占用的内存空间。
结合第一方面的第六或第七种可能的实现方式,在第一方面的第九种可能的实现方式中,所述基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,所述第n后端GPU Domain将所述相应的处理结果数据传递给所述第m前端VM,包括:
所述第n后端GPU Domain将待传递的所述处理结果数据写入所述第m前端VM与第n后端GPU Domain之间的共享内存;
所述第n后端GPU Domain通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道,向所述第m前端VM发送第n后端事件通知,所述第n后端事件通知用于表示待传递的所述处理结果数据在所述共享内存中的位置信息;
所述第m前端VM根据收到的所述后端事件通知从所述第m前端VM与第n后端GPUDomain之间的共享内存的相应地址空间中读取出所述处理结果数据。
结合第一方面的第九种可能的实现方式,在第一方面的第十种可能的实现方式中,所述方法还包括:
所述第m前端VM通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道,向所述第n后端GPU Domain发送第m前端事件通知,所述第m前端事件通知用于表示数据读取完成;
所述第n后端GPU Domain根据收到的所述第m前端事件通知释放已被所述第m前端VM读取的数据所占用的内存空间。
结合第一方面的第七或第九种可能的实现方式,在第一方面的第十一种可能的实现方式中,所述第m前端VM与第n后端GPU Domain之间的共享内存包括:前向后传输共享内存和后向前传输共享内存,
所述第m前端VM将待传递的GPU命令写入所述第m前端VM与第n后端GPU Domain之间的共享内存包括:所述第m前端VM将待传递的GPU命令写入前向后传输共享内存,其中所述第m前端VM对所述前向后传输共享内存具有读写权限,所述第n后端GPU Domain对所述前向后传输共享内存具有只读权限;
相应的,所述第n后端GPU Domain根据收到的所述第m前端事件通知从所述共享内存的相应地址空间中读取出所述GPU命令包括:所述第n后端GPU Domain根据收到的所述第m前端事件通知从所述前向后传输共享内存的相应地址空间中读取出所述GPU命令,所述第m前端事件通知用于表示待传递的GPU命令在所述前向后传输共享内存中的位置信息;
或者,
所述第n后端GPU Domain将待传递的所述处理结果数据写入所述第m前端VM与第n后端GPU Domain之间的共享内存包括:所述第n后端GPU Domain将待传递的所述处理结果数据写入后向前传输共享内存,其中所述第n后端GPU Domain对所述后向前传输共享内存具有读写权限,所述第m前端VM对所述后向前传输共享内存具有只读权限;
相应的,所述第m前端VM根据收到的所述后端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述处理结果数据包括:所述第m前端VM根据收到的所述后端事件通知从所述后向前传输共享内存的相应地址空间中读取出所述处理结果数据,所述第n后端事件通知用于表示待传递的所述处理结果数据在所述后向前传输共享内存中的位置信息。
结合第一方面的第三至第五种中任一种可能的实现方式,在第一方面的第十二种可能的实现方式中,如果所述通信信息为网络地址信息,则所述第m前端VM与第n后端GPUDomain之间建立前后端服务通道,包括:
基于所述第m前端VM的网络地址信息和第n后端GPU Domain的网络地址信息,建立第m前端VM与第n后端GPU Domain之间的网络连接。
结合第一方面的第十二种可能的实现方式,在第一方面的第十三种可能的实现方式中,所述基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,所述第m前端VM将待传递的GPU命令传递给第n后端GPUDomain,包括:
通过第m前端VM与第n后端GPU Domain之间的网络连接,所述第m前端VM向第n后端GPU Domain发送待传递的GPU命令。
结合第一方面的第十二或第十三种可能的实现方式,在第一方面的第十四种可能的实现方式中,所述基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,所述第n后端GPU Domain将所述相应的处理结果数据传递给所述第m前端VM,包括:
通过第m前端VM与第n后端GPU Domain之间的网络连接,所述第n后端GPU Domain向第m前端VM发送待传递的所述处理结果数据。
结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第十五种可能的实现方式中,所述方法还包括:根据GPU命令的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述GPU命令进行压缩;
所述第m前端VM将待传递的GPU命令传递给第n后端GPU Domain,包括:所述第m前端VM将待传递的GPU命令进行压缩,并将压缩后的GPU命令传递给第n后端GPU Domain;
所述方法还包括:所述第n后端GPU Domain判断出传递过来的GPU命令被压缩过;
所述第n后端GPU Domain利用一个或多个所述GPU对所述GPU命令进行处理,得到相应的处理结果数据,包括:所述第n后端GPU Domain对压缩后的GPU命令进行解压,并利用直通给所述第n后端GPU Domain的一个或多个GPU对解压后的GPU命令进行处理,得到相应的处理结果数据;
结合第一方面的第十五种可能的实现方式,在第一方面的第十六种可能的实现方式中,所述方法还包括:
根据所述处理结果数据的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述处理结果数据进行压缩;
所述第n后端GPU Domain将所述处理结果数据传递给所述第m前端VM,包括:所述第n后端GPU Domain将所述处理结果数据进行压缩,并将压缩后的处理结果数据传递给所述第m前端VM。
结合第一方面的第十六种可能的实现方式,在第一方面的第十七种可能的实现方式中,所述根据GPU命令或处理结果数据的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述GPU命令或处理结果数据进行压缩,包括:
当GPU命令的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间时,判断出对所述GPU命令进行压缩;或者,
当GPU命令的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间与调节值的和值时,判断出对所述GPU命令进行压缩;或者,
当处理结果数据的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间时,判断出对所述处理结果数据进行压缩;或者,
当处理结果数据的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间与调节值的和值时,判断出对所述处理结果数据进行压缩。
第二方面,本发明实施例提供了一种管理GPU Domain的方法,包括:
当第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,确定具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;
基于所述第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
在第二方面的第一种可能的实现方式中,所述方法还包括:
根据配置的GPU Domain创建策略,创建N个后端GPU Domain,其中所述N个后端GPUDomain具有多种类型的操作***,所述GPU Domain创建策略包括:GPU Domain的个数、直通给GPU Domain的GPU个数、GPU Domain的操作***类型中的一个或多个;
所述当第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,确定具有对应类型的操作***的第n后端GPU Domain,包括:当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,从所述N个后端GPU Domain中选择具有对应类型的操作***的第n后端GPU Domain。
在第二方面的第二种可能的实现方式中,所述当第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,确定具有对应类型的操作***的第n后端GPU Domain,包括:
当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,创建具有对应类型的操作***的第n后端GPU Domain。
结合第二方面或第二方面的第一或第二种可能的实现方式中,在第二方面的第三种可能的实现方式中,如果所述通信信息为共享内存设备标识,则所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道,包括:
基于第m前端VM的通信信息和第n后端GPU Domain的通信信息,进行所述第m前端VM与第n后端GPU Domain之间的事件通道的绑定。
结合第二方面或第二方面的第一或第二种可能的实现方式中,在第二方面的第四种可能的实现方式中,如果所述通信信息为网络地址信息,则所述第m前端VM与第n后端GPUDomain之间建立前后端服务通道,包括:
基于所述第m前端VM的网络地址信息和第n后端GPU Domain的网络地址信息,建立第m前端VM与第n后端GPU Domain之间的网络连接。
第三方面,本发明实施例提供了一种物理主机,所述物理主机包括:包括GPU的硬件层、运行在所述硬件层之上的宿主机Host、以及运行在所述Host之上的N个后端GPUDomain和M个前端虚拟机VM,所述N个后端GPU Domain与所述M个前端VM之间分别具有对应的前后端服务通道,所述N为大于或等于1的正整数,所述M为大于或等于1的正整数,M大于或等于N,所述n为小于或等于N的正整数,所述m为小于或等于M的正整数,
所述第m前端VM用于:基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将待传递的GPU命令传递给第n后端GPU Domain,所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同;
所述第n后端GPU Domain用于:利用一个或多个所述GPU对传递过来的GPU命令进行处理,得到相应的处理结果数据。
在第三方面的第一种可能的实现方式中,所述第n后端GPU Domain还用于:基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将相应的所述处理结果数据传递给所述第m前端VM。
结合第三方面或第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述物理主机还包括:运行在所述Host之上的宿主机操作***Host OS,
所述Host OS用于:建立所述N个后端GPU Domain与所述M个前端VM之间的前后端服务通道,其中所述N个后端GPU Domain与所述M个前端VM之间的前后端服务通道包括:所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道。
结合第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,所述Host OS具体用于:
当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,确定具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;
基于所述第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
结合第三方面的第三种可能的实现方式,在第三方面的第四种可能的实现方式中,所述Host OS具体用于:
根据配置的GPU Domain创建策略,创建N个后端GPU Domain,其中所述N个后端GPUDomain具有多种类型的操作***,所述GPU Domain创建策略包括:GPU Domain的个数、直通给GPU Domain的GPU个数、GPU Domain的操作***类型中的一个或多个;
当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,从所述N个后端GPU Domain中选择具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;
基于所述第m前端VM与所述第n后端GPU Domain的关联关系,将对应的第n后端GPUDomain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
结合第三方面的第三种可能的实现方式,在第三方面的第五种可能的实现方式中,所述Host OS具体用于:
当所述M个前端VM中第m前端VM被启动时,所述Host OS根据所述启动的第m前端VM的操作***类型,创建具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;
基于所述第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
结合第三方面的第三至第五种中任一种可能的实现方式,在第三方面的第六种可能的实现方式中,如果所述通信信息为共享内存设备标识,在所述第m前端VM与第n后端GPUDomain之间建立前后端服务通道的方面,
所述第m前端VM具体用于:基于所述第m前端VM的共享内存设备标识和第n后端GPUDomain的共享内存设备标识,发起所述第m前端VM与第n后端GPU Domain之间的事件通道的绑定;
或者,所述第n后端GPU Domain具体用于:基于所述第m前端VM的共享内存设备标识和第n后端GPU Domain的共享内存设备标识,发起所述第m前端VM与第n后端GPU Domain之间的事件通道的绑定。
结合第三方面的第六种可能的实现方式,在第三方面的第七种可能的实现方式中,在基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将待传递的GPU命令传递给第n后端GPU Domain的方面,
所述第m前端VM具体用于:将待传递的GPU命令写入所述第m前端VM与第n后端GPUDomain之间的共享内存;
通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道向所述第n后端GPU Domain发送第m前端事件通知,所述第m前端事件通知用于表示待传递的GPU命令在所述共享内存中的位置信息;
在利用一个或多个所述GPU对传递过来的所述GPU命令进行处理,得到相应的处理结果数据的方面,所述第n后端GPU Domain具体用于:根据收到的所述第m前端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述GPU命令;利用直通给所述第n后端GPU Domain的一个或多个所述GPU对读取出的所述GPU命令进行处理,得到相应的处理结果数据。
结合第三方面的第七种可能的实现方式,在第三方面的第八种可能的实现方式中,所述第n后端GPU Domain还用于:通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道向所述第m前端VM发送第n后端事件通知,所述第n后端事件通知用于表示数据读取完成;
所述第m前端VM还用于:根据收到的所述第n后端事件通知释放已被所述第n后端GPU Domain读取的数据所占用的内存空间。
结合第三方面的第六或第七种可能的实现方式,在第三方面的第九种可能的实现方式中,在所述基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将所述相应的处理结果数据传递给所述第m前端VM的方面,所述第n后端GPU Domain具体用于:将待传递的所述处理结果数据写入所述第m前端VM与第n后端GPU Domain之间的共享内存;通过所述第m前端VM与第n后端GPU Domain之间相互绑定的事件通道向所述第m前端VM发送第n后端事件通知,所述第n后端事件通知用于表示待传递的所述处理结果数据在所述第m前端VM与第n后端GPU Domain之间的共享内存中的位置信息;
所述第m前端VM还用于:根据收到的所述第n后端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述处理结果数据。
结合第三方面的第九种可能的实现方式,在第三方面的第十种可能的实现方式中,所述第m前端VM还用于:通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道向所述第n后端GPU Domain发送第m前端事件通知,所述第m前端事件通知用于表示数据读取完成;
所述第n后端GPU Domain还用于:根据收到的所述第m前端事件通知释放已被所述第m前端VM读取的数据所占用的内存空间。
结合第三方面的第七或第九种可能的实现方式,在第三方面的第十一种可能的实现方式中,所述第m前端VM与第n后端GPU Domain之间的共享内存包括前向后传输共享内存和后向前传输共享内存,
在所述第m前端VM将待传递的GPU命令写入所述第m前端VM与第n后端GPU Domain之间的共享内存的方面,所述第m前端VM具体用于:将待传递的GPU命令写入前向后传输共享内存,其中所述第m前端VM对所述前向后传输共享内存具有读写权限,所述第n后端GPUDomain对所述前向后传输共享内存具有只读权限;
相应的,在根据收到的所述第m前端事件通知从所述第m前端VM与第n后端GPUDomain之间的共享内存的相应地址空间中读取出所述GPU命令的方面,所述第n后端GPUDomain具体用于:根据收到的所述第m前端事件通知从所述前向后传输共享内存的相应地址空间中读取出所述GPU命令,所述第m前端事件通知用于表示待传递的GPU命令在所述前向后传输共享内存中的位置信息;
或者,
在将待传递的所述处理结果数据写入所述第m前端VM与第n后端GPU Domain之间的共享内存的方面,所述第n后端GPU Domain具体用于:将待传递的所述处理结果数据写入后向前传输共享内存,其中所述第n后端GPU Domain对所述后向前传输共享内存具有读写权限,所述第m前端VM对所述后向前传输共享内存具有只读权限;
相应的,在根据收到的所述第n后端事件通知从所述第m前端VM与第n后端GPUDomain之间的共享内存的相应地址空间中读取出所述处理结果数据的方面,所述第m前端VM具体用于:根据收到的所述第n后端事件通知从所述后向前传输共享内存的相应地址空间中读取出所述处理结果数据,所述第n后端事件通知用于表示待传递的所述处理结果数据在所述后向前传输共享内存中的位置信息。
结合第三方面的第四至第六中任一种可能的实现方式,在第三方面的第十二种可能的实现方式中,如果所述通信信息为网络地址信息,在所述第m前端VM与第n后端GPUDomain之间建立前后端服务通道的方面,
所述第m前端VM具体用于基于所述第m前端VM的网络地址信息和第n后端GPUDomain的网络地址信息,建立第m前端VM与第n后端GPU Domain之间的网络连接;
或者,第n后端GPU Domain具体用于基于所述第m前端VM的网络地址信息和第n后端GPU Domain的网络地址信息,建立第m前端VM与第n后端GPU Domain之间的网络连接。
结合第三方面的第十二种可能的实现方式,在第三方面的第十三种可能的实现方式中,在基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将待传递的GPU命令传递给第n后端GPU Domain的方面,所述第m前端VM具体用于:通过第m前端VM与第n后端GPU Domain之间的网络连接,向第n后端GPUDomain发送待传递的GPU命令。
结合第三方面的第十二或十三种可能的实现方式,在第三方面的第十四种可能的实现方式中,在所述基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将所述相应的处理结果数据传递给所述第m前端VM的方面,所述第n后端GPU Domain具体用于:通过第m前端VM与第n后端GPU Domain之间的网络连接,向第m前端VM发送待传递的所述处理结果数据。
结合第三方面或第三方面的第一种可能的实现方式,在第三方面的第十五种可能的实现方式中,所述第m前端VM还用于:根据GPU命令的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述GPU命令进行压缩;
在将待传递的GPU命令传递给第n后端GPU Domain的方面,所述第m前端VM具体用于:将待传递的GPU命令进行压缩,并将压缩后的GPU命令传递给第n后端GPU Domain;
所述第n后端GPU Domain还用于:判断出传递过来的GPU命令被压缩过;
在利用一个或多个所述GPU对所述GPU命令进行处理,得到相应的处理结果数据的方面,所述第n后端GPU Domain具体用于:对压缩后的GPU命令进行解压,并利用直通给第n后端GPU Domain的一个或多个所述GPU对解压后的GPU命令进行处理,得到相应的处理结果数据。
结合第三方面的第十五种可能的实现方式,在第三方面的第十六种可能的实现方式中,所述第n后端GPU Domain还用于:根据所述处理结果数据的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述处理结果数据进行压缩;
在将所述处理结果数据传递给所述第m前端VM的方面,所述第n后端GPU Domain具体用于:将所述处理结果数据进行压缩,并将压缩后的处理结果数据传递给所述第m前端VM。
结合第三方面的第十五或第十六种可能的实现方式,在第三方面的第十七种可能的实现方式中,在所述根据GPU命令的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述GPU命令进行压缩的方面,所述第m前端VM具体用于:当GPU命令的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间时,判断出对所述GPU命令进行压缩;或者,当GPU命令的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间与调节值的和值时,判断出对所述GPU命令进行压缩;
或者,
在所述根据处理结果数据的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述处理结果数据进行压缩的方面,所述第n后端GPU Domain具体用于:当处理结果数据的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间时,判断出对所述处理结果数据进行压缩;或者,当处理结果数据的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间与调节值的和值时,判断出对所述处理结果数据进行压缩。
第四方面,本发明实施例提供了一种GPU Domain的管理装置,包括:
GPU Domain管理模块,用于当第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,确定具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;
虚拟机间通信IVC管理模块,用于基于所述第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
在第四方面的第一种可能的实现方式中,所述GPU Domain管理模块具体用于根据配置的GPU Domain创建策略,创建N个后端GPU Domain,其中所述N个后端GPU Domain具有多种类型的操作***,所述GPU Domain创建策略包括:GPU Domain的个数、直通给GPUDomain的GPU个数、GPU Domain的操作***类型中的一个或多个;以及,当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,从所述创建的N个后端GPU Domain中选择具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系。
在第四方面的第二种可能的实现方式中,所述GPU Domain管理模块具体用于当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,创建具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPUDomain之间具有关联关系。
结合第四方面或第一方面的第一或第二种可能的实现方式,在第四方面的第三种可能的实现方式中,所述通信信息为共享内存设备标识,
所述虚拟机间通信IVC管理模块具体用于基于所述第m前端VM与所述第n后端GPUDomain的关联关系,将对应的第n后端GPU Domain的共享内存设备标识传递给所述第m前端VM,将对应的第m前端VM的共享内存设备标识传递给所述第n后端GPU Domain,使得基于第n后端GPU Domain的共享内存设备标识和第m前端VM的共享内存设备标识,所述第m前端VM与第n后端GPU Domain之间进行事件通道的绑定。
结合第四方面或第四方面的第一或第二种可能的实现方式,在第四方面的第四种可能的实现方式中,所述通信信息为网络地址信息,
所述虚拟机间通信IVC管理模块具体用于基于所述第m前端VM与所述第n后端GPUDomain的关联关系,将对应的第n后端GPU Domain的网络地址信息传递给所述第m前端VM,将对应的第m前端VM的网络地址信息传递给所述第n后端GPU Domain,使得基于第n后端GPUDomain的网络地址信息和第m前端VM的网络地址信息,第m前端VM与第n后端GPU Domain之间进行网络连接的建立。
第五方面,本发明实施例提供了一种集群***,包括:上述所述的物理主机。
在第五方面的第一种可能的实现方式中,还包括与所述物理主机上的前端虚拟机具有通信连接的客户端设备,所述客户端设备用于对对应的前端虚拟机传递过来的数据进行显示。
第六方面,本发明实施例提供了一种图形处理器GPU虚拟化的实现方法,所述方法包括:基于物理主机中的N个后端图形处理器域GPU Domain中的第n后端GPU Domain与所述物理主机中的M个前端虚拟机VM中的第m前端VM之间的前后端服务通道,将所述第m前端VM待传递的GPU命令传递给第n后端GPU Domain,所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同,所述N为大于或等于1的正整数,所述M为大于或等于1的正整数,M大于或等于N,所述n为小于或等于N的正整数,所述m为小于或等于M的正整数;
利用物理主机中的一个或多个GPU对所述第n后端GPU Domain得到的GPU命令进行处理,得到相应的处理结果数据。
在第六方面的第一种可能的实现方式中,所述方法还包括:
基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将相应的所述处理结果数据从所述第n后端GPU Domain传递给所述第m前端VM。
结合第六方面或第六方面的第一种可能的实现方式,在第六方面的第二种可能的实现方式中,所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道是通过如下方法建立的:
当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,确定具有对应类型的操作***的第n后端GPU Domain,其中第m前端VM与所述第n后端GPU Domain之间具有关联关系;
基于所述第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
结合第六方面第一种可能的实现方式,在第六方面的第三种可能的实现方式中,所述方法还包括:
根据配置的GPU Domain创建策略,创建N个后端GPU Domain,其中所述N个后端GPUDomain具有多种类型的操作***,所述GPU Domain创建策略包括:GPU Domain的个数、直通给GPU Domain的GPU个数、GPU Domain的操作***类型中的一个或多个;
所述当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,确定具有对应类型的操作***的第n后端GPU Domain,包括:当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,从所述创建的N个后端GPU Domain中选择具有对应类型的操作***的第n后端GPU Domain。
结合第六方面第二种可能的实现方式,在第六方面的第四种可能的实现方式中,所述当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,确定具有对应类型的操作***的第n后端GPU Domain,包括:当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,创建具有对应类型的操作***的第n后端GPU Domain。
结合第六方面第二至第四种中任一种可能的实现方式,在第六方面的第五种可能的实现方式中,如果所述通信信息为共享内存设备标识,则所述第m前端VM与第n后端GPUDomain之间建立前后端服务通道,包括:
基于所述第m前端VM的共享内存设备标识和第n后端GPU Domain的共享内存设备标识,进行第m前端VM与第n后端GPU Domain之间的事件通道的绑定。结合第六方面的第五种可能的实现方式,在第六方面的第六种可能的实现方式中,所述基于所述N个后端GPUDomain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将所述第m前端VM待传递的GPU命令传递给第n后端GPU Domain,包括:
将所述第m前端VM待传递的GPU命令写入所述第m前端VM与第n后端GPU Domain之间的共享内存;
通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道将所述第m前端VM的第m前端事件通知向所述第n后端GPU Domain发送,所述第m前端事件通知用于表示待传递的GPU命令在所述共享内存中的位置信息;
所述利用物理主机中的一个或多个GPU对所述第n后端GPU Domain得到的GPU命令进行处理,得到相应的处理结果数据,包括:
根据所述第n后端GPU Domain收到的所述第m前端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述GPU命令;
利用物理主机中直通给第n后端GPU Domain的一个或多个GPU对读取出的所述GPU命令进行处理,得到相应的处理结果数据。
结合第六方面的第六种可能的实现方式,在第六方面的第七种可能的实现方式中,所述方法还包括:
通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道将所述第n后端GPU Domain的第n后端事件通知向所述第m前端VM发送,所述第n后端事件通知用于表示数据读取完成;
根据所述第m前端VM收到的所述第n后端事件通知释放已被所述第n后端GPUDomain读取的数据所占用的内存空间。
结合第六方面的第五或第六种可能的实现方式,在第六方面的第八种可能的实现方式中,所述基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将所述相应的处理结果数据从所述第n后端GPU Domain传递给所述第m前端VM,包括:
将所述第n后端GPU Domain待传递的所述处理结果数据写入所述第m前端VM与第n后端GPU Domain之间的共享内存;
通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道,将所述第n后端GPU Domain的第n后端事件通知向所述第m前端VM发送,所述第n后端事件通知用于表示待传递的所述处理结果数据在所述共享内存中的位置信息;
根据所述第m前端VM收到的所述第n后端事件通知从所述第m前端VM与第n后端GPUDomain之间的共享内存的相应地址空间中读取出所述处理结果数据。
结合第六方面的第八种可能的实现方式,在第六方面的第九种可能的实现方式中,所述方法还包括:
通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道,将所述第m前端VM的第m前端事件通知向所述第n后端GPU Domain发送,所述第m前端事件通知用于表示数据读取完成;
根据所述第n后端GPU Domain收到的所述第m前端事件通知释放已被所述第m前端VM读取的数据所占用的内存空间。
结合第六方面的第六或第八种可能的实现方式,在第六方面的第十种可能的实现方式中,所述第m前端VM与第n后端GPU Domain之间的共享内存包括:前向后传输共享内存和后向前传输共享内存,
所述将所述第m前端VM待传递的GPU命令写入所述第m前端VM与第n后端GPUDomain之间的共享内存包括:将所述第m前端VM待传递的GPU命令写入前向后传输共享内存,其中所述第m前端VM对所述前向后传输共享内存具有读写权限,所述第n后端GPUDomain对所述前向后传输共享内存具有只读权限;
相应的,所述根据所述第n后端GPU Domain收到的所述第m前端事件通知从所述共享内存的相应地址空间中读取出所述GPU命令包括:根据所述第n后端GPU Domain收到的所述第m前端事件通知从所述前向后传输共享内存的相应地址空间中读取出所述GPU命令,所述第m前端事件通知用于表示待传递的GPU命令在所述前向后传输共享内存中的位置信息;
或者,
所述将所述第n后端GPU Domain待传递的所述处理结果数据写入所述第m前端VM与第n后端GPU Domain之间的共享内存包括:将所述第n后端GPU Domain待传递的所述处理结果数据写入后向前传输共享内存,其中所述第n后端GPU Domain对所述后向前传输共享内存具有读写权限,所述第m前端VM对所述后向前传输共享内存具有只读权限;
相应的,所述根据所述第m前端VM收到的所述第n后端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述处理结果数据包括:根据所述第m前端VM收到的所述第n后端事件通知从所述后向前传输共享内存的相应地址空间中读取出所述处理结果数据,所述第n后端事件通知用于表示待传递的所述处理结果数据在所述后向前传输共享内存中的位置信息。
结合第六方面的第二至第四中任一种可能的实现方式,在第六方面的第十一种可能的实现方式中,如果所述通信信息为网络地址信息,则所述第m前端VM与第n后端GPUDomain之间建立前后端服务通道,包括:
基于所述第m前端VM的网络地址信息和第n后端GPU Domain的网络地址信息,建立第m前端VM与第n后端GPU Domain之间的网络连接。
结合第六方面的第十一种可能的实现方式,在第六方面的第十二种可能的实现方式中,所述基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将所述第m前端VM待传递的GPU命令传递给第n后端GPUDomain,包括:
通过第m前端VM与第n后端GPU Domain之间的网络连接,向第n后端GPU Domain发送所述第m前端VM待传递的GPU命令。
结合第六方面的第十一或第十二种可能的实现方式,在第六方面的第十三种可能的实现方式中,所述基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将所述相应的处理结果数据从所述第n后端GPUDomain传递给所述第m前端VM,包括:
通过第m前端VM与第n后端GPU Domain之间的网络连接,向第m前端VM发送所述第n后端GPU Domain待传递的所述处理结果数据。
结合第六方面或第六方面的第一种可能的实现方式,在第六方面的第十四种可能的实现方式中,所述方法还包括:根据GPU命令的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述GPU命令进行压缩;
将所述第m前端VM待传递的GPU命令传递给第n后端GPU Domain,包括:将所述第m前端VM待传递的GPU命令进行压缩,并将压缩后的GPU命令传递给第n后端GPU Domain;
所述方法还包括:判断出传递给所述第n后端GPU Domain的GPU命令被压缩过;
所述利用物理主机中的一个或多个GPU对所述传递给第n后端GPU Domain的GPU命令进行处理,得到相应的处理结果数据,包括:对传递给所述第n后端GPU Domain的压缩后的GPU命令进行解压,并利用所述物理主机中直通给所述第n后端GPU Domain的一个或多个GPU对解压后的GPU命令进行处理,得到相应的处理结果数据;
结合第六方面的第十四种可能的实现方式,在第六方面的第十五种可能的实现方式中,所述方法还包括:
根据所述处理结果数据的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述处理结果数据进行压缩;
将所述第n后端GPU Domain待传递的所述处理结果数据传递给所述第m前端VM,包括:将所述第n后端GPU Domain待传递的所述处理结果数据进行压缩,并将压缩后的处理结果数据传递给所述第m前端VM。
第七方面,本发明实施例提供了一种物理主机,所述物理主机包括:图形处理器GPU、存储器以及与所述存储器连接的中央处理器CPU,其中:
通过调用所述存储器存储的操作指令,所述中央处理器用于基于N个后端GPUDomain中的第n后端GPU Domain与M个前端VM中的第m前端VM之间的前后端服务通道,将所述第m前端VM待传递的GPU命令传递给第n后端GPU Domain;并利用一个或多个所述图形处理器对所述第n后端GPU Domain得到的所述GPU命令进行处理,得到相应的处理结果数据;
其中,所述N个后端GPU Domain中的第n后端GPU Domain的操作***类型与所述M个前端VM中的第m前端VM的操作***类型相同,所述N为大于或等于1的正整数,所述M为大于或等于1的正整数,M大于或等于N,所述n为小于或等于N的正整数,所述m为小于或等于M的正整数。
在第七方面的第一种可能的实现方式中,所述中央处理器还用于基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将相应的所述处理结果数据从所述第n后端GPU Domain传递给所述第m前端VM。
结合第七方面或第七方面的第一种可能的实现方式,在第七方面的第二种可能的实现方式中,所述中央处理器还用于当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,确定具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;基于所述第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
由上可见,本发明实施例中的物理主机,包括GPU的硬件层、运行在所述硬件层之上的宿主机Host、以及运行在所述Host之上的N个后端GPU Domain和M个前端虚拟机VM,所述N个后端GPU Domain与所述M个前端VM之间分别具有对应的前后端服务通道,所述第m前端VM用于基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将待传递的GPU命令传递给第n后端GPU Domain;所述第n后端GPU Domain用于利用一个或多个所述GPU对所述GPU命令进行处理,得到相应的处理结果数据;可见,本发明实施例通过引入专门的N个后端GPU Domain为M个前端VM提供GPU虚拟化能力与服务,在N个后端GPU Domain为M个前端VM提供GPU虚拟化能力与服务的前提下,N个后端GPU Domain的操作***类型是可以根据M个前端VM的操作***类型灵活配置的,例如可以是一个后端GPU Domain对应服务于一个或多个同类型OS的前端VM,也可以是不同类型OS的后端GPU Domain分别服务于不同类型OS的前端VM。由于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM具有前后端服务通道,且所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同,这样的话,第m前端VM传来的GPU命令就可以在相同操作***类型的第n后端GPU Domain上被直接执行,从而避免了进行不同GPU命令库的转换问题,进而避免了GPU命令库的转换所带来的额外开销、时延和稳定性问题,从而保证了GPU虚拟化***的性能;
此外,由于引入专门的N个后端GPU Domain为M个前端VM提供GPU虚拟化能力与服务,也避免了现有技术中由Host OS负责GPU虚拟化过程中,因Host OS易成为GPU虚拟化性能瓶颈而对GPU虚拟化***的性能造成影响的情况,从而也保证了GPU虚拟化***的性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种物理主机的结构示意图;
图2-a是本发明实施例提供的一种GPU虚拟化的实现方法的流程示意图;
图2-b是本发明实施例提供的另一种GPU虚拟化的实现方法的流程示意图;
图3是本发明实施例提供的再一种GPU虚拟化的实现方法的流程示意图;
图4是本发明实施例提供的再一种GPU虚拟化的实现方法的流程示意图;
图5是本发明实施例提供的再一种GPU虚拟化的实现方法的流程示意图;
图6是本发明实施例提供的一种管理GPU Domain的方法的流程示意图;
图7是本发明实施例提供的另一种管理GPU Domain的方法的流程示意图;
图8是本发明实施例提供的再一种管理GPU Domain的方法的流程示意图;
图9是本发明实施例提供的一种桌面云***架构示意图;
图10是本发明实施例提供的另一种桌面云***架构示意图;
图11是本发明实施例提供的另一种物理主机的架构示意图;
图12是本发明实施例提供的一种GPU Domain的管理装置的结构示意图;
图13是本发明实施例提供的另一种GPU Domain的管理装置的结构示意图;
图14是本发明实施例提供的再一种GPU Domain的管理装置的结构示意图;
图15是本发明实施例提供的一种物理主机的结构示意图;
图16是本发明实施例提供的一种集群***的结构示意图;
图17是本发明实施例提供的再一种GPU虚拟化的实现方法的流程示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
为了方便理解本发明实施例,首先在此介绍本发明实施例描述中会引入的几个要素;
虚拟机VM:
通过虚拟机软件可以在一台物理计算机上模拟出一台或者多台虚拟的计算机,而这些虚拟机就像真正的计算机那样进行工作,虚拟机上可以安装操作***和应用程序,虚拟机还可访问网络资源。对于在虚拟机中运行的应用程序而言,虚拟机就像是在真正的计算机中进行工作。
硬件层:
虚拟化环境运行的硬件平台。其中,硬件层可包括多种硬件,例如某计算节点的硬件层可包括处理器(例如CPU,GPU)和内存,还可以包括网卡、存储器等等高速/低速输入/输出(I/O,Input/Output)设备。
宿主机(Host):
作为管理层,用以完成硬件资源的管理、分配;为虚拟机呈现虚拟硬件平台;实现虚拟机的调度和隔离。其中,Host可能是虚拟机监控器(VMM);此外,有时VMM和1个特权虚拟机配合,两者结合组成Host。其中,虚拟硬件平台对其上运行的各个虚拟机提供各种硬件资源,如提供虚拟处理器、虚拟内存、虚拟磁盘、虚拟网卡等等。虚拟机则运行在Host为其准备的虚拟硬件平台上,Host上运行一个或多个虚拟机。
宿主机操作***(Host OS):
例如,在Xen Hypervisor平台上被称作Dom0,Dom0中可以安装例如网卡、SCSI磁盘等真实物理设备的驱动程序,能检测和直接访问例如网卡、SCSI磁盘等真实物理设备,但Dom0没法安装GPU的原生官方驱动。
为了方便描述和简化附图,这里将下文引出的中英文表达汇总在此:
VM:Virtual Machine,虚拟机
VMM:Virtual Machine Monitor,虚拟机监控器
GPU:Graphics Processing Unit,图形处理器
GPGPU:General-Purpose GPU,通用图形处理器
Faked GPU Library:模拟的GPU命令库,亦命名为模拟的GPU接口库
GPU Domain Manager:GPU域管理器,亦命名为GPU域管理设备
Virtual GPU Service:虚拟GPU服务
GPU library:GPU命令库,亦命名为GPU接口库
Desktop Protocol:桌面协议
Shmem Device:共享内存设备
IVC Manager:虚拟机间通信管理器,亦命名为虚拟机间通信管理设备
GPU Service Dispatcher:GPU服务分发器
Virtual GPU Driver:虚拟GPU驱动
实施例一
请参阅图1,为本发明实施例的一种物理主机100的结构示意图,如图1所示,本发明实施例的物理主机100包括:包括GPU的硬件层101、运行在所述硬件层之上的宿主机Host102、以及运行在所述Host102之上的N个后端图形处理器域(即后端GPU Domain)(图中以103示意)和M个前端虚拟机VM(图中以104示意),所述N个后端GPU Domain与所述M个前端VM之间分别具有对应的前后端服务通道,其中所述N个后端GPU Domain中的第n后端GPUDomain与所述M个前端VM中的第m前端VM具有前后端服务通道,所述N为大于或等于1的正整数,所述M为大于或等于1的正整数,M大于或等于N,所述n为小于或等于N的正整数,所述m为小于或等于M的正整数,
所述第m前端VM用于:基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将待传递的GPU命令传递给第n后端GPU Domain;
所述第n后端GPU Domain用于:利用一个或多个所述GPU对所述GPU命令进行处理,得到相应的处理结果数据;其中,所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同。这里的处理结果数据可以是GPU命令的返回值,也可以是待回传的数据(例如待回传的图像数据或计算结果数据),包括但不限于此。应当理解的是,可以利用物理主机中一个或多个GPU来处理GPU命令。
其中,硬件层11包括的一个或多个物理GPU被直通给N个后端GPU Domain,N个后端GPU Domain可以直接访问物理GPU,从而保证了后端GPU Domain上的GPU性能接近于物理GPU性能。其中每个后端GPU Domain可以直通有一个或多个物理GPU。例如,通过输入/输出内存管理单元(即IOMMU)技术,可以把硬件层包括的一个或多个物理GPU直通给N个后端GPUDomain,物理GPU直通给后端GPU Domain后,不仅保证了后端GPU Domain上的GPU性能接近于物理GPU性能,而且后端GPU Domain里可以直接安装GPU的原生官方驱动,解决了现有技术中基于宿主机操作***(即Host OS)来实现GPU虚拟化时,无法在某些宿主机操作***Host OS上安装一些原生官方驱动的问题。
本发明实施例中,如果该GPU命令没有返回值,则该GPU命令就完成了;如果该GPU命令有返回值或者有待回传的数据(例如待回传的图像数据或计算结果数据),相应地,所述第n后端GPU Domain还用于:基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将相应的处理结果数据传递给所述第m前端VM。
以及,本发明实施例的物理主机还包括:运行在所述Host之上的宿主机操作***Host OS105,其中Host OS105用于建立所述N个后端GPU Domain103与所述M个前端VM104之间的前后端服务通道。其中所述N个后端GPU Domain103与所述M个前端VM104之间的前后端服务通道可以通过如下方式来建立,即当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,确定具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;基于所述第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
在一种具体的实现方式下,Host OS105具体用于:
根据配置的GPU Domain创建策略,创建N个后端GPU Domain,其中所述N个后端GPUDomain具有多种类型的操作***,所述GPU Domain创建策略包括:GPU Domain的个数、直通给GPU Domain的GPU个数、GPU Domain的操作***类型中的一个或多个;这里的多种类型的操作***包括但不限于:Windows和Linux等;
当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,从所述N个后端GPU Domain中选择具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;
基于所述第m前端VM与所述第n后端GPU Domain的关联关系,将对应的第n后端GPUDomain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
在另一种具体的实现方式下,Host OS105具体用于:
当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,创建具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;
基于所述第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
应当理解的是,本发明实施例的物理主机中,Host OS105还用于管理或记录M个前端VM与N个后端GPU Domain之间的关联关系,其中,M个前端VM与N个后端GPU Domain之间的关联关系包括所述第m前端VM与所述第n后端GPU Domain之间的关联关系。以及,当所述第m前端VM退出时,Host OS105还用于删除所述第m前端VM与第n后端GPU Domain的关联关系。
由上可见,本发明实施例提供的物理主机中,所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM具有前后端服务通道,所述第m前端VM基于第n后端GPU Domain与第m前端VM之间的前后端服务通道,将待传递的GPU命令传递给第n后端GPU Domain;所述第n后端GPU Domain利用物理主机中的一个或多个GPU对所述GPU命令进行处理,得到相应的处理结果数据;可见,本发明实施例通过引入专门的N个后端GPUDomain来向M个前端VM提供GPU虚拟化能力与服务,在N个后端GPU Domain为M个前端VM提供GPU虚拟化能力与服务的前提下,N个后端GPU Domain的操作***类型是可以根据M个前端VM的操作***类型灵活配置的,例如可以是一个后端GPU Domain对应服务于一个或多个同类型OS的前端VM,也可以是不同类型OS的后端GPU Domain分别服务于不同类型OS的前端VM。由于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM具有前后端服务通道,且所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同,这样的话,第m前端VM传来的GPU命令就可以在相同操作***类型的第n后端GPU Domain上被直接执行,从而避免了进行不同GPU命令库的转换问题,进而避免了GPU命令库的转换所带来的额外开销、时延和稳定性问题,从而保证了GPU虚拟化***的性能。
(一)考虑到在前端虚拟机和后端GPU Domain之间高效快速的传输GPU命令和数据是目前基于GPU命令重定向的GPU虚拟化方法中影响性能和效果的方面,本发明实施例中,在一种实现方式下,在基于GPU Domain的GPU虚拟化架构下,通过前端虚拟机和后端GPUDomain之间的共享内存进行GPU命令和处理结果数据的传输,来达到GPU命令和数据的高效传输。
相应地,上述通信信息为共享内存设备标识,在所述第m前端VM与第n后端GPUDomain之间建立前后端服务通道的方面,所述第m前端VM具体用于:基于所述第m前端VM的共享内存设备标识和第n后端GPU Domain的共享内存设备标识,发起所述第m前端VM与第n后端GPU Domain之间的事件通道的绑定;或者,所述第n后端GPU Domain具体用于:基于所述第m前端VM的共享内存设备标识和第n后端GPU Domain的共享内存设备标识,发起所述第m前端VM与第n后端GPU Domain之间的事件通道的绑定。
相应地,在基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将待传递的GPU命令传递给第n后端GPU Domain的方面,所述第m前端VM具体用于:将待传递的GPU命令写入所述第m前端VM与第n后端GPUDomain之间的共享内存;通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道向所述第n后端GPU Domain发送第m前端事件通知,所述第m前端事件通知用于表示待传递的GPU命令在所述共享内存中的位置信息;其中,这里的位置信息包括但不限于:GPU命令在共享内存中的偏移地址、长度等。
相应地,在利用物理主机中的一个或多个GPU对所述GPU命令进行处理,得到相应的处理结果数据的方面,所述第n后端GPU Domain具体用于:根据收到的所述第m前端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述GPU命令;利用直通给所述第n后端GPU Domain的一个或多个所述GPU对读取出的所述GPU命令进行处理,得到相应的处理结果数据。从而通过本发明实施例的共享内存技术能实现在第m前端VM与第n后端GPU Domain之间交互GPU命令。
为了及时释放第n后端GPU Domain与第m前端VM之间的共享内存资源,第n后端GPUDomain还用于:通过所述事件通道向所述第m前端VM发送第n后端事件通知,所述第n后端事件通知用于表示数据读取完成;
相应地,第m前端VM还用于:根据收到的所述第n后端事件通知释放已被所述第n后端GPU Domain读取的数据所占用的内存空间。
相应地,如果该GPU命令有返回值或者有待回传的数据(例如待回传的图像数据或计算结果数据),在所述基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将所述相应的处理结果数据传递给所述第m前端VM的方面,所述第n后端GPU Domain具体用于:将待传递的所述处理结果数据写入所述第m前端VM与第n后端GPU Domain之间的共享内存;通过所述第m前端VM与第n后端GPU Domain之间相互绑定的事件通道向所述第m前端VM发送第n后端事件通知,所述第n后端事件通知用于表示待传递的所述处理结果数据在所述第m前端VM与第n后端GPU Domain之间的共享内存中的位置信息;这里的位置信息包括但不限于:处理结果数据在共享内存中的偏移地址、长度等。
相应地,所述第m前端VM还用于:根据收到的第n后端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述处理结果数据。从而通过本发明实施例的共享内存技术能实现在第m前端VM与第n后端GPU Domain之间交互处理结果数据。
为了及时释放第n后端GPU Domain与第m前端VM之间的共享内存资源,第m前端VM还用于:通过所述事件通道向所述第n后端GPU Domain发送第m前端事件通知,所述第m前端事件通知用于表示数据读取完成;
相应地,第n后端GPU Domain还用于:根据收到的所述第m前端事件通知释放已被所述第m前端VM读取的数据所占用的内存空间。
在一种较优的实现方式下,所述第m前端VM与第n后端GPU Domain之间的共享内存包括前向后传输共享内存和后向前传输共享内存,
在所述第m前端VM将待传递的GPU命令写入所述第m前端VM与第n后端GPU Domain之间的共享内存的方面,所述第m前端VM具体用于:将待传递的GPU命令写入前向后传输共享内存,其中所述第m前端VM对所述前向后传输共享内存具有读写权限,所述第n后端GPUDomain对所述前向后传输共享内存具有只读权限;
相应的,在根据收到的所述第m前端事件通知从所述第m前端VM与第n后端GPUDomain之间的共享内存的相应地址空间中读取出所述GPU命令的方面,所述第n后端GPUDomain具体用于:根据收到的所述第m前端事件通知从所述前向后传输共享内存的相应地址空间中读取出所述GPU命令,所述第m前端事件通知用于表示待传递的GPU命令在所述前向后传输共享内存中的位置信息;
或者,
在将待传递的所述处理结果数据写入所述第m前端VM与第n后端GPU Domain之间的共享内存的方面,所述第n后端GPU Domain具体用于:将待传递的所述处理结果数据写入后向前传输共享内存,其中所述第n后端GPU Domain对所述后向前传输共享内存具有读写权限,所述第m前端VM对所述后向前传输共享内存具有只读权限;
相应的,在根据收到的第n后端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述处理结果数据的方面,所述第m前端VM具体用于:根据收到的第n后端事件通知从所述后向前传输共享内存的相应地址空间中读取出所述处理结果数据,所述第n后端事件通知用于表示待传递的所述处理结果数据在所述后向前传输共享内存中的位置信息。
由上可见,本发明实施例中所述第m前端VM与第n后端GPU Domain之间的共享内存分成两部分,一部分用于第m前端VM向第n后端GPU Domain传输数据,第m前端VM对这部分内存有读写权限,第n后端GPU Domain只有读权限;另一部分用于第n后端GPU Domain向第m前端VM传输数据,第n后端GPU Domain有读写权限,第m前端VM只有读权限。第m前端VM要传输数据给第n后端GPU Domain,第m前端VM可以直接把数据写到它有写权限的共享内存,不用担心第n后端GPU Domain也会写同一块内存。同样,第n后端GPU Domain要传输数据也可以直接写到它有写权限的共享内存,不用担心跟第m前端VM冲突。这样就可以实现第m前端VM与第n后端GPU Domain之间双向并发的传输,提升传输效率。
(二)考虑到在前端虚拟机和后端GPU Domain之间高效快速的传输GPU命令和数据是目前基于GPU命令重定向的GPU虚拟化方法中影响性能和效果的方面,本发明实施例中,在另一种实现方式下,通过第m前端VM与第n后端GPU Domain之间的网络连接进行GPU命令和处理结果数据的传输,来达到GPU命令和数据的高效传输。
相应地,上述通信信息为网络地址信息,在所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道的方面,所述第m前端VM具体用于基于所述第m前端VM的网络地址信息和第n后端GPU Domain的网络地址信息,建立第m前端VM与第n后端GPU Domain之间的网络连接;或者,第n后端GPU Domain具体用于基于所述第m前端VM的网络地址信息和第n后端GPU Domain的网络地址信息,建立第m前端VM与第n后端GPU Domain之间的网络连接。这里的网络地址信息包括但不限于IP地址和端口号等,这里的网络连接包括但不限于TCP连接。应当理解的是,这里两种实现方式的区别在于,主动发起建立第m前端VM与第n后端GPUDomain之间的网络连接的发起方的不同。
相应地,在基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将待传递的GPU命令传递给第n后端GPU Domain的方面,所述第m前端VM具体用于:通过第m前端VM与第n后端GPU Domain之间的网络连接,向第n后端GPU Domain发送待传递的GPU命令。
如果该GPU命令有返回值或者有待回传的数据(例如待回传的图像数据或计算结果数据),则在所述基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将所述相应的处理结果数据传递给所述第m前端VM的方面,所述第n后端GPU Domain具体用于:通过第m前端VM与第n后端GPU Domain之间的网络连接,向第m前端VM发送待传递的所述处理结果数据。
(三)考虑到在前端虚拟机和后端GPU Domain之间高效快速的传输GPU命令和数据是目前基于GPU命令重定向的GPU虚拟化方法中影响性能和效果的方面,针对大量的GPU命令和数据传输会给***带来很大的传输带宽压力,本发明实施例把压缩技术应用到GPU虚拟化中,通过压缩GPU命令和数据来减少传输量,降低带宽。本发明实施例使用灵活的压缩策略来控制是否对GPU命令和数据进行压缩。例如,压缩策略为不增加传输时延或增加的时延可接受的情况下,对GPU命令和数据进行压缩。
相应地,本发明实施例的物理主机中,所述第m前端VM还用于:根据GPU命令的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述GPU命令进行压缩;
相应地,在将待传递的GPU命令传递给第n后端GPU Domain的方面,所述第m前端VM具体用于:将待传递的GPU命令进行压缩,并将压缩后的GPU命令传递给第n后端GPUDomain;
相应地,所述第n后端GPU Domain还用于:判断出传递过来的GPU命令被压缩过;
相应地,在利用物理主机中的一个或多个GPU对所述GPU命令进行处理,得到相应的处理结果数据的方面,所述第n后端GPU Domain具体用于:对压缩后的GPU命令进行解压,并利用直通给所述第n后端GPU Domain的一个或多个GPU对解压后的GPU命令进行处理,得到相应的处理结果数据。
如果该GPU命令具有返回值或者有待回传的数据(例如待回传的图像数据或计算结果数据),相应地,第n后端GPU Domain还用于:根据所述处理结果数据的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述处理结果数据进行压缩;
相应地,在将所述处理结果数据传递给所述第m前端VM的方面,所述第n后端GPUDomain具体用于:将所述处理结果数据进行压缩,并将压缩后的处理结果数据传递给所述第m前端VM。
在一种实现方式下,在所述根据GPU命令的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述GPU命令进行压缩的方面,所述第m前端VM具体用于:当GPU命令的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间时,判断出对所述GPU命令进行压缩;或者,当GPU命令的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间与调节值的和值时,判断出对所述GPU命令进行压缩;
或者,
在一种实现方式下,在所述根据处理结果数据的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述处理结果数据进行压缩的方面,所述第n后端GPU Domain具体用于:当处理结果数据的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间时,判断出对所述处理结果数据进行压缩;或者,当处理结果数据的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间与调节值的和值时,判断出对所述处理结果数据进行压缩。
本发明实施例的物理主机中,N个后端GPU Domain的操作***可以根据M个前端虚拟化的操作***来灵活配置,N个后端GPU Domain的操作***可以是Windows、Linux等不同的操作***。例如,由Windows操作***的后端GPU Domain向Windows操作***的前端虚拟机提供GPU虚拟化服务,由Linux操作***的后端GPU Domain向Linux操作***的前端虚拟机提供GPU虚拟化服务,从而Windows的前端虚拟机传递过来的GPU命令可以在Windows的后端GPU Domain上直接执行,不需要进行GPU命令的转换,解决了现有技术中基于Host OS来实现GPU虚拟化时,GPU命令转换所带来的开销、时延或稳定性等问题。
此外,现有技术中,宿主机操作***(即Host OS)是全局的特权***,负责虚拟机的管理及向所有虚拟机提供I/O服务。由于GPU虚拟化服务需要传输和处理大量的数据,通过Host OS实现GPU虚拟化服务,会大大增加Host OS的压力,容易导致Host OS成为瓶颈,从而影响整个虚拟化***的性能,而且导致GPU虚拟化场景下的虚拟机密度受限。而本发明实施例中,通过专门的后端GPU Domain上实现GPU虚拟化服务,可以避免现有技术中Host OS因为处理大量的GPU任务及庞大的数据传输而成为瓶颈,而且还可以提供更好的隔离性,不会因为GPU虚拟化的问题而引起Host OS以及整个虚拟化***的问题,而且也避免了GPU虚拟化密度受限的问题,从而提高了GPU虚拟化的密度和可扩展性。
综上所述,本发明实施例提供的物理主机中,所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM具有前后端服务通道,所述第m前端VM基于第n后端GPU Domain与第m前端VM之间的前后端服务通道,将待传递的GPU命令传递给第n后端GPU Domain;所述第n后端GPU Domain利用物理主机中的一个或多个GPU对所述GPU命令进行处理,得到相应的处理结果数据;可见,本发明实施例通过引入专门的N个后端GPUDomain来向M个前端VM提供GPU虚拟化能力与服务,在N个后端GPU Domain为M个前端VM提供GPU虚拟化能力与服务的前提下,N个后端GPU Domain的操作***类型是可以根据M个前端VM的操作***类型灵活配置的,例如可以是一个后端GPU Domain对应服务于一个或多个同类型OS的前端VM,也可以是不同类型OS的后端GPU Domain分别服务于不同类型OS的前端VM。由于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM具有前后端服务通道,且所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同,这样的话,第m前端VM传来的GPU命令就可以在相同操作***类型的第n后端GPU Domain上被直接执行,从而避免了进行不同GPU命令库的转换问题,进而避免了GPU命令库的转换所带来的额外开销、时延和稳定性问题,从而保证了GPU虚拟化***的性能;
以及,本发明实施例中,由于引入专门的N个后端GPU Domain为M个前端VM提供GPU虚拟化能力与服务,也避免了现有技术中由宿主机操作***Host OS负责GPU虚拟化过程中,因Host OS易成为GPU虚拟化性能瓶颈而影响GPU虚拟化***的性能和GPU虚拟化场景下的虚拟机密度受限的情况,从而也保证了GPU虚拟化***的性能,提高了GPU虚拟化的密度和可扩展性。
以及,本发明实施例中,通过第n后端GPU Domain与第m前端VM之间的共享内存或网络连接,降低了GPU命令和数据的传输时延,从而提升了传输效率和提升GPU虚拟化的效果;
以及,本发明实施例中,通过压缩策略控制,达到对GPU命令和数据的有效压缩,明显减少数据传输量,从而提升传输效率和提升GPU虚拟化效果。
实施例二
请参阅图2-a和2-b,为本发明实施例提供一种GPU虚拟化的实现方法的流程示意图,该方法可以应用于如图1所示的物理主机,该物理主机包括:包括至少一个GPU的硬件层、运行在所述硬件层之上的宿主机Host、以及运行在所述Host之上的N个后端GPU域GPUDomain和M个前端虚拟机VM,所述N个后端GPU Domain与所述M个前端VM之间分别具有对应的前后端服务通道,其中所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间具有前后端服务通道,所述N为大于或等于1的正整数,所述M为大于或等于1的正整数,M大于或等于N,所述n为小于或等于N的正整数,所述m为小于或等于M的正整数,如图2a所示,该方法可以包括如下步骤:
S201、基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,所述第m前端VM将待传递的GPU命令传递给第n后端GPU Domain;
S202、第n后端GPU Domain利用物理主机中的一个或多个GPU对所述GPU命令进行处理,得到相应的处理结果数据;其中,所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同。
如图2b所示,如果该GPU命令有返回值或者有待回传的数据(例如待回传的图像数据或计算结果数据),则还包括:
S203、基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,所述第n后端GPU Domain将相应的所述处理结果数据传递给所述第m前端VM。
本发明实施例中物理主机还包括:运行在所述Host之上的宿主机操作***HostOS,如图2b所示,所述方法还包括:
S200、Host OS建立所述N个后端GPU Domain与所述M个前端VM之间的前后端服务通道。其中,所述N个后端GPU Domain与所述M个前端VM之间的前后端服务通道可以通过如下方式来建立,即当所述M个前端VM中第m前端VM被启动时,所述Host OS根据所述启动的第m前端VM的操作***类型,确定具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;所述Host OS基于所述第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。需要说明的是,所述Host OS管理或记录所述N个后端GPU Domain与所述M个前端VM之间的关联关系,其中包括第m前端VM与第n后端GPU Domain的关联关系;当所述第m前端VM退出时,所述Host OS删除所述第m前端VM与第n后端GPU Domain的关联关系。
如果Host OS分别向第m前端VM与所述第n后端GPU Domain传递的对方的通信信息为共享内存设备标识,相应地,在一种实现方式下,所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道的方式为:
基于所述第m前端VM的共享内存设备标识和第n后端GPU Domain的共享内存设备标识,进行第m前端VM与第n后端GPU Domain之间的事件通道的绑定。
如果Host OS分别向第m前端VM与所述第n后端GPU Domain传递的对方的通信信息为网络地址信息,例如IP地址和端口号,相应地,在一种实现方式下,所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道的方式为:
基于所述第m前端VM的网络地址信息和第n后端GPU Domain的网络地址信息,建立第m前端VM与第n后端GPU Domain之间的网络连接。
由上可见,本发明实施例提供的方法中,所述N个后端GPU Domain中的第n后端GPUDomain与所述M个前端VM中的第m前端VM具有前后端服务通道,所述第m前端VM基于第n后端GPU Domain与第m前端VM之间的前后端服务通道,将待传递的GPU命令传递给第n后端GPUDomain;所述第n后端GPU Domain利用物理主机中的一个或多个GPU对所述GPU命令进行处理,得到相应的处理结果数据;可见,本发明实施例通过引入专门的N个后端GPU Domain来向M个前端VM提供GPU虚拟化能力与服务,在N个后端GPU Domain为M个前端VM提供GPU虚拟化能力与服务的前提下,N个后端GPU Domain的操作***类型是可以根据M个前端VM的操作***类型灵活配置的,例如可以是一个后端GPU Domain对应服务于一个或多个同类型OS的前端VM,也可以是不同类型OS的后端GPU Domain分别服务于不同类型OS的前端VM。由于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM具有前后端服务通道,且所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同,这样的话,第m前端VM传来的GPU命令就可以在相同操作***类型的第n后端GPUDomain上被直接执行,从而避免了进行不同GPU命令库的转换问题,进而避免了GPU命令库的转换所带来的额外开销、时延和稳定性问题,从而保证了GPU虚拟化***的性能;
以及,本发明实施例中,由于引入专门的N个后端GPU Domain为M个前端VM提供GPU虚拟化能力与服务,也避免了现有技术中由宿主机操作***Host OS负责GPU虚拟化过程中,因Host OS易成为GPU虚拟化性能瓶颈而影响GPU虚拟化***的性能和GPU虚拟化场景下的虚拟机密度受限的情况,从而也保证了GPU虚拟化***的性能,提高了GPU虚拟化的密度和可扩展性。
实施例三
请参阅图3,为本发明实施例提供再一种GPU虚拟化的实现方法的流程示意图,本实施例中,在如图1所示的基于GPU Domain的GPU虚拟化架构的物理主机中,通过前端虚拟机和服务该前端虚拟机的后端GPU Domain之间的共享内存进行GPU命令和处理结果数据的传输,以及,本实施例中,以第m前端VM和服务该第m前端VM的第n后端GPU Domain为例来进行介绍,第n后端GPU Domain与第m前端VM之间的前后端服务通道是对应于第m前端VM与第n后端GPU Domain之间相互绑定的事件通道,第n后端GPU Domain的操作***类型与第m前端VM的操作***类型相同,该方法可以包括如下步骤:
S301、所述第m前端VM将待传递的GPU命令写入所述第m前端VM与第n后端GPUDomain之间的共享内存;
S302、所述第m前端VM通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道向所述第n后端GPU Domain发送第m前端事件通知,所述第m前端事件通知用于表示待传递的GPU命令在所述共享内存中的位置信息;
S303、所述第n后端GPU Domain根据收到的所述第m前端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述GPU命令;
S304、所述第n后端GPU Domain利用直通给所述第n后端GPU Domain的一个或多个所述GPU对读取出的所述GPU命令进行处理,得到相应的处理结果数据。
为了便于及时释放所述第m前端VM与所述第n后端GPU Domain之间的共享内存资源,所述方法还包括:
S305、所述第n后端GPU Domain读取出所述GPU命令之后,通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道所述第n后端GPU Domain向所述第m前端VM发送第n后端事件通知,所述第n后端事件通知用于表示数据读取完成;
S306、所述第m前端VM根据收到的所述第n后端事件通知释放已被所述第n后端GPUDomain读取的数据所占用的内存空间。
需要说明的是,如果所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的L个前端VM之间具有一对多的前后端服务通道(即1:L的前后端服务通道),所述L个前端VM具有与所述第n后端GPU Domain的操作***类型相同的操作***,所述L个前端VM包括第m前端VM,L为大于1且小于或等于M的正整数;
所述第n后端GPU Domain与所述L个前端VM中的每个前端VM之间分别具有对应的事件通道。
如果该GPU命令有返回值或者有待回传的数据(例如待回传的图像数据或计算结果数据),则本发明实施例的方法还包括:
S307、所述第n后端GPU Domain将待传递的所述处理结果数据写入所述第m前端VM与第n后端GPU Domain之间的共享内存;
S308、所述第n后端GPU Domain通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道向所述第m前端VM发送第n后端事件通知,所述第n后端事件通知用于表示待传递的所述处理结果数据在所述共享内存中的位置信息;
S309、所述第m前端VM根据收到的第n后端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述处理结果数据。
为了便于及时释放所述第m前端VM与所述第n后端GPU Domain之间的共享内存资源,所述方法还包括:
S310、所述第m前端VM通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道向所述第n后端GPU Domain发送第m前端事件通知,所述第m前端事件通知用于表示数据读取完成;
S311、所述第n后端GPU Domain根据收到的所述第m前端事件通知释放已被所述第m前端VM读取的数据所占用的内存空间。
在一种较优的实现方式下,所述第m前端VM与第n后端GPU Domain之间的共享内存包括:前向后传输共享内存和后向前传输共享内存,
S301具体为:所述第m前端VM将待传递的GPU命令写入前向后传输共享内存,其中所述第m前端VM对所述前向后传输共享内存具有读写权限,所述第n后端GPU Domain对所述前向后传输共享内存具有只读权限;
相应的,S303具体为:所述第n后端GPU Domain根据收到的所述第m前端事件通知从所述前向后传输共享内存的相应地址空间中读取出所述GPU命令,所述第m前端事件通知用于表示待传递的GPU命令在所述前向后传输共享内存中的位置信息;
或者,
S307具体为:所述第n后端GPU Domain将待传递的所述处理结果数据写入后向前传输共享内存,其中所述第n后端GPU Domain对所述后向前传输共享内存具有读写权限,所述第m前端VM对所述后向前传输共享内存具有只读权限;
相应的,S309具体为:所述第m前端VM根据收到的第n后端事件通知从所述后向前传输共享内存的相应地址空间中读取出所述处理结果数据,所述第n后端事件通知用于表示待传递的所述处理结果数据在所述后向前传输共享内存中的位置信息。
由上可见,本发明实施例提供的方法中,第n后端GPU Domain与第m前端VM之间具有共享内存和相互绑定的事件通道,所述第m前端VM通过所述第m前端VM与第n后端GPUDomain之间的共享内存,以及通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道,将待传递的GPU命令传递给第n后端GPU Domain;所述第n后端GPU Domain利用物理主机中的一个或多个GPU对所述GPU命令进行处理,得到相应的处理结果数据;由于第n后端GPU Domain与第m前端VM具有共享内存和相互绑定的事件通道,且所述第n后端GPUDomain的操作***类型与所述第m前端VM的操作***类型相同,这样的话,第m前端VM传来的GPU命令就可以在相同操作***类型的第n后端GPU Domain上被直接执行,从而避免了进行不同GPU命令库的转换问题,进而避免了GPU命令库的转换所带来的额外开销、时延和稳定性问题,从而保证了GPU虚拟化***的性能;
以及,在基于GPU Domain的GPU虚拟化架构下,通过第m前端虚拟机和第n后端GPUDomain之间的共享内存进行GPU命令和处理结果数据的传输,来达到GPU命令和数据的高效传输,从而提升传输效率和提升GPU虚拟化效果;
以及,本发明实施例中,所述第m前端VM与第n后端GPU Domain之间的共享内存分成两部分,一部分用于第m前端VM向第n后端GPU Domain传输数据,第m前端VM对这部分内存有读写权限,第n后端GPU Domain只有读权限;另一部分用于第n后端GPU Domain向第m前端VM传输数据,第n后端GPU Domain有读写权限,第m前端VM只有读权限。第m前端VM要传输数据给第n后端GPU Domain,第m前端VM可以直接把数据写到它有写权限的共享内存,不用担心第n后端GPU Domain也会写同一块内存。同样,第n后端GPU Domain要传输数据也可以直接写到它有写权限的共享内存,不用担心跟第m前端VM冲突。这样就可以实现第m前端VM与第n后端GPU Domain之间双向并发的传输,提升传输效率。
实施例四
请参阅图4,为本发明实施例提供再一种GPU虚拟化的实现方法的流程示意图,本实施例中,在如图1所示的基于GPU Domain的GPU虚拟化架构的物理主机中,通过前端虚拟机和服务该前端虚拟机的后端GPU Domain之间的网络连接进行GPU命令和处理结果数据的传输,以及,本实施例中,以第m前端VM和服务该第m前端VM的第n后端GPU Domain为例来进行介绍,第n后端GPU Domain与第m前端VM之间的前后端服务通道是对应于第m前端VM与第n后端GPU Domain之间的网络连接,第n后端GPU Domain的操作***类型与第m前端VM的操作***类型相同,该方法可以包括如下步骤:
S401、通过第m前端VM与第n后端GPU Domain之间的网络连接,所述第m前端VM向第n后端GPU Domain发送待传递的GPU命令;
S402、所述第n后端GPU Domain利用所述至少一个GPU中的一个或多个GPU对收到的GPU命令进行处理,得到相应的处理结果数据。
如果该GPU命令有返回值或者有待回传的数据(例如待回传的图像数据或计算结果数据),则本发明实施例的方法还包括:
S403、通过第m前端VM与第n后端GPU Domain之间的网络连接,所述第n后端GPUDomain向第m前端VM发送待传递的所述处理结果数据。
由上可见,本发明实施例提供的方法中,第n后端GPU Domain与第m前端VM之间具有网络连接,所述第m前端VM通过第m前端VM与第n后端GPU Domain之间的网络连接,将待传递的GPU命令传递给第n后端GPU Domain;所述第n后端GPU Domain利用所述至少一个GPU中的一个或多个GPU对所述GPU命令进行处理,得到相应的处理结果数据;由于第n后端GPUDomain与第m前端VM之间具有网络连接,且所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同,这样的话,第m前端VM传来的GPU命令就可以在相同操作***类型的第n后端GPU Domain上被直接执行,从而避免了进行不同GPU命令库的转换问题,进而避免了GPU命令库的转换所带来的额外开销、时延和稳定性问题,从而保证了GPU虚拟化***的性能;
以及,在基于GPU Domain的GPU虚拟化架构下,通过第m前端VM与第n后端GPUDomain之间的网络连接进行GPU命令和处理结果数据的传输,来达到GPU命令和数据的高效传输,从而提升传输效率和提升GPU虚拟化效果。
实施例五
请参阅图5,为本发明实施例提供再一种GPU虚拟化的实现方法的流程示意图,本实施例中,在如图1所示的基于GPU Domain的GPU虚拟化架构的物理主机中,该物理主机包括:包括至少一个GPU的硬件层、运行在所述硬件层之上的宿主机Host、以及运行在所述Host之上的N个后端GPU域GPU Domain和M个前端虚拟机VM,所述N个后端GPU Domain与所述M个前端VM之间分别具有对应的前后端服务通道,其中所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间具有前后端服务通道,所述N为大于或等于1的正整数,所述M为大于或等于1的正整数,M大于或等于N,所述n为小于或等于N的正整数,所述m为小于或等于M的正整数,本实施例中,以第m前端VM和服务该第m前端VM的第n后端GPU Domain为例来进行介绍,其中,第n后端GPU Domain的操作***类型与第m前端VM的操作***类型相同,如图5所示,该方法可以包括如下步骤:
S501、第m前端VM判断是否对待传递的GPU命令进行压缩;如果确定对所述GPU命令进行压缩,则执行步骤S502;如果确定不对所述GPU命令进行压缩,则执行步骤S503;
在一种实现方式下,第m前端VM根据待传递的GPU命令的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断是否对所述GPU命令进行压缩;
具体的,当GPU命令的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间时,则确定对所述GPU命令进行压缩;当GPU命令的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值大于非压缩直接传输估计时间时,则确定不对所述GPU命令进行压缩;
或者,
当GPU命令的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间与调节值的和值时,则确定对GPU命令进行压缩;当GPU命令的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值大于非压缩直接传输估计时间与调节值的和值时,则确定不对对GPU命令进行压缩。
S502、第m前端VM将待传递的GPU命令进行压缩,得到压缩后的待传递的GPU命令;
S503、基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,第m前端VM将待传递的GPU命令传递给第n后端GPUDomain;
需要说明的是,本实施例中,第n后端GPU Domain与第m前端VM之间的前后端服务通道可以是对应于第m前端VM与第n后端GPU Domain之间相互绑定的事件通道,或者,第n后端GPU Domain与第m前端VM之间的前后端服务通道可以是对应于第m前端VM与第n后端GPUDomain之间的网络连接,但不限于此。
S504、所述第n后端GPU Domain收到第m前端VM传递过来的GPU命令之后,判断该GPU命令是否被压缩过;如果判断出传递过来的GPU命令被压缩过,则执行步骤S505;如果判断出传递过来的GPU命令未被压缩过,则执行步骤S506;
S505、所述第n后端GPU Domain对压缩后的GPU命令进行解压,得到解压后的GPU命令;
S506、所述第n后端GPU Domain利用直通给所述第n后端GPU Domain的一个或多个GPU对GPU命令进行处理,得到相应的处理结果数据;
如果该GPU命令有返回值或者有待回传的数据(例如待回传的图像数据或计算结果数据),则本发明实施例的方法还包括:
S507、第n后端GPU Domain判断是否对处理结果数据进行压缩;如果确定对处理结果数据进行压缩,则执行步骤S508;如果确定不对处理结果数据进行压缩,则执行步骤S509;
在一种实现方式下,第n后端GPU Domain根据处理结果数据的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断是否对所述处理结果数据进行压缩;
具体的,当处理结果数据的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间时,判断出对所述处理结果数据进行压缩;当处理结果数据的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值大于非压缩直接传输估计时间时,判断出不对所述处理结果数据进行压缩;
或者,
当处理结果数据的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间与调节值的和值时,判断出对处理结果数据进行压缩;当处理结果数据的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值大于非压缩直接传输估计时间与调节值的和值时,判断出不对对处理结果数据进行压缩。
S508、第n后端GPU Domain将处理结果数据进行压缩,得到压缩后的处理结果数据;
S509、基于第n后端GPU Domain与第m前端VM之间的前后端服务通道,第n后端GPUDomain将处理结果数据传递给所述第m前端VM。
需要说明的是,本实施例中的第n后端GPU Domain与第m前端VM之间的前后端服务通道可以是对应于第m前端VM与第n后端GPU Domain之间相互绑定的事件通道,或者,第n后端GPU Domain与第m前端VM之间的前后端服务通道可以是对应于第m前端VM与第n后端GPUDomain之间的网络连接,但不限于此。
由上可见,本发明实施例提供的方法中,第n后端GPU Domain与第m前端VM之间具有前后端服务通道,第m前端VM基于第n后端GPU Domain与第m前端VM之间的前后端服务通道,将待传递的GPU命令传递给第n后端GPU Domain;所述第n后端GPU Domain利用物理主机中的一个或多个GPU对所述GPU命令进行处理,得到相应的处理结果数据;由于第n后端GPUDomain与第m前端VM之间具有前后端服务通道,且所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同,这样的话,第m前端VM传来的GPU命令就可以在相同操作***类型的第n后端GPU Domain上被直接执行,从而避免了进行不同GPU命令库的转换问题,进而避免了GPU命令库的转换所带来的额外开销、时延和稳定性问题,从而保证了GPU虚拟化***的性能;
以及,针对大量的GPU命令和数据传输会给***带来很大的传输带宽压力,本发明实施例把压缩技术应用到GPU虚拟化中,通过压缩GPU命令和数据来减少传输量,降低带宽,从而提升传输效率和提升GPU虚拟化效果。
实施例六
请参阅图6,为本发明实施例的一种管理GPU Domain的方法的流程示意图,该方法的执行主体为物理主机,具体可以是如图1所示的物理主机上部署的Host OS,以及,本实施例中,以第m前端VM和服务该第m前端VM的第n后端GPU Domain为例来进行介绍,如图6所示,本发明实施例的方法可以包括如下步骤:
S601、当第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,确定具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPUDomain之间具有关联关系;
例如,被启动的第m前端VM的操作***是Windows***,则确定Windows***的第n后端GPU Domain;被启动的第m前端VM的操作***是Linux***,则确定Linux***的第n后端GPU Domain;
S602、基于所述第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
如果Host OS分别向第m前端VM与所述第n后端GPU Domain传递的对方的通信信息为共享内存设备标识,则所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道,包括:基于第m前端VM的通信信息和第n后端GPU Domain的通信信息,进行所述第m前端VM与第n后端GPU Domain之间的事件通道的绑定。
如果Host OS分别向第m前端VM与所述第n后端GPU Domain传递的对方的通信信息为网络地址信息,例如IP地址和端口号,则所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道,包括:基于所述第m前端VM的网络地址信息和第n后端GPU Domain的网络地址信息,建立第m前端VM与第n后端GPU Domain之间的网络连接(例如TCP连接)。
应当理解的是,本发明实施例的方法还包括:管理或记录M个前端VM与N个后端GPUDomain之间的关联关系,其中,M个前端VM与N个后端GPU Domain之间的关联关系包括所述第m前端VM与所述第n后端GPU Domain之间的关联关系。以及,当所述第m前端VM退出时,删除所述第m前端VM与第n后端GPU Domain的关联关系。
由上可见,通过本发明实施例的管理GPU Domain的方法,当物理主机上的第m前端VM被启动后,根据所述启动的第m前端VM的操作***类型,确定服务于第m前端VM的第n后端GPUDomain,这样的话,第m前端VM与第n后端GPUDomain之间的关联关系就自然形成了,基于第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPUDomain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道,进而由于第n后端GPU Domain与第m前端VM之间具有前后端服务通道,且所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同,这样的话,第m前端VM传来的GPU命令就可以在相同操作***类型的第n后端GPU Domain上被直接执行,从而避免了进行不同GPU命令库的转换问题,进而避免了GPU命令库的转换所带来的额外开销、时延和稳定性问题,从而保证了GPU虚拟化***的性能。
实施例七
请参阅图7,为本发明实施例的另一种管理GPU Domain的方法的流程示意图,该方法的执行主体为物理主机,具体可以是如图1所示的物理主机上部署的Host OS,以及,本实施例中,以第m前端VM和服务该第m前端VM的第n后端GPU Domain为例来进行介绍,如图7所示,本发明实施例的方法可以包括如下步骤:
S701、根据配置的GPU Domain创建策略,创建N个后端GPU Domain,其中所述N个后端GPU Domain具有多种类型的操作***,所述GPU Domain创建策略包括:GPU Domain的个数、直通给GPU Domain的GPU个数、GPU Domain的操作***类型中的一个或多个;
其中,每个后端GPU Domain可以配置成不同的操作***,每个后端GPU Domain直通一个或多个GPU。每个后端GPU Domain向对应操作***的前端虚拟机提供GPU虚拟化服务。
S702、当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,从所述创建的N个后端GPU Domain中选择具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;
S703、基于所述第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
由上可见,通过本发明实施例的管理GPU Domain的方法,当物理主机上的第m前端VM被启动后,根据所述启动的第m前端VM的操作***类型,从创建的N个后端GPU Domain中选择具有对应类型的操作***的第n后端GPU Domain,这样的话,第m前端VM与第n后端GPUDomain之间的关联关系就自然形成了,基于第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPUDomain之间建立前后端服务通道,进而由于第n后端GPU Domain与第m前端VM之间具有前后端服务通道,且所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同,这样的话,第m前端VM传来的GPU命令就可以在相同操作***类型的第n后端GPUDomain上被直接执行,从而避免了进行不同GPU命令库的转换问题,进而避免了GPU命令库的转换所带来的额外开销、时延和稳定性问题,从而保证了GPU虚拟化***的性能。
实施例八
请参阅图8,为本发明实施例的再一种管理GPU Domain的方法的流程示意图,该方法的执行主体为物理主机,具体可以是如图1所示的物理主机上部署的Host OS,以及,本实施例中,以第m前端VM和服务该第m前端VM的第n后端GPU Domain为例来进行介绍,如图8所示,本发明实施例的方法可以包括如下步骤:
S801、当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,创建具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;
S802、基于所述第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
由上可见,通过本发明实施例的管理GPU Domain的方法,当物理主机上的第m前端VM被启动后,根据所述启动的第m前端VM的操作***类型,创建具有对应类型的操作***的第n后端GPU Domain,这样的话,第m前端VM与第n后端GPUDomain之间的关联关系就自然形成了,基于第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPUDomain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道,进而由于第n后端GPU Domain与第m前端VM之间具有前后端服务通道,且所述第n后端GPUDomain的操作***类型与所述第m前端VM的操作***类型相同,这样的话,第m前端VM传来的GPU命令就可以在相同操作***类型的第n后端GPU Domain上被直接执行,从而避免了进行不同GPU命令库的转换问题,进而避免了GPU命令库的转换所带来的额外开销、时延和稳定性问题,从而保证了GPU虚拟化***的性能。
GPU主要的功能是渲染图形、处理图像、以及加速视频播放。所以GPU虚拟化的一个主要目的就是在虚拟机里提供GPU的主要功能,从而能够高效地支持图形渲染、图像处理和视频播放等GPU应用。此外,GPU也可用作计算处理器,像CPU一样来处理计算任务,例如通用图形处理器(General purpose GPU,GPGPU)适合用作并行计算。
为便于更好的理解和实施本发明实施例上述方案,下面结合应用场景来详细介绍下本发明实施例的方法:
实施例九:桌面云的应用场景
图9是本发明实施例的桌面云***架构示意图,如图9所示,该桌面云***包括客户端设备901和物理主机900,其中用户在客户端设备901(例如,PC机、平板电脑、智能终端等)通过桌面协议连接和访问数据中心的物理主机900,其中该物理主机900上部署有第m前端VM、第n后端GPU Domain和Host OS。
本发明实施例的另一种GPU虚拟化的实现方法应用于如图9所示的桌面云***,该方法具体包括如下步骤:
虚拟机创建流程和前端虚拟机与后端GPU Domain间建立前后端服务通道的流程:
(1)GPU Domain管理设备(即GPU Domain Manager)根据配置的GPU Domain创建策略创建一个或多个后端GPU Domain,并把每个后端GPU Domain的信息记录下来,例如:操作***类型、对应的物理GPU个数等;
其中,GPU Domain Manager用于创建和管理GPU Domain。虚拟化***安装部署后,***管理员配置GPU Domain创建策略,包括GPU Domain的操作***、GPU Domain的个数、直通给GPU Domain的GPU个数等。
(2)每个GPU Domain上的共享内存设备(即shmem设备)与虚拟机间通信设备(即IVC Manager)建立连接,IVC Manager将shmem设备的共享内存设备标识都记录下来;这里的连接,例如是UNIX域套接字(即UNIX Domain Socket)连接;
(3)当前端虚拟机被启动后,GPU Domain Manager根据前端虚拟机的操作***类型和GPU Domain的负载情况,从创建的一个或多个后端GPU Domain中选择一个后端GPUDomain为其进行服务,并且把前端虚拟机和服务该前端虚拟机的后端GPU Domain的关联信息通知IVC Manager(注:IVC是Inter-VM Communication);
其中,考虑后端GPU Domain的负载是为了保持负载均衡,考虑前端虚拟机的操作***类型是为了选择相同的操作***类型的后端GPU Domain,本实施例中,也可以是仅考虑前端虚拟机的操作***类型来选择对应的后端GPU Domain。
(4)IVC Manager与前端虚拟机的shmem设备建立连接,IVC Manager根据前端虚拟机和后端GPU Domain的关联信息,选择相应后端GPU Domain上的一个shmem设备与前端虚拟机的shmem设备进行关联,并且把双方shmem设备的共享shmem设备标识相互传递给对方;
其中,这里的连接,例如是UNIX域套接字连接。
(5)前端虚拟机的shmem设备将相应后端GPU Domain上的shmem设备的共享设备标识进行记录,后端GPU Domain上的shmem设备将相应前端虚拟机的shmem设备的共享设备标识进行记录;
(6)前端虚拟机的shmem设备的驱动(后文中,shmem设备的驱动被简称为ShmemDriver,且图中以Shmem Driver示意)加载上后,发现相应后端GPU Domain上的shmem设备已经关联,发起前端虚拟机上的shmem设备与后端GPU Domain上的shmem设备之间的事件通道(即event channel)的绑定,从而前端虚拟机上的shmem设备与后端GPU Domain上的shmem设备相互之间可以通过事件通道通信。
数据处理流程:
(1)用户通过客户端设备901打开第m前端VM上的图形应用(即GPU App),图形应用加载Faked GPU library;
(2)第m前端VM上的模拟的GPU命令库(即Faked GPU Library)调用Shmem Driver通过第m前端VM与第n后端GPU Domain之间相互绑定的事件通道发送表示图形应用启动的中断通知给第n后端GPU Domain上的Shmem Driver,由第n后端GPU Domain上的ShmemDriver传递表示图形应用启动的中断通知给第n后端GPU Domain上的GPU ServiceDispatcher;
应当理解的是,共享内存(即shared memory)是由Shmem Driver来控制和操作的(如映射、读写等),Faked GPU library调用Shmem Driver接口来收发数据。
(3)GPU Service Dispatcher接收到表示图形应用启动的中断通知后,创建一个Virtual GPU Service,并把该Virtual GPU Service的连接信息返回给Faked GPULibrary;
具体的,GPU Service Dispatcher调用Shmem Driver通过第m前端VM与第n后端GPU Domain之间相互绑定的事件通道发送该Virtual GPU Service的连接信息给第m前端VM上的Shmem Driver,由第m前端VM上的Shmem Driver传递该Virtual GPU Service的连接信息给第m前端VM上的Faked GPU Library;
(4)基于该Virtual GPU Service的连接信息,Faked GPU Library与Virtual GPUService建立共享内存(即shared Memory)的连接;
(5)第m前端VM上的图形应用程序运行过程中,Faked GPU Library截获该图形应用程序调用的GPU命令,可选的还有调用的参数,其中截获的GPU命令和调用的参数被打包成数据包;
(6)Faked GPU Library判断是否需要对数据包进行压缩,如果需要,则对数据包进行压缩;
具体如下:
若t1+t2+t3≤t4×x%,则对数据包进行压缩否则不压缩
x%是一个可以根据相应情况调节压缩策略的变量。如果要保证时延最小,那么x%应该设为100%;如果为了控制带宽,时延可以适当增大,那x%可以大于100%,如110%。
应当理解的是,本实施例中的压缩比、压缩速度、解压速度、传输速度及调节比设置在配置文件里,也可以配置成不用压缩。根据不同的情况可以做出不同的配置。
(7)在完成对数据包的压缩后,Faked GPU Library调用Shmem Driver接口申请该共享内存中的内存块,并且把数据包写入申请的内存块,并调用Shmem Driver发送数据接口进行数据发送;
(8)第m前端VM上的Shmem Driver将第一辅助信息以输入输出结构(例如IO Ring)写入申请的内存块中,并通过事件通道向第n后端GPU Domain上的对应Shmem Driver发中断通知;
这里的第一辅助信息包括数据包在共享内存中的偏移地址、长度等等。
(9)第n后端GPU Domain上的Shmem Driver接收到中断通知后,从内存中获取第一辅助信息,唤醒Virtual GPU Service的接收数据调用,把第一辅助信息返回给VirtualGPU Service;
(10)Virtual GPU Service调用Shmem Driver根据第一辅助信息从共享内存读取数据包,例如,Virtual GPU Service从共享内存的偏移地址A1开始读取L1长度的数据,读取完成后,调用接口通知Shmem Driver数据已经读取完成;具体流程为:
(10a)Shmem Driver生成读取完成的反馈消息以输入输出结构(例如IO Ring)写入申请的内存块中,并向第m前端虚拟机上的Shmem Driver发中断通知;
(10b)第m前端虚拟机上的Shmem Driver接收到中断通知后,从内存块读取反馈消息,确定数据已经被读取后,释放已被对方读取数据所占用的内存块;
(11)Virtual GPU Service判断该数据包是否是被压缩过的,如果是压缩的,对该数据包进行解压缩,得到解压缩后的数据包,且从解压缩后的数据包中解析出GPU命令,可选的还有调用的参数;
(12)Virtual GPU Service把GPU命令下发给GPU library,进而由GPU library调用GPU Driver把GPU命令下发,最终由GPU完成对该GPU命令的处理;
如果该GPU命令没有返回值,那么这个命令就完成了;
如果这个GPU命令有返回值,那么:
(13a)Virtual GPU Service调用Shmem Driver接口申请内存块,并且把处理结果数据(即返回值)写入申请的内存块,并调用Shmem Driver发送数据接口进行数据发送;
(14a)Shmem Driver将第二辅助信息以输入输出结构(例如IO Ring)写入申请的内存块中,并通过事件通道向第m前端虚拟机上的对应Shmem Driver发中断通知;
这里的第二辅助信息包括处理结果数据(即返回值)在共享内存中的偏移地址、长度等等。
(15a)第m前端虚拟机上的Shmem Driver接收到中断通知后,从内存块中读取第二辅助信息,唤醒Faked GPU Library的接收数据调用,并把第二辅助信息返回给Faked GPULibrary;
(16a)Faked GPU Library调用Shmem Driver根据第二辅助信息从共享内存读取处理结果数据(即返回值),读取完成后,调用接口通知Shmem Driver数据已经读取完成,后续的流程与10a和10b类似,只是方向反一下,这里不再赘述;
(17a)Faked GPU Library判断处理结果数据(即返回值)是否是压缩过的,如果是压缩过的,对处理结果数据(即返回值)进行解压缩处理;
(18a)Faked GPU Library把处理结果数据(即返回值)返回给GPU应用程序;
如果步骤(12)中的GPU命令执行完后还生成一帧图像,则本实施例方法还包括:
(13b)第n后端GPU Domain上的Virtual GPU Service进行图像抓取;
(14b)第n后端GPU Domain上的Virtual GPU Service对抓取的图像进行图像压缩;
(15b)在完成对图像的压缩后,Virtual GPU Service调用Shmem Driver接口申请该共享内存中的内存块,并且把压缩图像数据写入申请的内存块,并调用Shmem Driver发送数据接口进行数据发送;
(16b)第n后端GPU Domain上的Shmem Driver将第三辅助信息以输入输出结构(例如IO Ring)写入申请的内存块中,并通过事件通道向第m前端VM上的对应Shmem Driver发中断通知;
这里的第三辅助信息包括压缩图像数据在共享内存中的偏移地址、长度等等。
(17b)第m前端VM上的Shmem Driver接收到中断通知后,从内存块获取第三辅助信息,唤醒桌面协议(即Desktop Protocol)的接收数据调用,把第三辅助信息返回给DesktopProtocol;
(18b)Desktop Protocol调用Shmem Driver根据第三辅助信息从共享内存读取压缩图像数据,读取完成后,调用接口通知Shmem Driver数据已经读取完成,具体流程参考(10a)和(10b),只是方向反一下,这里不再赘述。
(19b)Desktop Protocol最后把数据传给客户端设备901进行显示。
需要说明的是,在本实施例的步骤(5)中是通过用户态的Faked GPU Library截获GPU命令调用,应当理解的是,也可以是通过内核态的虚拟GPU驱动(即Virtual GPUDriver)截获GPU命令调用。其中,本实施例通过用户态的Faked GPU Library截获GPU命令调用的情况下,进行共享内存(内核态)到Faked GPU Library的用户态地址的映射之后,Faked GPU Library才能直接读写共享内存。而通过内核态的Virtual GPU Driver截获GPU命令调用的情况下,由于Virtual GPU Driver在内核态,Virtual GPU Driver无需映射就可直接读写共享内存。
以及,本实施例通过用户态的Faked GPU Library截获GPU命令调用的情况下,如果存在多个GPU应用的话,则Shmem Driver需要跟多个GPU应用加载的多个Faked GPULibrary交互,其中第m前端虚拟机上的Shmem Driver保存有Faked GPU Library和VirtualGPU Service的关联关系;而通过内核态的Virtual GPU Driver截获GPU命令调用的情况下,第m前端虚拟机上有一个Virtual GPU Driver即可,上层的多个GPU应用程序的命令调用均会到达Virtual GPU Driver,Shmem Driver与一个Virtual GPU Driver交互就可以了,其中,第m前端虚拟机上的Virtual GPU Driver保存或维护各个GPU应用程序与VirtualGPU Service关联关系。
以及,需要说明的是,步骤(13a)-(18a)与步骤(13b)-(19b)是并列的两种情况,因为有些GPU命令是有返回值,有些GPU命令没有返回值,对于有返回值的情况,第n后端GPUDomain及时返回给第m前端VM。对于GPU命令执行后生成一帧图像的情况,第n后端GPUDomain及时抓取图像,并传给第m前端VM,进而传给桌面云***中的客户端设备进行显示。
由上可见,本发明实施例提供的方法中,第n后端GPU Domain与第m前端VM之间具有共享内存和相互绑定的事件通道,所述第m前端VM通过所述第m前端VM与第n后端GPUDomain之间的共享内存,以及通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道,将待传递的GPU命令传递给第n后端GPU Domain;所述第n后端GPU Domain利用物理主机中的一个或多个GPU对所述GPU命令进行处理,得到相应的处理结果数据;由于第n后端GPU Domain与第m前端VM具有共享内存和相互绑定的事件通道,且所述第n后端GPUDomain的操作***类型与所述第m前端VM的操作***类型相同,这样的话,第m前端VM传来的GPU命令就可以在相同操作***类型的第n后端GPU Domain上被直接执行,从而避免了进行不同GPU命令库的转换问题,进而避免了GPU命令库的转换所带来的额外开销、时延和稳定性问题,从而保证了GPU虚拟化***的性能;
以及,在基于GPU Domain的GPU虚拟化架构下,通过第m前端虚拟机和第n后端GPUDomain之间的共享内存进行GPU命令和处理结果数据的传输,来达到GPU命令和数据的高效传输,从而提升传输效率和提升GPU虚拟化效果。
实施例十:桌面云的应用场景
本实施例与实施例九的应用场景相同,主要的区别在于:实施例九采用第m前端VM与第n后端GPU Domain之间的共享内存进行GPU命令和数据的传输,而本实施例用网络进行GPU命令和数据传输。
图10是本发明实施例的另一种桌面云***架构示意图,如图10所示,该桌面云***包括客户端设备1001和物理主机1000,其中用户在客户端设备1001(例如,PC机、平板电脑、智能终端等)通过桌面协议连接和访问数据中心的物理主机1000,其中该物理主机1000上部署有第m前端VM、第n后端GPU Domain和Host OS。
本发明实施例的另一种GPU虚拟化的实现方法应用于如图10所示的桌面云***,该方法具体包括如下步骤:
虚拟机创建流程和前端虚拟机与后端GPU Domain间建立前后端服务通道的流程:
(1)GPU Domain Manager根据配置的GPU Domain创建策略创建一个或多个后端GPU Domain,并把每个后端GPU Domain的信息记录下来,例如:操作***类型、对应的物理GPU个数等;
(2)当前端虚拟机被启动后,GPU Domain Manager根据前端虚拟机的操作***类型和后端GPU Domain的负载情况,从创建的一个或多个后端GPU Domain中选择一个后端GPU Domain为其进行服务,并且把前端虚拟机和服务该前端虚拟机的后端GPU Domain的关联信息通知IVC Manager(注:IVC是Inter-VM Communication);
(3)第m前端虚拟机启动完成后,向IVC Manager请求为其提供服务的第n后端GPUDomain上的GPU Service Dispatcher的IP和Port号;
其中,第m前端虚拟机可以是通过配置管理库(即xenstore)向IVC Manager请求为其提供服务的第n后端GPU Domain上GPU Service Dispatcher的IP和Port号;
(4)IVC Manager根据前端虚拟机和后端GPU Domain的关联信息,从xenstore读取第n后端GPU Domain上的GPU Service Dispatcher的IP和Port号以及第m前端VM上的FakedGPU Library的IP和Port号,将对应的GPU Service Dispatcher的IP和Port号传递给第m前端VM,将对应的Faked GPU Library的IP和Port号传递给第n后端GPU Domain,使得第m前端VM与第n后端GPU Domain之间建立网络连接,从而第m前端VM与第n后端GPU Domain之间可以通过网络连接通信。
其中,前端虚拟机和后端GPU Domain的关联信息包括第m前端虚拟机和第n后端GPU Domain的关联信息。
数据处理流程:
(1)用户通过客户端设备1001打开第m前端VM上的图形应用(即GPU App),图形应用加载Faked GPU library;
(2)第m前端VM上的Faked GPU Library与第n后端GPU Domain上的GPU ServiceDispatcher通过各自的虚拟网卡(即VNIC)建立TCP连接;
(3)第m前端VM上的Faked GPU Library基于前述步骤(4)获取的IP地址和Port号通过该TCP连接发送图形应用启动消息给第n后端GPU Domain上的GPU ServiceDispatcher,以及发送Desktop Protocol的IP地址和端口Port号给第n后端GPU Domain上的GPU Service Dispatcher;
(4)第n后端GPU Domain上的GPU Service Dispatcher接收到图形应用启动消息,创建一个Virtual GPU Service,并把该Virtual GPU Service的IP地址和Port号通过该TCP连接返回给Faked GPU Library,并把收到的Desktop Protocol的IP地址和Port号传递给Virtual GPU Service,以及基于该Virtual GPU Service的IP地址和Port号以及Desktop Protocol的IP地址和Port号,第n后端GPU Domain上的Virtual GPU Service与第m前端VM上的Desktop Protocol之间建立网络连接(例如TCP连接);
(5)基于Faked GPU Library自己的IP和Port号以及该Virtual GPU Service的IP和Port号,第m前端VM上的Faked GPU Library与第n后端GPU Domain上的Virtual GPUService之间建立网络连接(例如TCP连接);
如图10所示,即第m前端VM上的VNIC与第n后端GPU Domain上的VNIC之间的网络连接。
(6)第m前端VM上的图形应用程序运行过程中,Faked GPU Library截获该图形应用程序调用的GPU命令,可选的还有调用的参数,其中截获的GPU命令和调用的参数被打包成数据包;
(7)Faked GPU Library判断是否需要对数据包进行压缩,如果需要,则对数据包进行压缩;
(8)在完成对数据包的压缩后,Faked GPU Library通过第m前端VM与第n后端GPUDomain之间的网络连接把数据包发送给前述IP地址和Port号对应的Virtual GPUService;
(9)Virtual GPU Service接收到数据包后,判断该数据包是否是被压缩过的,如果是压缩的,对该数据包进行解压缩,得到解压缩后的数据包,且从解压缩后的数据包中解析出GPU命令,可选的还有调用的参数;
(10)Virtual GPU Service把GPU命令下发给GPU library,进而由GPU library调用GPU Driver把GPU命令下发,最终由GPU完成对该GPU命令的处理;
如果该GPU命令没有返回值,那么这个命令就完成了;
如果这个GPU命令有返回值,那么:
(11a)Virtual GPU Service通过第m前端VM与第n后端GPU Domain之间的网络连接,把处理结果数据(即返回值)发送给前述IP地址和端口对应的Faked GPU Library;
(12a)Faked GPU Library接收到处理结果数据(即返回值)之后,判断处理结果数据(即返回值)是否是压缩过的,如果是压缩过的,对处理结果数据(即返回值)进行解压缩处理;
(13a)Faked GPU Library把处理结果数据(即返回值)返回给GPU应用程序;
如果步骤(10)中的GPU命令执行完后还生成一帧图像,则本实施例方法还包括:
(11b)、第n后端GPU Domain上的Virtual GPU Service进行图像抓取;
(12b)第n后端GPU Domain上的Virtual GPU Service对抓取的图像进行图像压缩;
(13b)在完成对图像的压缩后,第n后端GPU Domain上的Virtual GPU Service通过Virtual GPU Service与第m前端VM上的Desktop Protocol之间的网络连接把压缩后的图像数据发送给第m前端VM上的Desktop Protocol;
(14b)接收到图像数据后,Desktop Protocol最后把数据传给客户端设备1001进行显示。
需要说明的是,步骤(11a)-(13a)与步骤(11b)-(14b)是并列的两种情况,因为有些GPU命令是有返回值,有些GPU命令没有返回值,对于有返回值的情况,第n后端GPUDomain及时返回给第m前端VM。对于GPU命令执行后生成一帧图像的情况,第n后端GPUDomain及时抓取图像,并传给第m前端VM,进而传给桌面云***中的客户端设备进行显示。
由上可见,本发明实施例提供的方法中,第n后端GPU Domain与第m前端VM之间具有网络连接,所述第m前端VM通过第m前端VM与第n后端GPU Domain之间的网络连接,将待传递的GPU命令传递给第n后端GPU Domain;所述第n后端GPU Domain利用所述至少一个GPU中的一个或多个GPU对所述GPU命令进行处理,得到相应的处理结果数据;由于第n后端GPUDomain与第m前端VM之间具有网络连接,且所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同,这样的话,第m前端VM传来的GPU命令就可以在相同操作***类型的第n后端GPU Domain上被直接执行,从而避免了进行不同GPU命令库的转换问题,进而避免了GPU命令库的转换所带来的额外开销、时延和稳定性问题,从而保证了GPU虚拟化***的性能;
以及,在基于GPU Domain的GPU虚拟化架构下,通过第m前端VM与第n后端GPUDomain之间的网络连接进行GPU命令和处理结果数据的传输,来达到GPU命令和数据的高效传输,从而提升传输效率和提升GPU虚拟化效果。
实施例十一:通用计算的应用场景
图11是本发明实施例的另一种物理主机1100的架构示意图,图11与图9的主要区别在于:第m前端VM上的GPU应用是GPGPU(General purpose GPU,通用图形处理器)应用,换言之,GPGPU用作计算处理器,像CPU一样来处理计算任务。
对于GPGPU的应用场景下,虚拟机创建流程和数据处理流程参考图9所示的实施例的描述,此处不再赘述。不同的地方在于:本实施例中,由于GPGPU用作计算处理器,所以不涉及图像渲染以及抓取、压缩和回传图像。在第n后端GPU Domain上的Virtual GPUService用于处理第m前端虚拟机传过来的GPU命令以及返回对GPU命令执行后的处理结果数据(即计算结果)。
为便于更好的理解和实施本发明实施例的上述方法,下面还提供用于实施上述方法的相关装置和集群***。
实施例十二:
参见图12,本发明实施例提供一种GPU Domain的管理装置1200,可包括:
GPU Domain管理模块1210,用于当第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,确定具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;
虚拟机间通信IVC管理模块1220,用于基于所述第m前端VM与所述第n后端GPUDomain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
其中,如果分别向第m前端VM与所述第n后端GPU Domain传递的对方的通信信息为共享内存设备标识,相应地,所述第m前端VM与第n后端GPU Domain之间建立的前后端服务通道为第m前端VM与第n后端GPU Domain之间相互绑定的事件通道;
如果分别向第m前端VM与所述第n后端GPU Domain传递的对方的通信信息为网络地址信息,例如IP地址和端口号,相应地,所述第m前端VM与第n后端GPU Domain之间建立的前后端服务通道为第m前端VM与第n后端GPU Domain之间的网络连接。
应当理解的是,本发明实施例中,虚拟机间通信IVC管理模块1220还用于管理或记录M个前端VM与N个后端GPU Domain之间的关联关系,其中,M个前端VM与N个后端GPUDomain之间的关联关系包括所述第m前端VM与所述第n后端GPU Domain之间的关联关系。以及,当所述第m前端VM退出时,虚拟机间通信IVC管理模块1220还用于删除所述第m前端VM与第n后端GPU Domain的关联关系。
可以理解的是,本实施例GPU Domain的管理装置1200可如上述方法实施例中的部署在物理主机中的Host OS,具体可以对应于图9至图11中的GPU Domain Manager。其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
由上可见,本发明实施例的管理GPU Domain装置中,当物理主机上的第m前端VM被启动后,根据所述启动的第m前端VM的操作***类型,确定服务于第m前端VM的第n后端GPUDomain,这样的话,第m前端VM与第n后端GPUDomain之间的关联关系就自然形成了,基于第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPUDomain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道,进而由于第n后端GPU Domain与第m前端VM之间具有前后端服务通道,且所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同,这样的话,第m前端VM传来的GPU命令就可以在相同操作***类型的第n后端GPU Domain上被直接执行,从而避免了进行不同GPU命令库的转换问题,进而避免了GPU命令库的转换所带来的额外开销、时延和稳定性问题,从而保证了GPU虚拟化***的性能。
实施例十三:
参见图13,本发明实施例提供另一种GPU Domain的管理装置1300,可包括:
GPU Domain管理模块1310,用于根据配置的GPU Domain创建策略,创建N个后端GPU Domain,其中所述N个后端GPU Domain具有多种类型的操作***,所述GPU Domain创建策略包括:GPU Domain的个数、直通给GPU Domain的GPU个数、GPU Domain的操作***类型中的一个或多个;以及,当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,从所述创建的N个后端GPU Domain中选择具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;
虚拟机间通信IVC管理模块1320,用于基于所述第m前端VM与所述第n后端GPUDomain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
在一种实现方式下,如果分别向第m前端VM与所述第n后端GPU Domain传递的对方的通信信息为共享内存设备标识,
相应地,虚拟机间通信IVC管理模块1320具体用于基于所述第m前端VM与所述第n后端GPU Domain的关联关系,将对应的第n后端GPU Domain的共享内存设备标识传递给所述第m前端VM,将对应的第m前端VM的共享内存设备标识传递给所述第n后端GPU Domain,使得基于第n后端GPU Domain的共享内存设备标识和第m前端VM的共享内存设备标识,所述第m前端VM与第n后端GPU Domain之间进行事件通道的绑定。
在另一种实现方式下,如果分别向第m前端VM与所述第n后端GPU Domain传递的对方的通信信息为网络地址信息(例如IP地址和端口号),
相应地,虚拟机间通信IVC管理模块1320具体用于基于所述第m前端VM与所述第n后端GPU Domain的关联关系,将对应的第n后端GPU Domain的网络地址信息传递给所述第m前端VM,将对应的第m前端VM的网络地址信息传递给所述第n后端GPU Domain,使得基于第n后端GPU Domain的网络地址信息和第m前端VM的网络地址信息,第m前端VM与第n后端GPUDomain之间进行网络连接的建立。
由上可见,通过本发明实施例的管理GPU Domain的方法,当物理主机上的第m前端VM被启动后,根据所述启动的第m前端VM的操作***类型,从创建的N个后端GPU Domain中选择具有对应类型的操作***的第n后端GPU Domain,这样的话,第m前端VM与第n后端GPUDomain之间的关联关系就自然形成了,基于第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPUDomain之间建立前后端服务通道,进而由于第n后端GPU Domain与第m前端VM之间具有前后端服务通道,且所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同,这样的话,第m前端VM传来的GPU命令就可以在相同操作***类型的第n后端GPUDomain上被直接执行,从而避免了进行不同GPU命令库的转换问题,进而避免了GPU命令库的转换所带来的额外开销、时延和稳定性问题,从而保证了GPU虚拟化***的性能。
实施例十四:
参见图14,本发明实施例提供再一种GPU Domain的管理装置1400,可包括:
GPU Domain管理模块1410用于当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,创建具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;
虚拟机间通信IVC管理模块1420,用于基于所述第m前端VM与所述第n后端GPUDomain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
在一种实现方式下,如果分别向第m前端VM与所述第n后端GPU Domain传递的对方的通信信息为共享内存设备标识,
相应地,虚拟机间通信IVC管理模块1420具体用于基于所述第m前端VM与所述第n后端GPU Domain的关联关系,将对应的第n后端GPU Domain的共享内存设备标识传递给所述第m前端VM,将对应的第m前端VM的共享内存设备标识传递给所述第n后端GPU Domain,使得基于第n后端GPU Domain的共享内存设备标识和第m前端VM的共享内存设备标识,所述第m前端VM与第n后端GPU Domain之间进行事件通道的绑定。
在另一种实现方式下,如果分别向第m前端VM与所述第n后端GPU Domain传递的对方的通信信息为网络地址信息(例如IP地址和端口号),
相应地,虚拟机间通信IVC管理模块1420具体用于基于所述第m前端VM与所述第n后端GPU Domain的关联关系,将对应的第n后端GPU Domain的网络地址信息传递给所述第m前端VM,将对应的第m前端VM的网络地址信息传递给所述第n后端GPU Domain,使得基于第n后端GPU Domain的网络地址信息和第m前端VM的网络地址信息,第m前端VM与第n后端GPUDomain之间进行网络连接的建立。
由上可见,通过本发明实施例的管理GPU Domain的方法,当物理主机上的第m前端VM被启动后,根据所述启动的第m前端VM的操作***类型,创建具有对应类型的操作***的第n后端GPU Domain,这样的话,第m前端VM与第n后端GPUDomain之间的关联关系就自然形成了,基于第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPUDomain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道,进而由于第n后端GPU Domain与第m前端VM之间具有前后端服务通道,且所述第n后端GPUDomain的操作***类型与所述第m前端VM的操作***类型相同,这样的话,第m前端VM传来的GPU命令就可以在相同操作***类型的第n后端GPU Domain上被直接执行,从而避免了进行不同GPU命令库的转换问题,进而避免了GPU命令库的转换所带来的额外开销、时延和稳定性问题,从而保证了GPU虚拟化***的性能。
实施例十五
参见图15,本发明实施例还提供一种物理主机,该物理主机1500包括:处理器1501、存储器1505和通信总线1502。通信总线1502用于实现这些组件之间的连接通信。该物理主机1500可选的包含网络接口1504或者其他用户接口1503,其中处理器1501可以包括中央处理器CPU和图像处理器GPU,CPU和GPU的数量可以是一个或多个;
存储器1505可以包括只读存储器和随机存取存储器,并向处理器1501提供指令和数据。存储器1505的一部分还可以包括非易失性随机存取存储器(NVRAM),或者非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1505的另一部分还可以作为前端虚拟机与对应的后端GPU Domain之间的共享内存。
存储器1505存储了如下的元素,可执行模块或者数据结构,或者它们的子集,或者它们的扩展集:
操作指令:包括各种操作指令,用于实现各种操作。
操作***:包括各种***程序,用于实现各种基础业务以及处理基于硬件的任务。
在本实施例中,存储器1505中至少存储有用于实现宿主机15051(包括Host OS)、M个前端虚拟机15052和N个后端GPU Domain15053的操作指令或代码,以及存储器1505中的操作指令或代码还定义了:所述N个后端GPU Domain与所述M个前端VM之间分别具有对应的前后端服务通道,其中所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间具有前后端服务通道,所述N为大于或等于1的正整数,所述M为大于或等于1的正整数,M大于或等于N,所述n为小于或等于N的正整数,所述m为小于或等于M的正整数;其中,所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同;
在本发明实施例中,处理器1501中的中央处理器通过调用存储器1505存储的操作指令,用于执行如下操作:
基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将所述第m前端VM的待传递的GPU命令传递给第n后端GPUDomain;并利用GPU对传递给第n后端GPU Domain的GPU命令进行处理,得到相应的处理结果数据。
如果GPU命令有返回值或者有待回传的数据(例如待回传的图像数据或计算结果数据),则处理器1501中的中央处理器通过调用存储器1505存储的操作指令,还用于执行如下操作:
基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将相应的处理结果数据从所述第n后端GPU Domain传递给所述第m前端VM。
应当理解的是,在物理主机的运行阶段(即GPU命令和数据处理阶段)之前,处理器1501中的中央处理器通过调用存储器1505存储的操作指令,还用于执行如下操作:建立所述N个后端GPU Domain与所述M个前端VM之间的前后端服务通道,所述N个后端GPU Domain与所述M个前端VM之间的前后端服务通道包括:所述N个后端GPU Domain中的第n后端GPUDomain与所述M个前端VM中的第m前端VM之间的前后端服务通道。
在建立所述N个后端GPU Domain与所述M个前端VM之间的前后端服务通道的方面,处理器1501中的中央处理器具体用于当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,确定具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;基于所述第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
在一种更具体的实现方式下,在建立所述N个后端GPU Domain与所述M个前端VM之间的前后端服务通道的方面,处理器1501中的中央处理器具体用于根据配置的GPU Domain创建策略,创建N个后端GPU Domain,其中所述N个后端GPU Domain具有多种类型的操作***,所述GPU Domain创建策略包括:GPU Domain的个数、直通给GPU Domain的GPU个数、GPUDomain的操作***类型中的一个或多个;当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,从所述创建的N个后端GPU Domain中选择具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;基于所述第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
在另一种更具体的实现方式下,在建立所述N个后端GPU Domain与所述M个前端VM之间的前后端服务通道的方面,处理器1501中的中央处理器具体用于当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,创建具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;基于所述第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
应当理解的是,处理器1501中的中央处理器还用于管理或记录所述第m前端VM与所述第n后端GPU Domain的关联关系;当所述第m前端VM退出时,删除所述第m前端VM与第n后端GPU Domain的关联关系。
(一)如果上述通信信息为共享内存设备标识,则在所述第m前端VM与第n后端GPUDomain之间建立前后端服务通道的方面,处理器1501中的中央处理器具体用于基于所述第m前端VM的共享内存设备标识和第n后端GPU Domain的共享内存设备标识,进行第m前端VM与第n后端GPU Domain之间的事件通道的绑定。
相应地,在基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将第m前端VM待传递的GPU命令传递给第n后端GPU Domain;利用GPU对传递给所述第n后端GPU Domain的GPU命令进行处理,得到相应的处理结果数据的方面,处理器1501中的中央处理器具体用于:将所述第m前端VM待传递的GPU命令写入所述第m前端VM与第n后端GPU Domain之间的共享内存;通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道向所述第n后端GPU Domain发送第m前端事件通知,所述第m前端事件通知用于表示待传递的GPU命令在所述共享内存中的位置信息;根据所述第n后端GPU Domain收到的第m前端事件通知从所述第m前端VM与第n后端GPUDomain之间的共享内存的相应地址空间中读取出传递给所述第n后端GPU Domain的GPU命令;并利用直通给所述第n后端GPU Domain的一个或多个所述GPU对读取出的所述GPU命令进行处理,得到相应的处理结果数据。
进一步的,处理器1501中的中央处理器通过调用存储器1505存储的操作指令,还用于执行如下操作:
通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道向所述第m前端VM发送第n后端事件通知,所述第n后端事件通知用于表示所述第n后端GPU Domain已读取出数据;根据所述第m前端VM收到的第n后端事件通知释放已被所述第n后端GPUDomain读取的数据所占用的内存空间。
在基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将相应的处理结果数据从所述第n后端GPU Domain传递给所述第m前端VM的方面,处理器1501中的中央处理器具体用于:将所述第n后端GPU Domain待传递的所述处理结果数据写入所述第m前端VM与第n后端GPU Domain之间的共享内存;通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道向所述第m前端VM发送第n后端事件通知,所述第n后端事件通知用于表示所述第n后端GPU Domain待传递的所述处理结果数据在所述共享内存中的位置信息;根据所述第m前端VM收到的第n后端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述处理结果数据。
进一步的,处理器1501中的中央处理器通过调用存储器1505存储的操作指令,还用于执行如下操作:通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道向所述第n后端GPU Domain发送第m前端事件通知,所述第m前端事件通知用于表示所述第m前端VM已读取出数据;根据所述第n后端GPU Domain收到的所述第m前端事件通知释放已被所述第m前端VM读取的数据所占用的内存空间。
在一种较优的实现方式下,所述第m前端VM与第n后端GPU Domain之间的共享内存包括:前向后传输共享内存和后向前传输共享内存,其中所述第m前端VM对所述前向后传输共享内存具有读写权限,所述第n后端GPU Domain对所述前向后传输共享内存具有只读权限,在基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将第m前端VM待传递的GPU命令传递给第n后端GPU Domain;利用GPU对传递给所述第n后端GPU Domain的GPU命令进行处理,得到相应的处理结果数据的方面,处理器1501中的中央处理器具体用于:将所述第m前端VM待传递的GPU命令写入前向后传输共享内存;通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道向所述第n后端GPU Domain发送第m前端事件通知,所述第m前端事件通知用于表示待传递的GPU命令在所述前向后传输共享内存中的位置信息;根据所述第n后端GPU Domain收到的第m前端事件通知从所述前向后传输共享内存的相应地址空间中读取出传递给所述第n后端GPU Domain的GPU命令;并利用直通给所述第n后端GPU Domain的一个或多个所述GPU对读取出的所述GPU命令进行处理,得到相应的处理结果数据;其中所述第m前端VM对所述前向后传输共享内存具有读写权限,所述第n后端GPU Domain对所述前向后传输共享内存具有只读权限;
或者,
在一种较优的实现方式下,所述第m前端VM与第n后端GPU Domain之间的共享内存包括:前向后传输共享内存和后向前传输共享内存,其中所述第n后端GPU Domain对所述后向前传输共享内存具有读写权限,所述第m前端VM对所述后向前传输共享内存具有只读权限,在基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将相应的处理结果数据从所述第n后端GPU Domain传递给所述第m前端VM的方面,处理器1501中的中央处理器具体用于:将所述第n后端GPU Domain待传递的所述处理结果数据写入后向前传输共享内存;通过所述第m前端VM与所述第n后端GPUDomain之间相互绑定的事件通道向所述第m前端VM发送第n后端事件通知,所述第n后端事件通知用于表示所述第n后端GPU Domain待传递的所述处理结果数据在所述后向前传输共享内存中的位置信息;根据所述第m前端VM收到的第n后端事件通知从所述后向前传输共享内存的相应地址空间中读取出所述处理结果数据,其中所述第n后端GPU Domain对所述后向前传输共享内存具有读写权限,所述第m前端VM对所述后向前传输共享内存具有只读权限。
(二)如果上述通信信息为网络地址信息,则在所述第m前端VM与第n后端GPUDomain之间建立前后端服务通道的方面,处理器1501中的中央处理器具体用于基于所述第m前端VM的网络地址信息和第n后端GPU Domain的网络地址信息,建立第m前端VM与第n后端GPU Domain之间的网络连接。
相应地,在基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将第m前端VM待传递的GPU命令传递给第n后端GPU Domain;利用GPU对传递给所述第n后端GPU Domain的GPU命令进行处理,得到相应的处理结果数据的方面,处理器1501中的中央处理器具体用于:通过第m前端VM与第n后端GPUDomain之间的网络连接,将所述第m前端VM待传递的GPU命令向第n后端GPU Domain发送;并利用GPU对第n后端GPU Domain收到的GPU命令进行处理,得到相应的处理结果数据。
相应地,在基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将相应的处理结果数据从所述第n后端GPUDomain传递给所述第m前端VM的方面,处理器1501中的中央处理器具体用于:通过第m前端VM与第n后端GPU Domain之间的网络连接,向第m前端VM发送所述第n后端GPU Domain待传递的所述处理结果数据。
(三)压缩策略控制:在一种较优的实现方式下,在基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将第m前端VM待传递的GPU命令传递给第n后端GPU Domain;利用GPU对传递给所述第n后端GPU Domain的GPU命令进行处理,得到相应的处理结果数据的方面,处理器1501中的中央处理器具体用于:根据第m前端VM待传递的GPU命令的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间确定对所述GPU命令进行压缩,将第m前端VM待传递的GPU命令进行压缩后,基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将压缩后的GPU命令传递给第n后端GPU Domain;在确定传递给所述第n后端GPU Domain的GPU命令被压缩过后,对传递给所述第n后端GPUDomain的GPU命令进行解压,并利用直通给所述第n后端GPU Domain的一个或多个GPU对解压后的GPU命令进行处理,得到相应的处理结果数据。
相应地,在基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将相应的处理结果数据从所述第n后端GPUDomain传递给所述第m前端VM的方面,处理器1501中的中央处理器具体用于:根据所述第n后端GPU Domain待传递的处理结果数据的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间确定对所述处理结果数据进行压缩;将所述第n后端GPU Domain待传递的处理结果数据进行压缩之后,将压缩后的处理结果数据传递给所述第m前端VM。
其中,第n后端GPU Domain与第m前端VM之间的前后端服务通道可以是对应于第m前端VM与第n后端GPU Domain之间相互绑定的事件通道,或者,第n后端GPU Domain与第m前端VM之间的前后端服务通道可以是对应于第m前端VM与第n后端GPU Domain之间的网络连接,包括但不限于此。
在一种具体的实现方式下,在根据待传递的GPU命令或处理结果数据的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间确定对所述GPU命令或处理结果数据进行压缩的方面,处理器1501中的中央处理器具体用于:
当待传递的GPU命令的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间时,确定对待传递的GPU命令进行压缩;或者,
当待传递的GPU命令的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间与调节值的和值时,确定对待传递的GPU命令进行压缩;或者,
当待传递的处理结果数据的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间时,确定对待传递的处理结果数据进行压缩;或者,
当待传递的处理结果数据的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间与调节值的和值时,确定对待传递的处理结果数据进行压缩。
可以理解的是,本实施例的物理主机的实现细节可以参考上述装置和方法实施例的相关描述,此处不再赘述。
综上所述,本发明实施例提供的物理主机中,所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM具有前后端服务通道,基于第n后端GPUDomain与第m前端VM之间的前后端服务通道,将第m前端VM待传递的GPU命令传递给第n后端GPU Domain;利用物理主机中的一个或多个GPU对传递给所述第n后端GPU Domain的GPU命令进行处理,得到相应的处理结果数据;可见,本发明实施例通过引入专门的N个后端GPUDomain来向M个前端VM提供GPU虚拟化能力与服务,在N个后端GPU Domain为M个前端VM提供GPU虚拟化能力与服务的前提下,N个后端GPU Domain的操作***类型是可以根据M个前端VM的操作***类型灵活配置的,例如可以是一个后端GPU Domain对应服务于一个或多个同类型OS的前端VM,也可以是不同类型OS的后端GPU Domain分别服务于不同类型OS的前端VM。由于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM具有前后端服务通道,且所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同,这样的话,第m前端VM传来的GPU命令就可以在相同操作***类型的第n后端GPU Domain上被直接执行,从而避免了进行不同GPU命令库的转换问题,进而避免了GPU命令库的转换所带来的额外开销、时延和稳定性问题,从而保证了GPU虚拟化***的性能;
以及,本发明实施例中,由于引入专门的N个后端GPU Domain为M个前端VM提供GPU虚拟化能力与服务,也避免了现有技术中由宿主机操作***Host OS负责GPU虚拟化过程中,因Host OS易成为GPU虚拟化性能瓶颈而影响GPU虚拟化***的性能和GPU虚拟化场景下的虚拟机密度受限的情况,从而也保证了GPU虚拟化***的性能,提高了GPU虚拟化的密度和可扩展性。
以及,本发明实施例中,通过第n后端GPU Domain与第m前端VM之间的共享内存或网络连接,降低了GPU命令和数据的传输时延,提升了传输效率,从而提升GPU虚拟化的效果;
以及,本发明实施例中,通过压缩策略控制,达到对GPU命令和数据的有效压缩,明显减少数据传输量,进一步提升传输效率和提升GPU虚拟化效果。
实施例十六
参见图16,本发明实施例还提供一种集群***,可包括:
至少一个物理主机1601。
可选的,本发明实施例的集群***还包括与至少一个物理主机1601上的至少一个前端虚拟机分别具有通信连接的至少一个客户端设备1602,所述客户端设备1602用于对对应的前端虚拟机传递过来的数据(例如图像数据或计算结果数据)进行显示。
可以理解的是,本实施例的集群***中的物理主机的功能和/或结构可以参考上述装置和方法实施例的相关描述,此处不再赘述。
以及,需要说明的是,前述实施例中提到的物理主机,亦可称为物理服务器或计算机节点,前述实施例中提到的客户端设备可以是用户终端设备,例如,平板电脑、智能终端等等;以及第n后端GPU Domain、第m前端VM是为了方便描述本发明实施例而引出的代表,应当理解的是,前述介绍的实施例均适用于物理主机上的N个后端GPU域GPU Domain和M个前端虚拟机VM。
综上所述,本发明实施例提供的集群***中,每个物理主机中的所述N个后端GPUDomain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM具有前后端服务通道,所述第m前端VM基于第n后端GPU Domain与第m前端VM之间的前后端服务通道,将待传递的GPU命令传递给第n后端GPU Domain;所述第n后端GPU Domain利用物理主机中的一个或多个GPU对所述GPU命令进行处理,得到相应的处理结果数据;可见,本发明实施例通过引入专门的N个后端GPU Domain来向M个前端VM提供GPU虚拟化能力与服务,在N个后端GPU Domain为M个前端VM提供GPU虚拟化能力与服务的前提下,N个后端GPU Domain的操作***类型是可以根据M个前端VM的操作***类型灵活配置的,例如可以是一个后端GPU Domain对应服务于一个或多个同类型OS的前端VM,也可以是不同类型OS的后端GPU Domain分别服务于不同类型OS的前端VM。由于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM具有前后端服务通道,且所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同,这样的话,第m前端VM传来的GPU命令就可以在相同操作***类型的第n后端GPU Domain上被直接执行,从而避免了进行不同GPU命令库的转换问题,进而避免了GPU命令库的转换所带来的额外开销、时延和稳定性问题,从而保证了GPU虚拟化***的性能;
以及,本发明实施例中,由于引入专门的N个后端GPU Domain为M个前端VM提供GPU虚拟化能力与服务,也避免了现有技术中由宿主机操作***Host OS负责GPU虚拟化过程中,因Host OS易成为GPU虚拟化性能瓶颈而影响GPU虚拟化***的性能和GPU虚拟化场景下的虚拟机密度受限的情况,从而也保证了GPU虚拟化***的性能,提高了GPU虚拟化的密度和可扩展性。
以及,本发明实施例中,通过第n后端GPU Domain与第m前端VM之间的共享内存或网络连接,降低了GPU命令和数据的传输时延,提升了传输效率,从而提升GPU虚拟化的效果;
以及,本发明实施例中,通过压缩策略控制,达到对GPU命令和数据的有效压缩,明显减少数据传输量,进一步提升传输效率和提升GPU虚拟化效果。
实施例十七
参见图17,本发明实施例还提供一种图形处理器GPU虚拟化的实现方法,该方法的执行主体可以是物理主机中的处理器,尤其是物理主机中的中央处理器CPU或者其他能控制软件的处理器,本实施例中以物理主机中的CPU作为执行主体举例说明,应当理解的是,物理主机中的CPU能控制实现前端VM与后端GPU Domain之间的信息传递,所述方法可以包括:
S1701、基于物理主机中的N个后端图形处理器域GPU Domain中的第n后端GPUDomain与所述物理主机中的M个前端虚拟机VM中的第m前端VM之间的前后端服务通道,物理主机中的CPU(后文简称为CPU)将所述第m前端VM待传递的GPU命令传递给第n后端GPUDomain,所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同,所述N为大于或等于1的正整数,所述M为大于或等于1的正整数,M大于或等于N,所述n为小于或等于N的正整数,所述m为小于或等于M的正整数;
S1702、CPU利用物理主机中的一个或多个GPU对所述第n后端GPU Domain得到的GPU命令进行处理,得到相应的处理结果数据。
如果GPU命令有返回值或者有待回传的数据(例如待回传的图像数据或计算结果数据),所述方法还可以包括:
S1703、CPU基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将相应的所述处理结果数据从所述第n后端GPUDomain传递给所述第m前端VM。
其中,所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道可以是通过如下方法建立的:
当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,确定具有对应类型的操作***的第n后端GPU Domain,其中第m前端VM与所述第n后端GPU Domain之间具有关联关系;
基于所述第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
在一种更具体的实现方式下,所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道可以是通过如下方法建立的:
根据配置的GPU Domain创建策略,创建N个后端GPU Domain,其中所述N个后端GPUDomain具有多种类型的操作***,所述GPU Domain创建策略包括:GPU Domain的个数、直通给GPU Domain的GPU个数、GPU Domain的操作***类型中的一个或多个;
当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,从所述创建的N个后端GPU Domain中选择具有对应类型的操作***的第n后端GPUDomain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;
基于所述第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
在另一种更具体的实现方式下,所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道可以是通过如下方法建立的:
当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,创建具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;
基于所述第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
(一)如果上述通信信息为共享内存设备标识,则所述第m前端VM与第n后端GPUDomain之间建立前后端服务通道,包括:
CPU基于所述第m前端VM的共享内存设备标识和第n后端GPU Domain的共享内存设备标识,进行第m前端VM与第n后端GPU Domain之间的事件通道的绑定。
相应地,S1701可以包括:
CPU将所述第m前端VM待传递的GPU命令写入所述第m前端VM与第n后端GPU Domain之间的共享内存;
CPU通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道将所述第m前端VM的第m前端事件通知向所述第n后端GPU Domain发送,所述第m前端事件通知用于表示待传递的GPU命令在所述共享内存中的位置信息;
相应地,S1702可以包括:
CPU根据所述第n后端GPU Domain收到的所述第m前端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述GPU命令;
CPU利用物理主机中直通给第n后端GPU Domain的一个或多个GPU对读取出的所述GPU命令进行处理,得到相应的处理结果数据。
进一步的,所述方法还包括:
CPU通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道将所述第n后端GPU Domain的第n后端事件通知向所述第m前端VM发送,所述第n后端事件通知用于表示数据读取完成;
CPU根据所述第m前端VM收到的所述第n后端事件通知释放已被所述第n后端GPUDomain读取的数据所占用的内存空间。
其中,如果所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的L个前端VM之间具有一对多的前后端服务通道,所述L个前端VM具有与所述第n后端GPUDomain的操作***类型相同的操作***,所述L个前端VM包括第m前端VM,L为大于1且小于或等于M的正整数;
所述第n后端GPU Domain与所述L个前端VM中的每个前端VM之间分别具有对应的事件通道。
相应地,S1703可以包括:
CPU将所述第n后端GPU Domain待传递的所述处理结果数据写入所述第m前端VM与第n后端GPU Domain之间的共享内存;
CPU通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道,将所述第n后端GPU Domain的第n后端事件通知向所述第m前端VM发送,所述第n后端事件通知用于表示待传递的所述处理结果数据在所述共享内存中的位置信息;
CPU根据所述第m前端VM收到的所述第n后端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述处理结果数据。
进一步的,所述方法还包括:
CPU通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道,将所述第m前端VM的第m前端事件通知向所述第n后端GPU Domain发送,所述第m前端事件通知用于表示数据读取完成;
CPU根据所述第n后端GPU Domain收到的所述第m前端事件通知释放已被所述第m前端VM读取的数据所占用的内存空间。
在一种较优的实现方式下,所述第m前端VM与第n后端GPU Domain之间的共享内存包括:前向后传输共享内存和后向前传输共享内存,其中所述第m前端VM对所述前向后传输共享内存具有读写权限,所述第n后端GPU Domain对所述前向后传输共享内存具有只读权限,
所述CPU将所述第m前端VM待传递的GPU命令写入所述第m前端VM与第n后端GPUDomain之间的共享内存包括:CPU将所述第m前端VM待传递的GPU命令写入前向后传输共享内存;
相应的,所述CPU根据所述第n后端GPU Domain收到的所述第m前端事件通知从所述共享内存的相应地址空间中读取出所述GPU命令包括:CPU根据所述第n后端GPU Domain收到的所述第m前端事件通知从所述前向后传输共享内存的相应地址空间中读取出所述GPU命令,所述第m前端事件通知用于表示待传递的GPU命令在所述前向后传输共享内存中的位置信息;
或者,
在一种较优的实现方式下,所述第m前端VM与第n后端GPU Domain之间的共享内存包括:前向后传输共享内存和后向前传输共享内存,其中所述第n后端GPU Domain对所述后向前传输共享内存具有读写权限,所述第m前端VM对所述后向前传输共享内存具有只读权限,
所述CPU将所述第n后端GPU Domain待传递的所述处理结果数据写入所述第m前端VM与第n后端GPU Domain之间的共享内存包括:CPU将所述第n后端GPU Domain待传递的所述处理结果数据写入后向前传输共享内存;
相应的,所述CPU根据所述第m前端VM收到的所述第n后端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述处理结果数据包括:CPU根据所述第m前端VM收到的所述第n后端事件通知从所述后向前传输共享内存的相应地址空间中读取出所述处理结果数据,所述第n后端事件通知用于表示待传递的所述处理结果数据在所述后向前传输共享内存中的位置信息。
(二)如果上述通信信息为网络地址信息,则所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道,包括:
CPU基于所述第m前端VM的网络地址信息和第n后端GPU Domain的网络地址信息,建立第m前端VM与第n后端GPU Domain之间的网络连接。
相应地,S1701可以包括:
CPU通过第m前端VM与第n后端GPU Domain之间的网络连接,向第n后端GPU Domain发送所述第m前端VM待传递的GPU命令。
相应地,S1703可以包括:
CPU通过第m前端VM与第n后端GPU Domain之间的网络连接,向第m前端VM发送所述第n后端GPU Domain待传递的所述处理结果数据。
(三)压缩策略控制:
所述方法还包括:CPU根据GPU命令的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述GPU命令进行压缩;
S1701中的CPU将所述第m前端VM待传递的GPU命令传递给第n后端GPU Domain,包括:CPU将所述第m前端VM待传递的GPU命令进行压缩,并将压缩后的GPU命令传递给第n后端GPU Domain;
所述方法还包括:CPU判断出传递给所述第n后端GPU Domain的GPU命令被压缩过;
相应地,S1702可以包括:CPU对传递给所述第n后端GPU Domain的压缩后的GPU命令进行解压,并利用所述物理主机中直通给所述第n后端GPU Domain的一个或多个GPU对解压后的GPU命令进行处理,得到相应的处理结果数据;
如果有返回值或者回传的图像数据,则所述方法还包括:
CPU根据所述处理结果数据的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述处理结果数据进行压缩;
相应地,S1703中的CPU将所述第n后端GPU Domain待传递的所述处理结果数据传递给所述第m前端VM,包括:CPU将所述第n后端GPU Domain待传递的所述处理结果数据进行压缩,并将压缩后的处理结果数据传递给所述第m前端VM。
在一种实现方式下,所述CPU根据GPU命令的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述GPU命令进行压缩,包括:
当GPU命令的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间时,CPU判断出对所述GPU命令进行压缩;或者,
当GPU命令的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间与调节值的和值时,CPU判断出对所述GPU命令进行压缩;
或者,所述CPU根据处理结果数据的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述处理结果数据进行压缩,包括:
当处理结果数据的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间时,CPU判断出对所述处理结果数据进行压缩;或者,
当处理结果数据的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间与调节值的和值时,CPU判断出对所述处理结果数据进行压缩。
综上所述,本发明实施例提供的GPU虚拟化的实现方法中,每个物理主机中的所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM具有前后端服务通道,所述第m前端VM基于第n后端GPU Domain与第m前端VM之间的前后端服务通道,将待传递的GPU命令传递给第n后端GPU Domain;所述第n后端GPU Domain利用物理主机中的一个或多个GPU对所述GPU命令进行处理,得到相应的处理结果数据;可见,本发明实施例通过引入专门的N个后端GPU Domain来向M个前端VM提供GPU虚拟化能力与服务,在N个后端GPU Domain为M个前端VM提供GPU虚拟化能力与服务的前提下,N个后端GPU Domain的操作***类型是可以根据M个前端VM的操作***类型灵活配置的,例如可以是一个后端GPUDomain对应服务于一个或多个同类型OS的前端VM,也可以是不同类型OS的后端GPU Domain分别服务于不同类型OS的前端VM。由于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM具有前后端服务通道,且所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同,这样的话,第m前端VM传来的GPU命令就可以在相同操作***类型的第n后端GPU Domain上被直接执行,从而避免了进行不同GPU命令库的转换问题,进而避免了GPU命令库的转换所带来的额外开销、时延和稳定性问题,从而保证了GPU虚拟化***的性能;
以及,本发明实施例中,由于引入专门的N个后端GPU Domain为M个前端VM提供GPU虚拟化能力与服务,也避免了现有技术中由宿主机操作***Host OS负责GPU虚拟化过程中,因Host OS易成为GPU虚拟化性能瓶颈而影响GPU虚拟化***的性能和GPU虚拟化场景下的虚拟机密度受限的情况,从而也保证了GPU虚拟化***的性能,提高了GPU虚拟化的密度和可扩展性。
以及,本发明实施例中,通过第n后端GPU Domain与第m前端VM之间的共享内存或网络连接,降低了GPU命令和数据的传输时延,提升了传输效率,从而提升GPU虚拟化的效果;
以及,本发明实施例中,通过压缩策略控制,达到对GPU命令和数据的有效压缩,明显减少数据传输量,进一步提升传输效率和提升GPU虚拟化效果。
需要说明的是,前述实施例描述中所采用的第一、第二、第三的说法,没有限定顺序的意思,仅为方便区分。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件(例如与内存连接的处理器)来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机存储器、磁盘或光盘等。
以上对本发明实施例所提供的虚拟化处理方法及相关装置和计算机***进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。

Claims (51)

1.一种图形处理器GPU虚拟化的实现方法,其特征在于,应用于物理主机,所述物理主机包括:包括GPU的硬件层、运行在所述硬件层之上的宿主机Host、运行在所述Host之上的宿主机操作***Host OS以及运行在所述Host之上的N个后端GPU域GPU Domain和M个前端虚拟机VM,所述N个后端GPU Domain与所述M个前端VM之间分别具有对应的前后端服务通道,所述N为大于或等于1的正整数,所述M为大于或等于1的正整数,M大于或等于N,M大于或等于N,所述n为小于或等于N的正整数,所述m为小于或等于M的正整数,所述方法包括:
所述Host OS根据配置的GPU Domain创建策略,创建N个后端GPU Domain,其中所述N个后端GPU Domain具有多种类型的操作***,所述GPU Domain创建策略包括:GPU Domain的个数、直通给GPU Domain的GPU个数、GPU Domain的操作***类型中的一个或多个;
当所述M个前端VM中第m前端VM被启动时,所述Host OS根据所述启动的第m前端VM的操作***类型,从所述创建的N个后端GPU Domain中选择具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;
所述Host OS基于所述第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道;
基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,所述第m前端VM将待传递的GPU命令传递给第n后端GPU Domain,所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同;
所述第n后端GPU Domain利用一个或多个所述GPU对传递过来的所述GPU命令进行处理,得到相应的处理结果数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,所述第n后端GPU Domain将相应的所述处理结果数据传递给所述第m前端VM。
3.根据权利要求1所述的方法,其特征在于,如果所述通信信息为共享内存设备标识,则所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道,包括:
基于所述第m前端VM的共享内存设备标识和第n后端GPU Domain的共享内存设备标识,进行第m前端VM与第n后端GPU Domain之间的事件通道的绑定。
4.根据权利要求3所述的方法,其特征在于,所述基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,所述第m前端VM将待传递的GPU命令传递给第n后端GPU Domain,包括:
所述第m前端VM将待传递的GPU命令写入所述第m前端VM与第n后端GPU Domain之间的共享内存;
所述第m前端VM通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道向所述第n后端GPU Domain发送第m前端事件通知,所述第m前端事件通知用于表示待传递的GPU命令在所述共享内存中的位置信息;
所述第n后端GPU Domain利用一个或多个所述GPU对所述GPU命令进行处理,得到相应的处理结果数据,包括:
所述第n后端GPU Domain根据收到的所述第m前端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述GPU命令;
所述第n后端GPU Domain利用直通给第n后端GPU Domain的一个或多个GPU对读取出的所述GPU命令进行处理,得到相应的处理结果数据。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
所述第n后端GPU Domain通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道向所述第m前端VM发送第n后端事件通知,所述第n后端事件通知用于表示数据读取完成;
所述第m前端VM根据收到的所述第n后端事件通知释放已被所述第n后端GPU Domain读取的数据所占用的内存空间。
6.根据权利要求3或4所述的方法,其特征在于,所述基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,所述第n后端GPU Domain将所述相应的处理结果数据传递给所述第m前端VM,包括:
所述第n后端GPU Domain将待传递的所述处理结果数据写入所述第m前端VM与第n后端GPU Domain之间的共享内存;
所述第n后端GPU Domain通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道,向所述第m前端VM发送第n后端事件通知,所述第n后端事件通知用于表示待传递的所述处理结果数据在所述共享内存中的位置信息;
所述第m前端VM根据收到的所述后端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述处理结果数据。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
所述第m前端VM通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道,向所述第n后端GPU Domain发送第m前端事件通知,所述第m前端事件通知用于表示数据读取完成;
所述第n后端GPU Domain根据收到的所述第m前端事件通知释放已被所述第m前端VM读取的数据所占用的内存空间。
8.根据权利要求6所述的方法,其特征在于,所述第m前端VM与第n后端GPU Domain之间的共享内存包括:前向后传输共享内存和后向前传输共享内存,
所述第m前端VM将待传递的GPU命令写入所述第m前端VM与第n后端GPU Domain之间的共享内存包括:所述第m前端VM将待传递的GPU命令写入前向后传输共享内存,其中所述第m前端VM对所述前向后传输共享内存具有读写权限,所述第n后端GPU Domain对所述前向后传输共享内存具有只读权限;
相应的,所述第n后端GPU Domain根据收到的所述第m前端事件通知从所述共享内存的相应地址空间中读取出所述GPU命令包括:所述第n后端GPU Domain根据收到的所述第m前端事件通知从所述前向后传输共享内存的相应地址空间中读取出所述GPU命令,所述第m前端事件通知用于表示待传递的GPU命令在所述前向后传输共享内存中的位置信息;
或者,
所述第n后端GPU Domain将待传递的所述处理结果数据写入所述第m前端VM与第n后端GPU Domain之间的共享内存包括:所述第n后端GPU Domain将待传递的所述处理结果数据写入后向前传输共享内存,其中所述第n后端GPU Domain对所述后向前传输共享内存具有读写权限,所述第m前端VM对所述后向前传输共享内存具有只读权限;
相应的,所述第m前端VM根据收到的所述后端事件通知从所述第m前端VM与第n后端GPUDomain之间的共享内存的相应地址空间中读取出所述处理结果数据包括:所述第m前端VM根据收到的所述后端事件通知从所述后向前传输共享内存的相应地址空间中读取出所述处理结果数据,所述第n后端事件通知用于表示待传递的所述处理结果数据在所述后向前传输共享内存中的位置信息。
9.根据权利要求1所述的方法,其特征在于,如果所述通信信息为网络地址信息,则所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道,包括:
基于所述第m前端VM的网络地址信息和第n后端GPU Domain的网络地址信息,建立第m前端VM与第n后端GPU Domain之间的网络连接。
10.根据权利要求9所述的方法,其特征在于,所述基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,所述第m前端VM将待传递的GPU命令传递给第n后端GPU Domain,包括:
通过第m前端VM与第n后端GPU Domain之间的网络连接,所述第m前端VM向第n后端GPUDomain发送待传递的GPU命令。
11.根据权利要求9或10所述的方法,其特征在于,所述基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,所述第n后端GPU Domain将所述相应的处理结果数据传递给所述第m前端VM,包括:
通过第m前端VM与第n后端GPU Domain之间的网络连接,所述第n后端GPU Domain向第m前端VM发送待传递的所述处理结果数据。
12.根据权利要求2所述的方法,其特征在于,所述方法还包括:根据GPU命令的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述GPU命令进行压缩;
所述第m前端VM将待传递的GPU命令传递给第n后端GPU Domain,包括:所述第m前端VM将待传递的GPU命令进行压缩,并将压缩后的GPU命令传递给第n后端GPU Domain;
所述方法还包括:所述第n后端GPU Domain判断出传递过来的GPU命令被压缩过;
所述第n后端GPU Domain利用一个或多个所述GPU对所述GPU命令进行处理,得到相应的处理结果数据,包括:所述第n后端GPU Domain对压缩后的GPU命令进行解压,并利用直通给所述第n后端GPU Domain的一个或多个GPU对解压后的GPU命令进行处理,得到相应的处理结果数据。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
根据所述处理结果数据的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述处理结果数据进行压缩;
所述第n后端GPU Domain将所述处理结果数据传递给所述第m前端VM,包括:所述第n后端GPU Domain将所述处理结果数据进行压缩,并将压缩后的处理结果数据传递给所述第m前端VM。
14.根据权利要求13所述的方法,其特征在于,所述根据GPU命令或处理结果数据的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述GPU命令或处理结果数据进行压缩,包括:
当GPU命令的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间时,判断出对所述GPU命令进行压缩;或者,
当GPU命令的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间与调节值的和值时,判断出对所述GPU命令进行压缩;或者,
当处理结果数据的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间时,判断出对所述处理结果数据进行压缩;或者,
当处理结果数据的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间与调节值的和值时,判断出对所述处理结果数据进行压缩。
15.一种管理GPU Domain的方法,其特征在于,包括:
根据配置的GPU Domain创建策略,创建N个后端GPU Domain,其中所述N个后端GPUDomain具有多种类型的操作***,所述GPU Domain创建策略包括:GPU Domain的个数、直通给GPU Domain的GPU个数、GPU Domain的操作***类型中的一个或多个;
当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,从所述N个后端GPU Domain中选择具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;
基于所述第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPUDomain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
16.根据权利要求15所述的方法,其特征在于,如果所述通信信息为共享内存设备标识,则所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道,包括:
基于第m前端VM的通信信息和第n后端GPU Domain的通信信息,进行所述第m前端VM与第n后端GPU Domain之间的事件通道的绑定。
17.根据权利要求15所述的方法,其特征在于,如果所述通信信息为网络地址信息,则所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道,包括:
基于所述第m前端VM的网络地址信息和第n后端GPU Domain的网络地址信息,建立第m前端VM与第n后端GPU Domain之间的网络连接。
18.一种物理主机,所述物理主机包括:包括GPU的硬件层、运行在所述硬件层之上的宿主机Host、运行在所述Host之上的宿主机操作***Host OS以及运行在所述Host之上的N个后端GPU Domain和M个前端虚拟机VM,所述N个后端GPU Domain与所述M个前端VM之间分别具有对应的前后端服务通道,所述N为大于或等于1的正整数,所述M为大于或等于1的正整数,M大于或等于N,所述n为小于或等于N的正整数,所述m为小于或等于M的正整数,
所述Host OS具体用于:
根据配置的GPU Domain创建策略,创建N个后端GPU Domain,其中所述N个后端GPUDomain具有多种类型的操作***,所述GPU Domain创建策略包括:GPU Domain的个数、直通给GPU Domain的GPU个数、GPU Domain的操作***类型中的一个或多个;
当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,从所述N个后端GPU Domain中选择具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;
基于所述第m前端VM与所述第n后端GPU Domain的关联关系,将对应的第n后端GPUDomain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道;
所述第m前端VM用于:基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将待传递的GPU命令传递给第n后端GPUDomain,所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同;
所述第n后端GPU Domain用于:利用一个或多个所述GPU对传递过来的GPU命令进行处理,得到相应的处理结果数据。
19.根据权利要求18所述的物理主机,其特征在于,所述第n后端GPU Domain还用于:基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将相应的所述处理结果数据传递给所述第m前端VM。
20.根据权利要求18所述的物理主机,其特征在于,如果所述通信信息为共享内存设备标识,在所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道的方面,
所述第m前端VM具体用于:基于所述第m前端VM的共享内存设备标识和第n后端GPUDomain的共享内存设备标识,发起所述第m前端VM与第n后端GPU Domain之间的事件通道的绑定;
或者,所述第n后端GPU Domain具体用于:基于所述第m前端VM的共享内存设备标识和第n后端GPU Domain的共享内存设备标识,发起所述第m前端VM与第n后端GPU Domain之间的事件通道的绑定。
21.根据权利要求20所述的物理主机,其特征在于,在基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将待传递的GPU命令传递给第n后端GPU Domain的方面,
所述第m前端VM具体用于:将待传递的GPU命令写入所述第m前端VM与第n后端GPUDomain之间的共享内存;
通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道向所述第n后端GPU Domain发送第m前端事件通知,所述第m前端事件通知用于表示待传递的GPU命令在所述共享内存中的位置信息;
在利用一个或多个所述GPU对传递过来的所述GPU命令进行处理,得到相应的处理结果数据的方面,所述第n后端GPU Domain具体用于:根据收到的所述第m前端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述GPU命令;利用直通给所述第n后端GPU Domain的一个或多个所述GPU对读取出的所述GPU命令进行处理,得到相应的处理结果数据。
22.根据权利要求21所述的物理主机,其特征在于,所述第n后端GPU Domain还用于:通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道向所述第m前端VM发送第n后端事件通知,所述第n后端事件通知用于表示数据读取完成;
所述第m前端VM还用于:根据收到的所述第n后端事件通知释放已被所述第n后端GPUDomain读取的数据所占用的内存空间。
23.根据权利要求20或21所述的物理主机,其特征在于,在所述基于所述N个后端GPUDomain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将所述相应的处理结果数据传递给所述第m前端VM的方面,所述第n后端GPU Domain具体用于:将待传递的所述处理结果数据写入所述第m前端VM与第n后端GPU Domain之间的共享内存;通过所述第m前端VM与第n后端GPU Domain之间相互绑定的事件通道向所述第m前端VM发送第n后端事件通知,所述第n后端事件通知用于表示待传递的所述处理结果数据在所述第m前端VM与第n后端GPU Domain之间的共享内存中的位置信息;
所述第m前端VM还用于:根据收到的所述第n后端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述处理结果数据。
24.根据权利要求23所述的物理主机,其特征在于,所述第m前端VM还用于:通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道向所述第n后端GPU Domain发送第m前端事件通知,所述第m前端事件通知用于表示数据读取完成;
所述第n后端GPU Domain还用于:根据收到的所述第m前端事件通知释放已被所述第m前端VM读取的数据所占用的内存空间。
25.根据权利要求21所述的物理主机,其特征在于,所述第m前端VM与第n后端GPUDomain之间的共享内存包括前向后传输共享内存和后向前传输共享内存,
在所述第m前端VM将待传递的GPU命令写入所述第m前端VM与第n后端GPU Domain之间的共享内存的方面,所述第m前端VM具体用于:将待传递的GPU命令写入前向后传输共享内存,其中所述第m前端VM对所述前向后传输共享内存具有读写权限,所述第n后端GPUDomain对所述前向后传输共享内存具有只读权限;
相应的,在根据收到的所述第m前端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述GPU命令的方面,所述第n后端GPU Domain具体用于:根据收到的所述第m前端事件通知从所述前向后传输共享内存的相应地址空间中读取出所述GPU命令,所述第m前端事件通知用于表示待传递的GPU命令在所述前向后传输共享内存中的位置信息;
或者,
在将待传递的所述处理结果数据写入所述第m前端VM与第n后端GPU Domain之间的共享内存的方面,所述第n后端GPU Domain具体用于:将待传递的所述处理结果数据写入后向前传输共享内存,其中所述第n后端GPU Domain对所述后向前传输共享内存具有读写权限,所述第m前端VM对所述后向前传输共享内存具有只读权限;
相应的,在根据收到的所述第n后端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述处理结果数据的方面,所述第m前端VM具体用于:根据收到的所述第n后端事件通知从所述后向前传输共享内存的相应地址空间中读取出所述处理结果数据,所述第n后端事件通知用于表示待传递的所述处理结果数据在所述后向前传输共享内存中的位置信息。
26.根据权利要求23所述的物理主机,其特征在于,所述第m前端VM与第n后端GPUDomain之间的共享内存包括前向后传输共享内存和后向前传输共享内存,
在所述第m前端VM将待传递的GPU命令写入所述第m前端VM与第n后端GPU Domain之间的共享内存的方面,所述第m前端VM具体用于:将待传递的GPU命令写入前向后传输共享内存,其中所述第m前端VM对所述前向后传输共享内存具有读写权限,所述第n后端GPUDomain对所述前向后传输共享内存具有只读权限;
相应的,在根据收到的所述第m前端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述GPU命令的方面,所述第n后端GPU Domain具体用于:根据收到的所述第m前端事件通知从所述前向后传输共享内存的相应地址空间中读取出所述GPU命令,所述第m前端事件通知用于表示待传递的GPU命令在所述前向后传输共享内存中的位置信息;
或者,
在将待传递的所述处理结果数据写入所述第m前端VM与第n后端GPU Domain之间的共享内存的方面,所述第n后端GPU Domain具体用于:将待传递的所述处理结果数据写入后向前传输共享内存,其中所述第n后端GPU Domain对所述后向前传输共享内存具有读写权限,所述第m前端VM对所述后向前传输共享内存具有只读权限;
相应的,在根据收到的所述第n后端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述处理结果数据的方面,所述第m前端VM具体用于:根据收到的所述第n后端事件通知从所述后向前传输共享内存的相应地址空间中读取出所述处理结果数据,所述第n后端事件通知用于表示待传递的所述处理结果数据在所述后向前传输共享内存中的位置信息。
27.根据权利要求18所述的物理主机,其特征在于,如果所述通信信息为网络地址信息,在所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道的方面,
所述第m前端VM具体用于基于所述第m前端VM的网络地址信息和第n后端GPU Domain的网络地址信息,建立第m前端VM与第n后端GPU Domain之间的网络连接;
或者,第n后端GPU Domain具体用于基于所述第m前端VM的网络地址信息和第n后端GPUDomain的网络地址信息,建立第m前端VM与第n后端GPU Domain之间的网络连接。
28.根据权利要求27所述的物理主机,其特征在于,在基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将待传递的GPU命令传递给第n后端GPU Domain的方面,所述第m前端VM具体用于:通过第m前端VM与第n后端GPU Domain之间的网络连接,向第n后端GPU Domain发送待传递的GPU命令。
29.根据权利要求27或28所述的物理主机,其特征在于,在所述基于所述N个后端GPUDomain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将所述相应的处理结果数据传递给所述第m前端VM的方面,所述第n后端GPU Domain具体用于:通过第m前端VM与第n后端GPU Domain之间的网络连接,向第m前端VM发送待传递的所述处理结果数据。
30.根据权利要求19所述的物理主机,其特征在于,所述第m前端VM还用于:根据GPU命令的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述GPU命令进行压缩;
在将待传递的GPU命令传递给第n后端GPU Domain的方面,所述第m前端VM具体用于:将待传递的GPU命令进行压缩,并将压缩后的GPU命令传递给第n后端GPU Domain;
所述第n后端GPU Domain还用于:判断出传递过来的GPU命令被压缩过;
在利用一个或多个所述GPU对所述GPU命令进行处理,得到相应的处理结果数据的方面,所述第n后端GPU Domain具体用于:对压缩后的GPU命令进行解压,并利用直通给第n后端GPU Domain的一个或多个所述GPU对解压后的GPU命令进行处理,得到相应的处理结果数据。
31.根据权利要求30所述的物理主机,其特征在于,所述第n后端GPU Domain还用于:根据所述处理结果数据的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述处理结果数据进行压缩;
在将所述处理结果数据传递给所述第m前端VM的方面,所述第n后端GPU Domain具体用于:将所述处理结果数据进行压缩,并将压缩后的处理结果数据传递给所述第m前端VM。
32.根据权利要求30或31所述的物理主机,其特征在于,在所述根据GPU命令的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述GPU命令进行压缩的方面,所述第m前端VM具体用于:当GPU命令的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间时,判断出对所述GPU命令进行压缩;或者,当GPU命令的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间与调节值的和值时,判断出对所述GPU命令进行压缩;
或者,
在所述根据处理结果数据的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述处理结果数据进行压缩的方面,所述第n后端GPUDomain具体用于:当处理结果数据的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间时,判断出对所述处理结果数据进行压缩;或者,当处理结果数据的压缩估计时间、解压缩估计时间和压缩数据传输估计时间的和值小于或等于非压缩直接传输估计时间与调节值的和值时,判断出对所述处理结果数据进行压缩。
33.一种GPU Domain的管理装置,其特征在于,包括:
GPU Domain管理模块,用于根据配置的GPU Domain创建策略,创建N个后端GPUDomain,其中所述N个后端GPU Domain具有多种类型的操作***,所述GPU Domain创建策略包括:GPU Domain的个数、直通给GPU Domain的GPU个数、GPU Domain的操作***类型中的一个或多个;以及,当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,从所述创建的N个后端GPU Domain中选择具有对应类型的操作***的第n后端GPU Domain,其中所述第m前端VM与所述第n后端GPU Domain之间具有关联关系;
所述GPU Domain管理模块,用于当第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,确定具有对应类型的操作***的第n后端GPU Domain;
虚拟机间通信IVC管理模块,用于基于所述第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPU Domain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPUDomain之间建立前后端服务通道。
34.根据权利要求33所述的装置,其特征在于,所述通信信息为共享内存设备标识,
所述虚拟机间通信IVC管理模块具体用于基于所述第m前端VM与所述第n后端GPUDomain的关联关系,将对应的第n后端GPU Domain的共享内存设备标识传递给所述第m前端VM,将对应的第m前端VM的共享内存设备标识传递给所述第n后端GPU Domain,使得基于第n后端GPU Domain的共享内存设备标识和第m前端VM的共享内存设备标识,所述第m前端VM与第n后端GPU Domain之间进行事件通道的绑定。
35.根据权利要求33所述的装置,其特征在于,所述通信信息为网络地址信息,
所述虚拟机间通信IVC管理模块具体用于基于所述第m前端VM与所述第n后端GPUDomain的关联关系,将对应的第n后端GPU Domain的网络地址信息传递给所述第m前端VM,将对应的第m前端VM的网络地址信息传递给所述第n后端GPU Domain,使得基于第n后端GPUDomain的网络地址信息和第m前端VM的网络地址信息,第m前端VM与第n后端GPU Domain之间进行网络连接的建立。
36.一种集群***,其特征在于,包括:至少一个如权利要求18~32任一项所述的物理主机。
37.根据权利要求36所述的***,其特征在于,还包括与所述物理主机上的前端虚拟机具有通信连接的客户端设备,所述客户端设备用于对对应的前端虚拟机传递过来的数据进行显示。
38.一种图形处理器GPU虚拟化的实现方法,其特征在于,所述方法包括:
基于物理主机中的N个后端图形处理器域GPU Domain中的第n后端GPU Domain与所述物理主机中的M个前端虚拟机VM中的第m前端VM之间的前后端服务通道,将所述第m前端VM待传递的GPU命令传递给第n后端GPU Domain,所述第n后端GPU Domain的操作***类型与所述第m前端VM的操作***类型相同,所述N为大于或等于1的正整数,所述M为大于或等于1的正整数,M大于或等于N,所述n为小于或等于N的正整数,所述m为小于或等于M的正整数;
利用物理主机中的一个或多个GPU对所述第n后端GPU Domain得到的GPU命令进行处理,得到相应的处理结果数据;
所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道是通过如下方法建立的:
根据配置的GPU Domain创建策略,创建N个后端GPU Domain,其中所述N个后端GPUDomain具有多种类型的操作***,所述GPU Domain创建策略包括:GPU Domain的个数、直通给GPU Domain的GPU个数、GPU Domain的操作***类型中的一个或多个;
当所述M个前端VM中第m前端VM被启动时,根据所述启动的第m前端VM的操作***类型,从所述创建的N个后端GPU Domain中选择具有对应类型的操作***的第n后端GPU Domain,其中第m前端VM与所述第n后端GPU Domain之间具有关联关系;
基于所述第m前端VM与所述第n后端GPU Domain之间的关联关系,将对应的第n后端GPUDomain的通信信息传递给所述第m前端VM,将对应的第m前端VM的通信信息传递给所述第n后端GPU Domain,使得所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道。
39.根据权利要求38所述的方法,其特征在于,所述方法还包括:
基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将相应的所述处理结果数据从所述第n后端GPU Domain传递给所述第m前端VM。
40.根据权利要求38所述的方法,其特征在于,如果所述通信信息为共享内存设备标识,则所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道,包括:
基于所述第m前端VM的共享内存设备标识和第n后端GPU Domain的共享内存设备标识,进行第m前端VM与第n后端GPU Domain之间的事件通道的绑定。
41.根据权利要求40所述的方法,其特征在于,所述基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将所述第m前端VM待传递的GPU命令传递给第n后端GPU Domain,包括:
将所述第m前端VM待传递的GPU命令写入所述第m前端VM与第n后端GPU Domain之间的共享内存;
通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道将所述第m前端VM的第m前端事件通知向所述第n后端GPU Domain发送,所述第m前端事件通知用于表示待传递的GPU命令在所述共享内存中的位置信息;
所述利用物理主机中的一个或多个GPU对所述第n后端GPU Domain得到的GPU命令进行处理,得到相应的处理结果数据,包括:
根据所述第n后端GPU Domain收到的所述第m前端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述GPU命令;
利用物理主机中直通给第n后端GPU Domain的一个或多个GPU对读取出的所述GPU命令进行处理,得到相应的处理结果数据。
42.根据权利要求41所述的方法,其特征在于,所述方法还包括:
通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道将所述第n后端GPU Domain的第n后端事件通知向所述第m前端VM发送,所述第n后端事件通知用于表示数据读取完成;
根据所述第m前端VM收到的所述第n后端事件通知释放已被所述第n后端GPU Domain读取的数据所占用的内存空间。
43.根据权利要求40或41所述的方法,其特征在于,所述基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将所述相应的处理结果数据从所述第n后端GPU Domain传递给所述第m前端VM,包括:
将所述第n后端GPU Domain待传递的所述处理结果数据写入所述第m前端VM与第n后端GPU Domain之间的共享内存;
通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道,将所述第n后端GPU Domain的第n后端事件通知向所述第m前端VM发送,所述第n后端事件通知用于表示待传递的所述处理结果数据在所述共享内存中的位置信息;
根据所述第m前端VM收到的所述第n后端事件通知从所述第m前端VM与第n后端GPUDomain之间的共享内存的相应地址空间中读取出所述处理结果数据。
44.根据权利要求43所述的方法,其特征在于,所述方法还包括:
通过所述第m前端VM与所述第n后端GPU Domain之间相互绑定的事件通道,将所述第m前端VM的第m前端事件通知向所述第n后端GPU Domain发送,所述第m前端事件通知用于表示数据读取完成;
根据所述第n后端GPU Domain收到的所述第m前端事件通知释放已被所述第m前端VM读取的数据所占用的内存空间。
45.根据权利要求41所述的方法,其特征在于,所述第m前端VM与第n后端GPU Domain之间的共享内存包括:前向后传输共享内存和后向前传输共享内存,
所述将所述第m前端VM待传递的GPU命令写入所述第m前端VM与第n后端GPU Domain之间的共享内存包括:将所述第m前端VM待传递的GPU命令写入前向后传输共享内存,其中所述第m前端VM对所述前向后传输共享内存具有读写权限,所述第n后端GPU Domain对所述前向后传输共享内存具有只读权限;
相应的,所述根据所述第n后端GPU Domain收到的所述第m前端事件通知从所述共享内存的相应地址空间中读取出所述GPU命令包括:根据所述第n后端GPU Domain收到的所述第m前端事件通知从所述前向后传输共享内存的相应地址空间中读取出所述GPU命令,所述第m前端事件通知用于表示待传递的GPU命令在所述前向后传输共享内存中的位置信息;
或者,
所述将所述第n后端GPU Domain待传递的所述处理结果数据写入所述第m前端VM与第n后端GPU Domain之间的共享内存包括:将所述第n后端GPU Domain待传递的所述处理结果数据写入后向前传输共享内存,其中所述第n后端GPU Domain对所述后向前传输共享内存具有读写权限,所述第m前端VM对所述后向前传输共享内存具有只读权限;
相应的,所述根据所述第m前端VM收到的所述第n后端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述处理结果数据包括:根据所述第m前端VM收到的所述第n后端事件通知从所述后向前传输共享内存的相应地址空间中读取出所述处理结果数据,所述第n后端事件通知用于表示待传递的所述处理结果数据在所述后向前传输共享内存中的位置信息。
46.根据权利要求38所述的方法,其特征在于,如果所述通信信息为网络地址信息,则所述第m前端VM与第n后端GPU Domain之间建立前后端服务通道,包括:
基于所述第m前端VM的网络地址信息和第n后端GPU Domain的网络地址信息,建立第m前端VM与第n后端GPU Domain之间的网络连接。
47.根据权利要求46所述的方法,其特征在于,所述基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将所述第m前端VM待传递的GPU命令传递给第n后端GPU Domain,包括:
通过第m前端VM与第n后端GPU Domain之间的网络连接,向第n后端GPU Domain发送所述第m前端VM待传递的GPU命令。
48.根据权利要求46或47所述的方法,其特征在于,所述基于所述N个后端GPU Domain中的第n后端GPU Domain与所述M个前端VM中的第m前端VM之间的前后端服务通道,将所述相应的处理结果数据从所述第n后端GPU Domain传递给所述第m前端VM,包括:
通过第m前端VM与第n后端GPU Domain之间的网络连接,向第m前端VM发送所述第n后端GPU Domain待传递的所述处理结果数据。
49.根据权利要求39所述的方法,其特征在于,所述方法还包括:根据GPU命令的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述GPU命令进行压缩;
将所述第m前端VM待传递的GPU命令传递给第n后端GPU Domain,包括:将所述第m前端VM待传递的GPU命令进行压缩,并将压缩后的GPU命令传递给第n后端GPU Domain;
所述方法还包括:判断出传递给所述第n后端GPU Domain的GPU命令被压缩过;
所述利用物理主机中的一个或多个GPU对所述传递给第n后端GPU Domain的GPU命令进行处理,得到相应的处理结果数据,包括:对传递给所述第n后端GPU Domain的压缩后的GPU命令进行解压,并利用所述物理主机中直通给所述第n后端GPU Domain的一个或多个GPU对解压后的GPU命令进行处理,得到相应的处理结果数据。
50.根据权利要求49所述的方法,其特征在于,所述方法还包括:
根据所述处理结果数据的压缩估计时间、解压缩估计时间、压缩数据传输估计时间与非压缩直接传输估计时间判断出对所述处理结果数据进行压缩;
将所述第n后端GPU Domain待传递的所述处理结果数据传递给所述第m前端VM,包括:将所述第n后端GPU Domain待传递的所述处理结果数据进行压缩,并将压缩后的处理结果数据传递给所述第m前端VM。
51.根据权利要求43所述的方法,其特征在于,所述第m前端VM与第n后端GPU Domain之间的共享内存包括:前向后传输共享内存和后向前传输共享内存,
所述将所述第m前端VM待传递的GPU命令写入所述第m前端VM与第n后端GPU Domain之间的共享内存包括:将所述第m前端VM待传递的GPU命令写入前向后传输共享内存,其中所述第m前端VM对所述前向后传输共享内存具有读写权限,所述第n后端GPU Domain对所述前向后传输共享内存具有只读权限;
相应的,所述根据所述第n后端GPU Domain收到的所述第m前端事件通知从所述共享内存的相应地址空间中读取出所述GPU命令包括:根据所述第n后端GPU Domain收到的所述第m前端事件通知从所述前向后传输共享内存的相应地址空间中读取出所述GPU命令,所述第m前端事件通知用于表示待传递的GPU命令在所述前向后传输共享内存中的位置信息;
或者,
所述将所述第n后端GPU Domain待传递的所述处理结果数据写入所述第m前端VM与第n后端GPU Domain之间的共享内存包括:将所述第n后端GPU Domain待传递的所述处理结果数据写入后向前传输共享内存,其中所述第n后端GPU Domain对所述后向前传输共享内存具有读写权限,所述第m前端VM对所述后向前传输共享内存具有只读权限;
相应的,所述根据所述第m前端VM收到的所述第n后端事件通知从所述第m前端VM与第n后端GPU Domain之间的共享内存的相应地址空间中读取出所述处理结果数据包括:根据所述第m前端VM收到的所述第n后端事件通知从所述后向前传输共享内存的相应地址空间中读取出所述处理结果数据,所述第n后端事件通知用于表示待传递的所述处理结果数据在所述后向前传输共享内存中的位置信息。
CN201380071416.6A 2013-12-31 2013-12-31 Gpu虚拟化的实现方法及相关装置和*** Active CN105122210B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/091252 WO2015100681A1 (zh) 2013-12-31 2013-12-31 Gpu虚拟化的实现方法及相关装置和***

Publications (2)

Publication Number Publication Date
CN105122210A CN105122210A (zh) 2015-12-02
CN105122210B true CN105122210B (zh) 2020-02-21

Family

ID=53493014

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380071416.6A Active CN105122210B (zh) 2013-12-31 2013-12-31 Gpu虚拟化的实现方法及相关装置和***

Country Status (3)

Country Link
US (1) US10120705B2 (zh)
CN (1) CN105122210B (zh)
WO (1) WO2015100681A1 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106537366B (zh) * 2014-06-30 2019-07-23 惠普发展公司,有限责任合伙企业 全虚拟机功能
WO2016003415A1 (en) * 2014-06-30 2016-01-07 Hewlett-Packard Development Company, L.P. Securely sending a complete initialization package
EP3497562B1 (en) 2016-09-05 2023-12-13 Huawei Technologies Co., Ltd. Allocation of graphics processing units for virtual machines
CN106775940A (zh) * 2016-12-06 2017-05-31 郑州云海信息技术有限公司 一种图形处理***及虚拟化方法
CN108733602B (zh) * 2017-04-13 2024-04-19 Arm有限公司 数据处理
CN107577518B (zh) * 2017-09-14 2021-05-04 郑州云海信息技术有限公司 一种虚拟机部署方法及装置
US11256530B2 (en) * 2018-12-14 2022-02-22 Ati Technologies Ulc Targeted page migration for guest virtual machine
US11854433B2 (en) * 2019-02-04 2023-12-26 Pearson Education, Inc. Systems and methods for item response modelling of digital assessments
US11423035B2 (en) 2019-02-04 2022-08-23 Pearson Education, Inc. Scoring system for digital assessment quality with harmonic averaging
CN111858016A (zh) * 2019-04-29 2020-10-30 阿里巴巴集团控股有限公司 计算作业处理方法、***、移动设备及加速设备
EP3992743B1 (en) * 2020-11-03 2023-08-30 Volkswagen Aktiengesellschaft Vehicle, apparatus for a vehicle, computer program, and method for processing information for communication in a tele-operated driving session
CN113742064B (zh) * 2021-08-06 2023-08-04 苏州浪潮智能科技有限公司 一种服务器集群的资源整理方法、***、设备及介质
CN114461287B (zh) * 2022-01-29 2024-01-30 亿咖通(湖北)技术有限公司 操作***启动方法、装置、电子设备和存储介质
CN114661465A (zh) * 2022-03-17 2022-06-24 维塔科技(北京)有限公司 资源管理的方法、装置、存储介质及电子设备
CN115775199B (zh) * 2022-11-23 2024-04-16 海光信息技术股份有限公司 数据处理方法和装置、电子设备和计算机可读存储介质
WO2024130683A1 (zh) * 2022-12-23 2024-06-27 芯原微电子(上海)股份有限公司 图形处理器、芯片及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521012A (zh) * 2011-11-24 2012-06-27 华中科技大学 基于虚拟机的gpu集群管理***
CN102650950A (zh) * 2012-04-10 2012-08-29 南京航空航天大学 一种支持多gpu虚拟化的平台架构及其工作方法
CN103440612A (zh) * 2013-08-27 2013-12-11 华为技术有限公司 一种gpu虚拟化中图像处理方法和装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8274518B2 (en) * 2004-12-30 2012-09-25 Microsoft Corporation Systems and methods for virtualizing graphics subsystems
CN101488174B (zh) * 2009-01-15 2010-07-14 北京交通大学 动态透明的虚拟可信平台模块的实现方法
CN101667144B (zh) 2009-09-29 2013-02-13 北京航空航天大学 一种基于共享内存的虚拟机通信方法
US20110102443A1 (en) * 2009-11-04 2011-05-05 Microsoft Corporation Virtualized GPU in a Virtual Machine Environment
CN102202289B (zh) * 2011-04-13 2013-12-25 张�林 一种通过移动终端远程调用软硬件资源的方法和***
CN102223377B (zh) * 2011-06-25 2013-10-30 华南理工大学 一种Xen虚拟机可信域间网络连接的控制方法
US10310879B2 (en) * 2011-10-10 2019-06-04 Nvidia Corporation Paravirtualized virtual GPU
US9099051B2 (en) * 2012-03-02 2015-08-04 Ati Technologies Ulc GPU display abstraction and emulation in a virtualization system
US9146762B2 (en) * 2012-08-23 2015-09-29 Citrix Systems, Inc. Specialized virtual machine to virtualize hardware resource for guest virtual machines
US9582849B2 (en) * 2013-10-28 2017-02-28 Vmware, Inc. Method and system to virtualize graphic processing services

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521012A (zh) * 2011-11-24 2012-06-27 华中科技大学 基于虚拟机的gpu集群管理***
CN102650950A (zh) * 2012-04-10 2012-08-29 南京航空航天大学 一种支持多gpu虚拟化的平台架构及其工作方法
CN103440612A (zh) * 2013-08-27 2013-12-11 华为技术有限公司 一种gpu虚拟化中图像处理方法和装置

Also Published As

Publication number Publication date
WO2015100681A1 (zh) 2015-07-09
US20160314008A1 (en) 2016-10-27
US10120705B2 (en) 2018-11-06
CN105122210A (zh) 2015-12-02

Similar Documents

Publication Publication Date Title
CN105122210B (zh) Gpu虚拟化的实现方法及相关装置和***
EP2622461B1 (en) Shared memory between child and parent partitions
US9069622B2 (en) Techniques for load balancing GPU enabled virtual machines
US20170323418A1 (en) Virtualized gpu in a virtual machine environment
US9063793B2 (en) Virtual server and virtual machine management method for supporting zero client by providing host interfaces from classified resource pools through emulation or direct connection modes
US8629878B2 (en) Extension to a hypervisor that utilizes graphics hardware on a host
JP5214473B2 (ja) ハードウェアデバイスなどのリソースを有する仮想マシンの移動システム
US8970603B2 (en) Dynamic virtual device failure recovery
US9311169B2 (en) Server based graphics processing techniques
US20180219797A1 (en) Technologies for pooling accelerator over fabric
EP2807555B1 (en) Para-virtualized asymmetric gpu processors
US9542715B2 (en) Memory space mapping techniques for server based graphics processing
US20120075314A1 (en) Prevention of DOS Attack by a Rogue Graphics Application
WO2022179423A1 (zh) 虚拟化处理***、方法、装置及设备
CN111966504B (zh) 图形处理器中的任务处理方法及相关设备
US9805439B2 (en) Memory space mapping techniques for server based graphics processing
US20090083753A1 (en) Dynamic thread generation and management for improved computer program performance
CN108762934B (zh) 远程图形传输***、方法及云服务器
US9041719B2 (en) Method and system for transparently directing graphics processing to a graphical processing unit (GPU) of a multi-GPU system
US9613390B2 (en) Host context techniques for server based graphics processing
CN113886019B (zh) 虚拟机创建方法、装置、***、介质和设备
CN111274044A (zh) Gpu虚拟化资源限制处理方法及装置
US20190114193A1 (en) Method for processing input and output on multi kernel system and apparatus for the same
CN111258715B (zh) 多操作***渲染处理方法及装置
KR102426416B1 (ko) 멀티 커널 시스템의 입출력 처리 방법 및 장치

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant