CN106708602A - 基于半虚拟化的通用计算方法及系统 - Google Patents
基于半虚拟化的通用计算方法及系统 Download PDFInfo
- Publication number
- CN106708602A CN106708602A CN201611226993.XA CN201611226993A CN106708602A CN 106708602 A CN106708602 A CN 106708602A CN 201611226993 A CN201611226993 A CN 201611226993A CN 106708602 A CN106708602 A CN 106708602A
- Authority
- CN
- China
- Prior art keywords
- general
- gpu
- virtual
- purpose computations
- virtual machine
- 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.)
- Granted
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 35
- 238000000034 method Methods 0.000 claims description 6
- 239000011800 void material Substances 0.000 claims description 3
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 2
- 238000011112 process operation Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及虚拟机技术领域,尤其涉及一种基于半虚拟化的通用计算方法及系统,通过在多个虚拟机中配置多个虚拟GPU,生成通用计算命令,并在内核中截获通用计算命令发送到物理机中,在物理机中实现实际通用计算后将结果返回虚拟机,实现虚拟机通用计算。本发明提供一种基于半虚拟化的通用计算方法,包括:将多个虚拟机对应于一个物理机;配置多个虚拟GPU分别对应多个虚拟机;将虚拟GPU的通用计算命令发送给物理机的物理GPU;物理GPU将通用计算结果返回给虚拟机。
Description
技术领域
本发明涉及虚拟机技术领域,尤其涉及一种基于半虚拟化的通用计算方法及系统。
背景技术
在大数据背景下,对于计算机的通用计算能力有越来越多的要求,通用计算是由GPU提供,主要有OPENCL和CUDA两种实现,目前的虚拟化方案没有高效的通用计算模块的虚拟化方案。目前比较成熟的两种实现:一是XEN使用GRID卡,GRID卡是NVIDIA的专用显卡,价格昂贵,虚拟化成本很高;二是将单个普通GPU passthrough,这样每一个VM都要独占一个GPU进行通用计算,虚拟化成本也很高。
所谓通用计算,general purpose computing,是相对于图形计算而言的。由于图形处理器在历史上是专门为图形应用而设计的,因而只能作图形计算,在软件层只拥有图形接口,如OPENGL、DIRECT3D。但随着GPU处理能力的增强,工业界和学术界发现它可以处理图形之外的计算,这种计算形式由于相对图形这一单一应用而言显得更加一般、通用,所以被称为通用计算,相应的接口被称为通用计算接口,目前的代表有CUDA、OPENCL等。
最好的方法是可以多个VM共用一个GPU并提供通用计算能力。如果按照目前全虚拟化方向,需要模拟完整GPU设备,使用GPU厂家提供的驱动,但是有两个局限性:一是全虚拟化效率低;二是GPU实现复杂,还需要有对应的GPU设计手册可参考。另一种可用的思路是使用半虚拟化,使用自定义的驱动模拟GPU设备,将用户态发送到内核态的通用计算指令截获,在宿主机中进行相应操作。
发明内容
鉴于此,本发明提供的一种基于半虚拟化的通用计算方法及系统,在多个虚拟机中配置多个虚拟GPU,生成通用计算命令,并在内核中截获通用计算命令发送到物理机中,在物理机中实现实际通用计算后将结果返回虚拟机,实现虚拟机通用计算。
为了达到上述目的,本发明是通过以下技术方案实现的:
本发明提供一种基于半虚拟化的通用计算方法,包括:
将多个虚拟机对应于一个物理机;
配置多个虚拟GPU分别对应多个虚拟机;
将虚拟GPU的通用计算命令发送给物理机的物理GPU;
物理GPU将通用计算结果返回给虚拟机。
进一步地,配置多个虚拟GPU分别对应多个虚拟机,包括:
在每个虚拟机中,使用前端驱动创建虚拟GPU。
优选地,所述前端驱动为virtio驱动。
进一步地,将虚拟GPU的通用计算命令发送给物理机的物理GPU,包括:
在虚拟机内核态中截获通用计算命令;
通过virtio queue将所截获的通用计算命令发送到物理机的虚拟化程序;
虚拟化程序调用物理GPU接收通用计算命令。
进一步地,在虚拟机内核态中截获通用计算命令,包括:通过驱动接口在虚拟机内核态中截获通用计算命令。
进一步地,物理GPU将通用计算结果返回给虚拟机,包括:物理GPU将通用计算结果通过virtio queue返回给虚拟机。
本发明还提供一种基于半虚拟化的通用计算系统,包括一个物理机,在物理机下配置多个虚拟机,虚拟机中设有对应的前端驱动模块和驱动接口,其中:
前端驱动模块用于创建虚拟GPU;
虚拟GPU用于生成通用计算命令;
驱动接口用于在虚拟机内核态中截获通用计算命令;
进一步地,所述物理机包括虚拟化程序模块和一个物理GPU,虚拟化程序模块用于接收虚拟机传来的通用计算命令,并调用物理机中的物理GPU处理通用计算命令;物理GPU用于实现虚拟机发送来的通用计算命令,并输出计算结果。
优选地,所述前端驱动模块通过virtio驱动创建虚拟GPU。
优选地,所述虚拟机通过virtio queue将通用计算命令发送到物理机,所述物理机通过virtio queue将通用计算结果返回给虚拟机。
本发明提供一种基于半虚拟化的通用计算方法,有益效果如下:
提供了一种半虚拟化方案,在多个虚拟机中配置多个虚拟GPU,生成通用计算命令,并在内核中截获通用计算命令发送到物理机中,在物理机中实现实际通用计算后将结果返回虚拟机,实现虚拟机通用计算的方法。同时,将多个虚拟机共用同一个物理GPU,相当于多个进程操作同一个物理GPU,降低虚拟化成本,使用半虚拟化的方式提高虚拟机的性能。
本发明还提供一种基于半虚拟化的通用计算系统,其有益效果与基于半虚拟化的通用计算方法类似,不再赘述。
附图说明:
图1为本发明实施例所提供的基于半虚拟化的通用计算方法流程示意图;
图2为本发明实施例所提供的基于半虚拟化的通用计算系统框架示意图;
具体实施方式:
为了便于理解,对本发明中出现的部分名词作以下解释说明:
虚拟机:即VM,是指一种特殊的软件,可以在计算机平台和终端用户之间创建一种环境,而终端用户则是基于这个软件所创建的环境来操作软件。在计算机科学中,虚拟机是指可以像真实机器一样运行程序的计算机的软件实现。
物理机:在本发明中,物理机与虚拟机对应,作为虚拟机的宿主机,一般指实体计算机。
virtio :是指半虚拟化 hypervisor 中位于设备之上的抽象层。
virtio queue:virtio是通过使用virtqueue来实现其I/O机制的,每个 virtioqueue就是一个承载大量数据的queue。
依照附图详细说明关于本发明的示例性实施例。
本实施例提供一种基于半虚拟化的通用计算方法,通过半虚拟化方法在虚拟机中创建虚拟GPU设备,将对应的通用计算命令截获转发到宿主机的物理GPU中,在虚拟机中实现通用计算,包括以下步骤:
将多个虚拟机对应于一个物理机;
配置多个虚拟GPU分别对应多个虚拟机;
将虚拟GPU的通用计算命令发送给物理机的物理GPU;
物理GPU将通用计算结果返回给虚拟机。
请参考图1,图1为本发明实施例所提供的基于半虚拟化的通用计算方法流程示意图;本实施例提供一种基于半虚拟化的通用计算方法,包括:
步骤S101、将多个虚拟机对应于一个物理机;
步骤S102、在每个虚拟机中,使用前端驱动创建虚拟GPU;
其中,在每个虚拟机中均使用前端驱动创建一个虚拟GPU,虚拟机在运算的过程中,通过虚拟GPU生成通用计算命令,因为一个物理机下设有多个虚拟机,通过调用物理机中的物理GPU,形成了一个物理GPU对应多个虚拟GPU的整体框架,多个虚拟GPU在运行时生成多个通用计算命令,这些通用计算命令可能为一种,也可能为多种。
在本实施例中,前端驱动为virtio驱动,即前端驱动是基于virtio的驱动,由此创建的虚拟GPU可表示为virtio GPU。
作为一种可实施方式,前端驱动可选取基于xen或VMware的驱动程序或工具。
步骤S103、在虚拟机内核态中截获通用计算命令;
多个虚拟机的虚拟GPU生成通用计算命令,通过驱动接口在虚拟机内核态中截获这些通用计算命令,内核态的接口较少,只要实现内核态对应的几个接口就可以截获全部通用计算命令。
步骤S104、通过virtio queue将所截获的通用计算命令发送到物理机的虚拟化程序;在本实施例中,虚拟GPU是基于virtio的驱动创建出来的,之后将通用计算命令通过virtio queue传递到物理机的虚拟化程序,物理机中的虚拟化程序将处理这些通用计算命令,virtio queue中可以包括大量的数据,因此保证了通用计算命令的传输能力;同时virtio queue作为一种连接虚拟机和物理机的通道,传输通用计算命令。
步骤S105、虚拟化程序调用物理GPU接收通用计算命令;
步骤S106、物理GPU将通用计算结果通过virtio queue返回给虚拟机;
在物理机中可以直接操作物理GPU设备,在虚拟机中的操作虚拟GPU的命令都可以对应到物理机的物理GPU上,将对应的通用计算命令在物理GPU上实现后将结果反馈给虚拟机,多个虚拟机可共用同一个物理GPU,相当于多个进程操作同一个物理GPU,实现通用计算。
本实施例提供一种基于半虚拟化的通用计算系统,包括一个物理机,在物理机下配置多个虚拟机,虚拟机中设有对应的前端驱动模块和驱动接口,其中:
前端驱动模块用于创建虚拟GPU;
虚拟GPU用于生成通用计算命令;
驱动接口用于在虚拟机内核态中截获通用计算命令;
请参考图2,图2为本发明实施例所提供的基于半虚拟化的通用计算系统框架示意图;本实施例提供一种基于半虚拟化的通用计算系统,包括一个物理机,在物理机下配置多个虚拟机,虚拟机中设有对应的前端驱动模块和驱动接口,其中:
前端驱动模块用于创建虚拟GPU;
虚拟GPU用于生成通用计算命令;
驱动接口用于在虚拟机内核态中截获通用计算命令;
进一步地,所述物理机包括虚拟化程序模块和一个物理GPU,虚拟化程序模块用于接收虚拟机传来的通用计算命令,并调用物理机中的物理GPU处理通用计算命令;物理GPU用于实现虚拟机发送来的通用计算命令,并输出计算结果。
优选地,所述前端驱动模块通过virtio驱动创建虚拟GPU。
优选地,所述虚拟机通过virtio queue将通用计算命令发送到物理机,所述物理机通过virtio queue将通用计算结果返回给虚拟机。
以上所述仅为本发明示意性的具体实施方式,并非用以限定本发明的范围,任何本领域的技术人员在不脱离本发明构思和原则的前提下所做出的等同变化与修改,均应属于本发明保护的范围。
Claims (10)
1.一种基于半虚拟化的通用计算方法,其特征在于,包括:
将多个虚拟机对应于一个物理机;
配置多个虚拟GPU分别对应多个虚拟机;
将虚拟GPU的通用计算命令发送给物理机的物理GPU;
物理GPU将通用计算结果返回给虚拟机。
2.根据权利要求1所述的基于半虚拟化的通用计算方法,其特征在于,配置多个虚拟GPU分别对应多个虚拟机,包括:
在每个虚拟机中,使用前端驱动创建虚拟GPU。
3.根据权利要求2所述的基于半虚拟化的通用计算方法,其特征在于,所述前端驱动为virtio驱动。
4.根据权利要求3所述的基于半虚拟化的通用计算方法,其特征在于,将虚拟GPU的通用计算命令发送给物理机的物理GPU,包括:
在虚拟机内核态中截获通用计算命令;
通过virtio queue将所截获的通用计算命令发送到物理机的虚拟化程序;
虚拟化程序调用物理GPU接收通用计算命令。
5.根据权利要求4所述的基于半虚拟化的通用计算方法,其特征在于,在虚拟机内核态中截获通用计算命令,包括:通过驱动接口在虚拟机内核态中截获通用计算命令。
6.根据权利要求3或4或5所述的基于半虚拟化的通用计算方法,其特征在于,物理GPU将通用计算结果返回给虚拟机,包括:物理GPU将通用计算结果通过virtio queue返回给虚拟机。
7.一种基于半虚拟化的通用计算系统,其特征在于,包括一个物理机,在物理机下配置多个虚拟机,虚拟机中设有对应的前端驱动模块和驱动接口,其中:
前端驱动模块用于创建虚拟GPU;
虚拟GPU用于生成通用计算命令;
驱动接口用于在虚拟机内核态中截获通用计算命令。
8.根据权利要求7所述的基于半虚拟化的通用计算系统,其特征在于,所述物理机包括虚拟化程序模块和一个物理GPU,虚拟化程序模块用于接收虚拟机传来的通用计算命令,并调用物理机中的物理GPU处理通用计算命令;物理GPU用于实现虚拟机发送来的通用计算命令,并输出通用计算结果。
9.根据权利要求7所述的基于半虚拟化的通用计算系统,其特征在于,所述前端驱动模块通过virtio驱动创建虚拟GPU。
10.根据权利要求9所述的基于半虚拟化的通用计算系统,其特征在于,所述虚拟机通过virtio queue将通用计算命令发送到物理机,所述物理机通过virtio queue将通用计算结果返回给虚拟机。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611226993.XA CN106708602B (zh) | 2016-12-27 | 2016-12-27 | 基于半虚拟化的通用计算方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611226993.XA CN106708602B (zh) | 2016-12-27 | 2016-12-27 | 基于半虚拟化的通用计算方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106708602A true CN106708602A (zh) | 2017-05-24 |
CN106708602B CN106708602B (zh) | 2021-02-02 |
Family
ID=58902785
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611226993.XA Active CN106708602B (zh) | 2016-12-27 | 2016-12-27 | 基于半虚拟化的通用计算方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106708602B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112445568A (zh) * | 2019-09-02 | 2021-03-05 | 阿里巴巴集团控股有限公司 | 基于硬件加速的数据处理方法、装置及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761139A (zh) * | 2014-01-25 | 2014-04-30 | 湖南大学 | 一种基于动态库拦截的通用计算虚拟化实现方法 |
CN104040494A (zh) * | 2012-01-13 | 2014-09-10 | 微软公司 | 准虚拟化的域着色器、外壳着色器和几何着色器 |
CN105117273A (zh) * | 2015-09-11 | 2015-12-02 | 中科信息安全共性技术国家工程研究中心有限公司 | 一种xen虚拟化平台中获取客户机进程信息的方法及系统 |
-
2016
- 2016-12-27 CN CN201611226993.XA patent/CN106708602B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104040494A (zh) * | 2012-01-13 | 2014-09-10 | 微软公司 | 准虚拟化的域着色器、外壳着色器和几何着色器 |
CN103761139A (zh) * | 2014-01-25 | 2014-04-30 | 湖南大学 | 一种基于动态库拦截的通用计算虚拟化实现方法 |
CN105117273A (zh) * | 2015-09-11 | 2015-12-02 | 中科信息安全共性技术国家工程研究中心有限公司 | 一种xen虚拟化平台中获取客户机进程信息的方法及系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112445568A (zh) * | 2019-09-02 | 2021-03-05 | 阿里巴巴集团控股有限公司 | 基于硬件加速的数据处理方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106708602B (zh) | 2021-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11907691B2 (en) | Method and system of command buffer between a CPU and GPU | |
CN104737129B (zh) | 用于对来宾虚拟机的硬件资源进行虚拟化的专用虚拟机 | |
WO2018099299A1 (zh) | 一种图数据处理的方法、装置及系统 | |
CN101976200B (zh) | 在虚拟机监控器外进行输入输出设备虚拟化的虚拟机系统 | |
DE102021106796A1 (de) | Techniken zur speicherfehlerisolierung | |
CN102541618B (zh) | 一种通用图形处理器虚拟化的实现方法、系统及装置 | |
CN102103517A (zh) | 高效嵌套虚拟化 | |
CN106462451B (zh) | 虚拟化平台处理中断方法和相关设备 | |
CN103559087B (zh) | 一种虚拟处理器之间的中断的实现方法、相关装置和系统 | |
CN105830026A (zh) | 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法 | |
Lee et al. | VADI: GPU virtualization for an automotive platform | |
CN104615480A (zh) | 基于numa高性能网络处理器负载的虚拟处理器调度方法 | |
CN101620547A (zh) | X86计算机虚拟化的物理中断处理方法 | |
US10417023B2 (en) | GPU simulation method | |
DE112018007634T5 (de) | Vorrichtung und verfahren für eine virtualisierte anzeige | |
DE112021005433T5 (de) | Verfahren zur leistungsbalancierung mehrerer chips | |
DE112022001140T5 (de) | Durchführung einer matrixwertangabe | |
CN113039522A (zh) | 用于虚拟化的图形处理器的有效本地显示共享的装置和方法 | |
CN103577250A (zh) | 一种应用于虚拟机的设备直通方法 | |
DE102019106701A1 (de) | Einrichtung und Verfahren zum virtualisierten Planen von mehreren doppelten Grafik-Engines | |
DE102021105251A1 (de) | Konfigurierbarer kühlkörper | |
CN106383747A (zh) | 一种计算资源调度方法及装置 | |
DE112022003222T5 (de) | Multi-architektur-ausführungsgraphen | |
DE102020113932A1 (de) | Virtualisierung und mehrfach-mandanten-unterstützung in grafikprozessoren | |
CN106815067A (zh) | 带i/o虚拟化的虚拟机在线迁移方法、装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20210106 Address after: 215000 Building 9, No.1 guanpu Road, Guoxiang street, Wuzhong Economic Development Zone, Suzhou City, Jiangsu Province Applicant after: SUZHOU LANGCHAO INTELLIGENT TECHNOLOGY Co.,Ltd. Address before: Room 1601, 16 / F, 278 Xinyi Road, Zhengdong New District, Zhengzhou City, Henan Province, 450000 Applicant before: ZHENGZHOU YUNHAI INFORMATION TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |