一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

对图形处理单元资源的容器访问的制作方法

2022-06-01 17:08:31 来源:中国专利 TAG:

对图形处理单元资源的容器访问
1.本技术是2015年5月29日提交的申请号为201580079299.7的同名专利申请的分案申请。
技术领域
2.本公开的实施例一般涉及计算系统领域,更具体地涉及对图形处理单元资源的容器访问。


背景技术:

3.容器已被用于访问非图形处理单元(gpu)计算资源,例如中央处理单元(cpu)资源、存储器和存储设备以及网络功能。然而,在gpu重负荷应用程序中使用容器所涉及的独特问题使gpu容器化成为一个开放的挑战。
附图说明
4.通过以下结合附图的详细描述将容易理解实施例。为了便于该描述,相似的附图标记表示相似的结构元件。在附图的各图中通过示例的方式而非限制的方式示出实施例。
5.图1是根据各个实施例的包括与仿真gpu通信地耦合的容器的计算系统的框图。
6.图2是根据各个实施例的具有显示管理器和调度器的图1的计算系统的实施例的框图。
7.图3是根据各个实施例的具有与仿真gpu通信地耦合的虚拟机的图1的计算系统的实施例的框图。
8.图4是根据各个实施例的具有多个内核模式驱动器的图1的计算系统的实施例的框图。
9.图5是根据各个实施例的用于使用户侧容器能够利用物理gpu的资源的内核侧方法的流程图。
10.图6是根据各个实施例的用于使用户侧容器能够利用物理gpu的资源的用户侧方法的流程图。
11.图7是可用于实践本文描述的各个实施例的示例性计算设备的框图。
具体实施方式
12.本文公开了用于对图形处理单元(gpu)资源的容器访问的系统和方法。例如,在一些实施例中,用于使多个用户侧容器能够利用物理gpu的资源的方法可以包括提供内核模式驱动器以创建多个仿真gpu和对应的设备节点,其中所述多个仿真gpu通信地耦合到物理gpu;以及将每个设备节点与单个对应的用户侧容器相关联,以使得用户侧容器和对应的仿真gpu之间的通信能够利用物理gpu的资源。
13.本文公开的各个实施例可以通过驱动器自仿真来提供容器中的gpu加速。容器(也称为“软件容器”)在计算系统中提供操作系统级虚拟化。使用容器而不是传统虚拟机(vm)
的系统可能展现出更高的密度,更快的供给和更好的性能,使容器在某些应用中成为虚拟化技术的强大的轻量级替代物。
14.如上所述,容器已经用于访问非gpu计算资源,例如中央处理单元(cpu)资源、存储器和存储设备以及网络功能。这些子系统由内核管理,通常具有良好抽象的资源和暴露给计算系统的用户侧的简单接口。特别地,不同的命名空间可以给每个用户侧进程一个分开的系统视图,该分开的系统视图与其他进程隔离,并且包括分开的挂载点、进程标识符(pid)、进程间通信(ipc)、网络资源和时间资源等。结果是,命名空间使得能够对于单独用户实现这些非gpu计算资源的容器化。linux内核中的“cgroup”功能限制、解释和隔离多个进程的资源使用,并且可以进一步在不同的命名空间中实施资源限制、优先级排序、解释和控制。因此,多个容器可以良好地隔离。
15.然而,在gpu重负荷应用中使用容器所涉及的独特问题一直是一个开放的挑战。特别地,gpu的内核模式驱动器(kmd)和用户模式驱动器(umd)之间的复杂接口意味着图形子系统比上述子系统复杂得多。接口和图形子系统通常是供应商特定的,因此暴露给umd的资源被较差地抽象,需要按量级比上面讨论的子系统指定更多的选项。例如,linux中的典型图形驱动器可能包括大约70个常用的直接渲染管理器(drm)输入/输出控制(ioctl)选项和大约40个供应商特定的ioctl选项。每个ioctl导致图形驱动器中的复杂代码路径,其最终转换成gpu中的数千个寄存器。对于这样大的接口和设备属性集创建命名空间或使用cgroup需要非常详细的、侵入性的和设备特定的一组修改,几乎触及到kmd内的每个代码路径/数据结构。这是一个巨大的工程量,可能会带来几乎无法管理的维护负担。此外,将一个gpu的解决方案移植到另一个gpu的能力是有限的或不存在。
16.这些挑战已经限制或排除在图形密集型场景中使用容器。这些场景可能包括使用多个人物和客户端设备(例如个人计算机,电话,平板计算机);运行gpu密集型计算机辅助绘图(cad)软件的远程桌面或工作站;提供媒体转码、视频会议、云机顶盒或其他软件即服务的媒体输送云应用;云游戏;视觉理解(例如面部识别,深度学习等)。这些场景中的一些场景可能需要完全的gpu能力(例如,三维图形,视频和gpu计算),并且这些场景中的其他场景可能仅需要gpu的一部分能力。通常,在这些场景中使用基于管理程序(hypervisor)的虚拟化(例如,在虚拟机中运行整个操作系统)。
17.最多,只通过将物理gpu专门分配于单个容器才尝试“容器化”,而不需要多个容器共享该gpu的资源的能力。一些以前的方法已经尝试在多个容器中运行应用程序,并且使这些应用程序访问gpu资源,但是不同容器的应用程序没有彼此隔离,从而带来重大的安全风险。
18.本文公开的一些实施例以安全、隔离的方式提供容器图形,从而实现良好的服务质量(qos)控制。特别地,本文公开了一种驱动器自仿真方法,其中可以生成多个仿真gpu实例。当用户侧容器使用时,每个gpu实例可以被安全隔离和专用。这可能会在容器中实现gpu加速,同时具有安全性和性能方面的健壮隔离。使用本文公开的方法,消除了将具有复杂接口的umd容器化到kmd的难度;相反,仿真gpu可以被容器化并使用已知技术与物理gpu进行通信。
19.在一些实施例中,计算系统中的仿真gpu可以由kmd产生。仿真gpu可以具有与计算系统中的物理gpu相同的特征。每个仿真gpu可以与唯一的设备节点相关联,所述唯一的设
备节点由用户侧的单个容器排他地拥有。相同的驱动器代码可以在仿真gpu和物理gpu之上运行(例如,具有基本相同的低级输入/输出钩)。可以在仿真gpu级别(例如,在自我仿真器中)集中强制执行安全隔离。每个容器只能访问其自己的仿真gpu,因此可以实现严格的隔离。当仿真gpu向调度器发布gpu命令时,可以强制执行性能隔离,然后所述调度器可以将现有的qos策略强制执行技术扩展到容器中的应用程序。这些和其他实施例中的各种实施例在此详细讨论。
20.在下面的详细描述中,参考形成其一部分的附图,其中相似的附图标记始终表示相似的部分,并且其中通过图示说明的方式示出了可以实践的实施例。应当理解,在不脱离本公开的范围的情况下,可以使用其他实施例并且可以进行结构或逻辑改变。
21.各种操作可以以对于理解所要求保护的主题最有帮助的方式依次描述为多个离散动作或操作。然而,描述的顺序不应被解释为意味着这些操作必然是依赖于顺序的。特别地,这些操作可能不按照呈现的顺序执行。所描述的操作可以以与所描述的实施例不同的顺序执行。在附加实施例中可以执行各种附加操作或可以省略所描述的操作。
22.为了本公开的目的,术语“或”用作包含术语,表示与该术语相耦合的组分中的至少一个。例如,短语“a或b”是指(a),(b)或(a和b);短语“a,b或c”是指(a),(b),(c),(a和b),(a和c),(b和c)或(a,b和c)。
23.描述可以使用短语“在一个实施例中”或“在实施例中”,其可以各自指代相同或不同的实施例中的一个或多个。此外,关于本公开的实施例使用的术语“包括”,“包含”,“具有”等等是同义词。
24.如本文所使用的,术语“电路”可以指执行一个或多个软件或固件程序、组合逻辑电路或提供所述功能的其它合适的硬件组件的专用集成电路(asic)、电子电路、处理器(共享,专用或组)或存储器(共享,专用或组),是其一部分或包括这些。如本文所使用的,术语“驱动器”和“驱动器电路”可以包括被编程或以其他方式构造为操作和/或控制特定硬件设备(例如,图形处理单元)的电路。
25.图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可以通信地耦合到物理gpu 128。设备节点116可以与仿真gpu 122在控制路径118上交换控制数据(例如,模式设置,分辨率,高速缓存模式等),并且在渲染路径120上(例如,通过包含待由gpu解析的gpu命令的命令缓冲器)来渲染数据。反过来,kmd 114可以在控制路径124上交换控制数据,并且借助物理gpu 128在渲染路径126上渲染数据。在一些实施例中,控制路径124和呈现路径126可以双工并共享公共路径。
26.可以使用许多已知技术中的任何一种来生成仿真gpu 122。例如,已经使用如xengt的方法来通过在linux图形驱动器中生成完全仿真的gpu设备模型来实现vm中的gpu加速。该gpu设备模型可以用于提供仿真gpu 122,并且可以容易地移植到任何操作系统。使用xengt方法,仿真gpu 122的操作可能被期望接近针对典型的图形工作负荷的本地性能,与针对典型媒体工作负荷的本地性能几乎相同。另外,通过使用容器而不是vm来避免管理
程序使用期间产生的陷阱开销(因为容器可以从驱动器代码直接调用至仿真gpu设备模型中)。尽管上面讨论了xengt,但是可以使用任何合适的现有gpu设备模型来生成仿真gpu,因此本文不再进一步讨论用于生成仿真gpu的技术。
27.kmd 114可以被配置为创建一个或多个仿真gpu 122和对应的一个或多个设备节点116。在使用中,每个设备节点116可以与单个对应的用户侧容器106相关联,并且可以实现用户侧容器106和对应的仿真gpu 122之间的通信以允许用户侧容器106的一个或多个应用程序108利用物理gpu 128的图形处理资源。
28.在一些实施例中,计算系统100可以包括在多个仿真gpu 122之间划分的图形存储器(未示出)。图形存储器可以用于像素加载,或者例如用作写入命令缓冲器。在其他实施例中,用于仿真gpu 122的图形存储器可以在kmd 114中动态地并集中分配(例如,如常规上为主机应用程序所做的那样)。
29.在一些实施例中,仿真gpu 122可以模拟物理gpu 128。在一些实施例中,仿真gpu 122可以支持作为物理gpu 128支持的特征的正确子集的一组特征。例如,仿真gpu 122可以表示相对于物理gpu 128“简化”的gpu(例如,比物理gpu 128向用户空间暴露更少的特征)。在一些实施例中,仿真gpu 122不模拟物理gpu 128;下面参照图4讨论这些实施例的示例。
30.图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的图形处理资源。
31.如图2所示,一个或多个仿真gpu 122可以与显示管理器134一起被包括在kmd 114的自我仿真器132中。自我仿真器132可以被配置为生成gpu设备模型以用作仿真gpu 122。在仿真gpu 122可以被生成具有与物理gpu 128相同或等效特征的实施例中,用于物理gpu 128的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命令)。
32.计算系统100还可以包括不被包括在软件容器中的一个或多个应用程序136和umd 138。应用程序136可以与umd 138通信,umd 138又可以经由umd-kmd接口140与kmd 114的设
122之间的通信,以允许用户侧容器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讨论这样的实施例的示例。
37.如上所述,图3的计算系统100可以包括vm 150。vm 150可以包括与umd 160通信的一个或多个软件应用程序158。vm 150还可以包括具有设备节点166的kmd 164。umd 160可以以与以上参考umd 110和设备节点116所讨论的类似方式与设备节点166进行通信。vm 150可以在管理程序170上运行,管理程序170可以通信地布置在vm 150和主机计算设备144之间。特别地,管理程序170可以通信地耦合到仿真gpu 122中的一个,并且可以促进控制数据在控制路径178上的传递,并且在从kmd 164到仿真gpu 122的渲染路径180上渲染数据。因此,图3的计算系统100可以在利用物理gpu 128的资源中(的同时或在不同时间)容纳容器化和基于vm的应用程序。该混合使用或“混合式”场景在配置计算系统100时提供了新的灵活性。
38.图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。
39.容器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-b 422通信,以在控制路径418上交换控制数据,并在渲染路径420上渲染数据。仿真gpu-b 422可以被包括在用于物理gpu-a 128的kmd(指定为kmd-a 114)的自我仿真器432中。
40.容器446可以包括umd 460和与umd 460通信的一个或多个软件应用程序448。umd 460可以经由umd-kmd接口462与用于内核侧104上的仿真gpu-c 472的kmd(指定为kmd-c 464)的设备节点466进行通信。如图所示,设备节点466可以沿应用程序448和物理gpu-a 128之间的通信通路被设置在umd 460和仿真gpu-c 472之间。kmd-c 464与仿真的gpu-c 472进行通信,以在控制路径468上交换控制数据,并在渲染路径470上渲染数据。仿真gpu-c 472可以被包括在kmd-a 114的自我仿真器432中。
114)的仿真gpu(例如,仿真gpu 122),并且仿真gpu可以通信地耦合到物理gpu(例如,物理gpu128)。
49.在604,计算系统100的用户侧102上的电路可以允许用户侧容器中的一个或多个软件应用程序(例如,软件应用程序108)经由内核侧设备节点和仿真的gpu利用物理gpu的资源。
50.本文公开的实施例中的合适的实施例可以容易地应用于其中物理gpu 128是具有单根输入/输出虚拟化(sr-iov)能力的gpu的计算系统。可以以与sr-iov gpu系统中的虚拟功能相同的方式来管理多个仿真gpu(例如,仿真gpu 122)。此外,本文公开的仿真设备方法可以扩展到仿真gpu之外,并且可以用于对其他子系统(例如存储设备)进行容器化。这可以弥补管理这些子系统的现有方法的一些缺陷。例如,现有的安装命名空间技术不能跨容器提供量子控制,并且扩展文件系统是一项复杂的任务。然而,生成仿真存储设备可能会解决这些缺陷,并提供一个简单的解决方案。
51.图7是示例性计算设备700的框图,其可适用于实践各种公开的实施例。例如,计算设备700可以用作计算系统100或作为主机计算设备144。在一些实施例中,计算设备700的组件可以跨多个物理设备外壳或位置分布,而在其他实施例中,计算设备700的组件可以被包括在单个外壳或位置中。
52.计算设备700可以包括多个组件,包括一个或多个处理器704和至少一个通信芯片706。在各个实施例中,处理器704可以包括处理器核心。在各个实施例中,至少一个通信芯片706也可以物理地和电耦合到处理器704。在另外的实现方式中,通信芯片706可以是处理器704的一部分。在各个实施例中,计算设备700可以包括印刷电路板(pcb)702。对于这些实施例,处理器704和通信芯片706可以设置在其上。在替代实施例中,可以在不使用pcb 702的情况下耦合各种组件。
53.根据其应用(例如,容器和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在本文中讨论的存储器设备中的任何一个或多个。
54.在各个实施例中,易失性存储器(例如,ram 708),非易失性存储器(例如,rom 710),闪存712和大容量存储设备可以包括指令,其响应于由一个或多个处理器704执行而使得计算设备700实践本文中参照图1-6所描述的处理的所有或选定的方面。例如,诸如易失性存储器(例如,ram 708)、非易失性存储器(例如,rom 710)、闪存712和大容量存储设备
的存储器组件中的一个或多个存储器组件可以是计算机可读介质,其包括临时和/或持久(例如,非暂时的)指令副本,其响应于由一个或多个处理器704执行,使得计算设备700实现本文所述的处理的所有或选定的方面。对于计算设备700可访问的存储器可以包括物理上是其上安装有计算设备700的设备的一部分的一个或多个存储设备和/或可以由计算设备700访问但不一定是计算设备700的一部分的一个或多个存储设备。例如,存储设备可以由计算设备700经由通信芯片706在网络上访问。在一些实施例中,指令可以体现在计算机可读的暂时性非有形介质中,诸如信号。
55.通信芯片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和其它之类的更长距离的无线通信。
56.在各种实施方式中,计算设备700可以是膝上型计算机,上网本,笔记本,超级本,可穿戴设备,智能电话,计算平板,个人数字助理,超移动pc,移动电话,台式计算机,服务器,打印机,扫描仪,监视器,机顶盒,娱乐控制单元(例如,游戏机),数码相机,便携式音乐播放器或数字录像机。在另外的实现方式中,计算设备700可以是处理数据的任何其他电子设备。
57.以下段落描述了各个实施例的示例。
58.示例1是计算系统,包括:物理图形处理单元gpu;以及内核模式驱动器电路,用于与物理gpu通信地耦合,以创建多个仿真gpu以及对应的多个设备节点,其中每个设备节点与单个对应的用户侧容器相关联,以实现用户侧容器和对应的仿真gpu之间的通信。
59.示例2可以包括示例1的主题,并且还可以指定每个仿真gpu模拟物理gpu。
60.示例3可以包括示例1-2中任一个的主题,并且还可以指定每个用户侧容器包括用户模式驱动器,用于经由对应的设备节点与对应的仿真gpu通信。
61.示例4可以包括示例3的主题,并且还可以指定每个用户侧容器包括与用户模式驱动器通信的一个或多个软件应用程序,并且所述一个或多个软件应用程序中的每一个利用物理gpu的资源。
62.示例5可以包括示例1-4中任一项的主题,并且还可以指定内核模式驱动器电路包括显示管理器以与多个用户侧容器中的每一个的帧缓冲器耦合以选择性地将不同的帧缓冲器带到物理gpu的控制路径。
63.示例6可以包括示例1-5中任一项的主题,并且还可以指定内核模式驱动器电路还包括调度器,并且调度器与多个仿真gpu和物理gpu进行通信。
64.示例7可以包括示例6的主题,并且还可以指定调度器对仿真gpu使用物理gpu强制执行服务质量策略。
65.示例8可以包括示例6-7中的任何一个的主题,并且还可以指定调度器对于仿真gpu强制执行安全隔离策略。
66.示例9可以包括示例1-8中任一个的主题,并且还可以包括在多个仿真gpu之间划分的图形存储器。
67.示例10可以包括示例9的主题,并且还可以指定图形存储器用于像素加载或用作写入命令缓冲器。
68.示例11可以包括示例1-10中任一项的主题,并且还可以指定仿真gpu支持第一组gpu特征,物理gpu支持第二组gpu特征,并且第一组是第二组的真子集。
69.示例12可以包括示例1-10中任一个的主题,并且还可以包括:耦合到多个仿真gpu中的一个的管理程序;以及虚拟机,其在管理程序上运行,以与多个仿真gpu中的一个进行通信。
70.示例13可以包括示例12的主题,并且还可以指定虚拟机包括内核模式gpu驱动器和用户模式gpu驱动器。
71.示例14可以包括示例1-13中任一个的主题,并且还可以指定第一仿真gpu不模拟物理gpu,第一设备节点与第一仿真gpu相关联,内核模式驱动器电路是第一内核模式驱动器电路,并且所述计算系统还包括第二内核模式驱动器电路,其布置成使得所述第二内核模式驱动器电路在通信通路中被设置在用户模式驱动器电路和所述第一内核模式驱动器电路之间。
72.示例15可以包括示例14的主题,并且还可以包括第一用户侧容器,其包括与第二内核模式驱动器电路通信的用户模式驱动器。
73.示例16是其中有指令的一个或多个计算机可读介质,响应于计算系统的一个或多个处理设备的执行,指令使计算系统:提供内核模式驱动器以创建多个仿真图形处理单元gpu,以及对应的多个设备节点,其中所述多个仿真gpu通信地耦合到物理gpu;以及将每个设备节点与单个对应的用户侧容器相关联,以使得在用户侧容器与对应的仿真gpu之间的通信能够利用物理gpu的资源。
74.示例17可以包括示例16的主题,并且还可以指定每个仿真gpu模拟物理gpu。
75.示例18可以包括示例16-17中任一项的主题,并且还可以指定每个用户侧容器包括用户模式驱动器,用于经由对应的设备节点与对应的仿真gpu进行通信。
76.示例19可以包括示例18的主题,并且还可以指定每个用户侧容器包括与用户模式驱动器通信的一个或多个软件应用程序,并且一个或多个软件应用程序中的每个软件应用程序利用物理gpu的资源。
77.示例20可以包括示例16-19中任一个的主题,并且还可以指定,在由计算系统的一个或多个处理设备执行时,指令进一步使得计算系统:与所述多个用户侧容器中的每一个的帧缓冲器耦合以选择性地将不同的帧缓冲器带到物理gpu的控制路径。
78.示例21可以包括示例16-20中任一个的主题,并且还可以指定在由计算系统的一个或多个处理设备执行时指令进一步使得计算系统:提供调度器以与多个仿真gpu和物理gpu通信。
79.示例22可以包括示例21的主题,并且还可以指定调度器对仿真gpu使用物理gpu强制执行服务质量策略。
80.示例23可以包括示例21-22中任一项的主题,并且还可以指定调度器对于仿真gpu强制执行安全隔离策略。
81.示例24可以包括示例16-23中任一个的主题,并且还可以指定,在由计算系统的一个或多个处理设备执行时,指令进一步使得该计算系统:在多个仿真gpu之间划分图形存储器。
82.示例25可以包括示例24的主题,其中图形存储器将用于像素加载或用作写入命令缓冲器。
83.示例26可以包括示例16-25中任一个的主题,并且还可以指定,仿真gpu支持第一组gpu特征,物理gpu支持第二组gpu特征,并且第一组是第二组的真子集。
84.示例27可以包括示例16-26中任一个的主题,并且还可以指定,指令在由计算系统的一个或多个处理设备执行时进一步使得计算系统:创建通信地耦合到物理gpu的第二仿真gpu;以及将第二仿真gpu与虚拟机相关联,以实现虚拟机与对应的仿真gpu之间的通信。
85.示例28可以包括示例27的主题,并且还可以指定虚拟机包括内核模式gpu驱动器和用户模式gpu驱动器。
86.示例29可以包括示例16-28中任一个的主题,并且还可以指定第一仿真gpu不模拟物理gpu,第一仿真gpu与第一设备节点相关联,内核模式驱动器是第一内核模式驱动器,并且所述指令进一步在由所述计算系统的所述一个或多个处理设备执行时使所述计算系统:提供第二内核模式驱动器,所述第二内核模式驱动器被布置为使得所述第二内核模式驱动器在通信通路中被设置在用户侧容器中的用户模式驱动器和第一内核模式驱动器之间。
87.示例30可以包括示例29的主题,并且还可以指定第一用户侧容器包括用于与第二内核模式驱动器通信的用户模式驱动器。
88.示例31是其中有指令的一种或多种计算机可读介质,响应于由计算系统的一个或多个处理设备的执行,所述指令使计算系统:将用户侧容器与内核侧设备节点相关联,其中内核侧设备节点对应于内核模式驱动器的仿真图形处理单元gpu,并且仿真gpu通信地耦合到物理gpu;并且允许用户侧容器中的一个或多个软件应用程序经由内核侧设备节点和仿真gpu利用物理gpu的资源。
89.示例32可以包括示例31的主题,并且还可以指定每个仿真gpu模拟物理gpu。
90.示例33可以包括示例31-32中任一个的主题,并且还可以指定内核模式驱动器包括显示管理器以与用户侧容器的帧缓冲器耦合以选择性地将帧缓冲器带到物理gpu的控制路径。
91.示例34可以包括示例31-33中任一个的主题,并且还可以指定内核模式驱动器包括调度器,并且调度器与仿真的gpu和物理gpu进行通信。
92.示例35可以包括示例34的主题,并且还可以指定调度器对由仿真gpu使用物理gpu强制执行服务质量策略。
93.示例36可以包括示例34-35中任一项的主题,并且还可以指定调度器对于仿真gpu强制执行安全隔离策略。
94.示例37可以包括示例34-36中任一项的主题,并且还可以指定仿真gpu支持第一组
gpu特征,物理gpu支持第二组gpu特征,并且第一组是第二组的真子集。
95.示例38可以包括示例31-37中任一个的主题,并且还可以指定:仿真gpu不模拟物理gpu;内核模式驱动器是第一内核模式驱动器;作为允许用户侧容器中的一个或多个软件应用程序经由内核侧设备节点和仿真gpu来利用物理gpu的资源的一部分,允许用户侧容器中的一个或多个软件应用程序经由内核侧设备节点、仿真gpu和第二内核模式驱动器利用物理gpu的资源;并且设备节点在通信通路中被设置在第二内核模式驱动器和仿真gpu之间。
96.示例39可以包括示例38的主题,并且还可以指定用户侧容器包括用于与第二内核模式驱动器通信的用户模式驱动器。
97.示例40是使多个用户侧容器能够利用物理图形处理单元gpu的资源的方法,其包括:提供内核模式驱动器以创建多个仿真gpu和对应的多个设备节点,其中多个仿真gpu通信地耦合到物理gpu;以及将每个设备节点与单个对应的用户侧容器相关联,以使得用户侧容器和对应的仿真gpu之间的通信能够利用物理gpu的资源。
98.示例41可以包括示例40的主题,并且还可以指定每个仿真gpu模拟物理gpu。
99.示例42可以包括示例40-41中任一项的主题,并且还可以指定每个用户侧容器包括用户模式驱动器,用于经由对应的设备节点与对应的仿真gpu进行通信。
100.示例43可以包括示例42的主题,并且还可以指定每个用户侧容器包括与用户模式驱动器通信的一个或多个软件应用程序,并且一个或多个软件应用程序中的每一个利用物理gpu的资源。
101.示例44可以包括示例40-43中任一个的主题,并且还可以包括与多个用户侧容器中的每一个的帧缓冲器耦合,以选择性地将不同的帧缓冲器带到物理gpu的控制路径。
102.示例45可以包括示例40-44中任一个的主题,并且还可以包括提供调度器以与多个仿真gpu和物理gpu进行通信。
103.示例46可以包括示例45的主题,并且还可以指定调度器对仿真gpu使用物理gpu强制执行服务质量策略。
104.示例47可以包括示例45-46中任一项的主题,并且还可以指定调度器对于仿真gpu强制执行安全隔离策略。
105.示例48可以包括示例40-47中任一项的主题,并且还可以包括在多个仿真gpu中对图形存储器进行分区。
106.示例49可以包括示例48的主题,并且还可以指定图形存储器用于像素加载或用作写入命令缓冲器。
107.示例50可以包括示例40-49中任一个的主题,并且还可以指定仿真gpu支持第一组gpu特征,物理gpu支持第二组gpu特征,并且第一组是第二组的真子集。
108.示例51可以包括示例40-50中任一项的主题,并且还可以包括:创建通信地耦合到物理gpu的第二仿真gpu;以及将第二仿真gpu与虚拟机相关联,以实现虚拟机与对应的仿真gpu之间的通信。
109.示例52可以包括示例51的主题,并且还可以指定虚拟机包括内核模式gpu驱动器和用户模式gpu驱动器。
110.示例53可以包括示例40-52中任一个的主题,并且还可以指定第一仿真gpu不模拟
物理gpu,第一仿真gpu与第一设备节点相关联,内核模式驱动器是第一内核模式驱动器,并且该方法还包括:提供第二内核模式驱动器,其布置成使得第二内核模式驱动器在通信通路中被设置在用户侧容器中的用户模式驱动器和第一内核模式驱动器之间。
111.示例54可以包括示例53的主题,并且还可以指定第一用户侧容器包括用于与第二内核模式驱动器通信的用户模式驱动器。
112.示例55是一种使用户侧容器能够利用物理图形处理单元gpu的资源的方法,包括:使用户侧容器与内核侧设备节点相关联,其中,内核侧设备节点对应于内核模式驱动器的仿真gpu,并且仿真gpu通信地耦合到物理gpu;并且允许用户侧容器中的一个或多个软件应用程序经由内核侧设备节点和仿真gpu利用物理gpu的资源。
113.示例56可以包括示例55的主题,其中每个仿真gpu模拟物理gpu。
114.示例57可以包括示例55-56中任一个的主题,并且还可以指定内核模式驱动器包括显示管理器以与用户侧容器的帧缓冲器耦合以选择性地将帧缓冲器带到物理gpu的控制路径。
115.示例58可以包括示例55-57中任一个的主题,并且还可以指定内核模式驱动器包括调度器,并且调度器将与仿真gpu和物理gpu通信。
116.示例59可以包括示例58的主题,并且还可以指定调度器对于仿真gpu使用物理gpu强制执行服务质量策略。
117.示例60可以包括示例58-59中任一个的主题,并且还可以指定调度器对于仿真gpu强制执行安全隔离策略。
118.示例61可以包括示例58-60中任一个的主题,并且还可以指定仿真gpu支持第一组gpu特征,物理gpu支持第二组gpu特征,并且第一组是第二组的真子集。
119.示例62可以包括示例55-61中任一个的主题,并且还可以指定:仿真gpu不模拟物理gpu;内核模式驱动器是第一内核模式驱动器;作为允许用户侧容器中的一个或多个软件应用程序经由内核侧设备节点和仿真gpu利用物理gpu的资源的一部分,允许用户侧容器中的一个或多个软件应用程序经由内核侧设备节点、仿真gpu和第二内核模式驱动器来利用物理gpu的资源;并且第二内核模式驱动器在通信通路中被设置在用户模式驱动器和第一内核模式驱动器之间。
120.示例63可以包括示例62的主题,其中用户侧容器包括用于与第二内核模式驱动器通信的用户模式驱动器。
121.示例64是其上具有指令的一个或多个计算机可读介质,响应于计算系统的一个或多个处理设备的执行,所述指令使计算系统执行示例40-63中任一个的方法。
122.示例65是包括用于执行示例40-63中任一个的方法的单元的装置。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献