CN113419845A - 计算加速方法和装置、计算系统、电子设备及计算机可读存储介质 - Google Patents
计算加速方法和装置、计算系统、电子设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN113419845A CN113419845A CN202110197788.XA CN202110197788A CN113419845A CN 113419845 A CN113419845 A CN 113419845A CN 202110197788 A CN202110197788 A CN 202110197788A CN 113419845 A CN113419845 A CN 113419845A
- Authority
- CN
- China
- Prior art keywords
- computing
- physical
- virtual sub
- request
- virtual
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请公开了一种计算加速方法和装置、计算系统、电子设备及计算机可读存储介质。该装置应用于执行应用的计算请求的物理设备,该装置包括:虚拟子设备,用于接收应用的计算请求,以及将所述计算请求与所述虚拟子设备的设备标识一起发送给物理设备;管理模块,用于管理所述虚拟子设备,以及根据物理设备的资源生成供分配的设备实例并以一一对应的方式分配给所述虚拟子设备使用。本申请实施例通过设置虚拟子设备层来作为主机与底层硬件资源之间的虚拟设备,可以实现主机和底层硬件资源之间的隔离,在执行上下文切换时,可以无需与主机侧交互来获取上下文信息,降低了主机侧的资源开销。
Description
技术领域
本申请涉及计算技术领域,尤其涉及一种计算加速方法和装置、计算系统、电子设备及计算机可读存储介质。
背景技术
随着网络技术的发展,基于互联网的云计算技术也得到了越来越广泛的应用。在当前的云计算架构中,基于PCIe(Peripheral Component Interconnect Express,快速外设组件互连)的高速传输技术随着作为PCIe设备中一种的GPU(图形处理单元)在计算中的广泛使用而变得越来越重要。尤其是在将虚拟化技术应用于GPU的计算时,可以在同一个物理GPU上虚拟出多个VGPU(虚拟GPU),并且提供给不同用户使用或者用于运行不同的实例。在该情况下,云计算用户的计算任务以及计算数据通过云计算系统为其建立的多个虚拟机来基于PCIe调用同一个物理GPU上的多个VGPU。但是在这样的调用过程中,由于物理GPU的虚拟化技术不够灵活,例如仅能够为每个VM建立一个vGPU,从而GPU在同一个时刻由一个vGPU占用,并通过驱动来承担vGPU任务的调度和上下文切换。因此,在为不同实例在同一个物理GPU上切换vGPU时只能采取中断的方式来实现物理资源的分时复用,但是这样的中断处理会导致额外的开销。
因此,需要一种能够以较低的开销实现物理资源的上下文切换的计算加速方案。
发明内容
本申请实施例提供一种计算加速方法和装置、计算系统、电子设备及计算机可读存储介质,以解决现有技术中物理资源上下文切换开销较大的缺陷。
为达到上述目的,本申请实施例提供了一种计算加速装置,所述计算加速装置应用于执行应用的计算请求的物理设备,所述计算加速装置包括:
虚拟子设备,用于接收应用的计算请求,以及将所述计算请求与所述虚拟子设备的设备标识一起发送给物理设备;
管理模块,用于管理所述虚拟子设备,以及根据物理设备的资源生成供分配的设备实例并以一一对应的方式分配给所述虚拟子设备使用。
本申请实施例还提供了一种计算加速方法,包括:
接收应用的计算请求;
获取虚拟子设备的设备标识,其中,所述虚拟子设备根据执行所述计算请求的物理设备的至少一部分计算资源而生成的,并且与该至少一部分计算资源具有一一对应的关系;
将所述计算请求与所述设备标识一起发送给所述物理设备,以由所述物理设备执行所述计算请求。
本申请实施例还提供了一种计算系统,包括:
物理设备,用于执行应用的计算请求;
至少一个虚拟机,用于根据用户的请求运行应用;
计算加速设备,用于从所述虚拟机接收应用的计算请求并且将所述计算请求与所述计算加速设备的设备标识一起发送给所述物理设备,其中,
所述物理设备根据所述计算加速设备发送的计算请求调用与所述设备标识对应的计算资源执行所述计算请求。
本申请实施例还提供了一种电子设备,包括:
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,所述程序运行时执行本申请实施例提供的计算加速方法。
本申请实施例还提供了一种计算机可读存储介质,其上存储有可被处理器执行的计算机程序,其中,该程序被处理器执行时实现如本申请实施例提供的计算加速方法。
本申请实施例提供的计算加速方法和装置、计算系统、电子设备及计算机可读存储介质,通过设置虚拟子设备层来面向主机侧提供计算加速服务功能,并且将底层物理设备的后台资源组合来以一一对应的方式提供给虚拟子设备使用,因此,可以在物理资源侧保存切换所需的上下文信息,因此,在执行上下文切换时,可以无需与主机侧交互来获取上下文信息,降低了主机侧的资源开销。并且由于通过在物理资源侧组合资源并一一分配给虚拟子设备来供主机侧使用,既满足了VFIO-MDEV框架的配置要求,又能够通过虚拟子设备与物理资源的各组合部分之间的交互来实现资源调度,从而提高了计算效率。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本申请实施例提供的计算加速方案的应用场景示意图;
图2为本申请提供的计算加速装置实施例的架构示意图;
图3为本申请提供的计算加速方法一个实施例的流程图;
图4为本申请提供的计算加速方法另一个实施例的流程图;
图5为本申请提供的电子设备实施例的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
实施例一
本申请实施例提供的方案可应用于任何具有计算能力的计算系统,例如计算服务器等等。图1为本申请实施例提供的计算加速方案的应用场景示意图,图1所示的场景仅仅是本申请的技术方案可以应用的场景的示例之一。
随着网络技术的发展,基于互联网的云计算技术也得到了越来越广泛的应用。在当前的云计算架构中,基于PCIe(Peripheral Component Interconnect Express,快速外设组件互连)的高速传输技术随着例如GPU(图形处理单元)的PCIe设备在计算中的广泛使用而变得越来越重要。尤其是在将虚拟化技术应用于GPU的计算时,可以在同一个物理GPU上虚拟出多个VGPU(虚拟GPU),并且提供给不同用户使用或者用于运行不同的实例。在该情况下,云计算用户的计算任务以及计算数据通过云计算系统为其建立的多个虚拟机来基于PCIe调用同一个物理GPU上的多个VGPU。但是在这样的调用过程中,由于物理GPU的虚拟化技术不够灵活,例如仅能够为每个VM建立一个vGPU,从而GPU在同一个时刻由一个vGPU占用,并通过驱动来承担vGPU任务的调度和上下文切换。因此,在为不同实例在同一个物理GPU上切换vGPU时只能采取中断的方式来实现物理资源的分时复用,但是这样的中断处理会导致额外的开销。
为此,现有技术中已经提出了SR-IOV方式(Single Root I/O Virtualization,单根IO虚拟化),在该方式中,可以基于一个物理网卡虚拟出多个轻量化的PCIe物理设备,从而可以分配给多个虚拟机使用。这样的SO-IOV方式的缺陷在于由于虚拟机对VF(VirtualFunctions,虚拟功能)的访问对于VMM(Virtual Machine Manager,虚拟机管理器)来说完全透明,即,可以通过PF的总线、设备和功能编号(路由ID)访问各个VF的PCI配置空间,并且每个VF都具有一个PCI内存空间,用于映射其寄存器集。因此,VF设备驱动程序对寄存器集进行操作以启用其功能,并且显示为实际存在的PCI设备。因此,在创建VF后,可以直接将其指定给IO来宾域或各个应用程序,从而使得虚拟功能可以共享物理设备,并在没有CPU和虚拟机管理程序软件开销的情况下执行I/O。因此,该方案由于对于VF空间的访问无需CPU和VMM的参与就可以实现IO操作,从而对运营维护人员带来了较大的压力。
此外,现有技术中对于不支持SR-IOV的设备提出了VFIO-MDEV(VirtualFunctions IO-Mediate Device,虚拟功能IO-中间件)框架,在该方案中,对于一个物理GPU可以虚拟出多个vGPU,并且每个vGPU被分配给一个VM虚拟机,从而每个VM可以将vGPU作为一个独立的物理GPU来进行操作。在该架构下,通过完全GPU虚拟化(GVT-G)驱动来处理vGPU任务的调度以及向物理GPU驱动提交任务和进行上下文切换。
特别地,在现有技术的架构下,作为计算资源的物理GPU在同一时刻只能由一个vGPU占用,即,只能怪在GPU执行完当前分配的vGPU的任务之后,向GTV-G驱动发送中断,以便于GVT-G驱动根据当前的调度策略来确定后续的vGPU任务并下发到物理GPU驱动,并且执行上下文切换,如上面的附图中所示。
在该现有技术的方案中,虽然通过GVT-G驱动实现了同一物理资源(GPU)的多虚拟化复用,但是由于只能通过中断操作来进行上下文切换,这会增加额外的上下文切换开销和延迟。特别是随着采用PCIe设备的性能的不断提升,中断操作越来越变得低效,严重影响了上下文切换的效率。此外,在进行上下文切换时也还需要将上下文内容(数据)从主机侧转移到PCIe设备侧,这样的数据移动会导致额外的延迟,并且也因此限制了上下文切换时保存的上下文数据的规模。另外,还注意到的是,在上述架构中,上下文切换和任务调度由于都需要在主机侧由GVT-G驱动来执行,因此必然导致消耗额外的主机的CPU资源。
本申请提出一种虚拟化方案,其通过将现有技术中需要通过软件层面,例如GVT-G驱动来实现的例如PCIe设备的物理设备的虚拟化卸载到硬件上进行实现,提供了调度管理接口,实现主机对物理设备资源的自定义调用,并且解决了现有技术中需要通过中断来进行上下文切换和任务调度导致的开销较大的问题。进一步地,增设VDEV(虚拟子设备)来作为主机侧与物理资源(GPU)之间的硬件虚拟化映射层,该虚拟化层作为主机和底层硬件资源之间的虚拟设备,实现主机和底层硬件资源的隔离,向主机提供了统一的虚拟化视图。
例如,如图1中所示,在安装在虚拟机中的应用调用物理设备的资源进行计算的场景中,根据本申请实施例的计算加速方案可以通过创建虚拟子设备来面向主机(Host)侧提供例如PCIe的物理设备的仿真界面,即,从虚拟机一侧来看,可以将根据本申请实施例创建的虚拟子设备视为执行计算的物理设备来直接将其中的应用的计算请求发送给虚拟子设备。另一方面,在物理资源侧,根据本申请实施例的计算加速方案可以基于真实的物理资源来对其一部分计算资源进行组合并且以一一对应的方式与虚拟子设备绑定。换言之,虚拟子设备在面向虚拟机(Host)一侧接收了应用的计算请求之后,就可以将该计算请求与虚拟子设备自身的设备标识一起再向下发送给绑定的这部分计算资源,从而使用该计算资源来执行对应的计算任务,从而在执行完该任务之后,各种信息可以直接保存在对应的物理设备侧,并直接通过切换虚拟子设备来改变执行计算任务的物理资源。现有技术中需要使用主机(Host)侧的GVT驱动来处理计算任务到计算资源(vGPU)的调度,特别是,需要使用中断以便于主机侧能够切换到另外的计算任务。
例如,如图1中所示,根据本申请实施例的计算加速方案中,可以先通过例如管理模块(MGT)来将物理设备的计算资源(Q)组合为多个实例(例如,ADI),并且可以相应地创建虚拟子设备,来供主机侧的虚拟机中的应用使用。例如,虚拟机1中可以运行有应用1,该应用1在运行过程中可以将其需要进行的计算任务发送给虚拟子设备1。即,虚拟机可以将该虚拟子设备视为从而虚拟子设备在接收到该计算任务之后,可以对该计算任务进行解析,从而获取到例如要访问的物理设备中计算资源的各个地址,例如,配置寄存器或数据地址寄存器等等。
虚拟子设备1可以将这样解析之后的计算数据与自己的例如设备标识一起发送给物理设备的上述已经由管理模块分配给其的计算资源。在例如图1中所示的场景中,管理模块可以将物理设备的一部分计算资源组合为ADI(AssignedDeviceInstance供分配的设备实例)来以一一对应的方式提供给例如VDEV的虚拟子设备使用,因此,可以通过该ADI来保存切换所需的上下文信息,因此,在执行上下文切换时,可以无需与主机侧交互来获取上下文信息,降低了在执行计算时主机侧的资源开销。
在本申请实施例中,物理设备可以是PCIe设备,即采用PCIe协议进行数据传输的各种物理设备,例如,目前进行人工智能等应用领域的计算的GPU(图形处理单元),或者也可以是加密解密硬件设备、人工智能计算使用的各种加速设备以及FPGA(现场可编程逻辑阵列)等。只要该物理设备能够在同一个物理设备上虚拟出多个物理单元(虚拟子设备)就可以应用于本申请实施例的计算加速方案。
因此,根据本申请实施例的计算加速方案,通过设置虚拟子设备层来面向主机侧提供计算加速服务功能,并且将底层物理设备的后台资源组合来以一一对应的方式提供给虚拟子设备使用,因此,可以通过虚拟子设备作为主机侧与物理资源(GPU)之间的硬件虚拟化映射层,该虚拟化层作为主机和底层硬件资源之间的虚拟设备,实现主机和底层硬件资源的隔离,向主机提供了统一的虚拟化视图。
上述实施例是对本申请实施例的技术原理和示例性的应用框架的说明,下面通过多个实施例来进一步对本申请实施例具体技术方案进行详细描述。
实施例二
图2为本申请提供的计算加速装置实施例的架构示意图,该计算加速装置可以实施为具有计算能力的各种终端或服务器设备,也可以实施为集成在这些设备上的装置或芯片。如图2所示,该计算加速装置包括:虚拟子设备21和管理模块22。
虚拟子设备21可以用于接收应用的计算请求,以及将计算请求与所述虚拟子设备的设备标识一起发送给物理设备。
例如,本申请实施例的计算加速装置可以设置在虚拟机与为虚拟机执行其中安装的应用的计算任务的物理设备之间,例如,虚拟子设备21可以面向主机(Host)侧提供例如PCIe的物理设备的仿真界面。即,从虚拟机一侧来看,可以将根据本申请实施例虚拟子设备21视为执行计算的物理设备来直接将其中运行的应用的计算请求发送给虚拟子设备,而无需直接与物理设备进行交互。虚拟子设备21在接收到应用的计算请求之后,可以对其进行解析来获取各种计算参数并且将其与自己的设备标识一起发送给物理设备。
管理模块22可以用于管理虚拟子设备21以及根据物理设备的资源生成供分配的设备实例并以一一对应的方式分配给虚拟子设备使用。
如上所述,由于虚拟子设备21承担了面向虚拟机主机侧提供物理设备的仿真界面的角色,因此,虚拟子设备21在面向物理设备一侧时需要为其提供相应的计算资源。因此,在本申请实施例中,管理模块22可以基于物理设备的计算资源的情况来对计算资源进行组合。例如如图1中所示的计算资源Q,其是物理设备的计算资源的一部分,因此,在本申请实施例中,管理模块22可以将一个或多个Q组合为一个供分配的设备实例(ADI),并且将其与例如虚拟子设备21进行绑定,从而虚拟子设备21可以使用这样分配给其的计算资源实例来执行应用所要进行的计算任务,此外,通过虚拟子设备21来与计算资源绑定还可以满足VFIO-MDEV框架的配置要求,使得本申请实施例的计算加速装置能够应用于当前使用的各种计算系统。
此外,根据本申请实施例的计算加速装置还可以包括驱动模块23,该驱动模块23可以用于根据虚拟子设备21发送的计算请求和虚拟子设备21的设备标识驱动与该虚拟子设备21对应的供分配的设备实例。由于物理设备的计算资源通常都是硬件资源,因此,在虚拟子设备21使用分配给其的计算资源执行计算任务时,虚拟子设备21可以通过调用该驱动模块23来驱动物理设备的计算资源,即硬件资源来执行处理。
此外,在本申请实施例中,物理设备可以为PCIe设备,例如可以是GPU(图形处理单元),加解密卡、AI专用加速卡、FPGA卡等等。因此,在该情况下,虚拟子设备21就可以通过计算加速装置的VFIO框架接收应用的计算请求。即,如上所述,根据本申请实施例的计算加速装置能够适用于现有的各种虚拟计算体系来进行计算加速处理。
此外,根据本申请实施例,用于为虚拟机提供计算资源的物理设备通常可以包括多个PCIe设备组成的物理设备池,因此,这样的物理设备池、计算加速装置与运行应用的至少一个虚拟机共同组成虚拟池化系统。
计算加速装置可以设置在虚拟池化系统的目标侧。虚拟子设备21可以具有存储在对应的PCIe设备内部的基地址寄存器空间和虚拟配置空间。因此,虚拟子设备21可以将接收到的计算请求以及相应的上下文数据存储在PCIe设备内部的空间中,这样在完成了计算任务需要进行切换时,可以直接在物理设备一侧就直接利用这样存储的上下文数据进行切换,而无需虚拟机(Host)侧的参与,因此可以将虚拟机侧的开销进一步降低。
在该情况下,驱动模块23可以用于与PCIe设备池中的对应的PCIe设备通信以根据虚拟子设备发送的计算请求和虚拟子设备的设备标识驱动PCIe设备。例如,如图2中所示,驱动模块23可以根据虚拟子设备发送的应用的计算请求中解析出的地址通过直接内存访问层来访问目标侧的事务层。并且因此,虚拟子设备也可以直接访问事务层。特别地,管理模块22可以连接到目标侧的多吉比特收发器模块。
例如,在该情况下,PCIe设备可以包括基地址寄存器空间和直接访问空间,并且在基地址寄存器空间中设置有虚拟子设备的属性寄存器、状态寄存器、队列地址寄存器,并且在直接访问空间中设置有门铃寄存器。
在PCIe设备的基地址寄存器空间中可以存储有物理设备的中断报文(MSI-X)表和待处理(Pending)表,并且虚拟子设备21的例如基地址寄存器中可以存储有中断报文指针和待处理指针。因此,在该情况下,虚拟子设备21的中断报文指针和待处理指针可以分别指向PCIe设备的基地址寄存器空间中对应于该虚拟子设备21的中断报文表和待处理表的位置。
例如,在中断MSI-X机制下,PCIe设备的中断报文表和待处理表保存在指定的基地址寄存器空间中。每个子设备21在中断报文表和待处理表中分别占据其中的一段。因此,在基地址寄存器空间中中断报文表和待处理表对应位置中保存子设备中断报文指针和子设备待处理指针,这两个指针可以分别保存该子设备21的中断报文表在总的中断报文表中的偏移量(和个数)以及子设备21的待处理表在总的待处理表中的偏移量(和个数)。PCIe设备通过这两个偏移量(个数)就可以很容易的在总的中断报文表和待处理表中找到属于该子设备21的中断报文表项和待处理表项。
因此,根据本申请实施例的计算加速方案,通过设置虚拟子设备层来面向主机侧提供计算加速服务功能,并且将底层物理设备的后台资源组合来以一一对应的方式提供给虚拟子设备使用,因此,可以通过虚拟子设备层作为主机侧与物理资源(GPU)之间的硬件虚拟化映射层,该虚拟化层作为主机和底层硬件资源之间的虚拟设备,实现主机和底层硬件资源的隔离,向主机提供了统一的虚拟化视图。
实施例三
图3为本申请提供的计算加速方法的一个实施例的流程图,该方法的执行主体可以为具有计算能力的各种终端或服务器设备,也可以为集成在这些设备上的装置或芯片。例如,本申请实施例的计算加速方法可以应用于图2中所示的计算加速装置。如图3所示,该计算加速方法可以包括如下步骤:
S301,接收应用的计算请求。
根据本申请实施例,当运行在虚拟机中的应用需要使用物理设备来执行计算任务时,在现有技术中需要将计算任务发送给物理设备并调用该物理设备的计算资源执行任务。但是在本申请的计算加速方法中,则可以例如在虚拟机(Host)与物理设备之间应用本申请的计算加速方法,特别地,本申请的计算加速方法可以使用软件来实施,也可以使用硬件来实施,或者以软硬结合的方式来实施。
例如,从面向虚拟机一侧来看,在步骤S301中,可以接收虚拟机中运行的应用的计算请求,并且这对于虚拟机来说可以视为发送给了执行计算的物理设备,即,本申请的计算加速方法能够为虚拟机提供一个物理设备的仿真界面,从而虚拟机无需直接与物理设备进行交互就可以进行其所需的各种计算任务。
S302,获取虚拟子设备的设备标识。
在步骤S301中接收了应用的计算请求之后,可以在步骤S302中对其进行例如解析的各种处理来获取各种计算参数,并且获取例如实施例二中记载的计算加速装置的虚拟子设备21的设备标识。即,在本申请实施例中,步骤S302可以获取根据执行计算请求的物理设备的至少一部分计算资源生成的虚拟子设备的设备标识。
S303,将计算请求与设备标识一起发送给物理设备,以由物理设备执行计算请求。
因此,在上述步骤S302中获取了面向虚拟机充当物理设备的虚拟子设备的设备ID之后,由于该虚拟子设备是与执行计算任务的物理设备的一部分计算资源(例如,图1中所示的计算资源Q)一一对应的,也就是说,从物理设备侧看,本申请的计算加速方法可以视为发送计算请求的应用。因此步骤S303中可以将计算请求与接收该计算请求的虚拟子设备的设备标识一起发送给物理设备,从而从物理设备一侧可以根据该计算请求来进行计算处理,并且在计算完成之后可以将结果通知给该设备标识。
因此,根据本申请实施例的计算加速方法,通过面向主机侧提供计算加速服务功能,并且将底层物理设备的后台资源组合来以一一对应的方式提供给虚拟子设备使用,因此,可以通过虚拟子设备作为主机侧与物理资源(GPU)之间的硬件虚拟化映射层,该虚拟化层作为主机和底层硬件资源之间的虚拟设备,实现主机和底层硬件资源的隔离,向主机提供了统一的虚拟化视图。
实施例四
图4为本申请提供的计算加速方法的另一个实施例的流程图,该方法的执行主体可以为具有计算能力的各种终端或服务器设备,也可以为集成在这些设备上的装置或芯片。例如,本申请实施例的计算加速方法可以应用于图2中所示的计算加速装置。如图4所示,该计算加速方法可以包括如下步骤:
S401,接收应用的计算请求。
根据本申请实施例,当运行在虚拟机中的应用需要使用物理设备来执行计算任务时,在现有技术中需要将计算任务发送给物理设备并调用该物理设备的计算资源执行任务。但是在本申请的计算加速方法中,则可以例如在虚拟机(Host)与物理设备之间应用本申请的计算加速方法,特别地,本申请的计算加速方法可以使用软件来实施,也可以使用硬件来实施,或者以软硬结合的方式来实施。
例如,从面向虚拟机一侧来看,在步骤S401中,可以接收虚拟机中运行的应用的计算请求,并且这对于虚拟机来说可以视为发送给了执行计算的物理设备,即,本申请的计算加速方法能够为虚拟机提供一个物理设备的仿真界面,从而虚拟机无需直接与物理设备进行交互就可以进行其所需的各种计算任务。
S402,获取虚拟子设备的设备标识。
在步骤S401中接收了应用的计算请求之后,可以在步骤S402中对其进行例如解析的各种处理来获取各种计算参数,并且获取例如实施例二中记载的计算加速装置的虚拟子设备21的设备标识。即,在本申请实施例中,步骤S402可以获取根据执行计算请求的物理设备的至少一部分计算资源生成的虚拟子设备的设备标识。
S403,将计算请求和设备标识一起发送给与虚拟子设备对应的供分配的设备实例。
因此,在上述步骤S402中获取了面向虚拟机充当物理设备的虚拟子设备的设备ID之后,由于该虚拟子设备是与执行计算任务的物理设备的一部分计算资源(例如,图1中所示的计算资源Q)一一对应的,也就是说,从物理设备侧看,本申请的计算加速方法可以视为发送计算请求的应用。因此步骤S403中可以将计算请求与接收该计算请求的虚拟子设备的设备标识一起发送给物理设备,从而从物理设备一侧可以根据该计算请求来进行计算处理,并且在计算完成之后可以将结果通知给该设备标识。
此外,根据本申请实施例,用于为虚拟机提供计算资源的物理设备通常可以包括多个PCIe设备组成的物理设备池,因此,这样的物理设备池、计算加速装置与运行应用的至少一个虚拟机共同组成虚拟池化系统。在该情况下,可以在虚拟池化系统的目标侧执行根据本申请实施例的计算加速方法。例如,虚拟子设备可以具有存储在对应的PCIe设备内部的基地址寄存器空间和虚拟配置空间。因此,在步骤S403可以将接收到的计算请求以及相应的上下文数据存储在PCIe设备内部的空间中,这样物理设备处完成了计算任务需要进行切换时,可以直接在物理设备一侧就直接利用这样存储的上下文数据进行切换,而无需虚拟机(Host)侧的参与,因此可以将虚拟机侧的开销进一步降低。
例如,在该情况下,PCIe设备可以包括基地址寄存器空间和直接访问空间,并且在基地址寄存器空间中设置有虚拟子设备的属性寄存器、状态寄存器、队列地址寄存器,并且在直接访问空间中设置有门铃寄存器。
在PCIe设备的基地址寄存器空间中可以存储有物理设备的中断报文(MSI-X)表和待处理(Pending)表,并且虚拟子设备21的例如基地址寄存器中可以存储有中断报文指针和待处理指针。因此,在该情况下,虚拟子设备21的中断报文指针和待处理指针可以分别指向PCIe设备的基地址寄存器空间中对应于该虚拟子设备21的中断报文表和待处理表的位置。
因此,当计算请求中包括有中断报文表配置请求时,本申请的计算加速方法可以进一步包括:
S404,获取当前PCIe设备的基地址寄存器空间中的中断报文表和待处理表的尾指针。
S405,根据尾指针更新虚拟子设备的上下文空间中的虚拟子设备的中断报文指针和所述虚拟子设备的待处理指针。
S406,对PCIe设备的基地址寄存器空间中的中断报文表和待处理表的尾指针之后的第一项进行读写操作。
在中断MSI-X机制下,PCIe设备的中断报文表和待处理表保存在指定的基地址寄存器空间中。每个子设备21在中断报文表和待处理表中分别占据其中的一段。因此,在基地址寄存器空间中中断报文表和待处理表对应位置中保存子设备中断报文指针和子设备待处理指针,这两个指针可以分别保存该子设备21的中断报文表在总的中断报文表中的偏移量(和个数)以及子设备21的待处理表在总的待处理表中的偏移量(和个数)。PCIe设备通过这两个偏移量(个数)就可以很容易的在总的中断报文表和待处理表中找到属于该子设备21的中断报文表项和待处理表项。
例如,在步骤S403发送了计算请求之后,如果发现计算请求中包含有中断报文表配置请求,则可以在步骤S404中获取当前PCIe设备,即要执行计算任务的PCIe设备的基地址寄存器空间中的中断报文表和待处理表的尾指针,并且进而在步骤S405中可以根据步骤S404中确定的尾指针来更新该虚拟子设备的上下文空间中的中断报文指针和待处理指针。因此就能够确定要配置的中断报文表的处理地址,从而可以在步骤S406中对PCIe设备的基地址寄存器空间中的中断报文表和待处理表的尾指针之后的第一项进行读写操作。
S407,驱动至少一部分计算资源执行接收到的计算请求。
由于物理设备的计算资源通常都是硬件资源,因此,在步骤S403将计算请求和设备标识发送给物理设备之后,或者在步骤S406更新了中断报文表之后,可以在步骤S407驱动与步骤S402中获取的设备标识所属于的虚拟子设备对应的物理设备的计算资源,即硬件资源来执行处理。
因此,根据本申请实施例的计算加速方法,通过面向主机侧提供计算加速服务功能,并且将底层物理设备的后台资源组合来以一一对应的方式提供给虚拟子设备使用,因此,可以通过使用虚拟子设备作为主机侧与物理资源(GPU)之间的硬件虚拟化映射层,该虚拟化层作为主机和底层硬件资源之间的虚拟设备,实现主机和底层硬件资源的隔离,向主机提供了统一的虚拟化视图。
实施例五
以上描述了计算加速装置的内部功能和结构,该装置可实现为一种电子设备。图5为本申请提供的电子设备实施例的结构示意图。如图5所示,该电子设备包括存储器51和处理器52。
存储器51,用于存储程序。除上述程序之外,存储器51还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器51可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器52,不仅仅局限于中央处理器(CPU),还可能为图形处理器(GPU)、现场可编辑门阵列(FPGA)、嵌入式神经网络处理器(NPU)或人工智能(AI)芯片等处理芯片。处理器52,与存储器51耦合,执行存储器51所存储的程序,该程序运行时执行上述实施例三和四的计算加速方法。
进一步,如图5所示,电子设备还可以包括:通信组件53、电源组件54、音频组件55、显示器56等其它组件。图5中仅示意性给出部分组件,并不意味着电子设备只包括图5所示组件。
通信组件53被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi,3G、4G或5G,或它们的组合。在一个示例性实施例中,通信组件53经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件53还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
电源组件54,为电子设备的各种组件提供电力。电源组件54可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。
音频组件55被配置为输出和/或输入音频信号。例如,音频组件55包括一个麦克风(MIC),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器51或经由通信组件53发送。在一些实施例中,音频组件55还包括一个扬声器,用于输出音频信号。
显示器56包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (21)
1.一种计算加速装置,所述计算加速装置应用于执行应用的计算请求的物理设备,所述计算加速装置包括:
虚拟子设备,用于接收应用的计算请求,以及将所述计算请求与所述虚拟子设备的设备标识一起发送给物理设备;
管理模块,用于管理所述虚拟子设备,以及根据物理设备的资源生成供分配的设备实例并以一一对应的方式分配给所述虚拟子设备使用。
2.根据权利要求1所述的计算加速装置,其中,所述计算加速装置进一步包括:
驱动模块,用于根据虚拟子设备发送的计算请求和虚拟子设备的设备标识驱动所述供分配的设备实例。
3.根据权利要求1或2所述的计算加速装置,其中,所述物理设备为PCIe设备。
4.根据权利要求1所述的计算加速装置,其中,所述虚拟子设备通过所述计算加速装置的VFIO框架接收应用的计算请求。
5.根据权利要求1所述的计算加速装置,其中,多个所述物理设备组成物理设备池,并且所述物理设备池、所述计算加速装置与运行所述应用的至少一个虚拟机共同组成虚拟池化系统,并且
所述计算加速装置设置在所述虚拟池化系统的目标侧,并且所述虚拟子设备具有存储在对应的物理设备内部的基地址寄存器空间和虚拟配置空间,以及
所述计算加速装置进一步包括:
驱动模块,所述驱动模块用于与所述物理设备池中的对应的物理设备通信以根据所述虚拟子设备发送的计算请求和所述虚拟子设备的设备标识驱动所述物理设备,其中,
所述驱动模块通过直接内存访问层访问所述目标侧的事务层,并且
所述虚拟子设备直接访问所述事务层,
所述管理模块连接到所述目标侧的多吉比特收发器模块。
6.根据权利要求5所述的计算加速装置,其中,所述物理设备为PCIe设备。
7.根据权利要求6所述的计算加速装置,其中,所述PCIe设备包括基地址寄存器空间和直接访问空间,并且在所述基地址寄存器空间中设置有所述虚拟子设备的属性寄存器、状态寄存器、队列地址寄存器,并且在所述直接访问空间中设置有门铃寄存器。
8.根据权利要求1所述的计算加速装置,其中,所述物理设备包括基地址寄存器空间,并且在所述基地址寄存器空间中存储有所述物理设备的中断报文表和待处理表,并且所述虚拟子设备存储有中断报文指针和待处理指针,其中,所述虚拟子设备的中断报文指针和所述待处理指针分别指向所述基地址寄存器空间中对应于该虚拟子设备的中断报文表和所述待处理表的位置。
9.一种计算加速方法,包括:
接收应用的计算请求;
获取虚拟子设备的设备标识,其中,所述虚拟子设备根据执行所述计算请求的物理设备的至少一部分计算资源而生成的,并且与该至少一部分计算资源具有一一对应的关系;
将所述计算请求与所述设备标识一起发送给所述物理设备,以由所述物理设备执行所述计算请求。
10.根据权利要求9所述的计算加速方法,其中,所述将所述计算请求与所述设备标识一起发送给所述物理设备,以由所述物理设备执行所述计算请求包括:
将计算请求和所述设备标识一起发送给与所述虚拟子设备对应的供分配的设备实例,其中,所述供分配的设备实例是由所述至少一部分计算资源组成的;
驱动所述至少一部分计算资源执行接收到的计算请求。
11.根据权利要求9或10所述的计算加速方法,其中,所述物理设备为PCIe设备。
12.根据权利要求9所述的计算加速方法,其中,所述接收应用的计算请求包括:
通过VFIO框架接收所述计算请求。
13.根据权利要求9所述的计算加速方法,其中,多个所述物理设备组成物理设备池,并且所述虚拟子设备具有存储在对应的物理设备内部的基地址寄存器空间和虚拟配置空间,以及
当所述计算请求包括中断报文表配置请求时,所述计算加速方法进一步包括:
获取当前物理设备的基地址寄存器空间中的中断报文表和待处理表的尾指针;
根据所述尾指针更新所述虚拟子设备的上下文空间中的虚拟子设备的中断报文指针和所述虚拟子设备的待处理指针;
对所述物理设备的基地址寄存器空间中的中断报文表和待处理表的尾指针之后的第一项进行读写操作。
14.根据权利要求9所述的计算加速方法,其中,多个所述物理设备组成物理设备池,并且所述虚拟子设备具有存储在对应的物理设备内部的基地址寄存器空间和虚拟配置空间,以及
当所述计算请求包括中断报文访问请求时,所述计算加速方法进一步包括:
根据所述虚拟子设备的中断报文指针和待处理指针计算所述中断报文访问请求所要访问的中断报文表项在所述物理的基地址寄存器空间中的偏移量;
根据所述偏移量计算所述中断报文表项在所述基地址寄存器空间中的地址。
15.根据权利要求9所述的计算加速方法,其中,多个所述物理设备组成物理设备池,并且所述虚拟子设备具有存储在对应的物理设备内部的基地址寄存器空间和虚拟配置空间,以及
所述计算加速方法进一步包括:
将所述虚拟子设备的设备标识、计算请求中包含的访问地址以及数据长度分别写入所述物理设备的基地址寄存器空间中。
16.根据权利要求13-15中的任一项所述的计算加速方法,其中,所述物理设备为PCIe设备。
17.根据权利要求16所述的计算加速方法,其中,所述PCIe设备包括基地址寄存器空间和直接访问空间,并且在所述基地址寄存器空间中设置有所述虚拟子设备的属性寄存器、状态寄存器、队列地址寄存器,并且在所述直接访问空间中设置有门铃寄存器。
18.根据权利要求9所述的计算加速方法,其中,所述物理设备包括基地址寄存器空间,并且在所述基地址寄存器空间中存储有所述物理设备的中断报文表和待处理表,并且所述虚拟子设备存储有中断报文指针和待处理指针,其中,所述虚拟子设备的中断报文指针和所述待处理指针分别指向所述基地址寄存器空间中对应于该虚拟子设备的中断报文表盒所述待处理表的位置。
19.一种计算系统,包括:
物理设备,用于执行应用的计算请求;
至少一个虚拟机,用于根据用户的请求运行应用;
计算加速设备,用于从所述虚拟机接收应用的计算请求并且将所述计算请求与所述计算加速设备的设备标识一起发送给所述物理设备,其中,
所述物理设备根据所述计算加速设备发送的计算请求调用与所述设备标识对应的计算资源执行所述计算请求。
20.一种电子设备,其中,包括:
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,所述程序运行时执行如权利要求9至18中任一所述的计算加速方法。
21.一种计算机可读存储介质,其上存储有可被处理器执行的计算机程序,其中,该程序被处理器执行时实现如权利要求9至18中任一所述的计算加速方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110197788.XA CN113419845A (zh) | 2021-02-22 | 2021-02-22 | 计算加速方法和装置、计算系统、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110197788.XA CN113419845A (zh) | 2021-02-22 | 2021-02-22 | 计算加速方法和装置、计算系统、电子设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113419845A true CN113419845A (zh) | 2021-09-21 |
Family
ID=77711767
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110197788.XA Pending CN113419845A (zh) | 2021-02-22 | 2021-02-22 | 计算加速方法和装置、计算系统、电子设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113419845A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114003392A (zh) * | 2021-12-28 | 2022-02-01 | 苏州浪潮智能科技有限公司 | 一种数据加速计算方法及相关装置 |
WO2023050819A1 (zh) * | 2021-09-29 | 2023-04-06 | 上海商汤智能科技有限公司 | 片上系统、虚拟机任务处理方法及设备、存储介质 |
WO2023207829A1 (zh) * | 2022-04-24 | 2023-11-02 | 华为技术有限公司 | 一种设备虚拟化方法及相关设备 |
CN117519955A (zh) * | 2024-01-08 | 2024-02-06 | 浪潮电子信息产业股份有限公司 | 一种加速设备的控制方法、系统、装置及加速设备 |
-
2021
- 2021-02-22 CN CN202110197788.XA patent/CN113419845A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023050819A1 (zh) * | 2021-09-29 | 2023-04-06 | 上海商汤智能科技有限公司 | 片上系统、虚拟机任务处理方法及设备、存储介质 |
CN114003392A (zh) * | 2021-12-28 | 2022-02-01 | 苏州浪潮智能科技有限公司 | 一种数据加速计算方法及相关装置 |
WO2023207829A1 (zh) * | 2022-04-24 | 2023-11-02 | 华为技术有限公司 | 一种设备虚拟化方法及相关设备 |
CN117519955A (zh) * | 2024-01-08 | 2024-02-06 | 浪潮电子信息产业股份有限公司 | 一种加速设备的控制方法、系统、装置及加速设备 |
CN117519955B (zh) * | 2024-01-08 | 2024-03-29 | 浪潮电子信息产业股份有限公司 | 一种加速设备的控制方法、系统、装置及加速设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113419845A (zh) | 计算加速方法和装置、计算系统、电子设备及计算机可读存储介质 | |
US10310879B2 (en) | Paravirtualized virtual GPU | |
CN103282881B (zh) | 通过虚拟化直接共享智能设备 | |
WO2018119951A1 (zh) | Gpu虚拟化方法、装置、系统及电子设备、计算机程序产品 | |
CN113296884B (zh) | 虚拟化方法、装置、电子设备、介质及资源虚拟化系统 | |
US20080077917A1 (en) | Virtual machine system and a method for sharing a graphics card amongst virtual machines | |
US11010859B2 (en) | Display resource scheduling method and device for embedded system | |
JP2013515983A (ja) | 仮想化環境においてi/o処理を行う方法および装置 | |
US11204790B2 (en) | Display method for use in multi-operating systems and electronic device | |
CN112148422A (zh) | 一种io处理的方法和装置 | |
CN115309511B (zh) | 基于Xen的数据交互方法、装置、存储介质以及电子设备 | |
US20220050795A1 (en) | Data processing method, apparatus, and device | |
CN112352221A (zh) | 用以支持虚拟化环境中的ssd设备驱动器与物理ssd之间的sq/cq对通信的快速传输的共享存储器机制 | |
CN115202827A (zh) | 处理虚拟化中断的方法、中断控制器、电子设备和芯片 | |
CN115904617A (zh) | 一种基于sr-iov技术的gpu虚拟化实现方法 | |
CN114691300A (zh) | 一种虚拟机实例的热迁移方法 | |
CN114691286A (zh) | 服务器系统、虚拟机创建方法及装置 | |
CN111651269A (zh) | 实现设备虚拟化的方法、装置及计算机可读存储介质 | |
CN114397999A (zh) | 基于非易失内存接口-远程处理消息传递的通信方法、装置及设备 | |
US20180052700A1 (en) | Facilitation of guest application display from host operating system | |
US20200218685A1 (en) | Data Access Method and Apparatus | |
CN110740095B (zh) | 多媒体串流及路由装置及其运作方法 | |
CN108235822B (zh) | 虚拟sim卡的实现方法及装置、存储介质、电子设备 | |
US20240111561A1 (en) | Requesting power management metrics for a parallel accelerated processor for a virtual function | |
CN116974736A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40058165 Country of ref document: HK |