CN110192182B - 动态和专用的虚拟化图形处理 - Google Patents
动态和专用的虚拟化图形处理 Download PDFInfo
- Publication number
- CN110192182B CN110192182B CN201880007403.5A CN201880007403A CN110192182B CN 110192182 B CN110192182 B CN 110192182B CN 201880007403 A CN201880007403 A CN 201880007403A CN 110192182 B CN110192182 B CN 110192182B
- Authority
- CN
- China
- Prior art keywords
- gpu
- virtual
- application
- additional
- execution
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 108
- 238000000034 method Methods 0.000 claims abstract description 57
- 230000000977 initiatory effect Effects 0.000 claims abstract description 18
- 230000006870 function Effects 0.000 description 34
- 230000004044 response Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 6
- 239000003795 chemical substances by application Substances 0.000 description 6
- 230000005012 migration Effects 0.000 description 6
- 238000013508 migration Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000006855 networking Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 238000011331 genomic analysis Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 238000004513 sizing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- 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/445—Program loading or initiating
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
Abstract
公开了用于动态和专用的虚拟化图形处理的方法、***和计算机可读媒体。在虚拟计算实例上发起应用程序的执行。使用服务器实施所述虚拟计算实例。确定与所述应用程序的所述执行相关联的一个或多个图形处理单元(GPU)要求。至少部分地基于所述一个或多个GPU要求从可用的物理GPU资源池中选择物理GPU资源。至少部分地基于所述应用程序的所述执行的发起将虚拟GPU附接到所述虚拟计算实例。使用选自所述池并且可由所述服务器通过网络访问的所述物理GPU资源实施所述虚拟GPU。
Description
背景技术
许多公司和其它组织操作计算机网络,所述计算机网络互连许多计算***以支持其操作,如计算***被共同定位(例如,作为局部网络的一部分)或替代地位于多个不同的地理位置中(例如,通过一个或多个私人或公共中间网络连接)。例如,容纳大量互连计算***的分布式***已经变得司空见惯。这种分布式***可以向与客户端交互的服务器提供后端服务。这种分布式***还可以包含由实体操作以向客户提供计算资源的数据中心。一些数据中心运营商为各种客户所拥有的硬件提供网络接入、电力和安全安装设施,而其它数据中心运营商提供“全方位服务(full service)”设施,所述全方位服务设施还包含可供其客户使用的硬件资源。随着分布式***的规模和范围的增加,预配、实施(administering)和管理(managing)资源的任务变得越来越复杂。
用于商品硬件的虚拟化技术的出现已经在关于管理具有不同要求的许多客户的大规模计算资源方面提供了益处。例如,虚拟化技术可以通过向每个用户提供由单个物理计算装置托管的一个或多个虚拟机来允许单个物理计算装置在多个用户之间共享。每个这种虚拟机可以是软件模拟,所述软件模拟充当向用户提供他们是给定硬件计算资源的唯一运营商和管理员的假象的不同逻辑计算***,同时还在各种虚拟机之间提供应用程序隔离和安全性。使用虚拟化,单个物理计算装置可以以动态方式创建、维护或删除虚拟机。
附图说明
图1展示了根据一个实施例的用于在提供商网络中虚拟化图形处理的示例***环境。
图2A展示了根据一个实施例的用于在提供商网络中虚拟化图形处理的示例***环境的另外方面,包含为具有所附接的虚拟GPU的虚拟计算实例选择实例类型和虚拟GPU类。
图2B展示了根据一个实施例的用于在提供商网络中虚拟化图形处理的示例***环境的另外方面,包含预配具有所附接的虚拟GPU的虚拟计算实例。
图3展示了根据一个实施例的使用具有虚拟GPU的虚拟计算实例生成用于在客户端装置上显示的虚拟GPU输出。
图4展示了根据一个实施例的用于实施虚拟化图形处理的示例硬件架构。
图5是展示了根据一个实施例的用于在提供商网络中虚拟化图形处理的方法的流程图。
图6A展示了根据一个实施例的用于动态和专用的虚拟化图形处理的示例***环境,包含在机器映像中指定的GPU要求。
图6B展示了根据一个实施例的用于动态和专用的虚拟化图形处理的示例***环境,包含在应用程序清单中指定的GPU要求。
图6C展示了根据一个实施例的用于动态和专用的虚拟化图形处理的示例***环境,包含由应用程序在运行时指定的GPU要求。
图7展示了根据一个实施例的用于动态和专用的虚拟化图形处理的示例***环境,包含动态地附接用于虚拟计算实例上的应用程序的单个专用的虚拟GPU。
图8展示了根据一个实施例的用于动态和专用的虚拟化图形处理的示例***环境,包含动态地附接用于同一虚拟计算实例上的不同应用程序的专用的虚拟GPU的不同类。
图9展示了根据一个实施例的用于动态和专用的虚拟化图形处理的示例***环境,包含动态地附接用于同一虚拟计算实例上的同一应用程序的多个专用的虚拟GPU。
图10展示了根据一个实施例的用于动态和专用的虚拟化图形处理的示例***环境,包含从虚拟计算实例动态地分离专用的虚拟GPU。
图11是展示了根据一个实施例的用于(至少部分地)基于与应用程序相关联的GPU要求动态地附接专用的虚拟GPU的方法的流程图。
图12是展示了根据一个实施例的用于(至少部分地)基于应用程序的终止动态地分离专用的虚拟GPU的方法的流程图。
图13是展示了根据一个实施例的用于(至少部分地)基于虚拟GPU的空闲率动态地分离专用的虚拟GPU的方法的流程图。
图14展示了可以在一些实施例中使用的示例计算装置。
尽管本文通过实例的方式针对若干实施例和说明性附图描述了实施例,但是本领域技术人员将认识到,实施例不限于所描述的实施例或附图。应理解的是,附图和对其的详细描述并非旨在将实施例限制于所公开的特定形式,而相反,所述意图是将覆盖落入由所附权利要求限定的精神和范围内的所有修改、等效物和替代方案。本文所使用的标题只是出于组织目的,而不意图用于限制本说明书或权利要求的范围。如在本申请全文中使用的,单词“可以(may)”以允许的意义使用(即,意味着“有可能来”),而不是强制意义(即,意味着“必须(must)”)。类似地,单词“包含(include)”“包含(including)”以及“包含(includes)”意味着“包含但不限于”。
具体实施方式
描述了用于动态和专用的虚拟化图形处理的方法、***和计算机可读媒体的各个实施例。提供商网络可以提供可用的物理图形处理单元(GPU)资源池。可用的物理GPU资源可以在其硬件特性、源供应商、相关联的应用程序编程接口(API)和/或其它相关属性方面变化。虚拟计算实例上的应用程序可以与一个或多个GPU要求相关联。要求可以指定GPU的硬件特性、GPU的供应商、GPU的期望API和/或其它相关属性。例如,特定应用程序可以请求具有最小量存储器和/或特定硬件特征的GPU,以实现阈值性能水平。在一个实施例中,要求由应用程序提供,例如,使用合适的API。在一个实施例中,要求与虚拟计算实例本身相关联,例如,如在用于启动实例的机器映像中所指定的。虚拟GPU可以附接到虚拟计算实例。可以(至少部分地)基于与应用程序相关联的要求使用选自可用资源池的至少一个物理GPU资源来实施虚拟GPU。虚拟GPU可以在执行应用程序期间进行附接,例如,(至少部分地)基于应用程序启动或者(至少部分地)基于由应用程序发送到图形API的指令。为了向应用程序提供加速的图形处理和/或通用GPU计算,物理GPU资源可以通过网络与实施虚拟计算实例的服务器(例如,物理计算实例)通信。在一个实施例中,不同的虚拟GPU可以附接到同一实例,以供具有不同GPU要求的应用程序使用。在一个实施例中,可以将一个或多个附加虚拟GPU添加到同一实例,以供同一应用程序使用。虚拟GPU也可以动态地分离,例如,在应用程序终止时。使用本文描述的技术,可以节省提供商网络中的GPU资源,并且以成本有效的方式提供给客户端。
提供商网络中的虚拟化图形处理
图1展示了根据一个实施例的用于在提供商网络中虚拟化图形处理的示例***环境。提供商网络100的客户端可以使用如客户端装置180A-180N等计算装置来访问弹性图形服务110和由提供商网络提供的其它资源。客户端装置180A-180N可以通过一个或多个网络190耦合到提供商网络100。提供商网络100可以提供计算虚拟化140,使得可以使用多个服务器142A-142N来实施多个虚拟计算实例141A-141Z。虚拟计算实例141A-141Z在本文中还可以称为虚拟机(VM)。类似地,提供商网络100可以提供GPU虚拟化150,使得可以使用多个物理GPU 152A-152N来实施多个虚拟GPU 151A-151Z。参考图5讨论了使用物理GPU实施虚拟GPU的示例硬件架构。底层服务器142A-142N可以是异构的,并且底层物理GPU 152A-152N也可以是异构的。服务器也可以称为物理计算实例。在一个实施例中,计算虚拟化140可以使用用于多租户的技术来预配在数量上超过服务器142A-142N的虚拟计算实例141A-141Z。在一个实施例中,GPU虚拟化150可以使用用于多租户的技术来预配在数量上超过物理GPU152A-152N的虚拟GPU 151A-151Z。
弹性图形服务110,在本文中也称为图形服务,可以向客户端提供具有所附接的虚拟化GPU的虚拟化计算实例的选择和预配。因此,弹性图形服务110可以包含实例类型选择功能120和实例预配功能130。在一个实施例中,提供商网络100可以提供具有不同计算和/或存储器资源的虚拟计算实例141A-141Z。在一个实施例中,虚拟计算实例141A-141Z中的每一个虚拟计算实例可以对应于若干实例类型之一。实例类型可以通过其计算资源(例如,中央处理单元[CPU]或CPU核心的数量、类型和配置)、存储器资源(例如,局部存储器的容量、类型和配置)、存储资源(例如,局部可访问存储装置的容量、类型和配置)、网络资源(例如,其网络接口和/或网络能力的特性)和/或其它适合的描述性特性来表征。使用实例类型选择功能120,可以为客户端选择实例类型,例如,(至少部分地)基于来自客户端的输入。例如,客户端可以从预定义的实例类型组中选择实例类型。作为另一个实例,客户端可以指定实例类型的期望资源,并且实例类型选择功能120可以基于这种指定来选择实例类型。
在一个实施例中,提供商网络100可以提供具有不同的图形处理能力的虚拟GPU151A-151Z。在一个实施例中,虚拟GPU 151A-151Z中的每一个虚拟GPU可以对应于若干虚拟GPU类之一。虚拟GPU类可以通过其用于图形处理的计算资源、用于图形处理的存储器资源和/或其它适合的描述性特性来表征。在一个实施例中,虚拟GPU类可以表示物理GPU的图形处理能力的细分,如完整GPU、半GPU、四分之一GPU等。使用实例类型选择功能120,可以为客户端选择虚拟GPU类,例如,(至少部分地)基于来自客户端的输入。例如,客户端可以从预定义的虚拟GPU类组中选择虚拟GPU类。作为另一个实例,客户端可以指定虚拟GPU类的期望资源,并且实例类型选择功能120可以基于这种指定来选择虚拟GPU类。
因此,使用实例类型选择功能120,客户端(例如,使用客户端装置180A-180N)可以指定用于虚拟计算实例和虚拟GPU的要求。实例预配功能130可以基于所指定的要求(包含任何指定的实例类型和虚拟GPU类)来预配具有所附接的虚拟GPU的虚拟计算实例。如本文所使用的,预配虚拟计算实例通常包含为客户端(例如,来自可用服务器和其它资源池)预留底层服务器的资源(例如,计算和存储器资源)、安装或启动所需软件(例如,操作***)以及使虚拟计算实例可用于客户端以执行由客户端指定的任务。对于特定客户端,可以为虚拟计算实例预配由客户端选择的或为客户端选择的实例类型,并且可以用由客户端选择或为客户端选择的GPU类的所附接的虚拟GPU预配虚拟计算实例。在一个实施例中,基本上任何虚拟GPU类的虚拟GPU可以附接到基本上任何实例类型的虚拟计算实例。
提供商网络100可以由如公司或公共部门组织等实体建立,以提供客户端装置180A-180N可通过因特网和/或其它网络访问的一个或多个服务(如各种类型的基于云的计算或存储)。提供商网络100可以包含托管如物理和/或虚拟化计算机服务器的集合、存储装置、联网装备(例如,使用以下关于图14所描述的计算***3000来实施)等各种资源池的许多数据中心,需要所述数据中心实施和分发由提供商网络100提供的基础设施和服务。在一些实施例中,提供商网络100可以提供计算资源,如计算虚拟化服务140和GPU虚拟化服务150;存储服务,如基于块的存储服务、基于键值的数据存储或各种类型的数据库***;和/或任何其它类型的基于网络的服务。客户端装置180A-180N可以通过(多个)网络190访问由提供商网络100提供的这些各种服务。同样地,基于网络的服务本身可以通信和/或利用彼此,以提供不同的服务。例如,以称为“实例”,如虚拟或服务器或存储实例的单元提供给客户端装置180A-180N的计算资源可以利用特定数据卷,为计算实例提供虚拟块存储。提供商网络100可以实施或提供多租户环境,使得多个客户端(例如,使用客户端装置180A-180N)可以以基本上同时的方式访问或使用特定资源。
如以上所指出的,计算虚拟化服务140可以向客户端装置180A-180N提供各种虚拟计算实例141A-141Z。例如,虚拟计算实例可以包括具有所指定的计算容量(其可以通过指示CPU的类型和数量、主存储器大小等来指定)和所指定的软件栈(例如,特定版本的操作***,所述操作***转而可以在管理程序的顶部运行)的一个或多个服务器。可以单独地或组合使用多种不同类型的计算装置,以在不同实施例中实施计算虚拟化服务140的计算实例,所述计算装置包含通用或专用计算机服务器、存储装置、网络装置等。在一些实施例中,客户端装置180A-180N或其它任何其它用户可以被配置成(和/或经授权)将网络流量引导到虚拟计算实例。在各个实施例中,虚拟计算实例141A-141Z可以附接或映射到由存储服务提供的一个或多个数据卷,以获得用于执行各种操作的永久存储。使用本文所描述的技术,虚拟GPU 151A-151Z可以附接到虚拟计算实例141A-141Z,以提供用于虚拟计算实例的图形处理。
虚拟计算实例141A-141Z可以操作或实施各种不同的平台,如应用程序服务器实例、JavaTM虚拟机(JVM)或其它虚拟机、通用或专用操作***、支持如Ruby、Perl、Python、C、C++等各种经解译或经编译的程序设计语言的平台、或者适合于执行客户端应用程序而无需例如要求客户端装置180A-180N访问实例的高性能计算平台。在一些实施例中,虚拟计算实例141A-141Z可以基于所预期的正常运行时间比率具有不同的实例类型或配置。特定虚拟计算实例的正常运行时间比率可以被定义为激活实例的时间量与预留实例的总时间量的比率。在一些实施方案中,正常运行时间比率还可以称为利用率。如果客户端期望在预留实例的相对小部分时间内使用计算实例(例如,30%-35%的年预留),则客户端可以决定将实例预留为低正常运行时间比率实例,并且客户端可以根据相关联的定价政策,按小时支付折扣使用费。如果客户端期望具有需要在大多数时间内启动实例的稳态工作负载,然后客户端可以预留高运行时间比率实例,并且可能地按小时支付甚至更低的使用费,尽管在一些实施例中,根据定价政策,可以在预留的整个持续时间按小时收取费用,而不管实际的使用小时数。在一些实施例中,还可以支持具有对应定价政策的中等正常运行时间比率实例的选项,其中前期成本和每小时成本落在对应的高运行时间比率与低运行时间比率成本之间。
虚拟计算实例配置还可以包含通用或专用的虚拟计算实例,如用于计算密集型应用程序的计算工作负载(例如,高流量web应用程序、广告服务、批处理、视频编码、分布式分析、高能物理、基因组分析以及计算流体动力学);图形密集型工作负载(例如,游戏流式传输、3D应用程序流式传输、服务器端图形工作负载、渲染、金融模型和工程设计);存储器密集型工作负载(例如,高性能数据库、分布式存储器高速缓存、存储器内分析、基因组汇编和分析);以及存储优化工作负载(例如,数据仓库和集群文件***)。在一些实施例中,虚拟计算实例的特定实例类型可以与虚拟GPU的默认类相关联。例如,可以在没有虚拟GPU作为默认配置的情况下,配置一些实例类型,同时可以在具有特定虚拟GPU类作为默认配置的情况下,指定指定用于图形密集型工作负载的其它实例类型。虚拟计算实例的配置还可以包含它们在特定数据中心或可用性区域中的位置、地理位置和(在预留计算实例的情况下)预留期限长度。
客户端装置180A-180N可以表示或对应于提供商网络100的各种客户端或用户,如寻求使用由提供商网络提供的服务的顾客。客户端(client)、用户(user)或顾客(customer)可以代表个人、企业、其它组织和/或其它实体。客户端装置180A-180N可以分布在任何适合的位置或区域上。客户端装置180A-180N中的每一个客户端装置可以使用一个或多个计算装置来实施,其中所述的任何计算装置可以由图14中所示的示例计算装置3000来实施。
客户端装置180A-180N可以涵盖可配置为向提供商网络100提交请求的任何类型的客户端。例如,给定客户端装置可以包含适合版本的网页浏览器,或者其可以包含插件模块或其它类型的代码模块,所述代码模块被配置成作为由网页浏览器提供的执行环境的扩展或在由网页浏览器提供的执行环境内执行。可替代地,客户端装置可以涵盖如数据库应用程序(或其用户界面)、媒体应用程序、办公室应用程序或可以利用提供商网络100中的虚拟计算实例、存储卷或其它基于网络的服务的任何其它应用程序等应用程序来执行各种操作。在一些实施例中,这种应用程序可以包含用于生成和处理基于网络的服务请求的足够的协议支持(例如,用于适合版本的超文本传输协议[HTTP]),而不必实施对所有类型的基于网络的数据的完全浏览器支持。在一些实施例中,客户端装置180A-180N可以被配置成根据表述性状态转移(REST)风格的基于网络的服务架构、基于文档或消息的基于网络的服务架构或其它适合的基于网络的服务架构来生成基于网络的服务请求。在一些实施例中,客户端装置180A-180N(例如,计算客户端)可以被配置成以对利用由虚拟计算实例提供的计算资源的、在客户端装置上实施的应用程序透明的方式提供对虚拟计算实例的访问。在至少一些实施例中,客户端装置180A-180N可以为在客户端装置处实施的文件***预配、安装和配置在存储服务处实施的存储卷。
客户端装置180A-180N可以通过(多个)外部网络190,将基于网络的服务请求传送到提供商网络100。在各个实施例中,(多个)外部网络190可以涵盖在客户端装置180A-180N与提供商网络100之间建立基于网络的通信所必需的联网硬件和协议的任何适合组合。例如,(多个)网络190通常可以涵盖共同实施因特网的各种电信网络和服务提供商。(多个)网络190还可以包含如局域网(LAN)或广域网(WAN)等私人网络以及公共或私人无线网络。例如,给定的客户端装置和提供商网络100两者可以分别在具有其自己的内部网络的企业内进行预配。在这种实施例中,(多个)网络190可以包含所必需的硬件(例如,调制解调器、路由器、交换机、负载平衡器、代理服务器等)和软件(例如,协议栈、计费软件、防火墙/安全软件等)来建立给定客户端装置与因特网之间的联网链接以及因特网与提供商网络100之间的联网连接。应注意,在一些实施例中,客户端装置180A-180N可以使用私人网络,而不是公共因特网与提供商网络100通信。
提供商网络100可以包含多个计算装置,所述计算装置中的任何计算装置可以由图14中所示的示例计算装置3000来实施。在各个实施例中,提供商网络100的所描述功能的部分可以由同一计算装置或者由任何适合数量的不同计算装置提供。如果使用不同的计算装置来实施提供商网络100的任何部件,然后部件及其各自的计算装置可以例如通过网络通信地耦合。所示部件中的每个部件(如弹性图形服务110及其组成功能120和130)可以表示可用于执行其各自功能的软件和硬件的任何组合。
可设想的是,提供商网络100可以包含未示出的附加部件、比所示部件更少的部件或所示部件的不同组合、配置或数量。例如,尽管服务器142A到142N是出于举例和说明的目的而示出的,但是可以设想使用不同数量和配置的服务器。类似地,尽管物理GPU 152A到152N是出于举例和说明的目的而示出的,但是可以设想使用不同数量和配置的物理GPU。另外,尽管三个客户端装置180A、180B和180N是出于举例和说明的目的而示出的,但是可以设想使用不同数量和配置的客户端装置。本文所描述的用于提供虚拟化图形处理的功能的方面可以至少部分地由提供商网络100外部的部件执行。
图2A展示了根据一个实施例的用于在提供商网络中虚拟化图形处理的示例***环境的另外方面,包含为具有所附接的虚拟GPU的虚拟计算实例选择实例类型和虚拟GPU类。如以上所讨论的,提供商网络100可以向客户端装置180A提供用于虚拟计算实例的多个实例类型121。如出于说明和举例的目的所示出的,可以提供类型“B”141B到类型“N”141N的虚拟计算实例。然而,可设想的是,提供商网络100可以向客户端提供任何适合数量和配置的虚拟计算实例类型。实例类型可以通过其计算资源(例如,中央处理单元[CPU]或CPU核心的数量、类型和配置)、存储器资源(例如,局部存储器的容量、类型和配置)、存储资源(例如,局部可访问存储装置的容量、类型和配置)、网络资源(例如,其网络接口和/或网络能力的特性)和/或其它适合的描述性特性来表征。使用实例类型选择功能120,客户端装置180A可以提供特定实例类型的指示、指定或其它选择201。例如,客户端可以使用输入201从预定义的实例类型组中选择实例类型“B”。作为另一个实例,客户端可以使用输入201来指定实例类型的期望资源,并且实例类型选择功能120可以基于这种指定来选择实例类型“B”。因此,虚拟计算实例类型可以由客户端选择或代表客户端,例如,使用实例类型选择功能120。
如以上所讨论的,提供商网络100可以向客户端装置180A提供用于虚拟GPU的多个虚拟GPU类122。如出于说明和举例的目的所示出的,可以提供类“B”151B到类“N”151N的虚拟GPU。然而,可设想的是,提供商网络100可以向客户端提供任何适合数量和配置的虚拟GPU类。虚拟GPU类可以通过其用于图形处理的计算资源、用于图形处理的存储器资源和/或其它适合的描述性特性来表征。在一个实施例中,虚拟GPU类可以表示物理GPU的图形处理能力的细分,如完整GPU、半GPU、四分之一GPU等。使用实例类型选择功能120,客户端装置180A可以提供特定虚拟GPU类的指示、指定或其它选择202。例如,客户端可以使用输入202从预定义的虚拟GPU类组中选择虚拟GPU类“B”。作为另一个示例,客户端可以使用输入202来指定虚拟GPU类的期望资源,并且实例类型选择功能120可以基于这种指定来选择虚拟GPU类“B”。因此,虚拟GPU类可以由客户端选择或代表客户端,例如,使用实例类型选择功能120。
图2B展示了根据一个实施例的用于在提供商网络中虚拟化图形处理的示例***环境的另外方面,包含预配具有所附接的虚拟GPU的虚拟计算实例。实例预配功能130可以基于所指定的实例类型“B”和所指定的虚拟GPU类“B”使用所附接的虚拟GPU 151B来预配虚拟计算实例141B。所预配的虚拟计算实例141B可以由计算虚拟化功能140使用如服务器142B等适合的物理资源来实施,并且所预配的虚拟GPU 151B可以由GPU虚拟化功能150使用如物理GPU 152B等适合的物理资源来实施。如本文所使用的,预配虚拟计算实例通常包含为客户端(例如,来自可用服务器和其它资源池)预留底层服务器的资源(例如,计算和存储器资源)、安装或启动所需软件(例如,操作***)以及使虚拟计算实例可用于客户端以执行由客户端指定的任务。在一个实施例中,基本上任何虚拟GPU类的虚拟GPU可以附接到基本上任何实例类型的虚拟计算实例。为了用所附接的虚拟GPU 151B实施虚拟计算实例141B,服务器142B可以例如通过网络与物理GPU 152B通信。物理GPU 152B可以位于与服务器142B不同的计算装置中。即使它们可以使用单独的硬件来实施,虚拟GPU 151B也可以据说附接到虚拟计算实例141B,或者虚拟计算实例也可以据说包含虚拟GPU。虚拟GPU 151B可以安装在可以驻留在相对于物理GPU 152B的各种位置的装置上,例如,在同一网络上的同一机架、同一交换机、同一空间和/或其它适合位置。物理GPU 152B的供应商可以对客户端装置180A隐藏。
图3展示了根据一个实施例的使用具有虚拟GPU的虚拟计算实例生成用于在客户端装置上显示的虚拟GPU输出。在虚拟计算实例141B被预配有所附接的虚拟GPU 151B之后,客户端装置180A可以使用所预配的实例和虚拟GPU来执行任何适合的任务,例如,基于来自客户端装置的输入。虚拟计算实例141B可以执行特定应用程序320。应用程序320可以由客户端选择或提供。虚拟计算实例141B还可以配置有向应用程序321提供支持的特定操作***322。另外,虚拟计算实例141B可以配置有特定图形驱动程序321。图形驱动程序321可以与虚拟GPU 151B交互以为应用程序320提供图形处理,所述图形处理包含经加速的二维图形处理和/或经加速的三维图形处理。在一个实施例中,图形驱动程序321可以实施如Direct3D或OpenGL等图形应用程序编程接口(API)。图形驱动程序321可以表示以用户模式和/或内核模式运行的部件。如图形运行时间等附加部件(未示出)还可以用于在虚拟计算实例141B上提供经加速的图形处理。
客户端装置180A可以通过代理310与虚拟计算实例141B通信。可以通过代理310发送各种其它通信,所述通信包含例如从虚拟GPU 151B到客户端装置180A的虚拟GPU输出302。代理310的使用可以隐藏来自客户端装置180A的虚拟计算实例的地址和任何相关联的资源(包含实施虚拟GPU 151B的计算装置)。代理310和虚拟计算实例141B可以使用适合的远程协议进行通信。在各个实施例中,代理310可以是或可以不是提供商网络100的部分。客户端装置180A可以向在虚拟计算实例141B上运行的应用程序320提供应用程序输入301。例如,应用程序输入301可以包含要在应用程序320上操作的数据和/或用于控制应用程序的执行的指令。
使用由虚拟GPU 151B提供的图形处理,应用程序的执行可以生成虚拟GPU输出302。虚拟GPU输出302可以例如从虚拟GPU 151B或虚拟计算实例141B提供给客户端装置180A。在一个实施例中,虚拟GPU输出302可以从虚拟GPU 151B(例如,从包含虚拟GPU的计算装置)发送到客户端装置180A,同时绕过虚拟计算实例141B的其余部分(例如,底层服务器142B)。虚拟GPU输出302还可以通过代理310发送到客户端装置180A。代理310和虚拟GPU151B可以使用适合的远程协议进行通信。在一个实施例中,虚拟GPU输出302可以返回到虚拟计算实例141B,并且所述虚拟计算实例可以将虚拟GPU输出发送到客户端装置180A。在一个实施例中,客户端装置180A可以将虚拟GPU输出302转发到另一个部件。
在一个实施例中,与客户端装置180A相关联的显示装置181可以呈现虚拟GPU输出302的显示330。在一个实施例中,虚拟GPU输出302可以包含像素数据、图像数据、视频数据或其它图形数据。在一个实施例中,虚拟GPU输出302可以驱动显示装置181上的全屏显示。虚拟GPU输出302的部分可以随着时间流式传输到客户端装置180A。在一个实施例中,虚拟GPU输出302可以与一个或多个其它图形数据源合成以产生显示330。在一个实施例中,虚拟GPU 151B可以用于通用计算(例如,GPGPU计算),并且虚拟GPU输出302可以不包含像素数据或其它图形数据。在各个实施例中,客户端装置180A可以在显示输出之前处理或转化虚拟GPU输出302的全部或部分。例如,客户端装置180A上的CPU、GPU或协处理器可以转换虚拟GPU输出302的部分并且在显示装置181上显示结果。
在各个实施例中,可以使用任何适合的(多种)技术来将图形处理从虚拟计算实例卸载到物理GPU。在一个实施例中,API垫片可以拦截对图形API的调用并且通过网络将调用编排到包含物理GPU的外部计算装置。在一个实施例中,驱动程序垫片可以将专有驱动程序显示给虚拟计算实例、拦截调用,并且通过网络将调用编排到包含物理GPU的外部计算装置。在一个实施例中,硬件垫片可以将硬件接口显示给虚拟计算实例并且通过实例编排与物理GPU交互的尝试。
图4展示了根据一个实施例的用于实施虚拟化图形处理的示例硬件架构。在一个实施例中,虚拟计算实例141B可以使用服务器142B来实施,并且附接到所述实例141B的虚拟GPU 151B可以使用被称作图形服务器420的单独且不同的计算装置来实施。虚拟计算实例141B可以使用虚拟接口400与接口装置410交互。虚拟接口400可以使虚拟计算实例141B能够发送和接收网络数据。接口装置410可以包含网络接口和定制硬件接口。通过定制硬件接口,接口装置410可以运行程序代码以模拟GPU接口并且显示给虚拟计算实例141B以实施或包含虚拟GPU 151B。在一个实施例中,接口装置410可以向虚拟计算实例141B呈现图形API并且接收用于图形处理(例如,经加速的3D图形处理)的API调用。通过网络接口,接口装置410可以通过网络与图形服务器420(并且因此与物理GPU 152B)通信。接口装置410可以以任何适合的方式实施,例如,作为扩展卡(如PCI无线上网卡)或用于服务器142B的所附接的***装置。接口装置410可以使用单根I/O虚拟化来将硬件虚拟功能暴露给虚拟计算实例141B。在一个实施例中,服务器142B可以实施多个虚拟计算实例,所述每个虚拟计算实例具有其自己的虚拟接口,并且所述虚拟计算实例可以使用接口装置410在一个或多个图形服务器上与对应的虚拟GPU交互。服务器142B可以使用适合的远程协议与代理310通信,例如,向客户端装置180A发送数据和从所述客户端装置接收数据。
由接口装置410执行的图形卸载(例如,通过在接口装置上执行定制程序代码)可以将图形API命令转换为传输到图形服务器420的网络流量(封装所述图形API命令),并且所述图形服务器420可以代表接口装置执行命令。图形服务器420可以包含网络适配器440,所述网络适配器通过网络与接口装置410(例如,与接口装置的网络接口)通信。在一个实施例中,接口装置410可以接收对图形API的调用(使用定制硬件接口)并且生成要发送到网络适配器440的图形卸载流量(使用网络接口)。图形服务器410可以实施图形虚拟机430。可以使用用于虚拟化的任何适合的技术来实施图形虚拟机430。在一个实施例中,图形虚拟机430可以表示能胜任GPU的通用虚拟机,并且专用于使用一个或多个虚拟GPU提供经加速的图形处理。图形虚拟机430可以使用虚拟接口401耦合到网络适配器440。虚拟接口401可以使图形虚拟机430能够发送和接收网络数据。图形虚拟机430可以使用物理GPU 152B的图形处理能力来实施虚拟GPU 151B。在一个实施例中,物理GPU 152B可以由图形虚拟机430直接访问,并且所述物理GPU 152B可以使用直接存储器访问来写入和读取由图形虚拟机管理的存储器。在一个实施例中,图形服务器420可以使用一个或多个物理GPU(如物理GPU 152B)来实施多个虚拟GPU(如虚拟GPU 151B),并且虚拟GPU可以通过网络与一个或多个服务器上的对应的虚拟计算实例进行交互。图形服务器420可以使用适合的远程协议与代理310通信,例如,向客户端装置180A发送数据和从所述客户端装置接收数据。例如,图形服务器420可以基于从接口装置410发送的命令生成虚拟GPU输出。虚拟GPU输出可以通过代理310提供给客户端装置180A,例如,从服务器142B或图形服务器420提供。
图5是展示了根据一个实施例的用于在提供商网络中虚拟化图形处理的方法的流程图。如505中所示,可以选择虚拟计算实例。可以(至少部分地)基于由虚拟计算实例提供的计算和存储器资源来选择虚拟计算实例。例如,可以(至少部分地)基于用户对实例类型的选择来选择虚拟计算实例。如510中所示,可以选择虚拟GPU。可以(至少部分地)基于由虚拟GPU提供的图形处理能力来选择虚拟GPU。例如,可以(至少部分地)基于用户对虚拟GPU类的选择来选择虚拟GPU。还可以(至少部分地)基于管理这种资源的提供商网络的资源池中的资源的可用性来选择虚拟计算实例和虚拟GPU。在一个实施例中,弹性图形服务可以接收用于虚拟计算实例和虚拟GPU的指定和/或选择。
如515中所示,所选择的虚拟计算实例可以预配有附接的所选择的虚拟GPU。在一个实施例中,弹性图形服务可以与提供商网络的一个或多个如计算虚拟化功能和/或GPU虚拟化功能等其它服务或功能交互,以使用虚拟GPU预配实例。可以使用中央处理单元(CPU)资源和服务器的存储器资源来实施虚拟计算实例。可以使用物理GPU来实施虚拟GPU。物理GPU可以附接到不同的计算装置,而不是为虚拟计算实例提供CPU资源的计算装置。服务器可以通过网络访问物理GPU。虚拟GPU可以据说是附接到虚拟计算实例,或者所述虚拟计算实例可以据说是包含虚拟GPU。在一个实施例中,物理GPU可以在虚拟GPU与一个或多个附加虚拟GPU之间共享,并且附加虚拟GPU可以附接到附加虚拟计算实例。在一个实施例中,虚拟计算实例可以通过包含网络接口和定制硬件接口的接口装置访问虚拟GPU。通过定制硬件接口,接口装置可以模拟GPU并且显示到用于包含虚拟GPU的虚拟计算实例。通过网络接口,接口装置可以通过网络与物理GPU通信。
如520中所示,可以使用虚拟GPU在虚拟计算实例上执行应用程序。应用程序的执行可以包含在虚拟计算实例(例如,在底层服务器上)和/或虚拟GPU上(例如,在底层物理GPU上)的指令的执行。使用虚拟GPU执行应用程序可以生成虚拟GPU输出,例如,通过执行指令或以其它方式在虚拟GPU上执行任务而产生的输出。如525中所示,可以将虚拟GPU输出提供给客户端装置。可以从虚拟计算实例或虚拟GPU向客户端装置提供虚拟GPU输出。在一个实施例中,虚拟GPU输出可以显示在与客户端装置相关联的显示装置上。虚拟GPU输出可以包含在显示装置上显示的像素信息或其它图形数据。使用虚拟GPU执行应用程序可以包含使用图形API对应用程序进行图形处理(例如,加速三维图形处理)。
在一些实施例中,缩放技术可以与本文所描述的用于虚拟化图形处理的技术一起使用。可以预配虚拟计算实例,并且可以将第一组一个或多个GPU附接到实例以提供图形处理。所述第一组一个或多个虚拟GPU可以提供特定级别的图形处理。在确定用于实例的GPU要求的改变之后,可以选择第二组一个或多个虚拟GPU并将其附接到虚拟计算实例以使用不同级别的图形处理来代替所述(多个)第一虚拟GPU的图形处理。可以基于GPU要求的改变来选择所述(多个)第二虚拟GPU。根据GPU要求的改变,这种缩放操作可以将用于虚拟计算实例的图形处理从功能较弱或较小的虚拟GPU类迁移到功能较强或较大的虚拟GPU类,或者从功能较强或较大的虚拟GPU类迁移到功能较弱或较小的虚拟GPU类。在一个实施例中,可以(至少部分地)基于表示GPU要求的改变的用户输入来执行图形处理的迁移。在一个实施例中,可以(至少部分地)基于检测图形工作负载的增加来执行图形处理的迁移。可以在以不需要改变或重新启动应用程序的方式使用所述(多个)第一虚拟GPU执行应用程序的同时执行实时迁移。还可以执行将虚拟计算实例迁移到不同的服务器,例如,用于减少与虚拟化图形处理相关联的网络传输时间。
在一些实施例中,放置优化技术可以与本文所描述的用于虚拟化图形处理的技术一起使用。资源放置的优化可以改善用于GPU虚拟化的一个或多个度量(例如,与资源使用情况或成本相关)。(多个)服务器可以用于实施(多个)虚拟计算实例,并且(多个)物理GPU可以用于实施附接到(多个)虚拟计算实例的(多个)虚拟GPU。使用用于优化放置的技术,基于任何适合的放置标准可以在提供商网络中(从一组(多个)可用的服务器和/或(多个)物理GPU中)选择(多个)虚拟计算实例和/或(多个)虚拟GPU的位置。所述一个或多个放置标准可以(至少部分地)基于与最大化性能、最小化成本、最小化能量使用情况和/或任何其它适合的度量相关联的度量。放置标准还可以与网络局部性相关联。例如,为了最小化网络传输时间和/或网络使用情况,可以将虚拟计算实例和所附接的虚拟GPU放置在同一数据中心的同一机架中,使得底层服务器与物理GPU之间的网络通信可以不延伸超出机架顶部交换机或机架中的其它联网部件。如果同一机架内的位置不可用,则可以为虚拟计算实例和所附接的虚拟GPU选择同一数据中心内的附近位置。以这种方式优化放置,不但可以用于新预配的资源,而且可以用于在已经开始使用虚拟计算实例和/或所附接的虚拟GPU后进行迁移。当如上所讨论的对GPU虚拟化执行缩放时,可以基于放置标准来选择任何虚拟GPU的位置,和/或可以基于放置标准来移动虚拟计算实例的位置。
在一些实施例中,本地到远程迁移技术可以与本文所描述的用于虚拟化图形处理的技术一起使用。可以向虚拟计算实例预配本地图形处理单元(GPU)以提供图形处理。本地GPU可以使用附接的硬件或使用仿真来实施。因为本地GPU可以仅提供低级别的图形处理能力,所以可以将虚拟GPU附接到虚拟计算实例以提供相对于本地GPU的经改进的图形处理。可以从具有用于图形处理的不同能力的一组虚拟GPU(例如,属于虚拟GPU类)中选择虚拟GPU。虚拟GPU可以使用通过网络连接到虚拟计算实例的物理GPU来实施。可以将用于虚拟计算实例的图形处理从本地GPU迁移到虚拟GPU。在一个实施例中,在应用程序的执行期间,可以将用于虚拟计算实例上的特定应用程序的图形处理从本地GPU迁移到虚拟GPU。在一个实施例中,可以(至少部分地)基于检测图形工作负载的增加来执行图形处理的迁移。
在一些实施例中,可以利用本文所描述的用于虚拟化图形处理的技术来实施图形叠加。可以为虚拟计算实例预配所附接的虚拟GPU。在执行特定应用程序时,虚拟计算实例可以向图形服务器发送图形指令以生成与应用程序相关联的图形输出。如通过执行从虚拟计算实例发送的图形指令所确定的,图形输出可以包含图形元素,所述图形元素包含对象、像素等。在图形服务器接收到来自虚拟计算实例的图形指令之后,可以将图形叠加添加到图形输出。图形叠加可以包含一个或多个附加图形元素,并且所述附加图形元素可以放置在(并且因此可以至少部分地模糊)通过执行从虚拟计算实例发送的“原始”图形指令而生成的任何图形元素的上方。例如,图形叠加可以包含如当前帧速率、应用内聊天窗口等元数据的显示。并非在应用程序中使用代码注入来修改或追加图形指令以生成叠加,而是可以使用在所述服务器处确定的附加图形指令在图形服务器处生成叠加;使用从图形服务器接收的图形输出在专用图形叠加服务器处生成生成叠加;或者使用从图形服务器接收的图形输出在服务器处生成叠加。使用这些技术,可以以可信的方式利用叠加来修改虚拟GPU的图形输出,例如,不必修改代表其生成图形输出的应用程序。
动态和专用的虚拟化图形处理
图6A、6B和6C展示了根据一些实施例的用于动态和专用的虚拟化图形处理的示例***环境。在一些实施例中,可以在动态和专用的基础上提供虚拟化图形处理。使用以上所讨论的用于提供商网络中的虚拟化图形处理的技术,可以预配虚拟计算实例141C。虚拟计算实例141C可以被配置成执行一个或多个应用程序。如图6A的实例所示,虚拟计算实例141C可以具有如应用程序620A到应用程序620N的一组应用程序。然而,在各个实施例中,虚拟计算实例可具有任何适合数量和配置的应用程序。如本文所使用的,术语“应用程序”通常包含一组程序指令、软件包或一组互连的软件资源,所述应用程序被设计成当在计算实例上,通常在操作***的上方执行时,执行一组协调功能。
如以下将更详细讨论的,可以选择虚拟GPU并将其附接到虚拟计算实例141C以供应用程序620A-620N中的一个特定应用程序具体地使用。专用的虚拟GPU可以动态地附接,例如,当正在执行特定应用程序并且可能响应于应用程序执行或请求操作时。专用的虚拟GPU可以专用于特定应用程序,并且在虚拟计算实例141C上运行的其它应用可能无法访问该特定虚拟GPU。在一个实施例中,虚拟计算实例141C上的多于一个的应用程序620A-620N可以具有它们自己的专用虚拟GPU。虚拟GPU的能力可以基于与不同应用程序相关联的不同GPU要求而变化。在一个实施例中,虚拟计算实例114C上的一个或多个其它应用程序可能无法访问任何虚拟GPU,例如,如果用于其它应用程序的GPU要求不足以证明虚拟GPU的成本是合理的。
提供商网络100可以提供可用物理图形处理单元(GPU)资源池。物理GPU资源可以包含多个图形服务器(如图形服务器420)和/或包含在这种图形服务器内的多个物理GPU。可用的物理GPU资源可以在其硬件特性或特征集、原始供应商、相关联的应用程序编程接口(API)(例如,用于如OpenGL或Direct3D或Vulkan或通用GPU计算API(如OpenCL)等经加速的图形处理的图形API)和/或其它相关属性方面变化。使用那些物理GPU资源实施的任何虚拟GPU可以类似地在这种特性中变化。如以上所讨论的,虚拟GPU可以由提供商网络100以如类“B”到类“N”等各种类122或类型提供,所述虚拟GPU在一个或多个特性中变化。在一个实施例中,虚拟GPU类可以表示物理GPU的图形处理能力的细分,如完整GPU、半GPU、四分之一GPU等。虚拟GPU类可以通过其用于图形处理的计算资源、用于图形处理的存储器资源、特征集和/或其它适合的描述性特性来表征。例如,类“B”的虚拟GPU 151B可以使用具有特定量的视频存储器的物理GPU来实施,而类“N”的虚拟GPU 151N可以使用具有不同量的视频存储器的物理GPU来实施。作为另一个实例,类“B”的虚拟GPU 151B可以使用如OpenGL的版本等一个API来访问,而类“N”的虚拟GPU 151N可以使用如Direct3D的版本等另一个API来访问。作为又另一个实例,类“B”的虚拟GPU 151B可以使用具有与特定GPU供应商相关联的特定硬件特征或能力的物理GPU来实施,而类“N”的虚拟GPU 151N可能缺少这种硬件特征或能力。
虚拟计算实例上的应用程序可以与一个或多个要求相关联,所述一个或多个要求与虚拟GPU的使用相关联,在本文也称为图形要求或GPU要求。GPU要求可以指定由提供商网络100提供的虚拟GPU类122中的一个或多个虚拟GPU类、GPU的一个或多个硬件特性(例如,最小量的存储器)、GPU的供应商、用于GPU的期望API和/或其它相关属性。例如,特定应用程序可以与具有最小量的存储器和/或特定硬件特征的GPU的要求相关联以实现应用程序的阈值性能水平。作为另一个实例,特定应用程序可以与可使用特定API(例如,用于如OpenGL或Direct3D或通用GPU计算API(如OpenCL)等经加速的图形处理的图形API)访问的GPU的要求相关联。GPU要求可以表示为最小值、最大值、阈值和/或值范围。在一个实施例中,如果这种容量可用的话),则GPU要求可以包含都要选择的最小值要求和有利要求(其超过最小值要求)。
在一个实施例中,可以将与特定应用程序相关联的GPU要求630提供给弹性图形服务110并且用于选择适当的专用的虚拟GPU以附接到所述应用程序。在一个实施例中,由虚拟计算实例141C提供的GPU要求630可以仅包含应用程序的标识符,并且如弹性图形服务器等另一个部件可以(至少部分地)基于应用程序标识符选择虚拟GPU或者确定其它GPU要求。在一个实施例中,对于具有一个或多个特定GPU要求的特定应用程序,弹性图形服务110的虚拟GPU选择部件610可以从一组虚拟GPU类122中选择虚拟GPU类635以与应用程序一起使用。可以选择虚拟GPU类635,使得满足一个或多个GPU要求630。例如,如果GPU要求630指示最小量的视频存储器,则虚拟GPU选择部件610可以选择满足或超过视频存储器的规定量的虚拟GPU类635。作为另一个实例,如果GPU要求630仅识别寻求虚拟化GPU处理的应用程序,则虚拟GPU选择部件610例如可以使用将应用程序链接到附加GPU要求的任何适当的元数据来选择适合于所述应用程序的虚拟GPU类635。所选择的类635的虚拟GPU可以由来自提供商网络100的可用资源池,例如,来自可用物理GPU资源池的弹性图形服务110预配。用于实施所选择的虚拟GPU的物理GPU资源还可以满足所述一个或多个GPU要求630。
虚拟计算实例141C上的应用程序620A-620N中的一个或多个应用程序可以与一组GPU要求630相关联。在各个实施例中,可以以各种方式确定与特定应用程序相关联的GPU要求。在一个实施例中,例如,在请求虚拟GPU之后的应用程序的执行期间,可以从虚拟计算实例141C上的应用程序的用户请求GPU要求。在一个实施例中,当从用户请求GPU要求时,可以向用户呈现与两个或更多个虚拟GPU相关联的不同特征和成本。在一个实施例中,应用程序的用户可以指定用于如特定帧速率等期望体验的标准,并且可以将所指定的标准映射到适当的GPU要求和/或虚拟GPU类。
如图6A的实例所示,GPU要求630可以包含在用于启动或以其它方式安装在虚拟计算实例141C上的机器映像640中。机器映像640可以包含操作***软件和用于将虚拟计算实例141C置于适于启动应用程序620A-620N的状态的任何其它配置值。在各个实施例中,机器映像640还可以包含应用程序620A-620N中的一个或多个应用程序。在一个实施例中,机器映像640中的GPU要求630可以仅适用于应用程序620A-620N中的一个应用程序,例如,使得参考对应的应用程序的具体标识符来表达要求。在一个实施例中,机器映像640中的相同GPU要求630可以适用于多于一个的应用程序620A-620N。在一个实施例中,机器映像640中的不同GPU要求630可以适用于应用程序620A-620N中的不同应用程序。可以向弹性图形服务110提供最初包含在机器映像640中的GPU要求630,用于在任何适合的时间点选择和附接专用的虚拟GPU。
如图6B的实例所示,GPU要求630可以包含在与应用程序620A-620N相关联的一个或多个应用程序清单中。例如,应用程序620A可以与描述与所述应用程序具体相关联的GPU要求630A的应用程序清单605A相关联,而另一个应用程序620N可以与描述与所述其它应用程序具体相关联的GPU要求630N的另一个应用程序清单605N相关联。应用程序清单605A-605N可以指定用于执行对应的应用程序的平台(例如,计算和存储器要求)或环境的所需或所推荐特性,所述特性可能包含服务器或虚拟计算实例的特性。应用程序清单605A-605N可以由对应的应用程序的开发者确定和提供,所述开发者寻求对执行应用程序的平台或环境的类型的一定程度的控制。可以使用应用程序虚拟化容器来实施应用程序,并且可以用容器向应用程序提供清单。在一个实施例中,如果机器映像640还包含适用于整个实例141C的GPU要求,则应用程序清单中的专用的GPU要求可以覆盖机器映像中的一般GPU要求。在一个实施例中,可以使用实例141C外部的任何适合的元数据来确定GPU要求630。例如,弹性图形服务610可访问的元数据存储库可以维持将特定应用程序映射到用于提供商网络100的一个或多个客户端的特定GPU要求的信息。
如图6C的实例所示,GPU要求630可以由应用程序本身在其执行期间提供。在一个实施例中,弹性图形服务110可以提供与虚拟GPU选择610相关联的API。已经被编写以利用虚拟GPU选择API的应用程序620A可以在启动之后调用API并且指定一个或多个GPU要求630(可能包含所选择的GPU类635的直接指示)。在一个实施例中,可以对图形驱动程序321进行这种调用,所述图形驱动程序实施与弹性图形服务110相关联的功能的方面。图形驱动程序可以将GPU要求630转发到弹性图形服务110,用于选择和附接专用于调用应用程序的适合的虚拟GPU。
在一个实施例中,应用程序的编程分析可以确定与应用程序相关联的GPU要求630。应用程序分析可以包含由应用程序要求的图形工作负载的运行时间分析和/或应用程序的执行历史(包含图形工作负载)的分析,例如,使用与当前实例类似的虚拟硬件。当前的或历史的用于应用程序的图形工作负载可以基于与虚拟GPU或底层物理GPU的使用相关的任何适合的度量,如发送到GPU的基元的数量、GPU所请求的操作的数量、GPU使用的视频存储器和/或一段时间内来自GPU的输出速率。
可以动态地或按需选择和/或附接专用的虚拟GPU。在一个实施例中,用于应用程序的GPU要求可以仅在启动应用程序之后,例如,在发起应用程序的执行之后,由实例141C确定或提供给弹性图形服务110。类似地,在应用程序执行之前,可以不选择、预配和/或附接专用的虚拟GPU以供应用程序使用。在一个实施例中,用于应用程序的GPU要求可以在启动应用程序之前由实例141C确定或提供给弹性图形服务110,但是在应用程序执行之前,可以不选择、预配和/或附接专用的虚拟GPU以供应用程序选择。在一个实施例中,应用程序620A-620N的启动和/或执行可以由虚拟计算实例141C的适合的部件监控,并且所述部件可以发起专用的虚拟GPU的选择和/或附接。在一个实施例中,可以(至少部分地)基于由对应的应用程序在其执行期间执行或请求的一个或多个操作或任务来选择和/或附接专用的虚拟GPU。例如,响应于由应用程序对实例141C上的图形驱动程序321进行的调用,例如,请求执行一个或多个图形操作或通用GPU计算操作,可以选择和/或附接专用的虚拟GPU。在一个实施例中,响应于由与虚拟GPU要求相关联的应用程序进行的第一这种调用,可以选择和/或附接专用的虚拟GPU。在一个实施例中,可以(至少部分地)基于加载到应用程序的具体数据集,例如,根据由应用程序进行的API调用附接虚拟GPU。类似地,可以(至少部分地)基于从应用程序存储器移除的数据集而潜在地分离虚拟GPU。通过仅在需要时预配虚拟GPU,可以节省提供商网络100中的GPU资源。另外,对于使用所附接的虚拟GPU操作虚拟计算实例的客户端,可以最小化使用虚拟GPU的费用(例如,每单位时间的费用)。
在一些情况下,由用于应用程序的GPU要求所规定的虚拟GPU类可能是不可用的。虚拟GPU类可能出于技术原因(例如,在忙碌时段期间)或出于商业原因(例如,所选择的GPU类比用户与提供商网络100之间的协议所允许的更昂贵)而不可用。在这种情况下,弹性图形服务110可以返回失败的指示或者尝试调解所请求的虚拟GPU类与可用的虚拟GPU之间的差异。如果较小类的虚拟GPU可用,则弹性图形服务110可以提示用户批准。在一个实施例中,弹性图形服务110可以寻求用户批准以等待直到所请求的虚拟GPU类以可接受的成本可用。
图7展示了根据一个实施例的用于动态和专用的虚拟化图形处理的示例***环境,包含动态地附接用于虚拟计算实例上的应用程序的单个专用的虚拟GPU。在图7的实例中,弹性图形服务已选择虚拟GPU类“C”以与专用应用程序620A一起使用,例如,(至少部分地)基于与所述应用程序相关联的GPU要求。所选择的类“C”的虚拟GPU 151C可以由来自提供商网络的可用资源池,例如,来自可用物理GPU资源池的弹性图形服务110预配。用于实施所选择的虚拟GPU的物理GPU 152C可以满足所述一个或多个GPU要求。
虚拟计算实例141C可以由计算虚拟化功能140使用如服务器142C等适合的物理资源来实施,并且所预配的虚拟GPU 151C可以由GPU虚拟化功能150使用如物理GPU 152C等适合的物理资源来实施。如本文所使用的,预配虚拟计算实例通常包含为客户端(例如,来自可用服务器和其它资源池)预留底层服务器的资源(例如,计算和存储器资源)、安装或启动所需软件(例如,操作***)以及使虚拟计算实例可用于客户端以执行由客户端指定的任务。在一个实施例中,基本上任何虚拟GPU类的虚拟GPU可以附接到基本上任何实例类型的虚拟计算实例。为了用所附接的虚拟GPU 151C实施虚拟计算实例141C,服务器142C可以例如通过网络与物理GPU 152C通信。物理GPU 152C可以位于与服务器142C不同的计算装置中,例如,在图形服务器中。即使它们可以使用单独的硬件来实施,虚拟GPU 151C也可以据说附接到虚拟计算实例141C,或者虚拟计算实例也可以据说包含虚拟GPU。虚拟GPU 151C可以安装在可以驻留在相对于物理GPU 152C的各种位置的装置上,例如,在同一网络上的同一机架、同一交换机、同一空间和/或其它适合位置。
虚拟计算实例141C可以被配置成执行具有专用的虚拟GPU 151C的应用程序620A。应用程序620A的执行可以包含使用虚拟GPU 151C以基于由应用程序提供给虚拟GPU的数据生成输出。虚拟GPU 151C可以专用地附接到虚拟计算实例141C以供特定应用程序620A使用。专用的虚拟GPU 151C可以专用于特定应用程序620A,并且在虚拟计算实例141C上运行的其它应用可能无法访问该特定虚拟GPU 151C。可以将由专用的虚拟GPU 151C产生的输出(可能包含图形输出)提供给虚拟计算实例141C或如客户端装置180A等客户端装置。在一个实施例中,虚拟GPU 151C可以由应用程序620A用于图形处理和GPGPU计算的目的。
虚拟GPU 151C可以在图形服务器420中实施。在一个实施例中,图形服务器420可以在给定时间向多个不同客户端提供虚拟化图形处理(或虚拟化GPGPU计算处理)。不同的客户端可以执行利用多租户图形服务器中的同一虚拟GPU 151C,例如,使用图形服务器中的多个应用程序上下文的不同应用。图形服务器可以根据当前使用虚拟GPU的应用程序在上下文之间转换。
在一个实施例中,当由实例生成用于专用的虚拟GPU的附接请求时,可以将现有的虚拟GPU附接到虚拟计算实例141C。现有的虚拟GPU可以是专用的或非专用的。弹性图形服务110可以确定现有的虚拟GPU足以满足与新请求相关联的GPU要求630。在这种场景中,弹性图形服务110和/或图形驱动程序321可以不附接新的虚拟GPU,但可以转而将API调用从与新请求相关联的应用程序路由到现有的虚拟GPU。在一些实施例中,然后可以由同一实例141C上或多个实例上的多个应用程序使用现有的虚拟GPU。
图8展示了根据一个实施例的用于动态和专用的虚拟化图形处理的示例***环境,包含动态地附接用于同一虚拟计算实例上的不同应用程序的专用的虚拟GPU的不同类。在图8的实例中,弹性图形服务已再次选择虚拟GPU类“C”以与专用应用程序620A一起使用,例如,(至少部分地)基于与所述应用程序相关联的GPU要求。所选择的类“C”的虚拟GPU151C可以由来自提供商网络的可用资源池,例如,来自可用物理GPU资源池的弹性图形服务110预配。用于实施所选择的虚拟GPU 151C的物理GPU 152C可以满足与应用程序620A相关联的所述一个或多个GPU要求。同样在图8的实例中,弹性图形服务已选择虚拟GPU类“N”以与另一个专用应用程序620N一起使用,例如,(至少部分地)基于与所述应用程序相关联的GPU要求。所选择的类“N”的虚拟GPU 151N可以由来自提供商网络的可用资源池,例如,来自可用物理GPU资源池的弹性图形服务110预配。用于实施所选择的虚拟GPU 151N的物理GPU152N可以满足与应用程序620N相关联的所述一个或多个GPU要求。类“C”的虚拟GPU 151C与类“N”的虚拟GPU 151N可以在如硬件特性、原始供应商、相关联的应用程序编程接口(API)(例如,用于如OpenGL或Direct3D或通用GPU计算API(如OpenCL)等经加速的图形处理的图形API)和/或其它相关属性等一个或多个特性上不同。
所预配的虚拟GPU 151C可以由GPU虚拟化功能150使用如物理GPU 152C等适合的物理资源来实施,并且所预配的虚拟GPU 151N可以由GPU虚拟化功能使用如物理GPU 152N等适合的物理资源来实施。为了用所附接的虚拟GPU 151C和所附接的虚拟GPU 151N实施虚拟计算实例141C,服务器142C可以例如通过网络与物理GPU 152C和物理GPU 142N通信。物理GPU 152C和物理GPU 152N可以位于与服务器142C不同的一个或多个计算装置中,如一个或多个图形服务器。虚拟GPU 151N可以安装在可以驻留在相对于物理GPU 152N的各种位置的装置上,例如,在同一网络上的同一机架、同一交换机、同一空间和/或其它适合位置。
在各个实施例中,任何适合的(多种)技术可以用于将图形处理从虚拟计算实例141C卸载到用于实施专用的虚拟GPU 151C-151N的物理GPU中。在一个实施例中,API垫片可以拦截对图形API的调用并且通过网络将调用编排到包含物理GPU 152C-152N的一个或多个外部计算装置。API垫片可以是专用的,使得可以在用于具有专用虚拟GPU的每个应用程序的处理的上下文中打开用于图形处理的动态链接库(DLL)的实例。DLL可以连接到虚拟GPU 151C-151N中的一个特定虚拟GPU并且代表对应的应用程序提供对所述虚拟GPU的独占访问。可以使用应用程序虚拟化容器来实施应用程序620A-620N,并且可以将API垫片层构建到用于应用程序的容器中。
虚拟计算实例141C可以被配置成执行具有专用的虚拟GPU 151C的应用程序620A;应用程序620A的执行可以包含使用虚拟GPU 151C以基于由应用程序提供给虚拟GPU的数据生成输出。类似地,虚拟计算实例141C可以被配置成执行具有专用的虚拟GPU 151N的应用程序620N;应用程序620N的执行可以包含使用虚拟GPU 151N以基于由应用程序提供给虚拟GPU的数据生成输出。在一个实施例中,应用程序620A可以以与应用程序620N使用虚拟GPU151N基本上并发的方式使用虚拟GPU 151C。可以将虚拟GPU 151C专有地附接到虚拟计算实例141C以供特定应用程序620A使用,并且可以将虚拟GPU 151N专有地附接到虚拟计算实例141C以供特定应用程序620N使用。可以将由专用的虚拟GPU 151C和专用的虚拟GPU 151N产生的输出(可能包含图形输出)提供给虚拟计算实例141C或如客户端装置180A等客户端装置。
图9展示了根据一个实施例的用于动态和专用的虚拟化图形处理的示例***环境,包含动态地附接用于同一虚拟计算实例上的同一应用程序的多个专用的虚拟GPU。在图9的实例中,弹性图形服务110已选择虚拟GPU类“C”以与专用应用程序620A一起使用,例如,(至少部分地)基于与所述应用程序相关联的GPU要求。如以上所讨论的,所选择的类“C”的虚拟GPU 151C可以由来自提供商网络的可用资源池,例如,来自可用物理GPU资源池的弹性图形服务110预配。用于实施所选择的虚拟GPU的物理GPU 152C可以满足所述一个或多个GPU要求。在一个实施例中,弹性图形服务110还已预配了如虚拟GPU 151M等同一类“C”的一个或多个附加虚拟GPU,以供同一应用程序620A使用。
附加虚拟GPU 151M可以由GPU虚拟化功能150使用如物理GPU 152M等适合的物理资源来实施。为了用所附接的虚拟GPU 151C和所附接的虚拟GPU 151M实施虚拟计算实例141C,服务器142C可以例如通过网络与物理GPU 152C和物理GPU 152M通信。物理GPU 152C和物理GPU 152M可以位于与如一个或多个图形服务器等服务器142C不同的计算装置中。虚拟GPU 151M可以安装在可以驻留在相对于物理GPU 152M的各种位置的装置上,例如,在同一网络上的同一机架、同一交换机、同一空间和/或其它适合位置。
虚拟计算实例141C可以被配置成执行具有专用的虚拟GPU 151C到151M的应用程序620A。应用程序620A的执行可以包含使用虚拟GPU 151C到151M以基于由应用程序提供给虚拟GPU的数据生成输出。虚拟GPU 151C和虚拟151M可以专用地附接到虚拟计算实例141C以供特定应用程序620A使用。可以将由专用的虚拟GPU 151C和虚拟GPU 151M产生的输出提供给虚拟计算实例141C或如客户端装置180A等客户端装置。在一个实施例中,应用程序620A可以以与应用程序使用虚拟GPU 151C基本上并发的方式使用虚拟GPU 151M。在一个实施例中,在应用程序620A已经使用虚拟GPU 151C之后,可以将虚拟GPU 151M附接到实例141C。例如,如果对于原始虚拟GPU 151C来说,现有的工作负载变得过多,则可以附接一个或多个附加虚拟GPU。在一个实施例中,可以由应用程序620A使用虚拟GPU 151C-151M中的一个虚拟GPU进行图形处理,并且应用程序可以出于GPGPU计算的目的使用虚拟GPU 151C-151M中的另一个虚拟GPU。在一个实施例中,可以由应用程序使用在其虚拟GPU类或硬件特性上变化的两个或更多个虚拟GPU,例如,一个用于基于一组GPU要求的图形处理并且另一个用于基于另一组GPU要求的GPGPU计算。
在一个实施例中,如果没有单个虚拟GPU可以满足应用程序的要求,则两个或更多个虚拟GPU 151C-151M可以专用于特定应用程序620A。作为另一个实例,如果在提供商网络100中没有满足应用程序的要求的当前可用的单个虚拟GPU,则两个或更多个虚拟GPU151C-151M可以专用于特定应用程序620A。作为又另一个实例,如果在客户端指定的预算内没有满足应用程序的要求的当前可用的单个虚拟GPU,则两个或更多个虚拟GPU 151C-151M可以专用于特定应用程序620A。
任何适合的(多种)技术可以用于允许单个应用程序620A使用多个虚拟GPU 151C-151M。在一个实施例中,可以将来自应用程序620A的输入数据广播到所有专用的虚拟GPU151C-151M,并且虚拟GPU可以以并发的方式在输入数据的不同部分上操作。可以使用API垫片来执行广播。然后可以例如基于虚拟GPU的相对能力在虚拟GPU 151C-151M之间划分工作负载。例如,虚拟GPU 151C-151M中的每一个虚拟GPU可以专用于特定的显示区,并且可以组合来自虚拟GPU的输出以生成每一帧。作为另一个实例,虚拟GPU 151C-151M中的每一个虚拟GPU可以专用于序列中的特定帧(例如,用于两个虚拟GPU的每隔一个帧),并且可以组合来自虚拟GPU的输出以生成帧序列。作为又另一个实例,虚拟GPU 151C-151M可以用于通用的GPU计算任务,例如,如使用OpenCL API所实施的。
图10展示了根据一个实施例的用于动态和专用的虚拟化图形处理的示例***环境,包含从虚拟计算实例动态地分离专用的虚拟GPU。可以以动态的方式从虚拟计算实例分离专用的虚拟GPU,例如,基于对应的应用程序的终止或者在一段时间内未使用虚拟GPU。如图10的实例所示,应用程序620A的执行可以由如实施弹性图形服务110的功能的方面的图形驱动程序321等虚拟计算实例141C的适合部件监控。在一个实施例中,当应用程序620A的执行处于终止的过程中时,应用程序可以向图形驱动程序321发送适合的命令,并且驱动程序(或实例141C的另一个部件)可以向弹性图形服务110的虚拟GPU分离部件650发送分离请求660。在一个实施例中,当终止应用程序620A的执行时,图形驱动程序321(或实例141C的另一个部件)可以检测终止并且向弹性图形服务110的虚拟GPU分离部件650发送分离请求660。在一个实施例中,当应用程序620A未能在可配置的时间段内使用专用的虚拟GPU 151C时,图形驱动程序321(或实例141C的另一个部件)可以向弹性图形服务110的虚拟GPU分离部件650发送分离请求660。分离请求660可以包含任何适合的数据或元数据,可能包含寻求其分离的虚拟GPU 151C的标识符。
在接收到分离请求660时,虚拟GPU分离部件650(或弹性图形服务110或提供商网络100的另一个适合的部件)可以分离专用的虚拟GPU 151C并且将底层物理GPU 152C返回到可用资源池。除非重新预配且重新附接所分离的虚拟GPU 151C,否则它可能不再可由虚拟计算实例141C使用。通过在不需要时自动且动态地分离虚拟GPU,可以节省提供商网络100中的GPU资源。另外,对于使用所附接的虚拟GPU操作虚拟计算实例的客户端,可以最小化使用虚拟GPU的费用(例如,每单位时间的费用)。
图11是展示了根据一个实施例的用于(至少部分地)基于与应用程序相关联的GPU要求动态地附接专用的虚拟GPU的方法的流程图。如1100中所示,可以在虚拟计算实例上启动应用程序。在应用程序启动时,虚拟计算实例可能不具有所附接的虚拟GPU,所述所附接的虚拟GPU对于新启动的应用程序来说是专用的或独有的。然而,在一些实施例中,虚拟计算实例可能已经具有一个或多个所附接的虚拟GPU,所述一个或多个所附接的虚拟GPU专用于其它应用程序或者旨在由实例上的任何应用程序进行一般的使用。启动应用程序也可以称为发起应用程序的执行。
如1110中所示,可以确定与应用程序的执行相关联的一个或多个GPU要求。GPU要求可以指定由提供商网络提供的虚拟GPU类中的一个或多个虚拟GPU类、GPU的一个或多个硬件特性(例如,最小量的存储器)、GPU的供应商、用于GPU的期望API和/或其它相关属性。GPU要求可以表示为最小值、最大值、阈值和/或值范围。在各个实施例中,可以以各种方式确定与特定应用程序相关联的GPU要求。在各个实施例中,例如,GPU要求可以包含在用于启动虚拟计算实例的机器映像中;GPU要求可以包含在与应用程序相关联的应用程序清单中;或者GPU要求可以由应用程序本身在其执行期间(例如,使用合适的API)提供。
如1120中所示,可以(至少部分地)基于物理GPU资源的特性并且还(至少部分地)基于用于应用程序的GPU要求选择物理GPU资源。例如,可以选择满足或超过与应用程序相关联的任何最低性能要求;具有与特定供应商相关联的一个或多个硬件特征;可以使用特定API(例如,OpenGL、Direct3D、Vulkan、OpenCL等)访问和/或具有GPU要求中指示的其它最小特性的物理GPU资源。所选择的物理GPU资源可以与提供商网络中提供的若干虚拟GPU类中的一个虚拟GPU类相关联。虚拟GPU类可以通过其用于图形处理的不同计算资源、用于图形处理的存储器资源、和/或其他适合的描述性特性来表征。
如1130中所示,可以将虚拟GPU附接到虚拟计算实例,并且可以使用所选择的物理GPU资源来实施虚拟GPU。虚拟GPU可以被称为专用的虚拟GPU。在一个实施例中,弹性图形服务可以与提供商网络的一个或多个如计算虚拟化功能和/或GPU虚拟化功能等其它服务或功能交互,以将虚拟GPU附接到实例。可以使用中央处理单元(CPU)资源和服务器的存储器资源来实施虚拟计算实例。物理GPU可以附接到不同的计算装置,而不是为虚拟计算实例提供CPU资源的计算装置。服务器可以通过网络访问所选择的物理GPU。虚拟GPU可以据说是附接到虚拟计算实例,或者所述虚拟计算实例可以据说是包含虚拟GPU。1110、1120和1130中所示的操作可以例如通过弹性图形服务来自动地和以编程方式执行,并且不一定基于具体地指导或提示这种操作的用户输入。
在一个实施例中,在应用程序执行之前,可以不选择、预配和/或附接专用的虚拟GPU以供应用程序使用。在一个实施例中,可以(至少部分地)基于由对应的应用程序在其执行期间执行或请求的一个或多个操作或任务来选择和/或附接专用的虚拟GPU。例如,响应于由应用程序对实例上的图形驱动程序进行的调用,例如,请求执行一个或多个图形操作或通用GPU计算操作,可以选择和/或附接专用的虚拟GPU。在一个实施例中,响应于由应用程序进行的第一这种调用,可以选择和/或附接专用的虚拟GPU。
如1140中所示,可以由虚拟GPU生成与应用程序的执行相关联的输出。在一个实施例中,应用程序可以生成图形指令,将所述图形指令发送到虚拟GPU以使用虚拟GPU来执行。在一个实施例中,对应的应用程序可以使用专用的虚拟GPU来排除在虚拟计算实例上驻留或执行的任何其它应用程序。虚拟计算实例上的附加应用程序可以使用不同的专用的虚拟GPU,并且专用的虚拟GPU可以基于应用程序的不同要求而在图形处理能力上变化。
图12是展示了根据一个实施例的用于(至少部分地)基于应用程序的终止动态地分离专用的虚拟GPU的方法的流程图。如上所讨论的并且如1140中所示的,与应用程序的执行相关联的输出可以由与所述应用程序相关联的专用的虚拟GPU生成。如1150中所示,可以确定应用程序是否已经终止。在一个实施例中,应用程序的执行可以由如实施弹性图形服务的功能的方面的图形驱动程序等虚拟计算实例的适合部件监控。在一个实施例中,当终止应用程序的执行时,应用程序可以向图形驱动程序发送适合的命令,并且驱动程序(或实例的另一个部件)可以向弹性图形服务发送分离请求。在一个实施例中,当终止应用程序的执行时,图形驱动程序(或实例的另一个部件)可以检测终止并且向弹性图形服务发送分离请求。
如1160中所示,可以将专用的虚拟GPU从虚拟计算实例分离。如1170中所示,可以解除预配与所分离的虚拟GPU相关联的物理GPU资源和/或将其返回到提供商网络的可用资源池。除非重新预配且重新附接所分离的虚拟GPU,否则它可能不再可由虚拟计算实例使用。1150、1160和1170中所示的操作可以例如通过弹性图形服务来自动地和以编程方式执行,并且不一定基于具体地指导或提示这种操作的用户输入。通过在不需要时自动且动态地分离虚拟GPU,可以节省提供商网络中的GPU资源。另外,对于使用所附接的虚拟GPU操作虚拟计算实例的客户端,可以最小化使用虚拟GPU的费用(例如,每单位时间的费用)。
图13是展示了根据一个实施例的用于(至少部分地)基于虚拟GPU的空闲率动态地分离专用的虚拟GPU的方法的流程图。如上所讨论的并且如1140中所示的,与应用程序的执行相关联的输出可以由与所述应用程序相关联的专用的虚拟GPU生成。如1155中所示,可以确定专用的虚拟GPU是否在可配置的时间段内未被使用,例如,虚拟GPU是否已经空闲一段时间。在一个实施例中,应用程序的执行和/或专用的虚拟GPU的使用可以由如实施弹性图形服务的功能的方面的图形驱动程序等虚拟计算实例的适合部件监控。在一个实施例中,当应用程序未能在阈值持续时间内使用专用的虚拟GPU时,图形驱动程序(或实例的另一个部件)可以向弹性图形服务发送分离请求。
如1160中所示,可以将专用的虚拟GPU从虚拟计算实例分离。如1170中所示,可以解除预配与所分离的虚拟GPU相关联的物理GPU资源和/或将其返回到提供商网络的可用资源池。除非重新预配且重新附接所分离的虚拟GPU,否则它可能不再可由虚拟计算实例使用。1155、1160和1170中所示的操作可以例如通过弹性图形服务来自动地和以编程方式执行,并且不一定基于具体地指导或提示这种操作的用户输入。通过在不需要时自动且动态地分离虚拟GPU,可以节省提供商网络中的GPU资源。另外,对于使用所附接的虚拟GPU操作虚拟计算实例的客户端,可以最小化使用虚拟GPU的费用(例如,每单位时间的费用)。
可以根据以下条款描述本公开的实施例:
1.一种***,包括:
多租户提供商网络中的可用物理图形处理单元(GPU)资源池,其中所述可用物理GPU资源中的至少一部分在一个或多个硬件特性上变化;
虚拟计算实例,其中使用所述多租户提供商网络中的服务器的中央处理单元(CPU)资源和存储器资源实施所述虚拟计算实例,并且其中所述虚拟计算实例被配置成:
发起应用程序的执行;以及
一个或多个计算装置,所述一个或多个计算装置被配置成实施图形服务,其中所述图形服务被配置成:
至少部分地基于与所述应用程序的所述执行相关联的一个或多个GPU要求从所述可用物理GPU资源池中选择物理GPU资源;并且
至少部分地基于所述应用程序的所述执行的发起将虚拟GPU附接到所述虚拟计算实例,其中使用选自所述池并且可由所述服务器通过网络访问的所述物理GPU资源实施所述虚拟GPU,并且其中所述虚拟GPU被配置成生成与所述虚拟计算实例上的所述应用程序的所述执行相关联的输出。
2.根据条款1所述的***,其中所述图形服务被进一步配置成:
至少部分地基于所述虚拟计算实例上的所述应用程序的所述执行的终止将所述虚拟GPU从所述虚拟计算实例分离;并且
将与所述虚拟GPU相关联的所述物理GPU资源返回到所述可用的物理GPU资源池。
3.根据条款1所述的***,其中在所述应用程序的所述执行期间由所述应用程序指定所述一个或多个GPU要求。
4.根据条款1所述的***,其中所述一个或多个GPU要求与用于启动所述虚拟计算实例的机器映像相关联。
5.一种计算机实施的方法,包括:
在虚拟计算实例上发起应用程序的执行;
确定与所述应用程序的所述执行相关联的一个或多个图形处理单元(GPU)要求;
至少部分地基于所述一个或多个GPU要求从可用的物理GPU资源池中选择物理GPU资源;以及
在发起所述应用程序的所述执行之后将虚拟GPU附接到所述虚拟计算实例,其中使用选自所述池并且可由所述虚拟计算实例通过网络访问的所述物理GPU资源实施所述虚拟GPU。
6.根据条款5所述的方法,其进一步包括:
检测所述虚拟计算实例上的所述应用程序的所述执行的终止;
至少部分地基于所述应用程序的所述执行的所述终止将所述虚拟GPU从所述虚拟计算实例分离;以及
将与所述虚拟GPU相关联的所述物理GPU资源返回到所述可用的物理GPU资源池。
7.根据条款5所述的方法,其中所述一个或多个GPU要求包括物理GPU的一个或多个硬件特性。
8.根据条款5所述的方法,其中所述一个或多个GPU要求包括物理GPU的供应商的标识。
9.根据条款5所述的方法,其中在所述应用程序的所述执行期间由所述应用程序指定所述一个或多个GPU要求。
10.根据条款5所述的方法,其中所述一个或多个GPU要求与用于启动所述虚拟计算实例的机器映像相关联。
11.根据条款5所述的方法,其进一步包括:
在所述虚拟计算实例上发起附加应用程序的执行,其中在终止所述应用程序的所述执行之后发起所述附加应用程序的所述执行;
确定与所述附加应用程序的所述执行相关联的一个或多个附加GPU要求,其中所述附加GPU要求至少部分地不同于所述GPU要求;
至少部分地基于所述一个或多个附加GPU要求从所述可用的物理GPU资源池中选择附加物理GPU资源;以及
在发起所述附加应用程序的所述执行之后将附加虚拟GPU附接到所述虚拟计算实例,其中使用选自所述池并且可由所述虚拟计算实例通过所述网络访问的所述附加物理GPU资源实施所述附加虚拟GPU。
12.根据条款5所述的方法,其进一步包括:
在所述虚拟计算实例上发起附加应用程序的执行;
确定与所述附加应用程序的所述执行相关联的一个或多个附加GPU要求,其中所述附加GPU要求至少部分地不同于所述GPU要求;
至少部分地基于所述一个或多个附加GPU要求从所述可用的物理GPU资源池中选择附加物理GPU资源;并且
至少部分地基于所述附加应用程序的所述执行的发起将附加虚拟GPU附接到所述虚拟计算实例,其中使用选自所述池并且可由所述虚拟计算实例通过所述网络访问的所述附加物理GPU资源实施所述附加虚拟GPU,并且其中与所述附加应用程序的所述执行相关联的所述附加虚拟GPU的输出和与所述应用程序的所述执行相关联的所述虚拟GPU的输出同时生成。
13.根据条款5所述的方法,其进一步包括:
至少部分地基于所述一个或多个GPU要求从所述可用的物理GPU资源池中选择附加物理GPU资源;并且
在所述应用程序的所述执行期间将附加虚拟GPU附接到所述虚拟计算实例,其中使用选自所述池并且可由所述虚拟计算实例通过所述网络访问的所述附加物理GPU资源实施所述附加虚拟GPU,并且其中与所述应用程序的所述执行相关联的所述附加虚拟GPU的输出和与所述应用程序的所述执行相关联的所述虚拟GPU的输出同时生成。
14.一种计算机可读存储媒体,其存储程序指令,所述程序指令是计算机可执行的以执行:
确定与虚拟计算实例上的应用程序的执行相关联的一个或多个图形处理单元(GPU)要求,其中使用多租户提供商网络中的服务器实施所述虚拟计算实例;
至少部分地基于所述一个或多个GPU要求从所述多租户提供商网络中的可用的物理GPU资源池中选择物理GPU资源;
在所述应用程序的所述执行期间将虚拟GPU附接到所述虚拟计算实例,其中使用选自所述池并且可由所述虚拟计算实例通过网络访问的所述物理GPU资源实施所述虚拟GPU;并且
使用所述虚拟GPU以生成与所述应用程序的所述执行相关联的输出。
15.根据条款14所述的计算机可读存储媒体,其中所述程序指令是进一步计算机可执行的以执行:
检测所述虚拟计算实例上的所述应用程序的所述执行的终止;
至少部分地基于所述应用程序的所述执行的所述终止将所述虚拟GPU从所述虚拟计算实例分离;并且
将与所述虚拟GPU相关联的所述物理GPU资源返回到所述可用的物理GPU资源池。
16.根据条款14所述的计算机可读存储媒体,其中所述一个或多个GPU要求包括物理GPU的一个或多个硬件特性。
17.根据条款14所述的计算机可读存储媒体,其中所述一个或多个GPU要求包括由GPU支持的应用程序编程接口(API)的标识。
18.根据条款14所述的计算机可读存储媒体,其中在所述应用程序的所述执行期间由所述应用程序指定所述一个或多个GPU要求。
19.根据条款14所述的计算机可读存储媒体,其中所述一个或多个GPU要求由所述虚拟计算实例外部的图形服务确定,并且其中所述物理GPU资源由所述图形服务选择。
20.根据条款14所述的计算机可读存储媒体,其中所述程序指令是进一步计算机可执行的以执行:
在所述虚拟计算实例上发起附加应用程序的执行;
确定与所述附加应用程序的所述执行相关联的一个或多个附加GPU要求,其中所述附加GPU要求至少部分地不同于所述GPU要求;
至少部分地基于所述一个或多个附加GPU要求从所述可用的物理GPU资源池中选择附加物理GPU资源;并且
至少部分地基于所述附加应用程序的所述执行的发起将附加虚拟GPU附接到所述虚拟计算实例,其中使用选自所述池并且可由所述虚拟计算实例通过所述网络访问的所述附加物理GPU资源实施所述附加虚拟GPU。
说明性计算机***
在至少一些实施例中,实施本文所描述的技术中的一种或多种的部分或全部的计算机***可以包含含有或被配置成访问一个或多个计算机可读媒体的计算机***。图14展示了这种计算装置3000。在所示实施例中,计算装置3000包含通过输入/输出(I/O)接口3030耦合到***存储器3020的一个或多个处理器3010。计算装置3000进一步包含耦合到I/O接口3030的网络接口3040。
在各个实施例中,计算装置3000可以是包含一个处理器3010的单处理器***或包含几个处理器3010(例如两个、四个、八个或另一适合数量)的多处理器***。处理器3010可以包含能够执行指令的任何适合的处理器。例如,在各个实施例中,处理器3010可以是实施如x86、PowerPC、SPARC、或MIPS ISA、或任何其它适合的ISA等各种指令集架构(ISA)中的任何指令集架构的处理器。在多处理器***中,处理器3010中的每一个处理器通常可以,但并非必须实施同一ISA。
***存储器3020可以被配置成存储可由(多个)处理器3010访问的程序指令和数据。在各个实施例中,可以使用如静态随机存取存储器(SRAM)、同步动态RAM(SDRAM)、非易失性/闪存型存储器或任何其它类型的存储器等任何适合的存储器技术实施***存储器3020。在所示实施例中,实施一个或多个期望功能的程序指令和数据,如以上所描述的那些方法、技术和数据,被示出为作为代码(即程序指令)3025和数据3026存储在***存储器3020内。
在一个实施例中,I/O接口3030可以被配置成协调处理器3010、***存储器3020与包含网络接口3040或其它***接口的装置中的任何***装置之间的I/O流量。在一些实施例中,I/O接口3030可以执行任何必要的协议、定时或其它数据转换,以将来自一个部件(例如***存储器3020)的数据信号转换为适合于另一个部件(例如处理器3010)使用的格式。在一些实施例中,I/O接口3030可以包含例如对通过如***部件互连(PCI)总线标准或通用串行总线(USB)标准的变体等各种类型的***总线的所附接装置的支持。在一些实施例中,例如,I/O接口3030的功能可以分成如北桥和南桥等两个或更多个单独的部件。而且,在一些实施例中,如用于***存储器3020的接口等I/O接口3030的一些或所有功能可以直接并入到处理器3010中。
网络接口3040可以被配置成允许数据在计算装置3000与附接到一个或多个网络3050的其它装置3060之间交换。在各个实施例中,例如,网络接口3040可以支持通过如以太网类型等任何适合的有线或无线通用数据网络的通信。另外,网络接口3040可以支持通过如模拟语音网络或数字光纤通信网络等电信/电话网络、通过如光纤通道SAN等存储区域网络或者通过任何其它适合类型的网络和/或协议的通信。
在一些实施例中,***存储器3020可以是计算机可读(即,计算机可访问)媒体的一个实施例,所述计算机可读媒体被配置成存储如以上所描述的用于实施对应的方法和设备的实施例的程序指令和数据。然而,在其它实施例中,程序指令和/或数据可以在不同类型的计算机可读媒体上接收、发送或存储。一般而言,计算机可读媒体可以包含如磁性或光学媒体等非暂态存储媒体,例如,通过I/O接口3030耦合到计算装置3000的磁盘或DVD/CD。非暂态计算机可读存储媒体还可以包含如RAM(例如,SDRAM、DDRSDRAM、RDRAM、SRAM等)、ROM等任何易失性或非易失性媒体等,所述媒体可以在一些实施例中作为***存储器3020或存储器的另一种类型包含在计算装置3000中。进一步地,计算机可读媒体可以包含传输媒体或如电信号、电磁信号或数字信号等信号,所述信号通过如网络和/或无线链接等通信媒体来传送,如可以通过网络接口3040来实施。如图14中所示的计算装置等多个计算装置中的部分或全部计算装置可以用于在各个实施例中实施所描述的功能;例如,在各种不同装置和服务器上运行的软件部件可以协作以提供功能。在一些实施例中,可以使用存储装置、网络装置或各种类型的计算机***来实施所描述的功能的部分。如本文所使用的术语“计算装置”指的是至少所有这些类型的装置,并且不限于这些类型的装置。
如附图中所示的和本文所描述的各种方法代表方法的实施例的实例。方法可以以软件、硬件或其组合的方式实施。在方法中的各种方法中,可以改变步骤的顺序,并且可以对各种元素进行添加、重新排序、组合、省略、修改等。可以自动地执行步骤中的各种步骤(例如,在没有由用户输入直接提示的情况下)和/或以编程方式(例如,根据程序指令)。
本文中对本发明的描述中所使用的术语仅出于描述特定实施例的目的并且并不旨在是对本发明的限制。如在本发明和所附权利要求的描述中所使用的,除非上下文另外明确地指示,否则单数形式“一个/一种(a)”、“一个/一种(an)”和“所述(the)”旨在同样包含复数形式。还将理解的是,如本文所使用的术语“和/或”指代并且涵盖一个或多个相关联的列举项的任何和所有可能的组合。将进一步理解的是,当在本说明书中使用术语“包含(includes)”、“包含(including)”、“包括(comprises)”和/或“包括(comprising)”时,指定所陈述的特征、整数、步骤、操作、元素和/或部件的存在,但不排除存在或添加一个或多个其它特征、整数、步骤、操作、元素、步骤和/或其组。
如在本文所使用的,取决于上下文,术语“如果”可以被解释成意指“当……时(when)”或“在……时(upon)”或者“响应于确定”或“响应于检测”。类似地,取决于上下文,短语“如果确定”或“如果\检测到[所陈述的条件或事件]”可以被解释为意指“在确定……时”或“响应于确定”或“在检测到[所陈述的条件或事件]……时”或“响应于检测到[所陈述的条件或事件]”。
还将理解的是,尽管本文可以使用术语第一、第二等来描述各种元素,但是这些元素不应受这些术语的限制。这些术语仅用来将一个元素与另一个元素相区分。例如,在不脱离本发明的范围的情况下,第一触点可以被称为第二触点,并且类似地,第二触点可以被称为第一触点。第一触点和第二触点都是触点,但是它们不是同一触点。
本文阐述了许多具体细节以提供对所要求的主题的透彻理解。然而,本领域技术人员将理解,可以在没有这些具体细节的情况下实践所要求的主题。在其它实例中,并未详细描述普通技术人员已知的方法、设备或***,以免模糊所要求的主题。可以作出的各种修改和改变对受益于本公开的本领域技术人员而言将是显而易见的。旨在包含所有这些修改和变化,并且因此,以上描述被认为是说明性的而不是限制性的。
Claims (15)
1.一种计算机实施的方法,包括:
在包括图形处理单元GPU接口的虚拟计算实例上发起应用程序的执行,所述GPU接口被配置为使用包括封装的图形应用程序编程接口API命令的远程协议通过网络来访问GPU资源;
确定与所述应用程序的所述执行相关联的一个或多个GPU要求;
从可用物理GPU资源池中选择物理GPU资源以实现多个虚拟GPU类中的一个虚拟GPU类的虚拟GPU,所述一个虚拟GPU类是至少部分地基于所述一个或多个GPU要求来选择的,其中所述虚拟GPU类表示物理GPU的图形处理能力的细分,并且其中所选择的虚拟GPU类满足与所述应用程序的执行相关联的要求;以及
在发起所述应用程序的所述执行之后将所选择的虚拟GPU类的虚拟GPU附接到所述虚拟计算实例,其中所述虚拟GPU是使用选自所述池的并且能够由所述虚拟计算实例通过网络使用所述远程协议的所述封装的图形API命令访问的所述物理GPU资源来实现的。
2.根据权利要求1所述的方法,其进一步包括:
检测所述虚拟计算实例上的所述应用程序的所述执行的终止;
至少部分地基于所述应用程序的所述执行的所述终止将所述虚拟GPU从所述虚拟计算实例分离;以及
将与所述虚拟GPU相关联的所述物理GPU资源返回到所述可用的物理GPU资源池。
3.根据权利要求1所述的方法,其中所述一个或多个GPU要求包括物理GPU的一个或多个硬件特性。
4.根据权利要求1所述的方法,其中所述一个或多个GPU要求包括物理GPU的供应商的标识。
5.根据权利要求1所述的方法,其中在所述应用程序的所述执行期间由所述应用程序指定所述一个或多个GPU要求。
6.根据权利要求1所述的方法,其中所述一个或多个GPU要求与用于启动所述虚拟计算实例的机器映像相关联。
7.根据权利要求1所述的方法,其进一步包括:
在所述虚拟计算实例上发起附加应用程序的执行,其中在终止所述应用程序的所述执行之后发起所述附加应用程序的所述执行;
确定与所述附加应用程序的所述执行相关联的一个或多个附加GPU要求,其中所述附加GPU要求至少部分地不同于所述GPU要求;
至少部分地基于所述一个或多个附加GPU要求从所述可用的物理GPU资源池中选择附加物理GPU资源;以及
在发起所述附加应用程序的所述执行之后将附加虚拟GPU附接到所述虚拟计算实例,其中使用选自所述池并且能够由所述虚拟计算实例通过所述网络访问的所述附加物理GPU资源实施所述附加虚拟GPU。
8.根据权利要求1所述的方法,其进一步包括:
在所述虚拟计算实例上发起附加应用程序的执行;
确定与所述附加应用程序的所述执行相关联的一个或多个附加GPU要求,其中所述附加GPU要求至少部分地不同于所述GPU要求;
至少部分地基于所述一个或多个附加GPU要求从所述可用的物理GPU资源池中选择附加物理GPU资源;以及
至少部分地基于所述附加应用程序的所述执行的发起将附加虚拟GPU附接到所述虚拟计算实例,其中使用选自所述池并且能够由所述虚拟计算实例通过所述网络访问的所述附加物理GPU资源实施所述附加虚拟GPU,并且其中与所述附加应用程序的所述执行相关联的所述附加虚拟GPU的输出和与所述应用程序的所述执行相关联的所述虚拟GPU的输出同时生成。
9.根据权利要求1所述的方法,其进一步包括:
至少部分地基于所述一个或多个GPU要求从所述可用的物理GPU资源池中选择附加物理GPU资源;以及
在所述应用程序的所述执行期间将附加虚拟GPU附接到所述虚拟计算实例,其中使用选自所述池并且能够由所述虚拟计算实例通过所述网络访问的所述附加物理GPU资源实施所述附加虚拟GPU,并且其中与所述应用程序的所述执行相关联的所述附加虚拟GPU的输出和与所述应用程序的所述执行相关联的所述虚拟GPU的输出同时生成。
10.一种包括耦合到存储器的处理器的***,所述存储器包含程序指令,所述程序指令是可执行的以执行:
确定与包括图形处理单元GPU接口的虚拟计算实例上的应用程序的执行相关联的一个或多个GPU要求,所述GPU接口被配置为使用包括封装的图形应用程序编程接口API命令的远程协议通过网络来访问GPU资源,其中使用多租户提供商网络中的服务器实施所述虚拟计算实例;
从所述多租户提供商网络中的可用物理GPU资源池中选择物理GPU资源以实现多个虚拟GPU类中的一个虚拟GPU类的虚拟GPU,所述一个虚拟GPU类是至少部分地基于所述一个或多个GPU要求来选择的,其中所述虚拟GPU类表示物理GPU的图形处理能力的细分,并且其中所选择的虚拟GPU类满足与所述应用程序的执行相关联的要求;
在所述应用程序的所述执行期间将所选择的虚拟GPU类的虚拟GPU附接到所述虚拟计算实例,其中所述虚拟GPU是使用选自所述池的并且能够由所述虚拟计算实例通过网络使用所述远程协议的所述封装的图形API命令访问的所述物理GPU资源来实现的;以及
使用所述虚拟GPU以生成与所述应用程序的所述执行相关联的输出。
11.根据权利要求10所述的***,其中所述程序指令是进一步可执行的以执行:
检测所述虚拟计算实例上的所述应用程序的所述执行的终止;
至少部分地基于所述应用程序的所述执行的所述终止将所述虚拟GPU从所述虚拟计算实例分离;以及
将与所述虚拟GPU相关联的所述物理GPU资源返回到所述可用的物理GPU资源池。
12.根据权利要求10所述的***,其中所述一个或多个GPU要求包括由GPU支持的应用程序编程接口(API)的标识。
13.根据权利要求10所述的***,其中在所述应用程序的所述执行期间由所述应用程序指定所述一个或多个GPU要求。
14.根据权利要求10所述的***,其中所述一个或多个GPU要求由所述虚拟计算实例外部的图形服务确定,并且其中所述物理GPU资源由所述图形服务选择。
15.根据权利要求10所述的***,其中所述程序指令是进一步可执行的以执行:
在所述虚拟计算实例上发起附加应用程序的执行;
确定与所述附加应用程序的所述执行相关联的一个或多个附加GPU要求,其中所述附加GPU要求至少部分地不同于所述GPU要求;
至少部分地基于所述一个或多个附加GPU要求从所述可用的物理GPU资源池中选择附加物理GPU资源;以及
至少部分地基于所述附加应用程序的所述执行的发起将附加虚拟GPU附接到所述虚拟计算实例,其中使用选自所述池并且能够由所述虚拟计算实例通过所述网络访问的所述附加物理GPU资源实施所述附加虚拟GPU。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/409,482 | 2017-01-18 | ||
US15/409,482 US10255652B2 (en) | 2017-01-18 | 2017-01-18 | Dynamic and application-specific virtualized graphics processing |
PCT/US2018/014128 WO2018136574A1 (en) | 2017-01-18 | 2018-01-18 | Dynamic and application-specific virtualized graphics processing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110192182A CN110192182A (zh) | 2019-08-30 |
CN110192182B true CN110192182B (zh) | 2024-01-30 |
Family
ID=61599571
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880007403.5A Active CN110192182B (zh) | 2017-01-18 | 2018-01-18 | 动态和专用的虚拟化图形处理 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10255652B2 (zh) |
EP (1) | EP3571586B1 (zh) |
CN (1) | CN110192182B (zh) |
WO (1) | WO2018136574A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10699364B2 (en) | 2017-07-12 | 2020-06-30 | Citrix Systems, Inc. | Graphical rendering using multiple graphics processors |
US10572292B2 (en) * | 2017-10-03 | 2020-02-25 | Vmware, Inc. | Platform independent GPU profiles for more efficient utilization of GPU resources |
CN111506385A (zh) * | 2019-01-31 | 2020-08-07 | Ati科技无限责任公司 | 引擎抢占和复原 |
US12033271B2 (en) * | 2019-06-18 | 2024-07-09 | The Calany Holding S. À R.L. | 3D structure engine-based computation platform |
US12039354B2 (en) | 2019-06-18 | 2024-07-16 | The Calany Holding S. À R.L. | System and method to operate 3D applications through positional virtualization technology |
US12040993B2 (en) | 2019-06-18 | 2024-07-16 | The Calany Holding S. À R.L. | Software engine virtualization and dynamic resource and task distribution across edge and cloud |
US11263054B2 (en) | 2019-07-12 | 2022-03-01 | Vmware, Inc. | Memory-aware placement for virtual GPU enabled systems |
US11372683B2 (en) * | 2019-07-12 | 2022-06-28 | Vmware, Inc. | Placement of virtual GPU requests in virtual GPU enabled systems using a requested memory requirement of the virtual GPU request |
US11853771B1 (en) * | 2019-09-24 | 2023-12-26 | Amazon Technologies, Inc. | Offload card based virtualization of a pre-assembled computer system integrated into a server for a virtualization service |
CN110750282B (zh) * | 2019-10-14 | 2021-04-02 | 支付宝(杭州)信息技术有限公司 | 用于运行应用程序的方法、装置及gpu节点 |
US11579942B2 (en) * | 2020-06-02 | 2023-02-14 | Vmware, Inc. | VGPU scheduling policy-aware migration |
CN111913794A (zh) * | 2020-08-04 | 2020-11-10 | 北京百度网讯科技有限公司 | 用于共用gpu的方法、装置、电子设备及可读存储介质 |
US11934854B2 (en) * | 2020-12-29 | 2024-03-19 | VMware LLC | Placing virtual graphics processing unit (GPU)-configured virtual machines on physical GPUs supporting multiple virtual GPU profiles |
CN117437451B (zh) * | 2023-12-21 | 2024-04-16 | 芯瞳半导体技术(山东)有限公司 | 图像匹配方法、装置、设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103530170A (zh) * | 2006-08-07 | 2014-01-22 | 甲骨文国际公司 | 在虚拟机环境中提供硬件虚拟化的***和方法 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8387060B2 (en) | 2009-10-01 | 2013-02-26 | Dell Products L.P. | Virtual machine resource allocation group policy based on workload profile, application utilization and resource utilization |
US8368702B2 (en) * | 2010-01-06 | 2013-02-05 | Apple Inc. | Policy-based switching between graphics-processing units |
US9733963B2 (en) | 2010-09-17 | 2017-08-15 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Optimizing virtual graphics processing unit utilization |
US9069622B2 (en) | 2010-09-30 | 2015-06-30 | Microsoft Technology Licensing, Llc | Techniques for load balancing GPU enabled virtual machines |
US20130275974A1 (en) * | 2010-10-19 | 2013-10-17 | Hitachi, Ltd. | Method and apparatus for allocating virtual computer |
JP5808424B2 (ja) | 2010-12-15 | 2015-11-10 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | ネットワーク対応アプリケーションのためのハードウェア・アクセラレーテッド・グラフィックス |
US9146762B2 (en) | 2012-08-23 | 2015-09-29 | Citrix Systems, Inc. | Specialized virtual machine to virtualize hardware resource for guest virtual machines |
US9298490B2 (en) | 2012-12-20 | 2016-03-29 | Vmware, Inc. | Managing a data structure for allocating graphics processing unit resources to virtual machines |
WO2014100558A1 (en) | 2012-12-20 | 2014-06-26 | Vmware, Inc. | Dynamic allocation of physical graphics processing units to virtual machines |
US9142004B2 (en) | 2012-12-20 | 2015-09-22 | Vmware, Inc. | Dynamic allocation of physical graphics processing units to virtual machines |
TWI479422B (zh) | 2013-01-25 | 2015-04-01 | Wistron Corp | 電腦系統及其繪圖處理方法 |
US20140286390A1 (en) | 2013-03-20 | 2014-09-25 | Nvidia Corporation | Encoder controller graphics processing unit and method of encoding rendered graphics |
US9098323B2 (en) | 2013-09-05 | 2015-08-04 | Nvidia Corporation | Simultaneous utilization of a first graphics processing unit (GPU) and a second GPU of a computing platform through a virtual machine (VM) in a shared mode and a dedicated mode respectively |
US9734546B2 (en) | 2013-10-03 | 2017-08-15 | Nvidia Corporation | Split driver to control multiple graphics processors in a computer system |
US9412146B2 (en) | 2013-10-25 | 2016-08-09 | Futurewei Technologies, Inc. | System and method for distributed virtualization of GPUs in desktop cloud |
US9805479B2 (en) * | 2013-11-11 | 2017-10-31 | Amazon Technologies, Inc. | Session idle optimization for streaming server |
US9910689B2 (en) | 2013-11-26 | 2018-03-06 | Dynavisor, Inc. | Dynamic single root I/O virtualization (SR-IOV) processes system calls request to devices attached to host |
US9898795B2 (en) * | 2014-06-19 | 2018-02-20 | Vmware, Inc. | Host-based heterogeneous multi-GPU assignment |
US9965823B2 (en) | 2015-02-25 | 2018-05-08 | Microsoft Technology Licensing, Llc | Migration of graphics processing unit (GPU) states |
US20170004808A1 (en) | 2015-07-02 | 2017-01-05 | Nvidia Corporation | Method and system for capturing a frame buffer of a virtual machine in a gpu pass-through environment |
-
2017
- 2017-01-18 US US15/409,482 patent/US10255652B2/en active Active
-
2018
- 2018-01-18 WO PCT/US2018/014128 patent/WO2018136574A1/en unknown
- 2018-01-18 EP EP18709821.5A patent/EP3571586B1/en active Active
- 2018-01-18 CN CN201880007403.5A patent/CN110192182B/zh active Active
-
2019
- 2019-04-05 US US16/377,087 patent/US10650484B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103530170A (zh) * | 2006-08-07 | 2014-01-22 | 甲骨文国际公司 | 在虚拟机环境中提供硬件虚拟化的***和方法 |
Also Published As
Publication number | Publication date |
---|---|
US20180204301A1 (en) | 2018-07-19 |
US10255652B2 (en) | 2019-04-09 |
US10650484B2 (en) | 2020-05-12 |
WO2018136574A1 (en) | 2018-07-26 |
US20190236751A1 (en) | 2019-08-01 |
CN110192182A (zh) | 2019-08-30 |
EP3571586A1 (en) | 2019-11-27 |
EP3571586B1 (en) | 2023-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110192182B (zh) | 动态和专用的虚拟化图形处理 | |
US11210759B2 (en) | Placement optimization for virtualized graphics processing | |
US10628908B2 (en) | Application-specific virtualized graphics processing | |
CN110062924B (zh) | 用于虚拟化图形处理的容量预留 | |
US9904975B2 (en) | Scaling for virtualized graphics processing | |
AU2019222810B2 (en) | Scaling for virtualized graphics processing | |
US10728169B1 (en) | Instance upgrade migration | |
US10423463B1 (en) | Computational task offloading for virtualized graphics | |
US20220028351A1 (en) | Virtualizing graphics processing in a provider network | |
US10169841B1 (en) | Dynamic interface synchronization for virtualized graphics processing | |
US9886737B2 (en) | Local-to-remote migration for virtualized graphics processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |