CN107533469A - 对图形处理单元资源的容器访问 - Google Patents

对图形处理单元资源的容器访问 Download PDF

Info

Publication number
CN107533469A
CN107533469A CN201580079299.7A CN201580079299A CN107533469A CN 107533469 A CN107533469 A CN 107533469A CN 201580079299 A CN201580079299 A CN 201580079299A CN 107533469 A CN107533469 A CN 107533469A
Authority
CN
China
Prior art keywords
gpu
emulation
physics
user side
driver
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201580079299.7A
Other languages
English (en)
Other versions
CN107533469B (zh
Inventor
田坤
董耀祖
Z·吕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Priority to CN202210155770.8A priority Critical patent/CN114546594A/zh
Publication of CN107533469A publication Critical patent/CN107533469A/zh
Application granted granted Critical
Publication of CN107533469B publication Critical patent/CN107533469B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Stored Programmes (AREA)
  • Image Generation (AREA)
  • Digital Computer Display Output (AREA)

Abstract

本文公开了用于对图形处理单元(GPU)资源的容器访问的系统和方法。在一些实施例中,计算系统可以包括物理GPU和内核模式驱动器电路,用于与物理GPU通信地耦合以创建多个仿真GPU以及对应的多个设备节点。每个设备节点可以与单个对应的用户侧容器相关联,用于实现用户侧容器和对应的仿真GPU之间的通信。可以公开和/或要求保护其他实施例。

Description

对图形处理单元资源的容器访问
技术领域
本公开的实施例一般涉及计算系统领域,更具体地涉及对图形处理单元资源的容器访问。
背景技术
容器已被用于访问非图形处理单元(GPU)计算资源,例如中央处理单元(CPU)资源、存储器和存储设备以及网络功能。然而,在GPU重负荷应用程序中使用容器所涉及的独特问题使GPU容器化成为一个开放的挑战。
附图说明
通过以下结合附图的详细描述将容易理解实施例。为了便于该描述,相似的附图标记表示相似的结构元件。在附图的各图中通过示例的方式而非限制的方式示出实施例。
图1是根据各个实施例的包括与仿真GPU通信地耦合的容器的计算系统的框图。
图2是根据各个实施例的具有显示管理器和调度器的图1的计算系统的实施例的框图。
图3是根据各个实施例的具有与仿真GPU通信地耦合的虚拟机的图1的计算系统的实施例的框图。
图4是根据各个实施例的具有多个内核模式驱动器的图1的计算系统的实施例的框图。
图5是根据各个实施例的用于使用户侧容器能够利用物理GPU的资源的内核侧方法的流程图。
图6是根据各个实施例的用于使用户侧容器能够利用物理GPU的资源的用户侧方法的流程图。
图7是可用于实践本文描述的各个实施例的示例性计算设备的框图。
具体实施方式
本文公开了用于对图形处理单元(GPU)资源的容器访问的系统和方法。例如,在一些实施例中,用于使多个用户侧容器能够利用物理GPU的资源的方法可以包括提供内核模式驱动器以创建多个仿真GPU和对应的设备节点,其中所述多个仿真GPU通信地耦合到物理GPU;以及将每个设备节点与单个对应的用户侧容器相关联,以使得用户侧容器和对应的仿真GPU之间的通信能够利用物理GPU的资源。
本文公开的各个实施例可以通过驱动器自仿真来提供容器中的GPU加速。容器(也称为“软件容器”)在计算系统中提供操作系统级虚拟化。使用容器而不是传统虚拟机(VM)的系统可能展现出更高的密度,更快的供给和更好的性能,使容器在某些应用中成为虚拟化技术的强大的轻量级替代物。
如上所述,容器已经用于访问非GPU计算资源,例如中央处理单元(CPU)资源、存储器和存储设备以及网络功能。这些子系统由内核管理,通常具有良好抽象的资源和暴露给计算系统的用户侧的简单接口。特别地,不同的命名空间可以给每个用户侧进程一个分开的系统视图,该分开的系统视图与其他进程隔离,并且包括分开的挂载点、进程标识符(PID)、进程间通信(IPC)、网络资源和时间资源等。结果是,命名空间使得能够对于单独用户实现这些非GPU计算资源的容器化。Linux内核中的“cgroup”功能限制、解释和隔离多个进程的资源使用,并且可以进一步在不同的命名空间中实施资源限制、优先级排序、解释和控制。因此,多个容器可以良好地隔离。
然而,在GPU重负荷应用中使用容器所涉及的独特问题一直是一个开放的挑战。特别地,GPU的内核模式驱动器(KMD)和用户模式驱动器(UMD)之间的复杂接口意味着图形子系统比上述子系统复杂得多。接口和图形子系统通常是供应商特定的,因此暴露给UMD的资源被较差地抽象,需要按量级比上面讨论的子系统指定更多的选项。例如,Linux中的典型图形驱动器可能包括大约70个常用的直接渲染管理器(DRM)输入/输出控制(IOCTL)选项和大约40个供应商特定的IOCTL选项。每个IOCTL导致图形驱动器中的复杂代码路径,其最终转换成GPU中的数千个寄存器。对于这样大的接口和设备属性集创建命名空间或使用cgroup需要非常详细的、侵入性的和设备特定的一组修改,几乎触及到KMD内的每个代码路径/数据结构。这是一个巨大的工程量,可能会带来几乎无法管理的维护负担。此外,将一个GPU的解决方案移植到另一个GPU的能力是有限的或不存在。
这些挑战已经限制或排除在图形密集型场景中使用容器。这些场景可能包括使用多个人物和客户端设备(例如个人计算机,电话,平板计算机);运行GPU密集型计算机辅助绘图(CAD)软件的远程桌面或工作站;提供媒体转码、视频会议、云机顶盒或其他软件即服务的媒体输送云应用;云游戏;视觉理解(例如面部识别,深度学习等)。这些场景中的一些场景可能需要完全的GPU能力(例如,三维图形,视频和GPU计算),并且这些场景中的其他场景可能仅需要GPU的一部分能力。通常,在这些场景中使用基于管理程序(hypervisor)的虚拟化(例如,在虚拟机中运行整个操作系统)。
最多,只通过将物理GPU专门分配于单个容器才尝试“容器化”,而不需要多个容器共享该GPU的资源的能力。一些以前的方法已经尝试在多个容器中运行应用程序,并且使这些应用程序访问GPU资源,但是不同容器的应用程序没有彼此隔离,从而带来重大的安全风险。
本文公开的一些实施例以安全、隔离的方式提供容器图形,从而实现良好的服务质量(QOS)控制。特别地,本文公开了一种驱动器自仿真方法,其中可以生成多个仿真GPU实例。当用户侧容器使用时,每个GPU实例可以被安全隔离和专用。这可能会在容器中实现GPU加速,同时具有安全性和性能方面的健壮隔离。使用本文公开的方法,消除了将具有复杂接口的UMD容器化到KMD的难度;相反,仿真GPU可以被容器化并使用已知技术与物理GPU进行通信。
在一些实施例中,计算系统中的仿真GPU可以由KMD产生。仿真GPU可以具有与计算系统中的物理GPU相同的特征。每个仿真GPU可以与唯一的设备节点相关联,所述唯一的设备节点由用户侧的单个容器排他地拥有。相同的驱动器代码可以在仿真GPU和物理GPU之上运行(例如,具有基本相同的低级输入/输出钩)。可以在仿真GPU级别(例如,在自我仿真器中)集中强制执行安全隔离。每个容器只能访问其自己的仿真GPU,因此可以实现严格的隔离。当仿真GPU向调度器发布GPU命令时,可以强制执行性能隔离,然后所述调度器可以将现有的QOS策略强制执行技术扩展到容器中的应用程序。这些和其他实施例中的各种实施例在此详细讨论。
在下面的详细描述中,参考形成其一部分的附图,其中相似的附图标记始终表示相似的部分,并且其中通过图示说明的方式示出了可以实践的实施例。应当理解,在不脱离本公开的范围的情况下,可以使用其他实施例并且可以进行结构或逻辑改变。
各种操作可以以对于理解所要求保护的主题最有帮助的方式依次描述为多个离散动作或操作。然而,描述的顺序不应被解释为意味着这些操作必然是依赖于顺序的。特别地,这些操作可能不按照呈现的顺序执行。所描述的操作可以以与所描述的实施例不同的顺序执行。在附加实施例中可以执行各种附加操作或可以省略所描述的操作。
为了本公开的目的,术语“或”用作包含术语,表示与该术语相耦合的组分中的至少一个。例如,短语“A或B”是指(A),(B)或(A和B);短语“A,B或C”是指(A),(B),(C),(A和B),(A和C),(B和C)或(A,B和C)。
描述可以使用短语“在一个实施例中”或“在实施例中”,其可以各自指代相同或不同的实施例中的一个或多个。此外,关于本公开的实施例使用的术语“包括”,“包含”,“具有”等等是同义词。
如本文所使用的,术语“电路”可以指执行一个或多个软件或固件程序、组合逻辑电路或提供所述功能的其它合适的硬件组件的专用集成电路(ASIC)、电子电路、处理器(共享,专用或组)或存储器(共享,专用或组),是其一部分或包括这些。如本文所使用的,术语“驱动器”和“驱动器电路”可以包括被编程或以其他方式构造为操作和/或控制特定硬件设备(例如,图形处理单元)的电路。
图1是包括用户侧102上的多个容器106的计算系统100的框图。每个容器106与计算系统100的内核侧104上的仿真GPU 122通信地耦合。每个容器106可以包括用户模式GPU驱动器(UMD)110以及与UMD 110通信的一个或多个软件应用程序108。UMD 110可以经由UMD-KMD接口112和设备节点116(例如,/dev/dri/card0或Linux系统中的另一个卡号)与内核模式GPU驱动器(KMD)114的仿真GPU 122进行通信。KMD 114可以通信地耦合到物理GPU128。设备节点116可以与仿真GPU 122在控制路径118上交换控制数据(例如,模式设置,分辨率,高速缓存模式等),并且在渲染路径120上(例如,通过包含待由GPU解析的GPU命令的命令缓冲器)来渲染数据。反过来,KMD 114可以在控制路径124上交换控制数据,并且借助物理GPU 128在渲染路径126上渲染数据。在一些实施例中,控制路径124和呈现路径126可以双工并共享公共路径。
可以使用许多已知技术中的任何一种来生成仿真GPU 122。例如,已经使用如XenGT的方法来通过在Linux图形驱动器中生成完全仿真的GPU设备模型来实现VM中的GPU加速。该GPU设备模型可以用于提供仿真GPU 122,并且可以容易地移植到任何操作系统。使用XenGT方法,仿真GPU 122的操作可能被期望接近针对典型的图形工作负荷的本地性能,与针对典型媒体工作负荷的本地性能几乎相同。另外,通过使用容器而不是VM来避免管理程序使用期间产生的陷阱开销(因为容器可以从驱动器代码直接调用至仿真GPU设备模型中)。尽管上面讨论了XenGT,但是可以使用任何合适的现有GPU设备模型来生成仿真GPU,因此本文不再进一步讨论用于生成仿真GPU的技术。
KMD 114可以被配置为创建一个或多个仿真GPU 122和对应的一个或多个设备节点116。在使用中,每个设备节点116可以与单个对应的用户侧容器106相关联,并且可以实现用户侧容器106和对应的仿真GPU 122之间的通信以允许用户侧容器106的一个或多个应用程序108利用物理GPU 128的图形处理资源。
在一些实施例中,计算系统100可以包括在多个仿真GPU 122之间划分的图形存储器(未示出)。图形存储器可以用于像素加载,或者例如用作写入命令缓冲器。在其他实施例中,用于仿真GPU 122的图形存储器可以在KMD 114中动态地并集中分配(例如,如常规上为主机应用程序所做的那样)。
在一些实施例中,仿真GPU 122可以模拟物理GPU 128。在一些实施例中,仿真GPU122可以支持作为物理GPU 128支持的特征的正确子集的一组特征。例如,仿真GPU 122可以表示相对于物理GPU 128“简化”的GPU(例如,比物理GPU 128向用户空间暴露更少的特征)。在一些实施例中,仿真GPU 122不模拟物理GPU 128;下面参照图4讨论这些实施例的示例。
图2是根据各个实施例的图1的计算系统100的实施例的框图,具有显示管理器134和调度器130。如上文参考图1所讨论的,图2的计算系统100包括在用户侧102上的多个容器106,每个容器106与内核侧104上的仿真GPU 122通信地耦合。每个容器106可以包括用户模式GPU驱动器(UMD)110以及与UMD 110通信的一个或多个软件应用108。UMD 110还可以经由UMD-KMD接口112和设备节点116与KMD 114的仿真GPU 122进行通信。如上文参考图1所述,KMD 114可以通信地耦合到物理GPU 128。设备节点116可以与仿真GPU 122在控制路径118上交换控制数据,并且在渲染路径120上渲染数据。反过来,KMD 114可以与物理GPU 128在控制路径124上交换控制数据并在渲染路径126上渲染数据。KMD 114可以被配置为创建一个或多个仿真GPU 122和对应的一个或多个设备节点116。在使用中,每个设备节点116可以与单个对应的用户侧容器106相关联,并且可以实现用户侧容器106和对应的仿真GPU 122之间的通信,以允许用户侧容器106的一个或多个应用程序108利用物理GPU 128的图形处理资源。
如图2所示,一个或多个仿真GPU 122可以与显示管理器134一起被包括在KMD 114的自我仿真器132中。自我仿真器132可以被配置为生成GPU设备模型以用作仿真GPU 122。在仿真GPU 122可以被生成具有与物理GPU 128相同或等效特征的实施例中,用于物理GPU128的KMD(即,KMD 114)能够生成多个驱动器实例以管理仿真GPU 122和物理GPU 128。在一些实施例中,仿真GPU 122可以包括与物理GPU 128完全相同的特征,因此相同的图形驱动器可以在两者上无缝地运行。每个驱动器实例可以包括其自己的设备节点116,其可以专门地分配给特定的容器106,如上所述。可以进行最小的改变以将低级驱动器输入/输出接口(例如,i915_read/write IOCTL)转换为直接到仿真GPU 122中的回调。每个容器106可以被约束以仅访问其自己的仿真GPU 122,并且自我仿真器132可以确保仿真GPU 122不能干扰其他仿真GPU 122(例如,通过控制CPU页表映射和扫描GPU命令)。
计算系统100还可以包括不被包括在软件容器中的一个或多个应用程序136和UMD138。应用程序136可以与UMD 138通信,UMD 138又可以经由UMD-KMD接口140与KMD 114的设备节点116通信。设备节点116然后可以根据常规技术(例如,不经过仿真的GPU)与物理GPU128交换控制数据并且利用调度器130渲染数据。因此,计算系统100可以在利用物理GPU128的资源(的同时或不同时间)容纳容器化和非容器化的应用程序。
KMD 114可以包括调度器130。调度器130可以与仿真的GPU 122和物理GPU 128通信地耦合。调度器130可以在渲染路径142上提供渲染数据。调度器130可以提供用于仿真GPU 122的命令提交接口,并且可以实现cgroup或类似的功能。在一些实施例中,调度器130可以被配置为在仿真GPU 122使用物理GPU 128时(例如,通过以与常规对于主机应用程序执行的类似方式应用cgroup策略)来强制执行服务质量策略。例如,基于最终用户和云服务提供商之间关于容器能力达成的服务级别协议,服务质量策略可以包括分配给不同仿真GPU 122的不同权重。调度器130然后可以基于所分配的权重或者使用用于服务质量调度的任何合适的常规技术来调度来自每个仿真GPU 122的命令(例如,根据其总权重的百分比,特定仿真GPU 122被分配了一定百分比的资源)。在一些实施例中,调度器130可以被配置为对仿真的GPU 122强制执行安全隔离策略。如本文所使用的,“隔离策略”可以指关于一个仿真GPU 122至另一个仿真GPU 122的操作的可允许的交互和/或暴露的所存储的一组需求。
KMD 114的自我仿真器132可以包括显示管理器134。显示管理器134可以与多个用户侧容器106中的每一个的帧缓冲器(未示出)耦合以选择性地将不同的帧缓冲器带到用于物理GPU 128的控制路径124。在多个容器106中的每一个运行完全图形堆栈(例如,包括x服务器和窗口管理器)的设置中,该特征可能是特别有利的。这种设置可能发生在平板计算机和电话虚拟化,或车载信息娱乐(IVI)虚拟化中。当用户希望从查看第一容器的内容切换到查看第二容器的内容时,可以通过将第二容器的帧缓冲器带到物理GPU 128的控制路径124来将第二容器带到“前台”(并且可以通过将帧缓冲器与控制路径124解耦合来将第一容器发送到“后台”)。帧缓冲器可以例如经由全模式设置或通过帧缓冲器开关和面板配件(后者通常比前者快)被带到控制路径124。
如上参考图1所述,在一些实施例中,图2的计算系统100可以包括在多个仿真GPU122之间划分的图形存储器(未示出)。图形存储器可以用于像素加载,或者例如用作写入命令缓冲器。在一些实施例中,图2的仿真GPU 122可以模拟物理GPU 128。在一些实施例中,仿真GPU 122可以支持作为由物理GPU 128支持的特征的真子集的一组特征。在一些实施例中,仿真GPU 122不模拟物理GPU 128;下面参考图4讨论这样的实施例的示例。
图3是根据各个实施例的图1的计算系统100的实施例的框图,具有与仿真GPU 122通信地耦合的虚拟机(VM)150。图1的计算系统100可以基于2型管理程序模型。如上文参考图1所讨论的,图3的计算系统100包括在主计算设备144的用户侧102上的多个容器106,每个容器106与内核侧104上的仿真GPU 122通信地耦合。每个容器106可以包括用户模式GPU驱动器(UMD)110和一个或多个与UMD 110通信的软件应用108。UMD 110又可以经由UMD-KMD接口112和设备节点116与主计算设备144的KMD 114的仿真GPU 122进行通信。如上参考图1所述,KMD 114可以通信地耦合到物理GPU 128。设备节点116可以与仿真GPU 122在控制路径118上交换控制数据,并且在渲染路径120上渲染数据。反过来,KMD 114可以与物理GPU128在控制路径124上交换控制数据并在渲染路径126上渲染数据。KMD 114可以被配置为创建一个或多个仿真GPU 122和对应的一个或多个设备节点116。在使用中,每个设备节点116可以与单个对应的用户侧容器106相关联,并且可以实现用户侧容器106和对应的仿真GPU122之间的通信,以允许用户侧容器106的一个或多个应用程序108利用物理GPU 128的图形处理资源。一个或多个仿真GPU 122可以与显示管理器134一起包括在主机计算设备144的KMD 114的自我仿真器132中。计算系统100还可以包括未被包括在主机计算设备144的软件容器中的一个或多个应用程序136和UMD 138,如上参考图2所讨论的。KMD 114可以包括调度器130和/或显示管理器134,其可以采用上面参照图2讨论的任何实施例的形式。如上参考图1所述,在一些实施例中,图2的计算系统100可以包括在多个仿真GPU 122之间划分的图形存储器(未示出)。图形存储器可以用于像素加载,或者例如用作写入命令缓冲器。在一些实施例中,图2的仿真GPU 122可以模拟物理GPU 128。在一些实施例中,仿真GPU 122可以支持作为由物理GPU 128支持的特征的真子集的一组特征。在一些实施例中,仿真GPU 122不模拟物理GPU;下面参考图4讨论这样的实施例的示例。
如上所述,图3的计算系统100可以包括VM 150。VM 150可以包括与UMD 160通信的一个或多个软件应用程序158。VM 150还可以包括具有设备节点166的KMD 164。UMD 160可以以与以上参考UMD 110和设备节点116所讨论的类似方式与设备节点166进行通信。VM150可以在管理程序170上运行,管理程序170可以通信地布置在VM 150和主机计算设备144之间。特别地,管理程序170可以通信地耦合到仿真GPU 122中的一个,并且可以促进控制数据在控制路径178上的传递,并且在从KMD 164到仿真GPU 122的渲染路径180上渲染数据。因此,图3的计算系统100可以在利用物理GPU 128的资源中(的同时或在不同时间)容纳容器化和基于VM的应用程序。该混合使用或“混合式”场景在配置计算系统100时提供了新的灵活性。
图4是根据各个实施例的图1的计算系统100的实施例的框图,其具有以“嵌套”配置布置的多个内核模式驱动器。图4的计算系统100包括被指定为物理GPU-A 128的物理GPU。图4的计算系统100还包括在用户侧102上的容器406,其与被指定为内核侧104上的仿真GPU-B 422的仿真GPU通信地耦合。图4的计算系统100还包括用户侧102上的容器446,其与被指定为在内核侧104上的仿真GPU-C 472的仿真GPU通信地耦合。在图4的计算系统100中,GPU-A,GPU-B和GPU-C可以表示不同的GPU(例如,具有不同能力的GPU和相关联的不同驱动器)。在图4的计算系统100中使用三个不同的GPU仅仅是说明性的,并且根据本文讨论的技术可以使用任何合适数量的GPU。
容器406可以包括UMD 410以及与UMD 410通信的一个或多个软件应用程序408。UMD 410可以经由UMD-KMD接口412与用于内核侧104上的仿真GPU-B 422的KMD(指定为KMD-B 414)的设备节点416进行通信。如图所示,设备节点416可以沿着应用程序408和物理GPU-A 128之间的通信通路而设置在UMD 410和仿真GPU-B 422之间。KMD-B 414与仿真GPU-B422通信,以在控制路径418上交换控制数据,并在渲染路径420上渲染数据。仿真GPU-B 422可以被包括在用于物理GPU-A 128的KMD(指定为KMD-A 114)的自我仿真器432中。
容器446可以包括UMD 460和与UMD 460通信的一个或多个软件应用程序448。UMD460可以经由UMD-KMD接口462与用于内核侧104上的仿真GPU-C 472的KMD(指定为KMD-C464)的设备节点466进行通信。如图所示,设备节点466可以沿应用程序448和物理GPU-A128之间的通信通路被设置在UMD 460和仿真GPU-C 472之间。KMD-C 464与仿真的GPU-C472进行通信,以在控制路径468上交换控制数据,并在渲染路径470上渲染数据。仿真GPU-C472可以被包括在KMD-A 114的自我仿真器432中。
如上文参考图1所讨论的,KMD-A 114可以通信地耦合到物理GPU-A 128。KMD-A114可以与物理GPU-A 128在控制路径124上交换控制数据,并且在渲染路径126上渲染数据。KMD-A 114可以被配置为创建一个或多个仿真GPU(422和472)和对应的一个或多个设备节点(416和466)。在使用中,每个设备节点(416和466)可以与单个对应的用户侧容器(分别为406和446)相关联,并且可以实现用户侧容器(分别为406和446)与对应的仿真GPU(分别为422和472)之间的通信以允许用户侧容器(分别为406和446)的一个或多个应用程序(分别为408和448)利用物理GPU-A 128的图形处理资源。如上所述,自我仿真器432可以包括显示管理器134。计算系统100还可以包括未被包括在主机设备144的软件容器中的一个或多个应用程序136和UMD 138,如上参考图2所讨论的。KMD-A 114可以包括调度器130和/或显示管理器134,其可以采用上面参照图2讨论的任何实施例的形式。如上参考图1所述,在一些实施例中,图2的计算系统100可以包括在多个仿真GPU(例如,仿真GPU 422和472)之间分区的图形存储器(未示出)。图形存储器可以用于像素加载,或者用作例如写入命令缓冲器。在一些实施例中,图2的仿真GPU 122可以模拟物理GPU 128。
在图4的计算系统100中,仿真GPU-B 422可能不模拟物理GPU-A 128。类似地,仿真GPU-C 472可能不模拟物理GPU-A 128,并且仿真GPU-B 422和仿真GPU-C 472所模拟的GPU可能不是相同的GPU。然而,通过使用所示的驱动器嵌套方法,不同的图形驱动器可以在仿真GPU 122上运行。附加转换可以应用于例如命令格式和显示属性。
在一些实施例中,上面参考图3讨论的混合式VM容器方法以及上面参考图4讨论的嵌套驱动器方法可以以任何期望的布置组合在单个计算系统中。更一般地,本文公开的实施例中的任何合适的实施例可以与本文公开的其他实施例组合以在本公开的范围内生成计算系统。
图5是根据各个实施例的用于使用户侧容器能够利用物理GPU的资源的内核侧方法500的流程图。为了便于说明,下面可以参考计算系统100讨论方法500。可以认识到,尽管方法500(和本文所述的其它方法)的操作以特定顺序布置并且每个示出一次,但是在各个实施例中,操作中的一个或多个可以被重复、省略或乱序执行。为了说明的目的,方法500的操作可以被描述为由计算系统100的内核侧104上的电路执行,但是方法500可以由任何适当配置的设备来执行。
在502,计算系统100的内核侧104上的电路可以提供KMD(例如,KMD 114)以创建多个仿真GPU(仿真GPU 122)和对应的多个设备节点(例如,设备节点116)。多个仿真GPU可以通信地耦合到物理GPU(例如,物理GPU 128)。
在504,计算系统100的内核侧104上的电路可以将每个设备节点与单个对应的用户侧容器(例如,容器106)相关联,以使得用户侧容器和对应的仿真GPU之间的通信能够利用物理GPU的资源。
图6是根据各个实施例的用于使用户侧容器能够利用物理GPU的资源的用户侧方法600的流程图。为了便于说明,下面参考计算系统100可以讨论方法600。特别地,为了说明的目的,方法600的操作可以被描述为由计算系统100的用户侧102上的电路执行,但是方法600可以由任何适当配置的设备执行。
在602处,计算系统100的用户侧102上的电路可以将用户侧容器(例如,容器106)与内核侧设备节点(例如,设备节点116)相关联。内核侧设备节点可以对应于KMD(例如,KMD114)的仿真GPU(例如,仿真GPU 122),并且仿真GPU可以通信地耦合到物理GPU(例如,物理GPU 128)。
在604,计算系统100的用户侧102上的电路可以允许用户侧容器中的一个或多个软件应用程序(例如,软件应用程序108)经由内核侧设备节点和仿真的GPU利用物理GPU的资源。
本文公开的实施例中的合适的实施例可以容易地应用于其中物理GPU128是具有单根输入/输出虚拟化(SR-IOV)能力的GPU的计算系统。可以以与SR-IOV GPU系统中的虚拟功能相同的方式来管理多个仿真GPU(例如,仿真GPU 122)。此外,本文公开的仿真设备方法可以扩展到仿真GPU之外,并且可以用于对其他子系统(例如存储设备)进行容器化。这可以弥补管理这些子系统的现有方法的一些缺陷。例如,现有的安装命名空间技术不能跨容器提供量子控制,并且扩展文件系统是一项复杂的任务。然而,生成仿真存储设备可能会解决这些缺陷,并提供一个简单的解决方案。
图7是示例性计算设备700的框图,其可适用于实践各种公开的实施例。例如,计算设备700可以用作计算系统100或作为主机计算设备144。在一些实施例中,计算设备700的组件可以跨多个物理设备外壳或位置分布,而在其他实施例中,计算设备700的组件可以被包括在单个外壳或位置中。
计算设备700可以包括多个组件,包括一个或多个处理器704和至少一个通信芯片706。在各个实施例中,处理器704可以包括处理器核心。在各个实施例中,至少一个通信芯片706也可以物理地和电耦合到处理器704。在另外的实现方式中,通信芯片706可以是处理器704的一部分。在各个实施例中,计算设备700可以包括印刷电路板(PCB)702。对于这些实施例,处理器704和通信芯片706可以设置在其上。在替代实施例中,可以在不使用PCB 702的情况下耦合各种组件。
根据其应用(例如,容器和GPU应用),计算设备700可以包括可以或可以不物理地和电耦合到PCB 702的其它组件。这些其他组件包括但不限于随机存取存储器(RAM)708、易失性存储器(例如动态RAM(DRAM))、非易失性存储器(例如,只读存储器710,也称为“ROM”,一个或多个硬盘驱动器,一个或多个固态驱动器、一个或多个紧凑型盘驱动器,和/或一个或多个数字通用盘驱动器),闪存712,输入/输出(I/O)控制器714,数字信号处理器(未示出),密码处理器(未示出),图形处理器716(例如,物理GPU 128),一个或多个天线718,触摸屏显示器720,触摸屏控制器722,其他显示器(诸如液晶显示器,阴极射线管显示器和电子墨水显示器,未示出),电池724,音频编解码器(未示出),视频编解码器(未示出)、全球定位系统(GPS)设备728,罗盘730,加速度计(未示出),陀螺仪(未示出),扬声器732,相机734和大容量存储设备(例如硬盘驱动器,固态驱动器,紧凑型盘(CD),数字通用盘(DVD))(未示出),任何其它所需的传感器(未示出)等。在各个实施例中,处理器704可以与其它组件集成在相同的管芯上以形成片上系统(SoC)。本文讨论的任何存储器设备可以包括图7所示或者参考图7在本文中讨论的存储器设备中的任何一个或多个。
在各个实施例中,易失性存储器(例如,RAM 708),非易失性存储器(例如,ROM710),闪存712和大容量存储设备可以包括指令,其响应于由一个或多个处理器704执行而使得计算设备700实践本文中参照图1-6所描述的处理的所有或选定的方面。例如,诸如易失性存储器(例如,RAM708)、非易失性存储器(例如,ROM 710)、闪存712和大容量存储设备的存储器组件中的一个或多个存储器组件可以是计算机可读介质,其包括临时和/或持久(例如,非暂时的)指令副本,其响应于由一个或多个处理器704执行,使得计算设备700实现本文所述的处理的所有或选定的方面。对于计算设备700可访问的存储器可以包括物理上是其上安装有计算设备700的设备的一部分的一个或多个存储设备和/或可以由计算设备700访问但不一定是计算设备700的一部分的一个或多个存储设备。例如,存储设备可以由计算设备700经由通信芯片706在网络上访问。在一些实施例中,指令可以体现在计算机可读的暂时性非有形介质中,诸如信号。
通信芯片706可以启用有线和/或无线通信以用于向和从计算设备700传送数据。术语“无线”及其衍生词可以用于描述电路、设备、系统、方法、技术、通信信道等等,它们可以通过使用经调制的电磁辐射通过非固体介质传送数据。该术语并不意味着相关联的设备不包含任何电线,尽管在一些实施例中它们可能不包含任何电线。通信芯片706可以实现多种无线标准或协议中的任何一种,包括但不限于IEEE02.20,通用分组无线电业务(GPRS),演进数据优化(Ev-DO),演进高速分组接入(HSPA+),演进的高速下行链路分组接入(HSDPA+),演进高速上行链路分组接入(HSUPA+),全球移动通信系统(GSM),用于GSM演进的增强数据速率(EDGE),码分多址(CDMA),时分多址(TDMA),数字增强无绳电信(DECT),蓝牙,Wi-Fi,长期演进(LTE),其衍生物,以及被指定为2G、3G、4G及其以外的任何其它无线协议。计算设备700可以包括多个通信芯片706。例如,第一通信芯片706可以专用于诸如Wi-Fi和蓝牙之类的较短范围的无线通信,并且第二通信芯片706可以专用于诸如GPS、EDGE、GPRS、CDMA、WiMAX、LTE、Ev-DO和其它之类的更长距离的无线通信。
在各种实施方式中,计算设备700可以是膝上型计算机,上网本,笔记本,超级本,可穿戴设备,智能电话,计算平板,个人数字助理,超移动PC,移动电话,台式计算机,服务器,打印机,扫描仪,监视器,机顶盒,娱乐控制单元(例如,游戏机),数码相机,便携式音乐播放器或数字录像机。在另外的实现方式中,计算设备700可以是处理数据的任何其他电子设备。
以下段落描述了各个实施例的示例。
示例1是计算系统,包括:物理图形处理单元GPU;以及内核模式驱动器电路,用于与物理GPU通信地耦合,以创建多个仿真GPU以及对应的多个设备节点,其中每个设备节点与单个对应的用户侧容器相关联,以实现用户侧容器和对应的仿真GPU之间的通信。
示例2可以包括示例1的主题,并且还可以指定每个仿真GPU模拟物理GPU。
示例3可以包括示例1-2中任一个的主题,并且还可以指定每个用户侧容器包括用户模式驱动器,用于经由对应的设备节点与对应的仿真GPU通信。
示例4可以包括示例3的主题,并且还可以指定每个用户侧容器包括与用户模式驱动器通信的一个或多个软件应用程序,并且所述一个或多个软件应用程序中的每一个利用物理GPU的资源。
示例5可以包括示例1-4中任一项的主题,并且还可以指定内核模式驱动器电路包括显示管理器以与多个用户侧容器中的每一个的帧缓冲器耦合以选择性地将不同的帧缓冲器带到物理GPU的控制路径。
示例6可以包括示例1-5中任一项的主题,并且还可以指定内核模式驱动器电路还包括调度器,并且调度器与多个仿真GPU和物理GPU进行通信。
示例7可以包括示例6的主题,并且还可以指定调度器对仿真GPU使用物理GPU强制执行服务质量策略。
示例8可以包括示例6-7中的任何一个的主题,并且还可以指定调度器对于仿真GPU强制执行安全隔离策略。
示例9可以包括示例1-8中任一个的主题,并且还可以包括在多个仿真GPU之间划分的图形存储器。
示例10可以包括示例9的主题,并且还可以指定图形存储器用于像素加载或用作写入命令缓冲器。
示例11可以包括示例1-10中任一项的主题,并且还可以指定仿真GPU支持第一组GPU特征,物理GPU支持第二组GPU特征,并且第一组是第二组的真子集。
示例12可以包括示例1-10中任一个的主题,并且还可以包括:耦合到多个仿真GPU中的一个的管理程序;以及虚拟机,其在管理程序上运行,以与多个仿真GPU中的一个进行通信。
示例13可以包括示例12的主题,并且还可以指定虚拟机包括内核模式GPU驱动器和用户模式GPU驱动器。
示例14可以包括示例1-13中任一个的主题,并且还可以指定第一仿真GPU不模拟物理GPU,第一设备节点与第一仿真GPU相关联,内核模式驱动器电路是第一内核模式驱动器电路,并且所述计算系统还包括第二内核模式驱动器电路,其布置成使得所述第二内核模式驱动器电路在通信通路中被设置在用户模式驱动器电路和所述第一内核模式驱动器电路之间。
示例15可以包括示例14的主题,并且还可以包括第一用户侧容器,其包括与第二内核模式驱动器电路通信的用户模式驱动器。
示例16是其中有指令的一个或多个计算机可读介质,响应于计算系统的一个或多个处理设备的执行,指令使计算系统:提供内核模式驱动器以创建多个仿真图形处理单元GPU,以及对应的多个设备节点,其中所述多个仿真GPU通信地耦合到物理GPU;以及将每个设备节点与单个对应的用户侧容器相关联,以使得在用户侧容器与对应的仿真GPU之间的通信能够利用物理GPU的资源。
示例17可以包括示例16的主题,并且还可以指定每个仿真GPU模拟物理GPU。
示例18可以包括示例16-17中任一项的主题,并且还可以指定每个用户侧容器包括用户模式驱动器,用于经由对应的设备节点与对应的仿真GPU进行通信。
示例19可以包括示例18的主题,并且还可以指定每个用户侧容器包括与用户模式驱动器通信的一个或多个软件应用程序,并且一个或多个软件应用程序中的每个软件应用程序利用物理GPU的资源。
示例20可以包括示例16-19中任一个的主题,并且还可以指定,在由计算系统的一个或多个处理设备执行时,指令进一步使得计算系统:与所述多个用户侧容器中的每一个的帧缓冲器耦合以选择性地将不同的帧缓冲器带到物理GPU的控制路径。
示例21可以包括示例16-20中任一个的主题,并且还可以指定在由计算系统的一个或多个处理设备执行时指令进一步使得计算系统:提供调度器以与多个仿真GPU和物理GPU通信。
示例22可以包括示例21的主题,并且还可以指定调度器对仿真GPU使用物理GPU强制执行服务质量策略。
示例23可以包括示例21-22中任一项的主题,并且还可以指定调度器对于仿真GPU强制执行安全隔离策略。
示例24可以包括示例16-23中任一个的主题,并且还可以指定,在由计算系统的一个或多个处理设备执行时,指令进一步使得该计算系统:在多个仿真GPU之间划分图形存储器。
示例25可以包括示例24的主题,其中图形存储器将用于像素加载或用作写入命令缓冲器。
示例26可以包括示例16-25中任一个的主题,并且还可以指定,仿真GPU支持第一组GPU特征,物理GPU支持第二组GPU特征,并且第一组是第二组的真子集。
示例27可以包括示例16-26中任一个的主题,并且还可以指定,指令在由计算系统的一个或多个处理设备执行时进一步使得计算系统:创建通信地耦合到物理GPU的第二仿真GPU;以及将第二仿真GPU与虚拟机相关联,以实现虚拟机与对应的仿真GPU之间的通信。
示例28可以包括示例27的主题,并且还可以指定虚拟机包括内核模式GPU驱动器和用户模式GPU驱动器。
示例29可以包括示例16-28中任一个的主题,并且还可以指定第一仿真GPU不模拟物理GPU,第一仿真GPU与第一设备节点相关联,内核模式驱动器是第一内核模式驱动器,并且所述指令进一步在由所述计算系统的所述一个或多个处理设备执行时使所述计算系统:提供第二内核模式驱动器,所述第二内核模式驱动器被布置为使得所述第二内核模式驱动器在通信通路中被设置在用户侧容器中的用户模式驱动器和第一内核模式驱动器之间。
示例30可以包括示例29的主题,并且还可以指定第一用户侧容器包括用于与第二内核模式驱动器通信的用户模式驱动器。
示例31是其中有指令的一种或多种计算机可读介质,响应于由计算系统的一个或多个处理设备的执行,所述指令使计算系统:将用户侧容器与内核侧设备节点相关联,其中内核侧设备节点对应于内核模式驱动器的仿真图形处理单元GPU,并且仿真GPU通信地耦合到物理GPU;并且允许用户侧容器中的一个或多个软件应用程序经由内核侧设备节点和仿真GPU利用物理GPU的资源。
示例32可以包括示例31的主题,并且还可以指定每个仿真GPU模拟物理GPU。
示例33可以包括示例31-32中任一个的主题,并且还可以指定内核模式驱动器包括显示管理器以与用户侧容器的帧缓冲器耦合以选择性地将帧缓冲器带到物理GPU的控制路径。
示例34可以包括示例31-33中任一个的主题,并且还可以指定内核模式驱动器包括调度器,并且调度器与仿真的GPU和物理GPU进行通信。
示例35可以包括示例34的主题,并且还可以指定调度器对由仿真GPU使用物理GPU强制执行服务质量策略。
示例36可以包括示例34-35中任一项的主题,并且还可以指定调度器对于仿真GPU强制执行安全隔离策略。
示例37可以包括示例34-36中任一项的主题,并且还可以指定仿真GPU支持第一组GPU特征,物理GPU支持第二组GPU特征,并且第一组是第二组的真子集。
示例38可以包括示例31-37中任一个的主题,并且还可以指定:仿真GPU不模拟物理GPU;内核模式驱动器是第一内核模式驱动器;作为允许用户侧容器中的一个或多个软件应用程序经由内核侧设备节点和仿真GPU来利用物理GPU的资源的一部分,允许用户侧容器中的一个或多个软件应用程序经由内核侧设备节点、仿真GPU和第二内核模式驱动器利用物理GPU的资源;并且设备节点在通信通路中被设置在第二内核模式驱动器和仿真GPU之间。
示例39可以包括示例38的主题,并且还可以指定用户侧容器包括用于与第二内核模式驱动器通信的用户模式驱动器。
示例40是使多个用户侧容器能够利用物理图形处理单元GPU的资源的方法,其包括:提供内核模式驱动器以创建多个仿真GPU和对应的多个设备节点,其中多个仿真GPU通信地耦合到物理GPU;以及将每个设备节点与单个对应的用户侧容器相关联,以使得用户侧容器和对应的仿真GPU之间的通信能够利用物理GPU的资源。
示例41可以包括示例40的主题,并且还可以指定每个仿真GPU模拟物理GPU。
示例42可以包括示例40-41中任一项的主题,并且还可以指定每个用户侧容器包括用户模式驱动器,用于经由对应的设备节点与对应的仿真GPU进行通信。
示例43可以包括示例42的主题,并且还可以指定每个用户侧容器包括与用户模式驱动器通信的一个或多个软件应用程序,并且一个或多个软件应用程序中的每一个利用物理GPU的资源。
示例44可以包括示例40-43中任一个的主题,并且还可以包括与多个用户侧容器中的每一个的帧缓冲器耦合,以选择性地将不同的帧缓冲器带到物理GPU的控制路径。
示例45可以包括示例40-44中任一个的主题,并且还可以包括提供调度器以与多个仿真GPU和物理GPU进行通信。
示例46可以包括示例45的主题,并且还可以指定调度器对仿真GPU使用物理GPU强制执行服务质量策略。
示例47可以包括示例45-46中任一项的主题,并且还可以指定调度器对于仿真GPU强制执行安全隔离策略。
示例48可以包括示例40-47中任一项的主题,并且还可以包括在多个仿真GPU中对图形存储器进行分区。
示例49可以包括示例48的主题,并且还可以指定图形存储器用于像素加载或用作写入命令缓冲器。
示例50可以包括示例40-49中任一个的主题,并且还可以指定仿真GPU支持第一组GPU特征,物理GPU支持第二组GPU特征,并且第一组是第二组的真子集。
示例51可以包括示例40-50中任一项的主题,并且还可以包括:创建通信地耦合到物理GPU的第二仿真GPU;以及将第二仿真GPU与虚拟机相关联,以实现虚拟机与对应的仿真GPU之间的通信。
示例52可以包括示例51的主题,并且还可以指定虚拟机包括内核模式GPU驱动器和用户模式GPU驱动器。
示例53可以包括示例40-52中任一个的主题,并且还可以指定第一仿真GPU不模拟物理GPU,第一仿真GPU与第一设备节点相关联,内核模式驱动器是第一内核模式驱动器,并且该方法还包括:提供第二内核模式驱动器,其布置成使得第二内核模式驱动器在通信通路中被设置在用户侧容器中的用户模式驱动器和第一内核模式驱动器之间。
示例54可以包括示例53的主题,并且还可以指定第一用户侧容器包括用于与第二内核模式驱动器通信的用户模式驱动器。
示例55是一种使用户侧容器能够利用物理图形处理单元GPU的资源的方法,包括:使用户侧容器与内核侧设备节点相关联,其中,内核侧设备节点对应于内核模式驱动器的仿真GPU,并且仿真GPU通信地耦合到物理GPU;并且允许用户侧容器中的一个或多个软件应用程序经由内核侧设备节点和仿真GPU利用物理GPU的资源。
示例56可以包括示例55的主题,其中每个仿真GPU模拟物理GPU。
示例57可以包括示例55-56中任一个的主题,并且还可以指定内核模式驱动器包括显示管理器以与用户侧容器的帧缓冲器耦合以选择性地将帧缓冲器带到物理GPU的控制路径。
示例58可以包括示例55-57中任一个的主题,并且还可以指定内核模式驱动器包括调度器,并且调度器将与仿真GPU和物理GPU通信。
示例59可以包括示例58的主题,并且还可以指定调度器对于仿真GPU使用物理GPU强制执行服务质量策略。
示例60可以包括示例58-59中任一个的主题,并且还可以指定调度器对于仿真GPU强制执行安全隔离策略。
示例61可以包括示例58-60中任一个的主题,并且还可以指定仿真GPU支持第一组GPU特征,物理GPU支持第二组GPU特征,并且第一组是第二组的真子集。
示例62可以包括示例55-61中任一个的主题,并且还可以指定:仿真GPU不模拟物理GPU;内核模式驱动器是第一内核模式驱动器;作为允许用户侧容器中的一个或多个软件应用程序经由内核侧设备节点和仿真GPU利用物理GPU的资源的一部分,允许用户侧容器中的一个或多个软件应用程序经由内核侧设备节点、仿真GPU和第二内核模式驱动器来利用物理GPU的资源;并且第二内核模式驱动器在通信通路中被设置在用户模式驱动器和第一内核模式驱动器之间。
示例63可以包括示例62的主题,其中用户侧容器包括用于与第二内核模式驱动器通信的用户模式驱动器。
示例64是其上具有指令的一个或多个计算机可读介质,响应于计算系统的一个或多个处理设备的执行,所述指令使计算系统执行示例40-63中任一个的方法。
示例65是包括用于执行示例40-63中任一个的方法的单元的装置。

Claims (25)

1.一种用于使多个用户侧容器能够利用物理图形处理单元GPU的资源的方法,包括:
提供内核模式驱动器以创建多个仿真GPU以及对应的多个设备节点,其中所述多个仿真GPU通信地耦合到物理GPU;以及
使每个设备节点与单个对应的用户侧容器相关联,以使得用户侧容器和对应的仿真GPU之间的通信能够利用所述物理GPU的资源。
2.根据权利要求1所述的方法,其中所述仿真GPU中的每个仿真GPU模拟所述物理GPU。
3.根据权利要求1所述的方法,其中每个用户侧容器包括用户模式驱动器,以经由对应的设备节点与所述对应的仿真GPU进行通信。
4.根据权利要求3所述的方法,其中每个用户侧容器包括与所述用户模式驱动器通信的一个或多个软件应用程序,并且所述一个或多个软件应用程序中的每个软件应用程序利用所述物理GPU的资源。
5.根据权利要求1所述的方法,还包括:
与所述多个用户侧容器中的每个用户侧容器的帧缓冲器耦合以选择性地将所述帧缓冲器中的不同的帧缓冲器带到所述物理GPU的控制路径。
6.根据权利要求1-5中任一项所述的方法,还包括:
提供调度器,用于与所述多个仿真GPU和所述物理GPU进行通信。
7.根据权利要求6所述的方法,其中,所述调度器对于所述仿真GPU对所述物理GPU的使用强制执行服务质量策略。
8.根据权利要求6所述的方法,其中所述调度器对于所述仿真GPU强制执行安全隔离策略。
9.根据权利要求1所述的方法,还包括:
在所述多个仿真GPU之间划分图形存储器。
10.根据权利要求9所述的方法,其中所述图形存储器用于像素加载或用作写入命令缓冲器。
11.根据权利要求1所述的方法,其中仿真GPU支持第一组GPU特征,所述物理GPU支持第二组GPU特征,并且所述第一组GPU特征是所述第二组GPU特征的真子集。
12.根据权利要求1所述的方法,还包括:
创建通信地耦合到所述物理GPU的第二仿真GPU;以及
使所述第二仿真GPU与虚拟机相关联,以实现所述虚拟机与所述对应的仿真GPU之间的通信。
13.根据权利要求12所述的方法,其中所述虚拟机包括内核模式GPU驱动器和用户模式GPU驱动器。
14.根据权利要求1所述的方法,其中第一仿真GPU不模拟所述物理GPU,所述第一仿真GPU与第一设备节点相关联,所述内核模式驱动器是第一内核模式驱动器,并且其中所述方法还包括:
提供第二内核模式驱动器,其布置成使得所述第二内核模式驱动器在通信通路中被设置在用户侧容器中的用户模式驱动器和所述第一内核模式驱动器之间。
15.根据权利要求14所述的方法,其中,第一用户侧容器包括用于与所述第二内核模式驱动器通信的用户模式驱动器。
16.一种使用户侧容器能够利用物理图形处理单元GPU的资源的方法,包括:
使用户侧容器与内核侧设备节点相关联,其中所述内核侧设备节点对应于内核模式驱动器的仿真GPU并且所述仿真GPU通信地耦合到物理GPU;以及
允许所述用户侧容器中的一个或多个软件应用程序经由所述内核侧设备节点和所述仿真GPU来利用所述物理GPU的资源。
17.根据权利要求16所述的方法,其中所述仿真GPU中的每个仿真GPU模拟所述物理GPU。
18.根据权利要求16所述的方法,其中,所述内核模式驱动器包括与所述用户侧容器的帧缓冲器耦合的显示管理器,用于选择性地将所述帧缓冲器带到所述物理GPU的控制路径。
19.根据权利要求16-18中任一项所述的方法,其中所述内核模式驱动器包括调度器,并且所述调度器与所述仿真GPU和所述物理GPU进行通信。
20.根据权利要求19所述的方法,其中,所述调度器对于所述仿真GPU对所述物理GPU的使用强制执行服务质量策略。
21.根据权利要求19所述的方法,其中所述调度器对于所述仿真GPU强制执行安全隔离策略。
22.根据权利要求19所述的方法,其中所述仿真GPU支持第一组GPU特征,所述物理GPU支持第二组GPU特征,并且所述第一组GPU特征是所述第二组GPU特征的真子集。
23.根据权利要求16所述的方法,其中:
所述仿真GPU不模拟所述物理GPU;
所述内核模式驱动器是第一内核模式驱动器;
作为允许所述用户侧容器中的一个或多个软件应用程序经由所述内核侧设备节点和所述仿真GPU来对所述物理GPU的资源进行利用的一部分,允许所述用户侧容器中的一个或多个软件应用程序经由所述内核侧设备节点、所述仿真GPU、以及第二内核模式驱动器来利用所述物理GPU的资源;并且
所述第二内核模式驱动器在通信通路中被设置在用户模式驱动器和所述第一内核模式驱动器之间。
24.一个或多个计算机可读介质,其中具有指令,所述指令响应于由计算系统的一个或多个处理设备执行,使所述计算系统执行根据权利要求1-23中任一项所述的方法。
25.一种装置,包括用于执行根据权利要求1-23中任一项所述的方法的单元。
CN201580079299.7A 2015-05-29 2015-05-29 对图形处理单元资源的容器访问 Active CN107533469B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210155770.8A CN114546594A (zh) 2015-05-29 2015-05-29 对图形处理单元资源的容器访问

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2015/080213 WO2016191908A1 (en) 2015-05-29 2015-05-29 Container access to graphics processing unit resources

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202210155770.8A Division CN114546594A (zh) 2015-05-29 2015-05-29 对图形处理单元资源的容器访问

Publications (2)

Publication Number Publication Date
CN107533469A true CN107533469A (zh) 2018-01-02
CN107533469B CN107533469B (zh) 2022-03-29

Family

ID=57439808

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201580079299.7A Active CN107533469B (zh) 2015-05-29 2015-05-29 对图形处理单元资源的容器访问
CN202210155770.8A Pending CN114546594A (zh) 2015-05-29 2015-05-29 对图形处理单元资源的容器访问

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202210155770.8A Pending CN114546594A (zh) 2015-05-29 2015-05-29 对图形处理单元资源的容器访问

Country Status (4)

Country Link
US (2) US10580105B2 (zh)
EP (2) EP4006727A1 (zh)
CN (2) CN107533469B (zh)
WO (1) WO2016191908A1 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108459900A (zh) * 2018-01-19 2018-08-28 西安电子科技大学 基于云的抗辐射加固协同设计-仿真系统及方法
CN109491776A (zh) * 2018-11-06 2019-03-19 北京百度网讯科技有限公司 任务编排方法和系统
CN109743453A (zh) * 2018-12-29 2019-05-10 出门问问信息科技有限公司 一种分屏显示方法及装置
CN109753134A (zh) * 2018-12-24 2019-05-14 四川大学 一种基于全局解耦的gpu内部能耗控制系统及方法
CN109949201A (zh) * 2019-01-29 2019-06-28 福建多多云科技有限公司 一种Linux容器的图像渲染加速方法
CN110532064A (zh) * 2019-08-27 2019-12-03 北京百度网讯科技有限公司 提供计算资源的方法、装置、设备和存储介质
CN112559142A (zh) * 2019-09-26 2021-03-26 贵州白山云科技股份有限公司 容器的控制方法、装置、边缘计算系统、介质及设备
CN113296926A (zh) * 2020-05-29 2021-08-24 阿里巴巴集团控股有限公司 一种资源分配方法、计算设备及存储介质

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4006727A1 (en) 2015-05-29 2022-06-01 INTEL Corporation Container access to graphics processing unit resources
US10769312B2 (en) * 2015-10-06 2020-09-08 Carnegie Mellon University Method and apparatus for trusted display on untrusted computing platforms to secure applications
CN107797845B (zh) * 2016-09-07 2021-06-15 华为技术有限公司 用于访问容器的方法和装置
BR112020018990A8 (pt) * 2018-03-23 2023-02-28 Carolina Cloud Exchange Inc Quantificação do uso de recursos informáticos díspares numa unidade única de medida
US10956226B2 (en) * 2018-07-19 2021-03-23 Futurewei Technologies, Inc. Basic runtime environment
CN112292665A (zh) * 2018-09-27 2021-01-29 英特尔公司 具有后期同步的图形虚拟化的装置和方法
CN109712060B (zh) * 2018-12-04 2022-12-23 成都雨云科技有限公司 一种基于gpu容器技术的云桌面显卡共享方法及系统
US10949216B2 (en) * 2019-06-17 2021-03-16 Red Hat, Inc. Support for third-party kernel modules on host operating systems
US20210165673A1 (en) * 2019-12-02 2021-06-03 Microsoft Technology Licensing, Llc Enabling shared graphics and compute hardware acceleration in a virtual environment
CN112162856A (zh) * 2020-09-23 2021-01-01 武汉联影医疗科技有限公司 Gpu虚拟资源的分配方法、装置、计算机设备和存储介质
US20230244380A1 (en) * 2020-09-28 2023-08-03 Cambricon (Xi'an) Semiconductor Co., Ltd. Device and method for implementing live migration
CN112527513B (zh) * 2021-02-09 2021-05-28 南京飞灵智能科技有限公司 多个gpu动态分配方法及系统
CN113296950B (zh) * 2021-05-28 2022-08-19 重庆紫光华山智安科技有限公司 处理方法、装置、电子设备及可读存储介质
CN116578413B (zh) * 2023-04-26 2024-04-12 中国人民解放军92942部队 一种基于云+端架构的信号级仿真模型云化方法
CN116719605A (zh) * 2023-06-09 2023-09-08 摩尔线程智能科技(北京)有限责任公司 一种gpu负载部署方法及云计算平台、电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1797345A (zh) * 2004-12-30 2006-07-05 微软公司 用于虚拟化图形子系统的系统和方法
US20100312995A1 (en) * 2009-06-09 2010-12-09 Zillians Incorporated Virtual world simulation systems and methods utilizing parallel coprocessors, and computer program products thereof
US8341624B1 (en) * 2006-09-28 2012-12-25 Teradici Corporation Scheduling a virtual machine resource based on quality prediction of encoded transmission of images generated by the virtual machine
CN103034524A (zh) * 2011-10-10 2013-04-10 辉达公司 半虚拟化的虚拟gpu
CN103631634A (zh) * 2012-08-24 2014-03-12 中国电信股份有限公司 实现图形处理器虚拟化的方法与装置
US20140337835A1 (en) * 2013-05-10 2014-11-13 Vmware, Inc. Efficient sharing of graphics resources by multiple virtual machines

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8005978B1 (en) * 2002-03-01 2011-08-23 Cisco Technology, Inc. Method to optimize the load balancing of parallel coprocessors
CN101978753B (zh) * 2008-03-20 2013-12-25 爱立信电话股份有限公司 具有最小控制平面信令的半分布式基于服务质量的调度协议
US20100262722A1 (en) * 2009-04-10 2010-10-14 Christophe Vauthier Dynamic Assignment of Graphics Processing Unit to a Virtual Machine
US8538741B2 (en) * 2009-12-15 2013-09-17 Ati Technologies Ulc Apparatus and method for partitioning a display surface into a plurality of virtual display areas
US20130093776A1 (en) * 2011-10-14 2013-04-18 Microsoft Corporation Delivering a Single End User Experience to a Client from Multiple Servers
US9680894B2 (en) * 2011-10-14 2017-06-13 Bally Gaming, Inc. Multiple virtual machine memory usage reduction system and method
US9099051B2 (en) * 2012-03-02 2015-08-04 Ati Technologies Ulc GPU display abstraction and emulation in a virtualization system
US8775762B2 (en) * 2012-05-07 2014-07-08 Advanced Micro Devices, Inc. Method and apparatus for batching memory requests
GB2525778B (en) 2013-02-28 2020-04-15 Intel Corp Context aware power management for graphics devices
GB2514551A (en) * 2013-05-28 2014-12-03 Ibm Fluid-cooled electronic circuit device with cooling fluid conduits having optical transmission medium
US20140373005A1 (en) * 2013-06-12 2014-12-18 Nvidia Corporation Requirement based exposure of engines of a graphics processing unit (gpu) to a virtual machine (vm) consolidated on a computing platform
US9448831B2 (en) 2013-07-01 2016-09-20 Intel Corporation Efficient graphics virtualization with address ballooning
WO2015081308A2 (en) * 2013-11-26 2015-06-04 Dynavisor, Inc. Dynamic i/o virtualization
CN104360896B (zh) 2014-12-04 2017-12-15 北京航空航天大学 一种基于gpu集群的并行流体仿真加速方法
EP4006727A1 (en) 2015-05-29 2022-06-01 INTEL Corporation Container access to graphics processing unit resources

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1797345A (zh) * 2004-12-30 2006-07-05 微软公司 用于虚拟化图形子系统的系统和方法
US8341624B1 (en) * 2006-09-28 2012-12-25 Teradici Corporation Scheduling a virtual machine resource based on quality prediction of encoded transmission of images generated by the virtual machine
US20100312995A1 (en) * 2009-06-09 2010-12-09 Zillians Incorporated Virtual world simulation systems and methods utilizing parallel coprocessors, and computer program products thereof
CN103034524A (zh) * 2011-10-10 2013-04-10 辉达公司 半虚拟化的虚拟gpu
CN103631634A (zh) * 2012-08-24 2014-03-12 中国电信股份有限公司 实现图形处理器虚拟化的方法与装置
US20140337835A1 (en) * 2013-05-10 2014-11-13 Vmware, Inc. Efficient sharing of graphics resources by multiple virtual machines

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108459900A (zh) * 2018-01-19 2018-08-28 西安电子科技大学 基于云的抗辐射加固协同设计-仿真系统及方法
CN109491776A (zh) * 2018-11-06 2019-03-19 北京百度网讯科技有限公司 任务编排方法和系统
CN109753134A (zh) * 2018-12-24 2019-05-14 四川大学 一种基于全局解耦的gpu内部能耗控制系统及方法
CN109753134B (zh) * 2018-12-24 2022-04-15 四川大学 一种基于全局解耦的gpu内部能耗控制系统及方法
CN109743453A (zh) * 2018-12-29 2019-05-10 出门问问信息科技有限公司 一种分屏显示方法及装置
CN109949201A (zh) * 2019-01-29 2019-06-28 福建多多云科技有限公司 一种Linux容器的图像渲染加速方法
CN110532064A (zh) * 2019-08-27 2019-12-03 北京百度网讯科技有限公司 提供计算资源的方法、装置、设备和存储介质
CN112559142A (zh) * 2019-09-26 2021-03-26 贵州白山云科技股份有限公司 容器的控制方法、装置、边缘计算系统、介质及设备
CN112559142B (zh) * 2019-09-26 2023-12-19 贵州白山云科技股份有限公司 容器的控制方法、装置、边缘计算系统、介质及设备
CN113296926A (zh) * 2020-05-29 2021-08-24 阿里巴巴集团控股有限公司 一种资源分配方法、计算设备及存储介质
CN113296926B (zh) * 2020-05-29 2022-06-21 阿里巴巴集团控股有限公司 一种资源分配方法、计算设备及存储介质

Also Published As

Publication number Publication date
EP4006727A1 (en) 2022-06-01
EP3304292B1 (en) 2022-08-31
CN107533469B (zh) 2022-03-29
WO2016191908A1 (en) 2016-12-08
EP3304292A1 (en) 2018-04-11
US20200294183A1 (en) 2020-09-17
CN114546594A (zh) 2022-05-27
US11386519B2 (en) 2022-07-12
US20180293700A1 (en) 2018-10-11
US10580105B2 (en) 2020-03-03
EP3304292A4 (en) 2019-02-20

Similar Documents

Publication Publication Date Title
CN107533469A (zh) 对图形处理单元资源的容器访问
CN103282881B (zh) 通过虚拟化直接共享智能设备
CN109656843A (zh) 数据存储装置及桥接装置
CA2780567C (en) Methods and systems for executing software applications using hardware abstraction
CN104205050B (zh) 访问远程机器上的设备
CN106953893A (zh) 云存储系统间的数据迁移
CN103034524A (zh) 半虚拟化的虚拟gpu
CN109739618A (zh) 虚拟机迁移方法及装置
CN104040494A (zh) 准虚拟化的域着色器、外壳着色器和几何着色器
US20150195213A1 (en) Request distribution method and information processing apparatus
CN116360928B (zh) 一种安卓容器显示系统的优化方法及装置、电子设备
CN103440111B (zh) 虚拟机磁盘空间的扩展方法、宿主机和平台
Van't Hof et al. Androne: Virtual drone computing in the cloud
US20160110209A1 (en) Apparatus and method for performing multi-core emulation based on multi-threading
CN107250980A (zh) 具有图形和系统存储器冲突检查的计算方法和设备
US10249062B2 (en) System and method for image view binding optimization
US8402229B1 (en) System and method for enabling interoperability between application programming interfaces
KR20220061959A (ko) 선언형 그래픽 서버를 사용한 이미지들의 렌더링
WO2023025233A1 (zh) 动画播放程序包编写方法、装置、电子设备及存储介质
US20100085367A1 (en) Graphics processing method and apparatus implementing window system
US20150269767A1 (en) Configuring resources used by a graphics processing unit
US8539516B1 (en) System and method for enabling interoperability between application programming interfaces
CN109656674A (zh) 一种计算机设备、虚拟化芯片及数据传输方法
CN113296876B (zh) 虚拟机的设备直通方法、设备及存储介质
CN114253655A (zh) 基于mips64指令集的安全容器隔离方法和装置

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