CN108369537A - 启用fpga的计算实例 - Google Patents
启用fpga的计算实例 Download PDFInfo
- Publication number
- CN108369537A CN108369537A CN201680075027.4A CN201680075027A CN108369537A CN 108369537 A CN108369537 A CN 108369537A CN 201680075027 A CN201680075027 A CN 201680075027A CN 108369537 A CN108369537 A CN 108369537A
- Authority
- CN
- China
- Prior art keywords
- fpga
- client
- application program
- calculated examples
- host
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0806—Configuration setting for initial configuration or provisioning, e.g. plug-and-play
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- 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/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/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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5041—Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
- H04L41/5054—Automatic deployment of services triggered by the service manager, e.g. service implementation by automatic configuration of network components
-
- 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/45595—Network integration; Enabling network access in virtual machine instances
Abstract
虚拟化计算服务的资源管理器向客户端指示在所述服务处支持启用FPGA的计算实例。从所述服务的一组虚拟化主机中,基于所述客户端的计算目标的指示来为所述客户端选择特定主机,从所述主机可访问FPGA。执行配置操作来为所述应用程序准备好所述主机,并且为所述客户端在所述主机处启动启用FPGA的计算实例。
Description
背景技术
许多公司和其他组织运营将众多计算系统加以互连以支持其操作的计算机网络,诸如其中计算系统位于同一位置(例如,作为本地网络的一部分)或者相反地位于多个不同的地理位置(例如,通过一个或多个私有或公共中间网络加以连接)。例如,容纳大量互连的计算系统的数据中心已经变得很普遍,诸如由单个组织运营并且为了单个组织运营的私有数据中心,以及由实体作为企业来运营以向客户提供计算资源的公共数据中心。一些公共数据中心运营商为各种客户所拥有的硬件提供网络访问、电力以及安全安装设施,而其他公共数据中心运营商提供“全方位服务”设施,所述“全方位服务”设施还包括可供其客户使用的硬件资源。
用于商用硬件的虚拟化技术的出现已经在管理大规模计算资源方面为许多具有多样化需求的客户提供益处,从而允许各种计算资源由多个用户有效且安全地共享。例如,虚拟化技术可以通过向每个用户提供由单个虚拟化主机托管的一个或多个虚拟机来允许单个物理虚拟化主机在多个用户之间共享。每个这种虚拟机可以表示充当不同逻辑计算系统的软件模拟,所述软件模拟向用户提供他们是给定硬件计算资源的唯一操作者的错觉,同时还提供各种虚拟机之间的应用程序隔离和安全性。此外,一些虚拟化技术能够提供跨越两个或更多个物理资源的虚拟资源,诸如具有跨越多个不同物理计算系统的多个虚拟处理器的单个虚拟机。
随着迁移到虚拟化计算服务的应用程序的精密性和复杂性增加,仅仅使用未经修改的商用硬件来满足应用程序服务要求可能并不总是那么简单。例如,一些应用程序可能涉及非常特定类型的计算或算法,这些计算或算法在普通行业标准硬件上实现效率相对较低。自定义对这类应用程序的支持,同时保留大规模虚拟化计算的可扩展性、可用性、安全性以及成本效益可能对服务提供商提出挑战。
附图说明
图1根据至少一些实施方案展示其中支持虚拟计算服务的多个类别的计算实例的示例系统环境,所述计算实例包括至少一个类别的启用FPGA(现场可编程门阵列)的计算实例。
图2根据至少一些实施方案展示可以在虚拟计算服务处得到支持的计算实例类别的示例目录。
图3根据至少一些实施方案展示启用FPGA的计算实例的家族成员的示例性质。
图4根据至少一些实施方案展示在支持启用FPGA的计算实例的虚拟计算服务的客户端与资源管理器之间的示例编程交互,包括提交对计算实例类别的目录的客户端请求。
图5根据至少一些实施方案展示在支持启用FPGA的计算实例的虚拟计算服务的客户端与资源管理器之间的第二组示例编程交互,包括由客户端提交指示FPGA兼容的应用程序的描述符。
图6根据至少一些实施方案展示在支持启用FPGA的计算实例的虚拟计算服务的客户端与资源管理器之间的第三组示例编程交互,在所述编程交互期间资源管理器向客户端主动推荐启用FPGA的计算实例类别。
图7根据至少一些实施方案展示由资源管理器为客户端选择预先配置的启用FPGA的计算实例。
图8根据至少一些实施方案展示在FPGA应用程序开发者与虚拟计算服务的资源管理器之间的示例编程交互。
图9根据至少一些实施方案展示可供虚拟计算服务的客户端和合作者使用的示例FPGA应用程序开发资源的使用。
图10根据至少一些实施方案展示关于配备有FPGA的虚拟化主机的共享模式的实例。
图11根据至少一些实施方案展示其中可以从虚拟化计算服务的计算实例利用远程FPGA池的示例配置。
图12根据至少一些实施方案展示包括FPGA的虚拟化主机的示例部件。
图13是根据至少一些实施方案展示可以被执行来为了虚拟化计算服务的客户端实例化启用FPGA的计算实例的操作的方面的流程图。
图14是展示可以在至少一些实施方案中使用的示例计算装置的框图。
虽然本文通过对若干实施方案和示意性附图举例的方式描述了实施方案,但本领域的技术人员应认识到,实施方案并不限于所描述的实施方案或附图。应理解,附图和对附图的详细描述并不意图将实施方案限于所公开的特定形式,而是相反,意图涵盖落入由所附权利要求书限定的精神和范围内的所有修改、等同物和替代方案。本文所使用的标题仅用于组织目的,并且并不意图用来限制本说明书或权利要求书的范围。如贯穿本申请所使用,词语“可以”是在许可的意义上(即,意指具有可能性)而非强制的意义上(即,意指必须)使用的。类似地,词语“包括”、“包含”和“含有”意指“包括但不限于”。当在权利要求中使用时,术语“或”用作包含性或并且不用作排他性或。例如,短语“x、y或z中的至少一个”意指x、y和z中的任何一个以及它们的任何组合。
具体实施方式
描述了用于在提供商网络的虚拟化计算服务处支持客户端访问启用FPGA的虚拟机的方法和设备的各种实施方案。由诸如公司或公共部门组织等实体建立以提供可供一组分布式客户端通过因特网和/或其他网络访问的一个或多个服务(诸如各种类型的多租户和/或单租户云计算服务或存储服务)的网络在本文中可以称为提供商网络。提供商网络有时也可以称为“公共云”环境。给定的提供商网络可以包括许多数据中心,这些数据中心托管实现、配置并分布由提供商提供的基础结构和服务所需的各种资源池,诸如物理和/或虚拟化计算机服务器、存储装置、联网设备等的集合。在大型提供商网络内,一些数据中心可以位于与其他数据中心不同的城市、州或国家,并且在一些实施方案中,分配给给定应用程序的资源可以分布在若干这类位置中,以实现所需的可用性等级、故障恢复能力等级和性能等级。
在各种实施方案中,提供商网络的虚拟化计算服务(VCS)可以使客户端能够利用在由VCS拥有和管理的硬件装置上进行托管的各种类型的虚拟机或“计算实例”。计算实例在本文中也可以简称为“实例”。其中可以为了一个或多个VCS客户端配置一个或多个计算实例的硬件装置或服务器在本文中可以称为虚拟化主机或实例主机。在一些实施方案中可以支持多个不同类别的计算实例,其中一些可以仅在对应类别的虚拟化主机上实例化。具体地,VCS的虚拟化主机的至少一个子集可以配备有例如通过符合PCI-E(快速外围部件互连)标准的扩展总线或其他总线或互连件加以附接的一个或多个FPGA(现场可编程门阵列)。这些虚拟化主机可以用来配置和启动其中部署有利用FPGA的应用程序的计算实例。这类实例可以称为启用FPGA的计算实例。如术语“现场可编程”所暗示,FPGA通常包括被设计成在制造之后由客户或设计者配置的一个或多个芯片。如下文所描述,可以在不同的实施方案中实现关于与对可从启用FPGA的计算实例访问的FPGA进行编程相关联的权限和责任的多种不同方法或策略。在一些情况下,例如,提供商网络运营商可以负责对FPGA进行编程,而在其他情况下,第三方供应商或VCS客户端可以执行FPGA编程中的至少一些。一般来说,FPGA可以在若干不同的环境中使用,诸如用于加快某些类型的算法所需的处理、用于对新的应用程序或硬件进行仿真和测试等等。在各种实施方案中,虚拟化主机的一个或多个FPGA可以被认为是关于主机CPU的协同芯片,并且可以被用作加速引擎以改进使用虚拟化主机的计算实例来运行的各种科学软件程序、医疗软件程序、娱乐相关软件程序、游戏相关软件程序或其他类型的软件程序的性能。
根据一个实施方案,VCS可以对多个计算实例类别提供支持,包括一个或多个启用FPGA的类别和一个或多个并不意图支持需要FPGA的应用程序(并且因此可能不包括访问FPGA所需的软件模块)的类别。在一些情况下,可以将所支持的类别组织成被称为“实例家族”的组,其中每个家族包括针对相应类型的应用程序加以优化的若干不同的实例类别。例如,启用FPGA的实例类别的家族可以包括“小”和“大”的启用FPGA的实例类别,其中每一个类别都允许执行需要FPGA的应用程序,使得大的启用FPGA的类别的特定实例相对于小的启用FPGA的类别的实例能够有优异的性能。其他实例家族可以例如针对适合在图形处理单元(GPU)上运行的软件、针对I/O密集型应用程序、针对浮点密集型应用程序等等加以优化。每个实例类别可以具有相关联的一组定价策略、所支持的保留模式、安全策略等等。在至少一个实施方案中可以支持用于不具有特殊高性能要求的计算实例的默认实例家族。
在一些实施方案中,VCS的部件可以划分成两个高级类别:控制平面部件和数据平面部件。控制平面部件可以负责管理任务,诸如管理虚拟化主机和网络的健康状况和可用性、为给定的所请求计算实例选择适当的虚拟化主机、实施安全策略等等。数据平面可以包括用于对客户端应用程序相关数据进行通信和处理的那些部件。在各种实施方案中,包括VCS的一个或多个控制平面部件的资源管理器可以负责通过各种编程接口接收客户端请求并对其做出响应,并且负责协调满足各种类型的客户端要求所需的管理和配置操作。在不同的实施方案中,用于与客户端交互的多种不同类型的编程接口可以在VCS处实现,包括例如一组或多组应用程序编程接口(API)、基于web的控制台、命令行工具或图形用户界面。
在各种实施方案中,可以根据多个不同工作流程为客户端配置启用FPGA的计算实例,其中每个工作流程对应于客户端与资源管理器之间的编程交互的相应模式。在一个工作流程中,使用一个或多个VCS的编程接口,例如,资源管理器可以首先向客户端提供所支持的实例类别(包括启用FPGA的类别)的指示。然后,资源管理器可以例如基于从客户端以编程方式接收的输入来识别客户端的特定FPGA相关计算目标,诸如客户端希望在已适当配置的启用FPGA的计算实例上以所需的性能等级运行的利用FPGA的应用程序的种类。至少部分地基于计算目标(诸如客户端希望运行的特定应用程序、客户端的性能目标、安全性要求等等),可以选择特定的配备有FPGA的虚拟化主机作为平台来为客户端建立计算实例。在一些实施方案中,可以由资源管理器执行或发起用来为客户端的利用FPGA的应用程序准备好虚拟化主机的一个或多个配置操作。在一些实施方案中,这种配置操作的一个实例可以包括将包括与客户端的利用FPGA的应用程序相关联的一个或多个FPGA库模块的特定虚拟机映像复制到所选择的虚拟化主机。在已经复制虚拟机映像之后,可以使用它来启动用于客户端的应用程序的计算实例,并且可以通知客户端所述实例可供使用(例如,通过提供可用来访问新启动的实例的适当网络地址和凭据)。被执行来准备好主机的其他配置操作可以包括将一个或多个FPGA库模块复制到预先存在的实例或复制到虚拟化管理部件(诸如主机的监控程序)、授予安全特权以使客户端的应用程序能够访问主机的FPGA、验证用来实施与实例类别相关联的安全策略的模块已经安装在监控程序中和/或加载到FPGA中、建立对FPGA操作的监控以实现精确计费等。在下文在各种实施方案中讨论的若干不同的工作流程中可以执行类似类型的配置操作。
在一些实施方案中支持的第二个工作流程中,客户端可以简单地提交对特定的启用FPGA的实例类型的请求,而不必把与将要在所请求的实例上运行的任何特定应用程序相关的要求通知资源管理器。在这种情形下,资源管理器可以识别具有(a)对应于所选择的实例类型的FPGA和(b)足够的容量来托管新实例的虚拟化主机,并且在所述主机处为了客户端启动新实例。在此分配模式下,可以在已经分配客户端的实例之后执行客户端的特定的利用FPGA的应用程序所需的配置操作中的一个或多个(诸如复制FPGA库模块)。
在一个实施方案中,在第三个工作流程中,客户端可以指示将要使用VCS资源来运行的目标应用程序,而无需预先知道启用FPGA的实例类别。基于对由客户端提供的应用程序的描述,资源管理器可以向客户端推荐特定的启用FPGA的实例类别。然后,客户端可以请求所推荐类别的实例,并且资源管理器可以执行必要的配置操作来为了客户端建立实例。在此工作流程的变型中,在一些实施方案中,资源管理器可以在一个或多个未启用FPGA的实例上监控客户端的应用程序,确定将应用程序转移到特定的启用FPGA的实例类别可能是有帮助的,并且向客户端提供对这种转移的推荐。如果客户端接受推荐,那么可以为客户端建立所推荐的启用FPGA的类别的一个或多个新实例。
在一些实施方案中,代替在确定客户端的FPGA相关计算目标之后为了客户端启动新实例,资源管理器可以在各种虚拟化主机处建立预先配置的启用FPGA的实例的池。如果使用预先配置的实例可以满足客户端的目标,那么可以将来自所述池的实例中的一个分配给客户端,从而有可能减少满足客户端的请求所需的周转时间。
在至少一个实施方案中,例如,作为针对各种启用FPGA的实例所实现的安全策略的一部分,资源管理器可以支持强制清除API或命令。在完成客户端对来自给定计算实例的一个或多个FPGA的使用之后(或在由客户端选择的任何时间),如果客户端希望确保客户端使用FPGA的证据(诸如任何残留的数据对象)被永久消除,那么可以向资源管理器发出关于客户端的启用FPGA的计算实例的强制清除命令。响应于这种命令,资源管理器可以发起一组删除或状态重置操作,以从所述实例消除与客户端的FPGA使用相关联的任何剩余数据。在至少一个实施方案中,为了支持客户端的一个或多个应用程序而在一个或多个FPGA处进行的编程改变可以撤销,例如,可以使FPGA可以返回到它们在资源管理器识别客户端的利用FPGA的应用程序之前的状态。
在一些实施方案中,VCS可以为利用FPGA的应用程序建立在线市场,并实现编程接口,从而使(a)应用程序开发者能够提交用于包括在市场中的应用程序;(b)客户端能够探索市场,选择所需应用程序并请求可以在上面运行所选择应用程序的启用FPGA的计算实例。例如,市场可以被设计成使客户端能够从可以在VCS资源上运行的针对各种问题领域的一系列已预先测试的FPGA加速器进行选择,而不需要客户端自己费力地对FPGA进行编程。在一些实施方案中,第三方FPGA应用程序开发者(或在FPGA相关技术方面具有专业知识的VCS客户端)可以使用编程接口来提交用于包括在市场中的所建议的利用FPGA的应用程序的描述符。资源管理器可以验证所建议的利用FPGA的应用程序满足市场的接受准则。如果满足了接受准则,那么可以将针对所述应用程序的条目添加到市场的启用FPGA的应用程序的列表;否则,可以把拒绝应用程序的原因告知所建议的应用程序的提交者。在各种实施方案中可以使用多种不同类型的接受准则,例如,应用程序可能必须在功能上与与VCS的启用FPGA的实例类别相关联的特定FPGA中的至少一个兼容(也就是说,在VCS处得到支持的特定FPGA中的至少一个可能必须能够实现所建议的应用程序)、满足VCS的一组安全相关准则或策略、满足针对市场所定义的最低性能要求,和/或满足预期的市场规模准则(也就是说,如果由VCS运营商估算的对应用程序的预期需求太低,那么即使所述应用程序满足其他准则,它也可能被拒绝)。在一些实施方案中,所建议的应用程序还可能必须满足其他接受准则(诸如定价相关目标),然后才能被市场接受。
在至少一个实施方案中,VCS可以提供一组FPGA应用程序开发和测试资源以供相关各方使用,例如,可以使一组配备有FPGA的虚拟化主机和/或计算实例、软件开发工具包等等可供使用。使用这类资源,FPGA应用程序开发者可以例如准备和测试有可能包括在市场中的新的应用程序。VCS客户端还可以使用这类资源来设计、编码和/或测试他们自己的利用FPGA的应用程序,然后将所述应用程序部署在客户端的启用FPGA的计算实例上。
在提供商网络处实现的许多网络可访问服务关于至少某些类型的硬件资源可以支持多租赁,例如,一般来说,分配给若干不同的客户端的计算实例可以在共享的虚拟化主机处建立,或者若干不同客户端的数据库表的部分可以存储在同一数据库存储装置上。在不同的实施方案中,可以支持关于FPGA的多租赁和共享的多种不同的方法。例如,在一种方法中,出于安全性、性能或其他原因,只有单个客户端的计算实例可以在给定的配备有FPGA的虚拟化主机处实例化。在另一种方法中,可以将多个FPGA附接到单个虚拟化主机,在所述主机处可以建立多个客户端的计算实例,并且每个客户端可能能够获取对主机的任何给定FPGA的共享访问。在各种实施方案中,可以支持关于与在配备有FPGA的虚拟化主机处的计算实例相关的单租赁与多租赁以及关于可能的FPGA共享的其他策略。在至少一个实施方案中,例如,代替使用PCI-E或其他本地总线来附接FPGA,可以建立可通过快速网络互连从多个虚拟化主机进行访问的远程FPGA的池,并且可以将启用FPGA的计算实例配置成根据需要与远程FPGA进行通信。
示例系统环境
图1根据至少一些实施方案展示其中支持虚拟计算服务的多个类别的计算实例的示例系统环境,所述计算实例包括至少一个类别的启用FPGA(现场可编程门阵列)的计算实例。如图所示,系统100包括提供商网络102,在所述提供商网络102处可以实现包括虚拟计算服务(VCS)110的多个网络可访问服务。在所描绘的实施方案中,VCS 110包括资源管理器120,所述资源管理器120负责为了VCS客户端180协调资源的配置和分配,并且负责实现用于与客户端180和/或第三方FPGA应用程序开发者182交互的各种类型的编程接口121。资源管理器120可以被认为是VCS 110的控制平面或管理部件,并且可以利用另外的控制平面部件(诸如配置/设置数据库125)来履行其责任。在所描绘的实施方案中,资源管理器120可以包括子部件的集合,诸如计算实例布置和配置管理器171(负责基于客户端的计算要求或请求来选择和配置用于计算实例的虚拟化主机)、市场管理器172(负责验证用于要包括在适合于VCS的计算实例的应用程序的在线市场中的利用FPGA的应用程序的可接受性准则)、应用程序开发协调器173(负责处置与应用程序开发资源133相关联的工作请求)和/或其他子部件。在至少一些实施方案中,资源管理器的各个子部件中的一些或全部本身可以包括分布式计算装置的集合。
如图所示,在所描绘的实施方案中,VCS 110包括多个虚拟化主机(VH)140,所述多个虚拟化主机(VH)140包括VH 140A-140E。虚拟化主机中的每一个可以有能力为了一个或多个客户端支持一个或多个客户虚拟机或计算实例(CI)150。例如,CI 150A和150B已经在VH 140A上启动,CI 150C在VH 140B处运行,CI 150D在VH 140C处运行,CI 150E和150F在VH140D处运行,并且CI 150G和150H已经在VH 140E处建立。如下文更详细讨论的,除了CI本身之外,VH还可以包括虚拟化管理软件部件,诸如监控程序、管理域操作系统和/或实现虚拟化逻辑的部分的硬件外围装置。在至少一些实施方案中,多种不同类型的硬件服务器可以用作虚拟化主机,并且可以支持多个不同类别的计算实例(例如,其中某些类型的硬件服务器专门用于实例类别的一个子集)。不同类别的计算实例在各种特性方面可能互不相同,所述特性诸如:所述应用程序被优化所针对的应用程序的种类、所述计算实例的性能能力、可用性或容错等级、所实现的安全策略、所使用的定价模型等等。下文在图2和图3的情形中讨论若干不同的计算实例类别的实例。
在图1所描绘的实施方案中,VCS 110的一些虚拟化主机(诸如VH 140A、140B以及140C)具有附接的一个或多个FPGA 160,而其他虚拟化主机(诸如140D和140E)未配备有FPGA。例如,VH 140A具有FPGA 160A,VH 140B具有FPGA 160B,并且VH 140C具有FPGA 160C和160D。在各种实施方案中,任何适当的互连件(诸如符合PCI-E标准或USB(通用串行总线)标准的一个或多个版本的扩展总线、以太网等等)可以用于在虚拟化主机处附接FPGA 160。在一些实施方案中,VCS的所有虚拟化主机可以配备有FPGA 160。在至少一个实施方案中,如下文在图11的情形中所讨论的,代替将FPGA本地附接到虚拟化主机,可以建立从虚拟化主机中的一些或全部可到达的远程FPGA的池。
在所描绘的实施方案中,使用编程接口121,资源管理器可以指示可以在客户端180的请求下建立的至少两个计算实例类别:启用FPGA的类别,其中适当的模块已经被配置以使利用FPGA的应用程序能够运行,以及不提供对FPGA的访问的类别。在各种实施方案中,还可以支持另外的计算实例类别,并且在至少一个实施方案中,可以支持若干不同的启用FPGA的类别和未启用FPGA的类别。如果客户端希望执行利用FPGA的应用程序,那么资源管理器180可以执行所需的配置操作来为了客户端在启用FPGA的虚拟化主机中的一个处准备和启动计算实例(或分配先前启动的计算实例),并且可以向客户端180提供所需的实例配置信息(例如,网络地址或名称以及安全凭据)以允许客户端使用计算实例。在所描绘的实施方案中,为了识别用于客户端的适当的虚拟化主机140,资源管理器180可以利用配置和设置数据库125。数据库125例如可以包括指示现有计算实例与主机之间的映射的元数据条目、用于各种主机的多租赁和FPGA共享规则等等。
在一些实施方案中,VCS中可供使用的不同FPGA可能在它们的功能和/或性能能力方面有所不同,因此可以支持若干不同的启用FPGA的计算实例类别。在这类实施方案中,有时可以至少部分地基于客户端希望运行的应用程序的种类来为客户端选择特定的配备有FPGA的虚拟化主机和/或计算实例类别。例如,FPGA 160B(其可能已经由特定的FPGA供应商V1实现,并且可能具有FPGA规范S1)可能比FPGA 160A(其可能已经由不同的FPGA供应商V2实现,并且可能具有不同的规范S2)更适合于特定的应用程序。在一些实施方案中,资源管理器120可以通过编程接口121获取对客户端180的利用FPGA的目标应用程序的指示,并且为了客户端选择用于所述应用程序的最适当的虚拟化主机和/或计算实例类别。为了准备所选择的虚拟化主机,可以由资源管理器120执行一个或多个配置操作,诸如转移虚拟机映像(其中已经安装适当的FPGA相关库)、修改安全相关设置、设置FPGA操作监控等等。在其他实施方案中,客户端180可以简单地指示它们希望获取的计算实例类别,而不提供关于其特定的FPGA相关或其他目标或目标应用程序的细节,并且资源管理器可以在所选择的虚拟化主机140上启动指定类别的实例。在一些实施方案中,可以基于诸如客户端的单租赁或多租赁要求、安全性要求等因素来选择将要用于客户端的特定的配备有FPGA的虚拟化主机。
在至少一个实施方案中,例如基于在未启用FPGA的实例上监控客户端的应用程序,或者基于对客户端的目标应用程序的一些描述,资源管理器120可以向客户端推荐特定的启用FPGA的计算实例类别。在这类情形下,如果客户端接受推荐,那么可以在虚拟化主机140处建立所推荐类别的实例。可以根据需要将客户端应用程序迁移到新实例。在一些实施方案中,资源管理器可以维持预先配置的启用FPGA的计算实例的池,并且在预先配置的实例满足客户端请求或要求的情况下从所述池分配实例。
在所描绘的实施方案中,VCS 110可以维持FPGA库模块的存储库126,可以根据需要将适当的模块从所述存储库126复制到计算实例(或者并入到诸如监控程序的虚拟化管理软件中,或者并入到用于客户端计算实例的客户虚拟机映像中)。在所描绘的实施方案中,VCS 110还可以包括一组FPGA应用程序开发资源133,包括例如可以由第三方开发者182和/或客户端180用来实现新的利用FPGA的应用程序的配备有FPGA的虚拟化主机和/或启用FPGA的计算实例的池。在一些实施方案中,VCS 110可以提供软件开发工具包(SDK)以简化开发和测试FPGA应用程序的任务。第三方开发者182和/或客户端180可以提交使用资源133和/或使用在VCS外部的其他资源准备好的新的利用FPGA的应用程序,以包括在由VCS维持的已批准应用程序的在线市场中,如下文更详细讨论的。
在所描绘的实施方案中,与广泛多种问题域相关联的应用程序(诸如视频、音频和图像处理、ASIC(专用集成电路)原型制作、医疗、包括机器学习的高性能计算、消费电子产品等等)可能非常适合于在VCS 110处得到支持的启用FPGA的计算实例。一些这类应用程序可以在VCS的在线市场中公布,而其他这类应用程序可以由客户端180自己主动实现而未包括在市场中。在至少一些实施方案中,VCS通常可以具有大量以高可用性或容错配置加以组织的虚拟化主机,使得在客户端的利用FPGA的应用程序工作负载增长的情况下可以根据需要将新的启用FPGA的实例添加到客户端的群。
示例计算实例类别目录
图2根据至少一些实施方案展示可以在虚拟计算服务处得到支持的计算实例类别的示例目录。在所描绘的实施方案中,VCS允许客户端从目录202的多个不同的实例家族选择计算实例。每个家族由多个实例类别组成;给定家族的成员在某些情况下可以针对特定种类的应用程序加以优化,但是在性能容量、计费率等方面可能互不相同。标准实例类别家族210包括适合于各种常见应用程序(例如web托管、软件开发、办公应用程序等等)的通用计算实例类别“小”、“中”和“大”(其中名称反映了相对性能能力等级)。在所描绘的实施方案中,通常可以在商用虚拟化主机上配置属于标准家族210的计算实例,所述商用虚拟化主机不需要任何自定义硬件。
浮点优化家族220的计算实例类别FPO-A和FPO-B可以适合于涉及密集的科学计算的高端应用程序(诸如与天文学模拟、物理学模拟等相关联的应用程序)。一些应用程序可能需要非常高的I/O(输入-输出)操作速率,并且可以为具有这类应用程序的客户端建立I/O优化的实例类别家族230的实例(诸如类别IO-A或IO-B)。可以从使用图形处理单元(GPU)受益的应用程序可以部署在属于基于GPU的实例类别家族240的实例(诸如GPU-A或GPU-B类别)处。需要或利用FPGA的应用程序可以部署在属于启用FPGA的实例类别家族250的实例(诸如FPGA-A类别实例或FPGA-B类别实例)处。在各种实施方案中,除了图2中所示的类别家族以外,另外的类别家族也可以在一些VCS处得到支持,并且在一些实施方案中,图2中所指示的类别家族中的一些可能不可用。
启用FPGA的计算实例类别家族
图3根据至少一些实施方案展示启用FPGA的计算实例的家族成员的示例性质。示出类别家族350的两个示例性启用FPGA的实例类别:FPGA-A和FPGA-B。在所描绘的实施方案中,属于两个类别的实例可以在多个特性方面有所不同。例如,如两个FPGA芯片/板源标识符351A和351B所指示,FPGA供应商和/或上面放置有FPGA的板的供应商可能不同。在一些情况下,同一供应商可以用于被用于启用FPGA的实例的多个FPGA:例如,提供商网络运营商可以设计或制造各种能力等级的FPGA,并将其用于各种实例类别。可从给定的FPGA-A实例访问或使用的FPGA的最大数量(FPGA计数限制352A)可以不同于可以从FPGA-B类别的实例使用的FPGA的最大数量(FPGA计数限制352B)。
在一些实施方案中,相应的FPGA连接机制353A和353B可能因实例类别而异,例如,PCI-E可以用于实例类别FPGA-A,而USB或某种其他机制可以用于FPGA-B。类别FPGA-A和FPGA-B的两个相应的性能容量354A和354B可以不同。在不同的实施方案中,性能容量能够以各种单位的任何组合来表达,例如,主机CPU或FPGA的计算容量或时钟速度、高速缓存大小、网络带宽限制或延迟、I/O带宽限制或延迟、存储器速度或大小等等。
在所描绘的实施方案中,实例类别FPGA-A和FPGA-B还可以在其相应的可用性等级355A和355B方面(例如,预计任一类别的实例在一年期间保持在线的最小部分时间)和/或其定价策略356A和356B方面(例如,客户端因保留实例或者因利用实例而每单位时间被计费多少钱)不同。在一些实施方案中,API或工具支持357A和357B(例如,用于编程或调试FPGA)可能因启用FPGA的实例类别而异。给定的实例类别被优化所针对的特定应用程序域(其可能进而取决于图3中所示的其他特性中的一些,诸如性能限制、API支持等等)可能不同于不同实例类别被优化所针对的应用程序域。例如,FPGA-A实例可以针对应用程序类型358A(其可以包括计算机视觉、医疗和广播相关应用程序)加以优化,而FPGA-B实例可以针对应用程序类型358B(诸如防御或通信相关应用程序)加以优化。在所描绘的实施方案中,对于不同的实例类别,安全策略359A和359B也可以不同,例如,可以从FPGA写入到的主机存储器的区域、或可以从实例写入到的FPGA存储器的区域、可以从主机向FPGA发送的用于实现的命令或操作的种类、所允许的多租户与单租户配置的类型、管理安全特权的方式等等可以不同。在至少一个实施方案中,给定的安全策略359可以包括在运行时例如由虚拟化主机的虚拟化管理部件、由计算实例本身的模块和/或由FPGA实施的一个或多个规则。例如,一个或多个这类规则可以指示对可以从FPGA访问和/或修改的虚拟化主机的资源的限制或约束,而另一组规则可以指示对可以从虚拟化主机访问或操纵的特定FPGA资源的限制或约束。在各种实施方案中,安全策略的指示能够以编程方式提供给客户端和/或第三方应用程序开发者,例如,使得所有相关各方都充分意识到主机和FPGA资源受到保护的程度。
在至少一个实施方案中,如前文所提及,安全策略359中的一个或多个可以包括对强制清除操作的支持。在这种实施方案中,如果并且当客户端发出关于给定的启用FPGA的计算实例的强制清除命令时,资源管理器可以永久删除与客户端使用FPGA有关的数据。在一些实现方式中,由客户端执行的或为了客户端执行的对FPGA的任何编程或自定义都可以由资源管理器响应于强制清除请求加以撤销,使得不会留下客户端使用FPGA的证据(并且因此在某个稍后时间被授权访问FPGA的不同客户端不能无意或有意地获取这种证据)。在一个实施方案中,无论客户端是否明确请求这种清除,例如,当客户端停用或释放启用FPGA的计算实例时,都可以执行等同于强制清除的操作。
应注意,在各种实施方案中,所支持的启用FPGA的实例类别在图3中所指示的特性中的至少一些方面可能并不是互不相同,例如,可能的情况是,PCI-E被用于VCS所支持的所有FPGA,在这种情况下,对于所有实例类别,连接机制可能是相同的。在一些实施方案中,启用FPGA的实例类别可能在图3中未示出的特性方面互不相同。
示例客户端交互
图4根据至少一些实施方案展示在支持启用FPGA的计算实例的虚拟计算服务的客户端与资源管理器之间的示例编程交互,包括提交对计算实例类别的目录的客户端请求。资源管理器420可实现用于接收客户端请求并对其做出响应的一个或多个编程接口421,包括例如基于web的控制台、一组API、命令行工具、独立图形用户界面(GUI)等等。VCS客户端480可以通过编程接口421中的一个提交计算实例目录列表请求431。作为响应,资源管理器420可以提供指示至少一个启用FPGA的类别的计算实例类别列表433,并且可以提供关于所述类别被优化所针对的一个或多个利用FPGA的应用程序的信息。
在检查启用FPGA的类别和相关联的应用程序的列表之后,客户端480可以提交对计算实例的请求431。在一些实施方案中,请求431可以包括例如以下元素的某种组合:由客户端选择的特定计算实例类别432、对客户端希望在实例上运行的目标应用程序433的指示,和/或应用程序目标或计算目标434(诸如性能目标、可用性目标、安全目标、预算约束等等)。至少部分地基于在请求431中提供的信息,资源管理器420可以为客户端选择特定的虚拟化主机451,并且执行或发起一个或多个配置操作425来为将要为了客户端建立的新的启用FPGA的计算实例453准备好主机。在不同的实施方案中可能需要多个不同的配置操作,诸如将适当的机器映像复制到主机453、建立安全规则和策略、启用监控等等。在所描绘的实施方案中,在已经配置主机之后,可以启动新的计算实例453,并且可以向请求客户端480提供关于所启动实例的信息435(诸如它的网络地址、通过网络访问它所需的凭据等等)。
图5根据至少一些实施方案展示在支持启用FPGA的计算实例的虚拟计算服务的客户端与资源管理器之间的第二组示例编程交互,包括由客户端提交指示FPGA兼容的应用程序的描述符。在图5所描绘的工作流程中,客户端580提交客户端希望使用VCS计算实例来运行的利用FPGA的应用程序的描述符531。描述符531可以通过由资源管理器520建立的编程接口521中的一个来传输以用于客户端交互。在一些实施方案中,描述符531可以简单地指示应用程序的名称或问题域,而在其他实施方案中,描述符531可以包括各种细节,诸如优选的FPGA供应商的种类、性能要求、可用性要求、安全性要求等。至少部分地基于在描述符531中提供给资源管理器520的信息,和/或基于可供资源管理器520使用的关于在VCS处得到支持的各种启用FPGA的计算实例类别的性质的信息,资源管理器520可以向客户端发送消息,这个消息指示所推荐的启用FPGA的计算实例类别533。所推荐类别可以是从所支持的类别中选择的一个类别,这个类别与客户端的应用程序中所表达或假定的FPGA相关要求或目标最接近地匹配。
在所描绘的实施方案中,在接收到推荐之后,客户端580可以提交指示所推荐类别的计算实例分配请求534。响应于请求534,资源管理器580可以为客户端的实例选择特定的配备有FPGA的虚拟化主机535,发起或执行一个或多个配置操作525来准备好虚拟化主机,并且在主机处为客户端启动新的启用FPGA的计算实例553。然后可以向客户端提供使客户端580能够使用新启动的实例的信息535,类似于在图4的情形中讨论的CI信息435。
图6根据至少一些实施方案展示在支持启用FPGA的计算实例的虚拟计算服务的客户端与资源管理器之间的第三组示例编程交互,在所述编程交互期间资源管理器向客户端主动推荐启用FPGA的计算实例类别。在图6中,资源管理器620监控客户端680的正在计算实例663上运行的一个或多个应用程序,所述计算实例663是未启用FPGA的(即,在实例663中运行的应用程序不可以访问FPGA)并且正在虚拟化主机661处运行,虚拟化主机661可以配备有或未配备有FPGA。基于与客户端的应用程序相关联的资源使用分析676,资源管理器可能能够确定客户端的应用程序适合于在启用FPGA的执行环境中执行。资源使用分析可以指示例如由客户端的应用程序执行的计算模式可以使用在VCS所支持的启用FPGA的计算实例中的一个处可供使用的FPGA来加速。在一些情况下,资源管理器有可能例如通过简单地检查为了客户端执行的软件模块或进程的名称来推断客户端的应用程序的启用FPGA的版本可能在在线市场中可供使用。
资源管理器620可以通过编程接口621将计算实例改变建议632传输给客户端680,所述计算实例改变建议632指示将客户端的应用程序移动到指定类别633的启用FPGA的计算实例(或者在指定类别633的启用FPGA的计算实例上运行客户端的应用程序的FPGA加速版本)可能是有帮助的。如果客户端680接受推荐,那么可以通过资源管理器的编程接口提交新的计算实例请求631。在所描绘的实施方案中,可以由资源管理器为客户端选择启用FPGA的虚拟化主机661,可以发起或执行适当的配置操作以允许启动新的启用FPGA的计算实例665,并且可以向客户端提供信息636,从而允许访问新启动的计算实例665。应注意,在至少一些类似于图4、5和6所示情形的情形下,在给定的虚拟化主机处可能不需要另外的配置操作来启动新的启用FPGA的实例,例如,在主机已经用于某个其他类似的启用FPGA的实例的情况下,所有所需的模块和/或机器映像可能已经在给定主机处可供使用。
在图4、5和6所描绘的情形下,资源管理器在准备好所选择的虚拟化主机(在需要这种准备的情况下)之后为客户端实例化新的计算实例。在一些实施方案中,可以建立预先配置的未指派的启用FPGA的计算实例的池,并将其分配给具有匹配的请求或FPGA相关计算目标的客户端。图7根据至少一些实施方案展示由资源管理器为客户端选择的预先配置的启用FPGA的计算实例。如图所示,客户端780可以通过编程接口721向资源管理器720提交计算实例请求731。请求731可以明确指示客户端选择的计算实例类别,或者可以命名或描述客户端希望运行的特定的利用FPGA的应用程序。
响应于接收到客户端的请求731,资源管理器720可以确定是否可以使用现有的预先配置的启用FPGA的计算实例775(诸如主机池721的虚拟化主机771A-771D上的实例775A-775D中的一个)来满足所述请求。在一些实施方案中,例如,基于对各种类型的所支持实例类别的观察到的需求的分析,可以预先配置属于不同实例类别的多个不同的启用FPGA的实例。如果能够满足客户端的要求的预先配置的实例在池721中可供使用,那么可以选择所述实例并将其指派给客户端,如图7的箭头727所指示。可以通过编程接口721传输包含识别所选择的预先配置的实例并使客户端能够访问所述实例的信息737的消息。使用预先配置的实例,可以减少对客户端的FPGA相关要求做出响应的周转时间,因为可以避免全新的实例可能需要的准备配置步骤中的一些。
FPGA应用程序的市场
在至少一些实施方案中,如上文所提及,可以在VCS处实现网络可访问的市场,第三方开发者(以及在某些情况下的VCS客户端)可以通过所述市场提供利用FPGA的应用程序。图8根据至少一些实施方案展示在FPGA应用程序开发者与虚拟计算服务的资源管理器之间的示例编程交互。在所描绘的实施方案中,第三方FPGA应用程序开发者880(例如,并非由负责VCS的提供商网络运营商拥有或管理的实体,并且可能不一定是在提供商网络处实现的服务的客户端)可以利用VCS的编程接口821来提交由应用程序开发者产生的所建议的利用FPGA的应用程序的描述符831。应用程序描述符831可以包括足够的信息(诸如应用程序所需的一个或多个FPGA的种类、以适当语言(例如,以与FPGA兼容的硬件描述语言)指定的FPGA配置、应用程序所支持的安全策略、应用程序提供的API或其他接口等等)以使资源管理器能够检查应用程序是否满足与VCS的市场相关联的一组接受准则838。可以检查多个不同种类的接受准则,例如像与在VCS处得到支持的FPGA的功能兼容性、针对应用程序所支持的各种类型的操作的最低性能标准、与市场的安全策略的兼容性,以及诸如与市场的目标兼容的定价政策和/或应用程序的预期最低需求或市场规模等业务准则。在所描绘的实施方案中,为了验证是否已经满足所述准则中的一些,可以使用一个或多个FPGA应用程序测试环境835来测试应用程序。
在所描绘的实施方案中,可以通过编程接口821将接受性测试/验证操作842的结果852提供给第三方开发者880。关于业务相关接受准则,资源管理器可以在各种实施方案中从隶属于提供商网络运营商的业务分析师接收对可接受性的程序化确认。如果已满足接受准则,那么开发者880可以在所描绘的实施方案中提交市场进入请求854,并且可以将所述应用程序添加到在线市场807的可用或已公布的应用程序的列表,如箭头872所指示。然后,客户端可以查看或浏览市场,选择应用程序,并提交请求,所述请求指示在适当的启用FPGA的实例处为了客户端实例化所述应用程序。
在不同的实施方案中,可以支持用于访问、使用和共享来自市场的启用FPGA的应用程序的多种不同模式。例如,一些应用程序可能是可供计算服务的任何客户端访问的,其他应用程序可以局限到指定的客户端组,而第三类别的应用程序可以放在市场中,但仅可供单个客户端(例如,可供共享单个VCS客户端帐户标识符的实体)访问。在一个实施方案中,市场中可以包括一个或多个“仅供内部使用”的启用FPGA的应用程序。这类仅供内部使用的应用程序仅可供VCS的授权实体和/或在提供商网络内实现的其他服务访问和使用,并且不可以由外部客户端使用。在至少一个实施方案中,指示可以查看或使用给定应用程序的一组实体的访问策略可以包括在针对所述应用程序的对应的市场进入请求854中。在各种实施方案中,在配置将要从其运行给定应用程序的启用FPGA的计算实例之前,资源管理器可以验证实体(所述计算实例是为了所述实体建立的)是否包括在允许使用给定应用程序的一组实体中。在一些实施方案中,提供给不同实体的列表或市场应用程序可以基于应用程序访问策略而有所不同:例如,如果特定客户端不被允许使用给定的市场应用程序Appll,那么提供给所述客户端的市场的视图可能不包括Appll。
在各种实施方案中,至少一些市场应用程序可以具有一组相关联的工具和/或用户API,例如以简化与应用程序的交互、对应用程序执行配置操作等。在各种实施方案中,可以将这类工具和/或API提供给使用应用程序的实体,例如,作为将要从其运行给定市场应用程序(诸如Appl1)的虚拟化主机或启用FPGA的计算实例的配置的一部分,可以安装与Appl1相关联的工具和API。
FPGA应用程序开发资源
在一些实施方案中,可以留出一组VCS资源来帮助客户端和第三方应用程序开发者设计、开发和测试利用FPGA的应用程序,然后可以将所述利用FPGA的应用程序在VCS的计算实例处部署用于生产使用,或者通过在线市场进行公布和销售。图9根据至少一些实施方案展示可供虚拟计算服务的客户端和合作者使用的示例FPGA应用程序开发资源的使用。如图所示,在所描绘的实施方案中,FPGA应用程序开发资源933可以包括一组库和软件开发工具包(SDK)935、用于代码存储库936的空间,以及一组配备有FPGA的测试和调试平台937。测试和调试平台例如可以包括一定数量的启用FPGA的计算实例,所述计算实例对应于在VCS处得到支持的各种启用FPGA的实例类别,使得利用FPGA的应用程序的功能兼容性和性能可以在最终预期要在上面运行所述应用程序的相同种类的硬件和软件上加以测试。在其他实施方案中,图9中所示的资源种类中的一些可能不可用,例如,客户端和开发者可能不得不利用他们自己的代码存储库。
应用程序开发和测试编程接口921A可以允许第三方应用程序开发者922和/或VCS客户端920利用应用程序开发资源933来设计、开发、调试和测试各种利用FPGA的应用程序,其中至少一些最终可以使用VCS的启用FPGA的计算实例在生产模式下运行。例如,响应于通过编程接口921A接收到特定请求,资源管理器的应用程序开发协调器部件944可以分配虚拟计算服务的所选资源来执行在特定请求中所指示的操作。操作例如可以包括修改特定的利用FPGA的应用程序的程序代码或者测试特定的利用FPGA的应用程序。在一些实施方案中,应用程序开发协调器可以包括与资源管理器分离的负责将计算实例分配给客户端和/或管理市场的控制平面资源,而在其他实施方案中,所有这些责任可以在资源管理器内加以组合。在一些实施方案中,应用程序开发者922可以被认为是VCS的特殊类别的“客户端”,因为当他们利用应用程序开发资源933时,他们可能不一定获取计算实例以用于应用程序的生产级部署。相反,例如,在所描绘的实施方案中,应用程序开发者可以例如通过使用另一组VCS编程接口921B提交的市场进入请求954来提交他们已经开发以便包括在VCS的在线市场907中的应用程序。在所描绘的实施方案中,客户端920还可以将应用程序开发资源用于他们自己的利用FPGA的应用程序,所述应用程序可能不一定放在在线市场中和/或与其他客户端共享。相反,在客户端920测试了他们的应用程序之后,他们可以通过编程接口921B提交对一个或多个启用FPGA的计算实例953的请求955。然后,资源管理器920可以执行必要的配置操作以在所选择的配备有FPGA的虚拟化主机处为客户端启用适当种类的启用FPGA的计算实例953。
在各种实施方案中,不同的实体可以负责对可从VCS的计算实例访问的FPGA进行编程和配置。在一些实施方案中,例如,客户端920可以开发他们自己的应用程序(只要应用程序符合VCS的安全策略和其他策略),并且VCS运营商可以在FPGA处仅执行最低等级的编程(例如,以确保在运行时不违反安全策略)。在其他实施方案中,客户端可以具备转钥式FPGA加速器,其中对FPGA的许多或所有编程工作已由第三方开发者和/或VCS运营商完成。在后一种情形下,客户端可以在需要时简单地从他们的计算实例启动利用FPGA的应用程序。在一些实施方案中,可以共享对FPGA进行编程的责任,例如,一些编程可以由VCS所有者执行,一些由第三方开发者922执行,而一些由客户端920执行。在一些情况下,客户端可以被分配计算实例,从这个计算实例能够访问预先编程的FPGA,并且客户端可以被授予对FPGA执行另外的编程或重新编程的权限。在一种情形下,客户端可以被给予对FPGA的编程的完全控制。例如,VCS可以简单地授予客户端访问可从为了客户端建立的计算实例访问的未编程FPGA,通知客户端有权对FPGA进行编程,并让客户端根据需要对FPGA进行编程。在这类实施方案中,VCS可以提供高度灵活的框架,从而使客户端和/或第三方能够实现所需等级的FPGA自定义。
租赁和FPGA共享
如前文所提及,在提供商网络处实现的许多服务通常依赖于在众多客户端之间共享资源,以实现所需等级的工作效率和成本降低。然而,关于某些利用FPGA的应用程序,从客户端的角度来看,例如出于性能相关和/或安全相关的原因,共享对FPGA的访问(同时或串行地)可能不一定是明智的。为了适应不同客户端的不同需求,同时仍把通过资源共享提供的成本节约作为目标,在至少一些实施方案中可以实现用于配备有FPGA的资源的共享和多租赁的灵活框架。图10根据至少一些实施方案展示关于配备有FPGA的虚拟化主机的共享模式的实例。
在所描绘的实施方案中,在单租户、单FPGA模式1002下,仅单个FPGA 1060A可以附接到给定虚拟化主机1040A或者是可从给定虚拟化主机1040A访问的,以实现高的安全性等级,但是可以在主机1040A处建立属于同一客户端或租户C1的若干不同的计算实例。例如,取决于客户端的请求或计算目标,可以在主机1040A处建立两个不同的实例1053A和1053B,并且如果需要,这两个实例都可以访问FPGA 1060A。
在单租户、多FPGA模式1003下,虚拟化主机1040B包括多个FPGA,诸如FPGA 1060B和1060C。在这种情形下,多个不同的利用FPGA的应用程序(其中至少一些需要使用不同的FPGA)可以从为给定客户端C1建立的同一计算实例1053B(或者从在同一主机1040B处为同一客户端建立的另一个实例)运行。在多租户、共享FPGA模式1004下,虚拟化主机1040C包括可以在计算实例1053D(为了客户端C1建立的)与1053E(为了不同客户端C2建立的)之间共享的单个FPGA 1060D。在多租户、非共享FPGA模式1005下,虚拟化主机1040D可以包括或可以访问包括FPGA 1060E和1060F的多个FPGA,并且对给定FPGA的访问可以局限于属于单个客户端的实例。例如,为了客户端C1建立的计算实例1053F被授予访问FPG1 1060E的权限,而为了客户端C2建立的计算实例1053G被授予访问FPG1 1060F的权限。然而,在所描绘的实施方案中,1053F和1053G都不能访问其他实例的FPGA。
在一些实施方案中,可以使用图10中所指示的共享和租赁布置种类的组合。例如,如果给定的虚拟化主机包括若干不同的FPGA,那么FPGA中的一些可以在若干客户端的实例之间共享,而其他FPGA可以专门用于一个客户端。在一些实施方案中,关于给定的计算实例所使用的多租赁和FPGA共享方法的种类可以在与对应的计算实例类别相关联的安全策略中加以定义。例如,图3的安全策略359A和359B可以控制类别FPGA-A和FPGA-B的FPGA是否可以在多个实例之间共享、属于不同客户端的实例是否可以共存于同一虚拟化主机上等等。
在至少一个实施方案中,如果客户端C1已经具有在启用FPGA的计算实例(诸如1053A)上运行的特定的利用FPGA的应用程序,并且资源管理器从同一客户端C1接收到指示将要运行第二利用FPGA的应用程序的另一个请求,那么资源管理器可以推荐将预先存在的实例1053A用于第二利用FPGA的应用程序(假设同一FPGA可以用于第二应用程序)。在其他实施方案中,或者基于客户端的偏好,可以为第二应用程序启动新的实例(诸如1053B)。
在一些情况下,不同的利用FPGA的应用程序可能需要具有不同规格或能力的FPGA,在这种情况下,可能无法在同一计算实例处适应不同的应用程序。例如,可能的情况是,客户端希望运行两个不同的利用FPGA的应用程序App1和App2,其中用于App1的FPGA不能用于App2(即,功能上不兼容)。在后一种情形下,如果给定的虚拟化主机只可以访问一个FPGA,那么所述主机可能不适用于这两个应用程序。在一些实施方案中,在确定当前正在为了客户端C1使用的特定FPGA(诸如1060A)不能用于客户端的第二应用程序时,资源管理器可以在不同主机上为同一客户端实例化不同的计算实例。在一些实施方案中,客户端可以在其与资源管理器的编程交互中指示其多租赁与单租赁偏好和/或其FPGA共享偏好,并且资源管理器可以基于客户端的偏好进行适当的资源分配选择。在一个实施方案中,例如,如果并且当客户端希望在单租户模式下使用启用FPGA的计算实例时,虚拟化计算服务的资源管理器或其他控制平面部件可以存储与在其中配置客户端的实例的特定虚拟化主机相关联的元数据条目(例如,存储在类似于图1的数据库125的配置/设置数据库中),所述元数据条目含有主机不应被用于任何其他客户端的计算实例的指令。还可以为了各种客户端存储指示客户端对其他租赁等级或FPGA共享等级的偏好的类似元数据条目。
在一些实施方案中,代替被附接到虚拟化主机的扩展总线,FPGA可以被配置在通过快速网络互连可从主机到达的池中。图11根据至少一些实施方案展示其中可以从虚拟化计算服务的计算实例利用FPGA的远程池的示例配置。如图所示,在所描绘的实施方案中,虚拟化主机1140A和1140B以及FPGA 1160A-1160H连接到低延迟高带宽网络互连1111。任何适当的高速互连1111都可以用于虚拟化主机与FPGA 1160之间的通信。在这种布置中,代替对各个虚拟化主机进行修改,在对启用FPGA的实例(诸如实例1153A-1153D)的需求随时间增加的情况下,可以扩大FPGA的池1104。另外,具有不同功能和性能能力的各种FPGA可以被包括在池1104中,并且根据需要从不同的虚拟化主机1140加以访问,从而增加由VCS提供的FPGA支持的灵活性。在一些实施方案中,可以在VCS内建立若干这类远程池。尽管可以通过类似于互连1111的互连从众多虚拟化主机访问给定的远程FPGA池1104,但是任何给定的FPGA不一定需要同时在不同的虚拟化主机和/或不同的客户端之间共享。因此,有可能在图11所示种类的布置中关于各个FPGA 1160实现若干不同的共享模式。例如,给定的FPGA1160可以在同一客户端的不同计算实例(在同一主机或不同主机处)之间,或者在不同客户端的计算实例之间共享,或者在非共享模式下(访问权被授予给单个计算实例)管理。
在一些实施方案中,在虚拟化计算服务处使用远程FPGA的另一种模式下,具有相应的本地附接的FPGA的一组主机可以被配置用于远程访问。例如,考虑这样一种情形:一个主机H1具有本地FPGA FPGA1,而不同的主机H2不具有FPGA。在一个实施方案中,可以允许在H2处(例如,在H2上建立的计算实例处,或者在H2上运行的非虚拟化操作系统上)运行的应用程序例如通过在H1与H2之间建立的网络连接来访问和使用FPGA1。在一些实施方案中,允许远程访问其FPGA的主机(诸如以上示例中的H1)可以运行它自己的非虚拟化操作系统和/或计算实例,其中一些还可以使用本地FPGA。在至少一个实施方案中,可以允许多个远程客户端使用主机的FPGA。
示例虚拟化主机部件
图12根据至少一些实施方案展示包括FPGA的虚拟化主机的示例部件。在所描绘的实施方案中,FPGA 1240附接到虚拟化主机1202的PCI-E扩展总线。本领域的技术人员将认识到,在采用其他连接机制的实施方案中可以实现与图12中示出的那些部件类似的部件。
在所描绘的实施方案中,虚拟化主机1202至少包括使用针对FPGA支持加以自定义的虚拟机映像来实例化的计算实例1210、监控程序1220、PCI-E根联合体1230以及FPGA1240。在虚拟化主机1202处使用涉及使用物理功能和虚拟功能的I/O(输入/输出)虚拟化技术(类似于符合单根I/O虚拟化或SR-IOV规范的技术)。这种I/O虚拟化技术可以允许诸如FPGA 1240的给定PCI-E装置被视为多个分离的PCI-E装置。除了图12中未示出的操作系统之外,计算实例1210还包括客户虚拟机(即,在非管理域中运行的虚拟机),所述客户虚拟机包括用户模式利用FPGA的应用程序1212。在所描绘的实施方案中,用户模式利用FPGA的应用程序1212可以包括通过一组FPGA API 1214与FPGA虚拟功能驱动程序1216交互的一个或多个线程或进程。在所描绘的实施方案中,例如通过添加FPGA虚拟功能驱动程序、支持FPGAAPI和/或用户模式利用FPGA的应用程序1212的模块,可能已经自定义用来实例化计算实例1210的机器映像。在各种实施方案中,创建自定义的机器映像和/或将其复制到虚拟化主机1202可以表示由VCS资源管理器执行或发起来为客户端的启用FPGA的计算实例1210准备好虚拟化主机的配置操作中的一些。
在所描述的实施方案中,除了负责虚拟化管理的各个方面的其他子部件之外,监控程序1220可以包括基于主机的FPGA配置、安全和监控管理器1224以及FPGA物理功能驱动程序1226。在一些实施方案中,虚拟化主机1202可以包括一组虚拟化管理部件,除了监控程序之外,所述虚拟化管理部件还包括例如在与客户端所拥有的计算实例分离的虚拟机中运行的管理或特许域操作系统。虚拟化管理部件(例如,监控程序和/或特许域操作系统实例)可以充当在包括FPGA 1240的虚拟化主机1202的计算实例与各种硬件部件之间的中间件,例如,通过使用FPGA物理功能驱动程序1226将针对FPGA虚拟功能驱动程序的API请求转换成针对FPGA本身的对应的请求,通过将从FPGA接收的响应传输到可以由计算实例1210作为API响应来处理的形式。在所描绘的实施方案中,FPGA 1240可以包括其自己的配置、安全和监控逻辑1242,以及FPGA计算和存储器资源1246。
在所描绘的实施方案中,可以在图12中所展示的不同高级实体之间共享实现与从计算实例1210使用FPGA 1240相关联的安全策略的责任。例如,FPGA 1240的逻辑1242可以负责实施安全策略的一些安全规则和约束(例如,用于防止写入到FPGA存储器和/或其他资源的受保护区域、确保计算实例和/或监控程序尚未被授权的操作被拒绝等),而监控程序1220的安全管理器1224和/或计算实例1210的API层1214可以实施其他安全规则或约束。在各种实施方案中,由资源管理器执行来为客户端的利用FPGA的应用程序准备好虚拟化主机1202的配置操作可以涉及验证用于实施安全策略的适当模块或逻辑处于适当的位置(如果需要,和/或用于安装所述模块或逻辑)。在一些实施方案中,例如,监控程序和/或FPGA本身可以被编程来对可以从FPGA访问的资源以及可以从计算实例访问的FPGA资源施加限制。
在不同的实施方案中可以使用关于安全和监控的多种其他方法(即,不同于图12中所示的方法)。例如,在一个实施方案中,可以向客户端提供对附接有FPGA的主机的访问权,并且可以给予客户端对关于所述主机的安全和监控的完全控制。这种模式可以在例如客户端请求单租户访问和/或希望运行非虚拟化操作系统(例如,与硬件直接交互,而不使用诸如监控程序的虚拟化管理软件作为中间件的操作系统)的情况下使用。在这类情形下,客户端可以根据需要实现任何所需的安全或监控策略(例如,在操作系统和/或FPGA处),或根本不实现安全/监控策略。在一个实施方案中,例如,响应于指示客户端希望在最大客户端控制模式下获取对FPGA的访问权的客户端请求,VCS可以指示客户端被授权利用FPGA的本机编程接口,例如,而不需要使用诸如监控程序的任何中间件。在这种实施方案中,客户端实际上可以被授予对位于提供商网络处的FPGA的完全控制或几乎完全控制,类似于客户端在其自己的场所处本应该具有的对FPGA的控制等级。在这种情形下,客户端可以发出由FPGA本机接口支持的任何类型的命令,例如,以根据需要对FPGA进行编程、设置安全/监控策略等等。
在另一个实施方案中,VCS可以向客户端提供对具有FPGA的主机的单租户访问,但是VCS可以施加轻量级的安全和/或监控层。这种轻量级安全或监控可以在例如FPGA或FPGA板处实现,并且可以不需要监控程序或其他虚拟化管理软件。在一个实施方案中,通常在监控程序处执行的许多或所有虚拟化管理功能可以被卸载到硬件装置(例如,在通过I/O总线附接的外围装置处),并且FPGA相关的安全或监控操作中的至少一些也可以被卸载到这种装置。在一个实现方式中,安全或监控操作中的至少一些可以在附接到与FPGA相同的板的微控制器或其他类似部件处执行。在各种实施方案中,与FPGA安全或监控相关联的操作能够以若干不同部件类型的任何组合来实现:FPGA本身、FPGA所附接的板、诸如监控程序或管理域操作系统等虚拟化管理软件堆栈元件、虚拟化管理功能所卸载到的硬件装置、非虚拟化操作系统实例、启用FPGA的计算实例等等。此外,确定要实施哪些特定安全和/或监控策略以及在哪里实施这些策略的决定可以单独由客户端在VCS处单独进行或者部分由客户端在VCS处部分进行。
用于支持启用FPGA的计算实例的方法
图13是根据至少一些实施方案展示可以被执行来为了虚拟化计算服务的客户端实例化启用FPGA的计算实例的操作的方面的流程图。如元素1301中所示,可以例如由在虚拟计算服务的一个或多个控制平面计算服务处实现的资源管理器通过编程接口向虚拟计算服务(VCS)的客户端提供对多个不同计算实例类别(包括至少一个启用FPGA的计算实例类别FC1)的指示。还可以通过编程接口向客户端提供关于与一个或多个计算实例类别相关联的安全策略、多租赁与单租赁和/或FPGA共享选项的信息。
在一些实施方案中,资源管理器可以任选地识别将要在为了VCS的特定客户端C1建立的计算实例处执行的特定的利用FPGA的应用程序(或一组利用FPGA的应用程序)(元素1304)。在其他实施方案中,代替或除了识别特定应用程序或应用程序类别之外,还可以获取对客户端C1的计算要求或目标的更一般的指示。可以选择VCS的特定虚拟化主机VH1作为为了客户端建立类别FC1的计算实例的地点(元素1307)。虚拟化主机VH1可以至少部分地基于客户端的应用程序要求和/或计算目标从VCS主机池中选择,并且可以访问一个或多个FPGA(例如,通过诸如PCI-E兼容总线的扩展总线或通过不同的互连件加以附接的)。
如元素1310中所示,可以执行一个或多个配置操作来为客户端的应用程序准备好虚拟化主机VH1,例如像准备和/或复制虚拟机映像(包括可以为了客户端用于类别FC1的计算实例的所需FPGA相关库模块)、对FPGA进行加载/编程、验证包括监控程序的虚拟化管理部件被配置来实现用于FC1计算实例的适当的安全或监控相关策略等等。在执行了准备配置操作之后,可以在VH1处启动类别FC1的计算实例(元素1313),并且可以向客户端提供允许访问新启动的计算实例的信息(元素1316),包括网络地址、登录凭据等。如前文所讨论,在一些实施方案中,虚拟化主机VH1可能已经具有完全预先配置或部分预先配置的计算实例,所述计算实例可以满足客户端的计算目标建立,并且可以将这种计算实例分配给客户端,而不是启动新的计算实例。
在图13所描绘的实施方案中,在客户端的利用FPGA的应用程序已经完成执行之后或者响应于来自客户端的强制清除请求,可以任选地删除或消除客户端使用FPGA的证据(元素1319)。在一些实现方式中,可以撤销具体由客户端或为了客户端执行的对FPGA的任何编程,例如,可以使FPGA恢复到它在为了客户端分配计算实例之前的状态。在一些实施方案中,还可以清除计算环境的其他部件(诸如虚拟化主机的存储器和/或虚拟化管理部件)(如果使用的话)以消除客户端使用FPGA的痕迹。
在至少一个实施方案中,客户端可能不局限于在给定计算实例的生命期内仅使用一个应用程序。例如,客户端可能希望在计算实例CI1上运行第一利用FPGA的应用程序Appl1一段时间,然后切换成在同一计算实例CI1处运行不同的利用FPGA的应用程序App12。在一些这类实施方案中,客户端可以使用VCS编程接口(诸如API和/或基于web的控制台)来指示这类应用程序改变。在一些实施方案中,如果需要重新编程或重新配置正在使用的FPGA,那么VCS基础结构的部件(诸如在虚拟化主机外部的虚拟化管理部件和/或VCS控制平面部件处)可以发起或执行必要的重新编程或重新配置。在一个实施方案中,客户端可以发起或执行重新编程或重新配置。
应注意,在各种实施方案中,图13的流程图中所示的操作中的一些能够以不同于图中所示顺序的顺序实现,或者可以并行地而不是循序地执行。另外,在一个或多个实现方式中,可能不需要流程图中所示的操作中的一些。
本公开的示例实施方案可以根据以下条款进行描述:
1.一种系统,其包括:
资源管理器,所述资源管理器在与提供商网络的虚拟化计算服务相关联的一个或多个计算装置处执行;以及
所述虚拟化计算服务的多个虚拟化主机,所述多个虚拟化主机包括第一虚拟化主机,所述第一虚拟化主机包括第一现场可编程门阵列(FPGA);
其中所述资源管理器被配置成:
通过一个或多个编程接口向所述虚拟化计算服务的客户端指示可以为了所述客户端实例化的多个计算实例类别,其中所述多个类别至少包括(a)第一启用FPGA的类别和(b)不支持访问FPGA的第二计算实例类别;
识别将要至少部分地在所述第一启用FPGA的类别的计算实例处为了所述客户端实现的特定的利用FPGA的应用程序;
至少部分地基于所述特定的利用FPGA的应用程序,从所述多个虚拟化主机中选择所述第一虚拟化主机作为平台,在所述平台处为了所述客户端实例化特定计算实例;
发起一个或多个配置操作来为所述特定的利用FPGA的应用程序准备好所述第一虚拟化主机,其中所述一个或多个配置操作的配置操作包括将特定虚拟机映像复制到所述第一虚拟化主机,所述特定虚拟机映像包括与所述特定的利用FPGA的应用程序对应的FPGA库模块;以及
通过所述一个或多个编程接口向所述客户端提供对使用所述特定虚拟机映像在所述第一虚拟化主机处启动的所述第一启用FPGA的类别的特定计算实例的指示。
2.如条款1所述的系统,其中所述第一FPGA附接到所述第一虚拟化主机的扩展总线,其中所述扩展总线符合快速外围部件互连(PCI-E)标准的版本。
3.如条款1所述的系统,其中所述资源管理器被配置成:
响应于从FPGA应用程序提供商接收到第二利用FPGA的应用程序的描述符,其中所述描述符指示对支持所述第二利用FPGA的应用程序的一个或多个要求,
验证所述第二利用FPGA的应用程序满足与所述虚拟计算服务相关联的网络可访问市场的一个或多个接受准则;并且
使所述特定的利用FPGA的应用程序包括在所述网络可访问市场的启用FPGA的应用程序的列表中。
4.如条款1所述的系统,其中所述资源管理器被配置成:
通过所述一个或多个编程接口向所述客户端指示针对所述第一启用FPGA的类别定义的并且在所述第一启用FPGA的类别的计算实例的运行时间期间实施的安全策略,其中所述安全策略至少包括第一规则和第二规则,其中所述第一规则限制从所述第一FPGA对所述第一虚拟化主机的一个或多个其他资源的访问,并且所述第二规则限制从所述第一虚拟化主机对所述第一FPGA的一个或多个资源的访问。
5.如条款1所述的系统,其中所述资源管理器被配置成:
响应于通过所述一个或多个编程接口从所述客户端接收到指示所述客户端对所述第一FPGA的使用已经结束的强制清除请求,发起一个或多个操作以从所述第一FPGA删除与所述客户端对所述第一FPGA的使用有关的一个或多个数据对象。
6.一种方法,其包括:
由在虚拟化计算服务的一个或多个计算装置处执行的资源管理器执行:
通过一个或多个编程接口向所述虚拟化计算服务的第一客户端指示可以为了所述第一客户端建立的一个或多个计算实例类别,其中所述一个或多个类别至少包括第一启用FPGA(启用现场可编程门阵列)的类别;
至少部分地基于所述第一客户端的特定计算目标,从所述虚拟化计算服务的多个虚拟化主机中选择第一虚拟化主机,在所述第一虚拟化主机处将要为所述第一客户端建立所述第一启用FPGA的类别的计算实例,其中所述第一虚拟化主机包括第一FPGA;
发起一个或多个配置操作来为与所述特定计算目标相关联的特定的利用FPGA的应用程序准备好所述第一虚拟化主机;以及
通过所述一个或多个程序接口向所述第一客户端提供对为了所述第一客户端在所述第一虚拟化主机处启动的所述第一启用FPGA的类别的特定计算实例的指示。
7.如条款6所述的方法,其还包括由所述资源管理器执行:
通过所述一个或多个编程接口向所述第一客户端指示在所述第一启用FPGA的类别的计算实例上得到支持的一个或多个利用FPGA的应用程序,其中所述一个或多个利用FPGA的应用程序包括所述特定的利用FPGA的应用程序;以及
通过所述一个或多个编程接口从所述第一客户端接收对所述特定的利用FPGA的应用程序的指示。
8.如条款6所述的方法,其还包括由所述资源管理器执行:
响应于从FPGA应用程序提供商接收到所述特定的利用FPGA的应用程序的描述符,其中所述描述符指示对支持所述特定的利用FPGA的应用程序的一个或多个要求,
验证所述特定的利用FPGA的应用程序满足与所述虚拟计算服务相关联的网络可访问市场的一个或多个接受准则;以及
使所述特定的利用FPGA的应用程序包括在所述网络可访问市场的启用FPGA的应用程序的列表中。
9.如条款8所述的方法,其中所述一个或多个接受准则包括以下各项中的一个或多个:(a)关于所述第一启用FPGA的计算实例类别的功能兼容性准则,(b)安全性准则,或(c)性能准则。
10.如条款6所述的方法,其中所述一个或多个配置操作包括验证所述第一FPGA已被编程来符合所述第一启用FPGA的类别的第一安全策略的操作,其中所述第一安全策略指示以下各项中的一个或多个:(a)对可从FPGA访问的主机资源的一部分的约束和(b)对可从计算实例请求的FPGA操作的类型的约束。
11.如条款6所述的方法,其中所述一个或多个配置操作包括验证所述第一虚拟化主机的虚拟化管理软件部件符合所述第一启用FPGA的类别的第一安全策略的操作,其中所述第一安全策略指示以下各项中的一个或多个:(a)对可从FPGA访问的主机资源的一部分的约束和(b)对可从计算实例请求的FPGA操作的类型的约束。
12.如条款6所述的方法,其中所述第一启用FPGA的类别具有相关联的安全策略,所述方法还包括:
执行一个或多个操作以在以下各项中的一个或多个处实施所述安全策略:(a)被配置用于卸载虚拟化管理操作的外围装置,(b)第一FPGA所附接的板,或(c)非虚拟化操作系统实例。
13.如条款6所述的方法,其还包括:
通过所述一个或多个编程接口在所述资源管理器处接收对将要在所述特定计算实例处执行第二利用FPGA的应用程序的指示;以及
由所述资源管理器发起对所述第一FPGA的重新编程以用于所述第二利用FPGA的应用程序。
14.如条款6所述的方法,其还包括:
由所述资源管理器为了第二客户端在第二虚拟化主机处配置第二计算实例,其中所述第二虚拟化主机可以访问第二FPGA,其中所述配置不包括对所述第二FPGA进行编程;以及
由所述资源管理器向所述第二客户端提供对所述第二客户端被授权对所述FPGA进行编程的指示。
15.如条款6所述的方法,其还包括由所述资源管理器执行:
从第二客户端接收对第二计算目标的指示;
确定可以使用所述虚拟化计算服务的预先配置的虚拟化主机来达到所述第二计算目标,其中所述预先配置的虚拟化主机包括第二FPGA,并且其中所述预先配置的虚拟化主机包括具有预先安装的FPGA库的计算实例;以及
将具有所述预先安装的FPGA库的所述计算实例指派给所述第二客户端。
16.如条款6所述的方法,其还包括由所述资源管理器执行:
响应于通过所述一个或多个编程接口接收到对将要在单租户模式下执行所述第一启用FPGA的类别的所述计算实例的指示,存储与所述第一虚拟化主机相关联的元数据条目,其中所述元数据条目指示所述第一虚拟化主机不会用于任何其他客户端的计算实例。
17.如条款6所述的方法,其还包括由所述资源管理器执行:
响应于从所述虚拟化计算服务的第二客户端接收到对所述第二客户端的第二计算目标的指示,为了所述第二客户端在所述第一虚拟化主机处实例化第二计算实例。
18.如条款17所述的方法,其中实现所述第二计算目标对应于执行第二利用FPGA的应用程序的至少一部分,所述方法还包括:
在以下各项中的一个处执行与所述第二利用FPGA的应用程序相关联的一个或多个操作:(a)所述第一FPGA或(b)所述第一虚拟化主机的第二FPGA。
19.如条款6所述的方法,其还包括:
由所述资源管理器向第二客户端指示所述第二客户端被授权使用所述第二FPGA的本机编程接口来访问第二FPGA;以及
在所述第二FPGA处根据通过所述本机编程接口从所述第二客户端接收的命令来执行一个或多个操作。
20.一种存储程序指令的非暂时性计算机可访问存储介质,所述程序指令当在一个或多个处理器上执行时:
通过一个或多个编程接口向所述虚拟化计算服务的第一客户端指示可以为了所述第一客户端建立的一个或多个计算实例类别,其中所述一个或多个类别至少包括第一启用FPGA(启用现场可编程门阵列)的类别;
至少部分地基于通过所述一个或多个编程接口从所述第一客户端接收的第一消息,从所述虚拟化计算服务的多个虚拟化主机中选择第一虚拟化主机,在所述第一虚拟化主机处将要为所述第一客户端建立所述第一启用FPGA的类别的计算实例,其中所述第一FPGA是可从所述第一虚拟化主机访问的;
发起一个或多个配置操作来为与在所述消息中指示的特定的利用FPGA的应用程序准备好所述第一虚拟化主机;并且
通过所述一个或多个编程接口向所述第一客户端提供对为了所述第一客户端在所述第一虚拟化主机处启动的所述第一启用FPGA的类别的特定计算实例的指示。
21.如条款20所述的非暂时性计算机可访问存储介质,其中所述指令当在所述一个或多个处理器上执行时:
响应于从所述第一客户端接收到第二消息,其中所述第二消息指示所述客户端的第二利用FPGA的应用程序,
确定所述第二利用FPGA的应用程序与所述第一FPGA不兼容;
发起一个或多个另外的配置操作来为所述第二利用FPGA的应用程序准备好第二虚拟化主机,其中所述第二FPGA是可从所述第二虚拟化主机访问的;并且
通过所述一个或多个编程接口向所述第一客户端提供对为了所述第一客户端在所述第二虚拟化主机处启动的第二计算实例的指示。
22.如条款20所述的非暂时性计算机可访问存储介质,其中第二FPGA是可从所述第一虚拟化主机访问的,其中所述指令当在所述一个或多个处理器上执行时:
响应于从所述第一客户端接收到第二消息,其中所述第二消息指示所述客户端的第二利用FPGA的应用程序,
确定可以至少部分地使用所述第二FPGA来执行所述第二利用FPGA的应用程序;
通过所述一个或多个编程接口向所述第一客户端提供从所述特定计算实例运行所述第二利用FPGA的应用程序的推荐。
23.如条款20所述的非暂时性计算机可访问存储介质,其中所述指令当在所述一个或多个处理器上执行时:
向第二客户端提供对用于使用虚拟计算服务的资源来开发利用FPGA的应用程序的一组编程接口的指示;
响应于通过所述一组编程接口从所述第二客户端接收到特定请求,分配所述虚拟计算服务的所选择的资源来执行在所述特定请求中指示的操作,其中所述操作包括以下各项中的一个或多个:(a)修改特定的利用FPGA的应用程序的程序代码或(b)测试特定的利用FPGA的应用程序。
24.如条款20所述的非暂时性计算机可访问存储介质,其中所述第一FPGA是通过网络互连可从所述第一虚拟化主机访问的FPGA池的成员,并且其中所述FPGA池包括可从不同的虚拟化主机访问的第二FPGA。
25.如条款20所述的非暂时性计算机可访问存储介质,其中所述第一FPGA附接到与所述第一虚拟化主机不同的主机。
26.如条款20所述的非暂时性计算机可访问存储介质,其中所述指令当在所述一个或多个处理器上执行时:
通过编程接口接收对与包括在在线市场中的第二利用FPGA的应用程序相关联的访问策略的指示,其中所述访问策略指示被允许使用所述第二利用FPGA的应用程序的一组实体;并且
在为了第二客户端为第二利用FPGA的应用程序实例化计算实例之前,验证所述第二客户端是在所述访问策略中指示的所述一组实体的成员。
27.如条款20所述的非暂时性计算机可访问存储介质,其中所述指令当在所述一个或多个处理器上执行时:
确定包括在在线市场中的第二利用FPGA的应用程序将由第二客户端执行;
在第二虚拟化主机处发起对与所述第二利用FPGA的应用程序相关联的一个或多个工具的配置,在所述第二虚拟化主机处将要实例化第二计算实例以使所述第二客户端能够执行所述第二利用FPGA的应用程序。
使用案例
以上所描述的技术在各种情形中可能是有用的,所述技术是:建立各自可以访问一个或多个FPGA的一群虚拟化主机,以及支持对启用FPGA的计算实例的指派和分配,客户端可以在所述启用FPGA的计算实例处运行各种类型的FPGA加速的应用程序。FPGA已经成为实现许多计算密集型应用程序域的越来越普遍的技术,所述计算密集型应用程序域包括例如与通信、国防、医疗、机器学习、音频、视觉、芯片开发、网络路由等相关联的应用程序。允许客户端(在安全和其他约束条件范围内)对FPGA进行编程而无需客户端执行低级别配置操作的虚拟计算服务可以为基于提供商网络的虚拟计算吸引许多新客户,这些客户以前在很大程度上局限于使用私有数据中心。用于依赖FPGA或利用FPGA的应用程序的网络可访问市场以及开发和测试支持(例如,以SDK和包括虚拟计算服务资源的指定的配备有FPGA的执行平台的形式)还可以帮助增加与启用FPGA的计算实例类别相关联的收入。
说明性计算机系统
在至少一些实施方案中,实现以上所描述的用于支持启用FPGA的计算实例的技术中的一种或多种的服务器(包括资源管理器和提供商网络的其他控制平面和数据平面部件)可以包括通用计算机系统,所述通用计算机系统包括或被配置来访问一个或多个计算机可访问介质。图14展示这种通用计算装置9000。在所展示的实施方案中,计算装置9000包括通过输入/输出(I/O)接口9030连接到系统存储器9020(其可以包括非易失性存储器模块和易失性存储器模块两者)的一个或多个处理器9010。计算装置9000还包括连接到I/O接口9030的网络接口9040。
在各种实施方案中,计算装置9000可以是包括一个处理器9010的单处理器系统,或包括若干处理器9010(例如两个、四个、八个或其他合适数量)的多处理器系统。处理器9010可以是能够执行指令的任何合适的处理器。例如,在各种实施方案中,处理器9010可以是实现各种指令集体系结构(ISA)中的任一种的通用或嵌入式处理器,所述ISA诸如x86、PowerPC、SPARC、或MIPS ISA或任何其他合适的ISA。在多处理器系统中,每一个处理器9010通常可以但不一定实现相同的ISA。在一些实现方式中,代替或者除了常规处理器之外,可以使用图形处理单元(GPU)。
系统存储器9020可以被配置来存储可由处理器9010访问的指令和数据。在至少一些实施方案中,系统存储器9020可以包括易失性部分和非易失性部分两者;在其他实施方案中,仅可以使用易失性存储器。在各种实施方案中,系统存储器9020的易失性部分可以使用任何合适的存储器技术(诸如静态随机存取存储器(SRAM)、同步动态RAM或任何其他类型的存储器)来实现。对于系统存储器的非易失性部分(例如,其可以包括一个或多个NVDIMM),在一些实施方案中可以使用基于闪存的存储器装置,包括NAND闪存装置。在至少一些实施方案中,系统存储器的非易失性部分可以包括电源,诸如超级电容器或其他电力存储装置(例如,电池)。在各种实施方案中,基于忆阻器的电阻性随机存取存储器(ReRAM)、三维NAND技术、铁电RAM、磁阻性RAM(MRAM)或者各种类型的相变存储器(PCM)中的任一种可以至少用于系统存储器的非易失性部分。在所展示的实施方案中,实现一个或多个期望功能的程序指令和数据(诸如以上所描述的那些方法、技术以及数据)被展示为作为代码9025和数据9026存储在系统存储器9020内。
在一个实施方案中,I/O接口9030可以被配置来协调在处理器9010、系统存储器9020、网络接口9040或其他外围接口(诸如各种类型的永久性存储装置和/或易失性存储装置)之间的I/O通信量。在一些实施方案中,I/O接口9030可以执行任何必需的协议、定时或其他数据变换以将来自一个部件(例如,系统存储器9020)的数据信号转换成适合于另一个部件(例如,处理器9010)使用的格式。在一些实施方案中,I/O接口9030可以包括对通过各种类型的外围总线(诸如低引脚数(LPC)总线、外围部件互连(PCI)总线标准的变体、快速PCI或通用串行总线(USB)标准)附接的装置的支持。在至少一些实施方案中,可以通过这类总线来附接各种类型的FPGA。在一些实施方案中,I/O接口9030的功能可以分到两个或更多个单独的部件中,例如像北桥和南桥。另外,在一些实施方案中,I/O接口9030的功能中的一些或全部(诸如到系统存储器9020的接口)可以直接并入到处理器9010中。
例如,网络接口9040可以被配置来允许在计算装置9000与附接到一个或多个网络9050的其他装置9060(例如,如图1至图13所展示的其他计算机系统或装置)之间交换数据。在各种实施方案中,网络接口9040可以支持通过任何合适的有线或无线通用数据网络(例如像以太网网络类型)的通信。另外,网络接口9040可以支持通过电信/电话网络(诸如模拟语音网络或数字光纤通信网络)、通过存储区域网络(诸如光纤通道SAN)或者通过任何其他合适类型的网络和/或协议的通信。
在一些实施方案中,系统存储器9020可以是计算机可访问介质的一个实施方案,所述计算机可访问介质被配置来存储如以上针对图1至图13所描述的用于实现相应方法和设备的实施方案的程序指令和数据。然而,在其他实施方案中,可以在不同类型的计算机可访问介质上接收、发送或存储程序指令和/或数据。一般来说,计算机可访问介质可包括非暂时性存储介质或存储器介质,诸如磁性或光学介质,例如,通过I/O接口9030连接到计算装置9000的磁盘或DVD/CD。非暂时性计算机可访问存储介质还可以包括可以作为系统存储器9020或另一种类型的存储器被包括在计算装置9000的一些实施方案中的任何易失性或非易失性介质,诸如RAM(例如,SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等。此外,计算机可访问介质可以包括诸如可以通过网络接口9040实现的传输介质或信号,诸如通过通信介质(诸如网络和/或无线链接)传送的电信号、电磁信号或数字信号。在各种实施方案中,诸如图14中所展示的多个计算装置的部分或全部可以用于实现所描述的功能;例如,在各种不同的装置和服务器上运行的软件部件可以协作以提供所述功能。在一些实施方案中,除了或者代替使用通用计算机系统来实现,所描述的功能的部分可以使用存储装置、网络装置或专用计算机系统来实现。如本文所使用的术语“计算装置”是指至少所有这些类型的装置,并且不限于这些类型的装置。
总结
各种实施方案还可以包括在计算机可访问介质上接收、发送或存储根据前文的描述所实现的指令和/或数据。一般来说,计算机可访问介质可以包括存储介质或存储器介质,诸如磁性或光学介质(例如磁盘或DVD/CD-ROM)、易失性或非易失性介质(诸如RAM(例如,SDRAM、DDR、RDRAM、SRAM等)、ROM等),以及通过通信介质(诸如网络和/或无线链接)传送的传输介质或信号(诸如电信号、电磁信号或数字信号)。
如图中所展示并且在本文中所描述的各种方法表示方法的示例性实施方案。所述方法可以在软件、硬件或其组合中实现。方法的次序可以改变,并且可以对各种元素进行添加、重新排序、组合、省略、修改等。
受益于本公开的本领域技术人员将清楚地知晓可以做出各种修改和变化。意图涵盖所有这类修改和变化,并且相应地,应在说明性而非限制性意义上看待以上描述。
Claims (15)
1.一种方法,其包括:
由在虚拟化计算服务的一个或多个计算装置处执行的资源管理器执行:
通过一个或多个编程接口向所述虚拟化计算服务的第一客户端指示可以为了所述第一客户端建立的一个或多个计算实例类别,其中所述一个或多个类别至少包括第一启用FPGA(启用现场可编程门阵列)的类别;
至少部分地基于所述第一客户端的特定计算目标,从所述虚拟化计算服务的多个虚拟化主机中选择第一虚拟化主机,在所述第一虚拟化主机处将要为所述第一客户端建立所述第一启用FPGA的类别的计算实例,其中所述第一虚拟化主机包括第一FPGA;
发起一个或多个配置操作来为与所述特定计算目标相关联的特定的利用FPGA的应用程序准备好所述第一虚拟化主机;以及
通过所述一个或多个编程接口向所述第一客户端提供对为了所述第一客户端在所述第一虚拟化主机处启动的所述第一启用FPGA的类别的特定计算实例的指示。
2.如权利要求1所述的方法,其还包括由所述资源管理器执行:
通过所述一个或多个编程接口向所述第一客户端指示在所述第一启用FPGA的类别的计算实例上得到支持的一个或多个利用FPGA的应用程序,其中所述一个或多个利用FPGA的应用程序包括所述特定的利用FPGA的应用程序;以及
通过所述一个或多个编程接口从所述第一客户端接收对所述特定的利用FPGA的应用程序的指示。
3.如权利要求1所述的方法,其还包括由所述资源管理器执行:
响应于从FPGA应用程序提供商接收到所述特定的利用FPGA的应用程序的描述符,其中所述描述符指示对支持所述特定的利用FPGA的应用程序的一个或多个要求,
验证所述特定的利用FPGA的应用程序满足与所述虚拟计算服务相关联的网络可访问市场的一个或多个接受准则;并且
使所述特定的利用FPGA的应用程序包括在所述网络可访问市场的启用FPGA的应用程序的列表中。
4.如权利要求3所述的方法,其中所述一个或多个接受准则包括以下各项中的一个或多个:(a)关于所述第一启用FPGA的计算实例类别的功能兼容性准则,(b)安全性准则,或(c)性能准则。
5.如权利要求1所述的方法,其中所述一个或多个配置操作包括验证所述第一FPGA已被编程来符合所述第一启用FPGA的类别的第一安全策略的操作,其中所述第一安全策略指示以下各项中的一个或多个:(a)对可从FPGA访问的主机资源的一部分的约束和(b)对可从计算实例请求的FPGA操作的类型的约束。
6.如权利要求1所述的方法,其中所述第一启用FPGA的类别具有相关联的安全策略,所述方法还包括:
执行一个或多个操作以在以下各项中的一个或多个处实施所述安全策略:(a)被配置用于卸载虚拟化管理操作的外围装置,(b)第一FPGA所附接的板,或(c)非虚拟化操作系统实例。
7.如权利要求1所述的方法,其还包括:
通过所述一个或多个编程接口在所述资源管理器处接收对将要在所述特定计算实例处执行第二利用FPGA的应用程序的指示;以及
由所述资源管理器发起对所述第一FPGA的重新编程以用于所述第二利用FPGA的应用程序。
8.如权利要求1所述的方法,其还包括:
由所述资源管理器为了第二客户端在第二虚拟化主机处配置第二计算实例,其中所述第二虚拟化主机可以访问第二FPGA,其中所述配置不包括对所述第二FPGA进行编程;以及
由所述资源管理器向所述第二客户端提供对所述第二客户端被授权对FPGA进行编程的指示。
9.如权利要求1所述的方法,其还包括由所述资源管理器执行:
响应于通过所述一个或多个编程接口接收到对将要在单租户模式下执行所述第一启用FPGA的类别的所述计算实例的指示,存储与所述第一虚拟化主机相关联的元数据条目,其中所述元数据条目指示所述第一虚拟化主机不会用于任何其他客户端的计算实例。
10.如权利要求1所述的方法,其还包括:
由所述资源管理器向第二客户端指示所述第二客户端被授权使用所述第二FPGA的本机编程接口来访问第二FPGA;以及
在所述第二FPGA处根据通过所述本机编程接口从所述第二客户端接收的命令来执行一个或多个操作。
11.一种包括存储器的系统,所述存储器存储程序指令,所述程序指令当在一个或多个处理器上执行时导致所述系统:
通过一个或多个编程接口向虚拟化计算服务的第一客户端指示可以为了所述第一客户端建立的一个或多个计算实例类别,其中所述一个或多个类别至少包括第一启用FPGA(启用现场可编程门阵列)的类别;
至少部分地基于通过所述一个或多个编程接口从所述第一客户端接收的第一消息,从所述虚拟化计算服务的多个虚拟化主机中选择第一虚拟化主机,在所述第一虚拟化主机处将要为所述第一客户端建立所述第一启用FPGA的类别的计算实例,其中第一FPGA是可从所述第一虚拟化主机访问的;
发起一个或多个配置操作来为与在所述消息中指示的特定的利用FPGA的应用程序准备好所述第一虚拟化主机;并且
通过所述一个或多个编程接口向所述第一客户端提供对为了所述第一客户端在所述第一虚拟化主机处启动的所述第一启用FPGA的类别的特定计算实例的指示。
12.如权利要求11所述的系统,其中所述指令当在一个或多个处理器上执行时导致所述系统:
向第二客户端提供对用于使用虚拟计算服务的资源来开发利用FPGA的应用程序的一组编程接口的指示;
响应于通过所述一组编程接口从所述第二客户端接收到特定请求,分配所述虚拟计算服务的所选择的资源来执行在所述特定请求中指示的操作,其中所述操作包括以下各项中的一个或多个:(a)修改特定的利用FPGA的应用程序的程序代码或(b)测试特定的利用FPGA的应用程序。
13.如权利要求11所述的系统,其中所述第一FPGA是通过网络互连可从所述第一虚拟化主机访问的FPGA池的成员,并且其中所述FPGA池包括可从不同的虚拟化主机访问的第二FPGA。
14.如权利要求11所述的系统,其中所述指令当在一个或多个处理器上执行时导致所述系统:
通过编程接口接收对与包括在在线市场中的第二利用FPGA的应用程序相关联的访问策略的指示,其中所述访问策略指示被允许使用所述第二利用FPGA的应用程序的一组实体;并且
在为了第二客户端为所述第二利用FPGA的应用程序实例化计算实例之前,验证所述第二客户端是在所述访问策略中指示的所述一组实体的成员。
15.如权利要求11所述的系统,其中所述指令当在一个或多个处理器上执行时导致所述系统:
确定包括在在线市场中的第二利用FPGA的应用程序将由第二客户端执行;
在第二虚拟化主机处发起对与所述第二利用FPGA的应用程序相关联的一个或多个工具的配置,在所述第二虚拟化主机处将要实例化第二计算实例以使所述第二客户端能够执行所述第二利用FPGA的应用程序。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/986,330 | 2015-12-31 | ||
US14/986,330 US10069681B2 (en) | 2015-12-31 | 2015-12-31 | FPGA-enabled compute instances |
PCT/US2016/068702 WO2017117122A1 (en) | 2015-12-31 | 2016-12-27 | Fpga-enabled compute instances |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108369537A true CN108369537A (zh) | 2018-08-03 |
Family
ID=57822084
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680075027.4A Pending CN108369537A (zh) | 2015-12-31 | 2016-12-27 | 启用fpga的计算实例 |
Country Status (4)
Country | Link |
---|---|
US (3) | US10069681B2 (zh) |
EP (1) | EP3398066A1 (zh) |
CN (1) | CN108369537A (zh) |
WO (1) | WO2017117122A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021098269A1 (zh) * | 2019-11-20 | 2021-05-27 | 苏州浪潮智能科技有限公司 | 一种深度学习模型分布式运算的方法及装置 |
CN114168499A (zh) * | 2021-11-10 | 2022-03-11 | 上海安路信息科技股份有限公司 | PCIe设备的访问控制方法、装置及系统 |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10069681B2 (en) | 2015-12-31 | 2018-09-04 | Amazon Technologies, Inc. | FPGA-enabled compute instances |
JP6620595B2 (ja) * | 2016-02-25 | 2019-12-18 | 富士通株式会社 | 情報処理システム、情報処理装置、管理装置、処理プログラム、及び処理方法 |
US10970133B2 (en) * | 2016-04-20 | 2021-04-06 | International Business Machines Corporation | System and method for hardware acceleration for operator parallelization with streams |
US10614231B1 (en) * | 2016-09-15 | 2020-04-07 | Riverside Research Institute | Integrated out-of-band security for high security embedded systems |
US10338135B2 (en) | 2016-09-28 | 2019-07-02 | Amazon Technologies, Inc. | Extracting debug information from FPGAs in multi-tenant environments |
US11099894B2 (en) | 2016-09-28 | 2021-08-24 | Amazon Technologies, Inc. | Intermediate host integrated circuit between virtual machine instance and customer programmable logic |
US10282330B2 (en) * | 2016-09-29 | 2019-05-07 | Amazon Technologies, Inc. | Configurable logic platform with multiple reconfigurable regions |
US10162921B2 (en) | 2016-09-29 | 2018-12-25 | Amazon Technologies, Inc. | Logic repository service |
US10250572B2 (en) * | 2016-09-29 | 2019-04-02 | Amazon Technologies, Inc. | Logic repository service using encrypted configuration data |
US10642492B2 (en) | 2016-09-30 | 2020-05-05 | Amazon Technologies, Inc. | Controlling access to previously-stored logic in a reconfigurable logic device |
US11115293B2 (en) | 2016-11-17 | 2021-09-07 | Amazon Technologies, Inc. | Networked programmable logic service provider |
US10747565B2 (en) * | 2017-04-18 | 2020-08-18 | Amazon Technologies, Inc. | Virtualization of control and status signals |
US10963001B1 (en) | 2017-04-18 | 2021-03-30 | Amazon Technologies, Inc. | Client configurable hardware logic and corresponding hardware clock metadata |
US10503551B2 (en) * | 2017-06-07 | 2019-12-10 | Dell Products L.P. | Coordinating FPGA services using cascaded FPGA service managers |
US10402219B2 (en) * | 2017-06-07 | 2019-09-03 | Dell Products L.P. | Managing shared services in reconfigurable FPGA regions |
EP3444682A1 (de) * | 2017-08-16 | 2019-02-20 | Siemens Aktiengesellschaft | Verfahren zum rechnergestützten koppeln eines verarbeitungsmoduls in ein modulares technisches system und modulares technisches system |
CN109656672B (zh) * | 2017-10-11 | 2023-03-21 | 阿里巴巴集团控股有限公司 | 一种文件加载方法及系统 |
US10540200B2 (en) | 2017-11-10 | 2020-01-21 | Advanced Micro Devices, Inc. | High performance context switching for virtualized FPGA accelerators |
CN109783118B (zh) * | 2017-11-13 | 2022-10-25 | 阿里巴巴集团控股有限公司 | Fpga云主机开发方法和系统 |
US10164639B1 (en) * | 2017-11-14 | 2018-12-25 | Advanced Micro Devices, Inc. | Virtual FPGA management and optimization system |
US11128646B1 (en) * | 2018-04-16 | 2021-09-21 | Trend Micro Incorporated | Apparatus and method for cloud-based accelerated filtering and distributed available compute security processing |
CN110554912B (zh) * | 2018-05-31 | 2022-05-20 | 杭州海康威视数字技术股份有限公司 | 调度设备执行任务的方法和装置 |
CN112166579B (zh) | 2018-06-01 | 2022-02-25 | 华为技术有限公司 | 提供虚拟化网络功能的多服务器架构集群 |
US10705883B2 (en) * | 2018-06-19 | 2020-07-07 | Microsoft Technology Licensing, Llc | Dynamic hybrid computing environment |
US11494621B2 (en) | 2018-06-27 | 2022-11-08 | Amazon Technologies, Inc. | Attached accelerator selection and placement |
US11960935B2 (en) | 2018-06-27 | 2024-04-16 | Amazon Technologies, Inc. | Fault-tolerant accelerator based inference service |
US11422863B2 (en) | 2018-06-27 | 2022-08-23 | Amazon Technologies, Inc. | Attached accelerator scaling |
AU2019295631B2 (en) * | 2018-06-27 | 2022-03-24 | Amazon Technologies, Inc. | Attached accelerator based inference service |
US11599821B2 (en) | 2018-06-27 | 2023-03-07 | Amazon Technologies, Inc. | Attached accelerator based inference service |
US20190042329A1 (en) * | 2018-06-29 | 2019-02-07 | Utkarsh Y. Kakaiya | System with programmable multi-context accelerator circuitry |
US10956246B1 (en) * | 2018-07-16 | 2021-03-23 | Amazon Technologies, Inc. | Isolated read channel management interfaces at streaming data service |
CN109144722B (zh) * | 2018-07-20 | 2020-11-24 | 上海研鸥信息科技有限公司 | 一种多应用高效共用fpga资源的管理系统及方法 |
US10447273B1 (en) | 2018-09-11 | 2019-10-15 | Advanced Micro Devices, Inc. | Dynamic virtualized field-programmable gate array resource control for performance and reliability |
US11030012B2 (en) * | 2018-09-28 | 2021-06-08 | Intel Corporation | Methods and apparatus for allocating a workload to an accelerator using machine learning |
CN109634720B (zh) * | 2018-12-13 | 2021-11-19 | 郑州云海信息技术有限公司 | 一种多虚拟机共享fpga板卡的方法、系统及装置 |
US11120188B2 (en) | 2019-01-28 | 2021-09-14 | King Fahd University Of Petroleum And Minerals | FPGA virtualization |
US10963302B2 (en) * | 2019-03-22 | 2021-03-30 | Wisconsin Alumni Research Foundation | Spatially programmed logic array architecture |
US11086815B1 (en) * | 2019-04-15 | 2021-08-10 | Xilinx, Inc. | Supporting access to accelerators on a programmable integrated circuit by multiple host processes |
CN110750329B (zh) * | 2019-09-25 | 2020-10-20 | 支付宝(杭州)信息技术有限公司 | 基于fpga实现虚拟机运算的方法及装置 |
US10992298B1 (en) | 2019-10-18 | 2021-04-27 | Gowin Semiconductor Corporation | Method and system for providing wireless FPGA programming download via a wireless communication block |
US10776089B1 (en) * | 2019-10-25 | 2020-09-15 | Capital One Services, Llc | Computer architecture based on program / workload profiling |
US11895201B2 (en) * | 2020-03-27 | 2024-02-06 | Intel Corporation | Programmable integrated circuit configured as a remote trust anchor to support multitenancy |
US11948005B2 (en) * | 2020-06-29 | 2024-04-02 | Amazon Technologies, Inc. | Managed integration of constituent services of multi-service applications |
US11941413B2 (en) | 2020-06-29 | 2024-03-26 | Amazon Technologies, Inc. | Managed control plane service |
US11809908B2 (en) * | 2020-07-07 | 2023-11-07 | SambaNova Systems, Inc. | Runtime virtualization of reconfigurable data flow resources |
US20220035684A1 (en) * | 2020-08-03 | 2022-02-03 | Nvidia Corporation | Dynamic load balancing of operations for real-time deep learning analytics |
CN114363414A (zh) * | 2020-09-29 | 2022-04-15 | 华为云计算技术有限公司 | 一种调度计算实例的方法、装置及系统 |
US20220321403A1 (en) * | 2021-04-02 | 2022-10-06 | Nokia Solutions And Networks Oy | Programmable network segmentation for multi-tenant fpgas in cloud infrastructures |
US11880568B2 (en) | 2021-11-17 | 2024-01-23 | Seagate Technology Llc | On demand configuration of FPGA interfaces |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101446996A (zh) * | 2008-12-17 | 2009-06-03 | 复旦大学 | 一种虚拟fpga结构建模及其映射方法 |
CN104991862A (zh) * | 2015-06-25 | 2015-10-21 | 中国船舶重工集团公司第七二四研究所 | 基于jtag虚拟技术的fpga远程在线调测方法 |
US20150370610A1 (en) * | 2014-06-23 | 2015-12-24 | International Business Machines Corporation | Flexible deployment and migration of virtual machines |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5524243A (en) * | 1992-12-16 | 1996-06-04 | Rolm Company | Parallel programming of field programmable gate array devices |
CN100395742C (zh) * | 2005-04-14 | 2008-06-18 | 光宝科技股份有限公司 | 可快速地于不同储存装置间传输数据的计算机系统 |
US20070174429A1 (en) * | 2006-01-24 | 2007-07-26 | Citrix Systems, Inc. | Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment |
US20090089497A1 (en) * | 2007-09-28 | 2009-04-02 | Yuriy Bulygin | Method of detecting pre-operating system malicious software and firmware using chipset general purpose direct memory access hardware capabilities |
US7904629B2 (en) | 2007-10-02 | 2011-03-08 | NVON, Inc. | Virtualized bus device |
US9064058B2 (en) | 2008-12-24 | 2015-06-23 | Nuon, Inc. | Virtualized PCI endpoint for extended systems |
CN101540764B (zh) | 2009-04-27 | 2013-02-06 | 曙光信息产业(北京)有限公司 | 一种基于fpga的面向虚拟机的数据传输和路由方法 |
WO2010127365A1 (en) * | 2009-05-01 | 2010-11-04 | Citrix Systems, Inc. | Systems and methods for establishing a cloud bridge between virtual storage resources |
US8713521B2 (en) * | 2009-09-02 | 2014-04-29 | International Business Machines Corporation | Discovery, analysis, and visualization of dependencies |
US8813072B1 (en) * | 2011-03-18 | 2014-08-19 | DirectPacket Research Inc. | Inverse virtual machine |
US20130159452A1 (en) * | 2011-12-06 | 2013-06-20 | Manuel Alejandro Saldana De Fuentes | Memory Server Architecture |
US9465632B2 (en) * | 2012-02-04 | 2016-10-11 | Global Supercomputing Corporation | Parallel hardware hypervisor for virtualizing application-specific supercomputers |
CN202472636U (zh) | 2012-03-16 | 2012-10-03 | 杭州海莱电子科技有限公司 | 基于fpga的pci-e共享设备 |
US8775576B2 (en) * | 2012-04-17 | 2014-07-08 | Nimbix, Inc. | Reconfigurable cloud computing |
US9619292B2 (en) * | 2012-04-30 | 2017-04-11 | Alcatel Lucent | Resource placement in networked cloud based on resource constraints |
CN103577266B (zh) * | 2012-07-31 | 2017-06-23 | 国际商业机器公司 | 用于对现场可编程门阵列资源进行分配的方法及系统 |
US8739101B1 (en) * | 2012-11-21 | 2014-05-27 | Maxeler Technologies Ltd. | Systems and methods for reducing logic switching noise in parallel pipelined hardware |
WO2014105019A1 (en) * | 2012-12-27 | 2014-07-03 | Empire Technology Development, Llc | Virtual machine monitor (vmm) extension for time shared accelerator management and side-channel vulnerability prevention |
US9361416B2 (en) * | 2013-01-30 | 2016-06-07 | Empire Technology Development Llc | Dynamic reconfiguration of programmable hardware |
WO2015030731A1 (en) * | 2013-08-27 | 2015-03-05 | Empire Technology Development Llc | Speculative allocation of instances |
US10230591B2 (en) * | 2014-09-30 | 2019-03-12 | Microsoft Technology Licensing, Llc | Network resource governance in multi-tenant datacenters |
US20160105528A1 (en) * | 2014-10-08 | 2016-04-14 | Microsoft Corporation | Client-assisted fulfillment of a resource request |
US9575812B2 (en) * | 2014-12-31 | 2017-02-21 | Servicenow, Inc. | Classification based automated instance management |
CN204462684U (zh) | 2015-04-01 | 2015-07-08 | 湘潭大学 | 基于fpga和云平台的智能家居系统 |
CN204615854U (zh) | 2015-06-06 | 2015-09-02 | 湖南机电职业技术学院 | 一种云计算数据加密装置 |
US10599504B1 (en) * | 2015-06-22 | 2020-03-24 | Amazon Technologies, Inc. | Dynamic adjustment of refresh rate |
US10387209B2 (en) * | 2015-09-28 | 2019-08-20 | International Business Machines Corporation | Dynamic transparent provisioning of resources for application specific resources |
US10048977B2 (en) * | 2015-12-22 | 2018-08-14 | Intel Corporation | Methods and apparatus for multi-stage VM virtual network function and virtual service function chain acceleration for NFV and needs-based hardware acceleration |
US10069681B2 (en) | 2015-12-31 | 2018-09-04 | Amazon Technologies, Inc. | FPGA-enabled compute instances |
-
2015
- 2015-12-31 US US14/986,330 patent/US10069681B2/en active Active
-
2016
- 2016-12-27 CN CN201680075027.4A patent/CN108369537A/zh active Pending
- 2016-12-27 WO PCT/US2016/068702 patent/WO2017117122A1/en active Application Filing
- 2016-12-27 EP EP16826853.0A patent/EP3398066A1/en not_active Withdrawn
-
2018
- 2018-08-31 US US16/120,134 patent/US11121915B2/en active Active
-
2021
- 2021-09-13 US US17/473,644 patent/US20220078078A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101446996A (zh) * | 2008-12-17 | 2009-06-03 | 复旦大学 | 一种虚拟fpga结构建模及其映射方法 |
US20150370610A1 (en) * | 2014-06-23 | 2015-12-24 | International Business Machines Corporation | Flexible deployment and migration of virtual machines |
CN104991862A (zh) * | 2015-06-25 | 2015-10-21 | 中国船舶重工集团公司第七二四研究所 | 基于jtag虚拟技术的fpga远程在线调测方法 |
Non-Patent Citations (3)
Title |
---|
DUY VIET VU, OLIVER SANDER, TIMO SANDMANN, STEFFEN BAEHR, JAN HE: "Enabling Partial Reconfiguration for Coprocessors in Mixed Criticality Multicore Systems Using PCI Express Single-Root I/O Virtualization", 《IEEE》 * |
SUHAIB A FAHMY; KIZHEPPATT VIPIN; SHANKER SHREEJITH: "Virtualized FPGA Accelerators for Efficient Cloud Computing", 《IEEE》 * |
匿名: "fpga accelerator virtualizaion in an openpower cloud", 《HTTPS://OPENPOWERFOUNDATION.ORG》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021098269A1 (zh) * | 2019-11-20 | 2021-05-27 | 苏州浪潮智能科技有限公司 | 一种深度学习模型分布式运算的方法及装置 |
CN114168499A (zh) * | 2021-11-10 | 2022-03-11 | 上海安路信息科技股份有限公司 | PCIe设备的访问控制方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2017117122A1 (en) | 2017-07-06 |
US20190020538A1 (en) | 2019-01-17 |
EP3398066A1 (en) | 2018-11-07 |
US10069681B2 (en) | 2018-09-04 |
US11121915B2 (en) | 2021-09-14 |
US20170195173A1 (en) | 2017-07-06 |
US20220078078A1 (en) | 2022-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108369537A (zh) | 启用fpga的计算实例 | |
US11089089B2 (en) | Methods and systems for automated resource exchange among computing facilities | |
US10042628B2 (en) | Automated upgrade system for a service-based distributed computer system | |
CN112560244B (zh) | 一种基于Docker的虚拟仿真实验系统及方法 | |
US7191329B2 (en) | Automated resource management using perceptron prediction | |
US8635351B2 (en) | Multitenant hosted virtual machine infrastructure | |
CN102725733B (zh) | 在平台之间移植虚拟机映像 | |
CN102447743B (zh) | 云企业服务的系统和方法 | |
US20200226520A1 (en) | Methods and systems to optimize server utilization for a virtual data center | |
US20040177244A1 (en) | System and method for dynamic resource reconfiguration using a dependency graph | |
CN105830049A (zh) | 自动化实验平台 | |
CN109313564A (zh) | 用于支持多个不同租户的高度可用虚拟桌面的服务器计算机管理系统 | |
CN104216662B (zh) | 用于跨远程复制关系的卷布置的方法和系统 | |
CN101946258A (zh) | 基于计算机的业务过程在专用硬件上的基于模型的部署 | |
US20200374292A1 (en) | Intelligent device security | |
WO2017010976A1 (en) | Hybrid cloud management | |
CN101159596B (zh) | 用于布置服务器的方法和设备 | |
CN100530027C (zh) | 整合安全角色的系统和方法 | |
CN110162407A (zh) | 一种资源管理方法及装置 | |
US9372731B1 (en) | Automated firmware settings framework | |
Rezgui et al. | CloudFinder: A system for processing big data workloads on volunteered federated clouds | |
Patterson | Learn AWS Serverless Computing: A Beginner's Guide to Using AWS Lambda, Amazon API Gateway, and Services from Amazon Web Services | |
US10423398B1 (en) | Automated firmware settings management | |
US9471784B1 (en) | Automated firmware settings verification | |
CN107231291B (zh) | 一种适用于电网信息物理系统的微服务隔离方法和装置 |
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 |