图形处理器资源的使用方法及装置、电子设备

文档序号:1964734 发布日期:2021-12-14 浏览:14次 >En<

阅读说明:本技术 图形处理器资源的使用方法及装置、电子设备 (Method and device for using graphics processor resources and electronic equipment ) 是由 不公告发明人 于 2021-11-16 设计创作,主要内容包括:一种图形处理器资源的使用方法及装置、电子设备。该图形处理器资源的使用方法包括:根据运行在虚拟驱动器中的虚拟设备文件,获取暂存空间的使用信息,虚拟驱动器运行在操作系统中;基于应用程序的任务指令,生成图形处理命令包,应用程序运行在部署有操作系统的装置中;根据使用信息,将图形处理命令包写入暂存空间;利用图形处理客户端从暂存空间获取图形处理命令包,并将包含图形处理命令包的信息发送至远程的图形处理服务器。图形处理命令包配置为可被对应于虚拟设备文件的物理图形处理器执行,以完成应用程序的任务指令指示的任务。该方法提供了远程资源使用方式,无需在本地端部署图形处理器的硬件资源,无需在本地端创建虚拟图形处理器。(A method and a device for using graphics processor resources and electronic equipment are provided. The method for using the graphics processor resource comprises the following steps: acquiring the use information of the temporary storage space according to the virtual equipment file running in the virtual driver, wherein the virtual driver runs in an operating system; generating a graphic processing command packet based on a task instruction of an application program, wherein the application program runs in a device with an operating system; writing the graphic processing command packet into the temporary storage space according to the use information; and acquiring the graphics processing command packet from the temporary storage space by using the graphics processing client, and sending the information containing the graphics processing command packet to a remote graphics processing server. The graphics processing command package is configured to be executable by a physical graphics processor corresponding to the virtual device file to perform a task indicated by the task instruction of the application. The method provides a remote resource using mode, hardware resources of the graphic processor do not need to be deployed at a local end, and a virtual graphic processor does not need to be established at the local end.)

图形处理器资源的使用方法及装置、电子设备

技术领域

本公开的实施例涉及一种图形处理器资源的使用方法及装置、电子设备。

背景技术

随着互联网技术、大数据技术、机器学习技术等新一代技术的发展,数据计算的需求日益增大。由于浮点数运算的高计算能力与数据并行的优势,图形处理器(GraphicsProcessing Unit,GPU)在高性能计算与云计算领域发挥着日益重要的作用。图形处理器又称为显示核心、视觉处理器或显示芯片,是一种用于做图像和图形相关运算工作的微处理器,可以用于加速计算、图像与图形数据处理等,具有广阔的应用前景。

发明内容

本公开至少一个实施例提供一种图形处理器资源的使用方法,包括:根据运行在虚拟驱动器中的虚拟设备文件,获取暂存空间的使用信息,其中,所述虚拟驱动器运行在操作系统中;基于应用程序的任务指令,生成图形处理命令包,其中,所述应用程序运行在部署有所述操作系统的装置中;根据所述使用信息,将所述图形处理命令包写入所述暂存空间;利用图形处理客户端从所述暂存空间获取所述图形处理命令包,并将包含所述图形处理命令包的信息发送至远程的图形处理服务器;其中,所述图形处理命令包配置为可被对应于所述虚拟设备文件的物理图形处理器执行,以完成所述应用程序的任务指令指示的任务。

例如,在本公开一实施例提供的方法中,所述虚拟设备文件配置为向所述应用程序提供表示虚拟图形处理器的资源和接口。

例如,在本公开一实施例提供的方法中,基于所述应用程序的任务指令,生成所述图形处理命令包,包括:基于所述应用程序的任务指令,利用用户态驱动器对所述任务指令进行格式组织,生成所述图形处理命令包;其中,所述用户态驱动器运行在图形处理器用户态运行库中。

例如,在本公开一实施例提供的方法中,所述应用程序为容器化的应用程序,所述图形处理器用户态运行库运行在容器中;或者所述应用程序以线程的方式直接运行在中央处理器核中,所述图形处理器用户态运行库直接运行在所述中央处理器核中。

例如,在本公开一实施例提供的方法中,所述暂存空间包括共享内存,所述使用信息包括所述共享内存的地址信息;根据所述使用信息,将所述图形处理命令包写入所述暂存空间,包括:根据所述地址信息,将所述图形处理命令包写入所述共享内存中与所述地址信息对应的空间。

例如,在本公开一实施例提供的方法中,利用所述图形处理客户端从所述暂存空间获取所述图形处理命令包,并将包含所述图形处理命令包的信息发送至所述远程的图形处理服务器,包括:根据所述地址信息,利用所述图形处理客户端从所述共享内存获取所述图形处理命令包;基于通信协议,利用所述图形处理客户端以对应于所述通信协议的数据格式将包含所述图形处理命令包的信息发送至所述远程的图形处理服务器;其中,所述通信协议包括以太网、远程直接数据存取、无限带宽协议、光纤通道协议中的至少一种。

例如,本公开一实施例提供的方法还包括:利用所述图形处理客户端接收并解析包含任务结果的信息,以得到所述任务结果,并将所述任务结果写入所述暂存空间,其中,所述包含任务结果的信息来自所述远程的图形处理服务器;利用所述用户态驱动器从所述暂存空间中读取所述任务结果,并利用所述用户态驱动器向所述应用程序返回所述任务结果。

例如,在本公开一实施例提供的方法中,所述虚拟驱动器中运行有多个虚拟设备文件,所述暂存空间被划分为多个子空间,所述多个虚拟设备文件与所述多个子空间一一对应;与所述虚拟设备文件交互的应用程序所对应的图形处理命令包被写入与所述虚拟设备文件对应的子空间中,与所述图形处理命令包对应的任务结果也被写入与所述虚拟设备文件对应的子空间中。

例如,在本公开一实施例提供的方法中,在将所述图形处理命令包写入所述暂存空间之后,所述方法还包括:将所述暂存空间的数据变化信息通知所述图形处理客户端。

例如,在本公开一实施例提供的方法中,将所述暂存空间的数据变化信息通知所述图形处理客户端,包括:利用页面异常反应机制,使所述图形处理客户端获取所述数据变化信息;或者利用所述用户态驱动器将所述数据变化信息发送至所述图形处理客户端。

例如,本公开一实施例提供的方法还包括:对所述虚拟设备文件进行初始化和/或资源配置。

例如,在本公开一实施例提供的方法中,对所述虚拟设备文件进行初始化和/或资源配置,包括:将所述物理图形处理器的内存映射到所述虚拟设备文件。

例如,在本公开一实施例提供的方法中,对所述虚拟设备文件进行初始化和/或资源配置,包括:利用所述虚拟驱动器将对应于所述虚拟设备文件的管理命令包发送至所述图形处理客户端,其中,所述管理命令包配置为可被对应于所述虚拟设备文件的物理图形处理器执行,以完成执行初始化和/或资源配置的操作;利用所述图形处理客户端发送包含所述管理命令包的信息至所述远程的图形处理服务器;利用所述图形处理客户端接收并解析包含管理结果的信息,以得到所述管理结果,并将所述管理结果发送至所述虚拟驱动器,以实现对所述虚拟设备文件的初始化和/或资源配置,其中,所述包含管理结果的信息来自所述远程的图形处理服务器。

例如,在本公开一实施例提供的方法中,利用所述虚拟驱动器将对应于所述虚拟设备文件的管理命令包发送至所述图形处理客户端,包括:通过设备文件、嵌套字或内存共享的方式,将对应于所述虚拟设备文件的管理命令包从所述虚拟驱动器传输至所述图形处理客户端;将所述管理结果发送至所述虚拟驱动器,包括:通过所述设备文件、所述嵌套字或所述内存共享的方式,将所述管理结果从所述图形处理客户端传输至所述虚拟驱动器。

例如,本公开一实施例提供的方法还包括:利用所述用户态驱动器向所述虚拟驱动器发送资源请求,以对所述虚拟设备文件进行资源配置。

例如,在本公开一实施例提供的方法中,所述应用程序、所述虚拟驱动器、所述图形处理客户端部署在同一物理设备上,或者所述应用程序、所述虚拟驱动器、所述图形处理客户端部署在同一虚拟设备上,所述虚拟设备通过至少一个物理设备构建得到。

本公开至少一个实施例提供一种图形处理器资源的使用方法,包括:根据运行在虚拟驱动器中的虚拟设备文件,获取暂存空间的使用信息,其中,所述虚拟驱动器运行在操作系统中;基于应用程序的任务指令,生成图形处理命令包;根据所述使用信息,将所述图形处理命令包写入所述暂存空间;利用图形处理客户端从所述暂存空间获取所述图形处理命令包,并将包含所述图形处理命令包的信息发送至图形处理服务端;利用所述图形处理服务端接收并解析包含所述图形处理命令包的信息,以得到所述图形处理命令包,并将所述图形处理命令包转发至内核驱动器;利用所述内核驱动器驱动至少一个物理图形处理器执行所述图形处理命令包,以得到任务结果;其中,所述图形处理客户端、所述操作系统、所述应用程序部署在图形处理客户机上,所述图形处理服务端部署在图形处理服务器上,所述图形处理客户机与所述图形处理服务器远程连接。

例如,本公开一实施例提供的方法还包括:利用所述内核驱动器将所述任务结果转发给所述图形处理服务端;利用所述图形处理服务端发送包含所述任务结果的信息至所述图形处理客户端;利用所述图形处理客户端接收并解析包含所述任务结果的信息,以得到所述任务结果,并将所述任务结果写入所述暂存空间;利用用户态驱动器从所述暂存空间中读取所述任务结果,并利用所述用户态驱动器向所述应用程序返回所述任务结果;其中,所述用户态驱动器运行在图形处理器用户态运行库中。

本公开至少一个实施例提供一种图形处理器资源的使用装置,包括:用户态驱动器、虚拟驱动器和图形处理客户端,其中,所述虚拟驱动器中运行有虚拟设备文件;所述用户态驱动器配置为根据所述虚拟设备文件,获取暂存空间的使用信息,基于应用程序的任务指令,生成图形处理命令包,并且根据所述使用信息,将所述图形处理命令包写入所述暂存空间,其中,所述用户态驱动器运行在图形处理器用户态运行库中;所述图形处理客户端配置为从所述暂存空间获取所述图形处理命令包,并将包含所述图形处理命令包的信息发送至远程的图形处理服务器;所述图形处理命令包配置为可被对应于所述虚拟设备文件的物理图形处理器执行,以完成所述应用程序的任务指令指示的任务。

本公开至少一个实施例提供一种电子设备,包括本公开任一实施例提供的图形处理器资源的使用装置。

附图说明

为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。

图1为本公开一些实施例提供的一种应用图形处理器资源的使用方法的系统的示意图;

图2为本公开一些实施例提供的一种图形处理器资源的使用方法的流程示意图;

图3为图2中步骤S14的流程示意图;

图4为本公开一些实施例提供的另一种图形处理器资源的使用方法的流程示意图;

图5为本公开一些实施例提供的另一种图形处理器资源的使用方法的流程示意图;

图6为图5中步骤S19的流程示意图;

图7为本公开一些实施例提供的一种图形处理器资源的使用方法的流程示意图;

图8为本公开一些实施例提供的另一种图形处理器资源的使用方法的流程示意图;

图9为本公开一些实施例提供的另一种图形处理器资源的使用方法的流程示意图;

图10为本公开一些实施例提供的另一种图形处理器资源的使用方法的流程示意图;

图11为本公开一些实施例提供的另一种图形处理器资源的使用方法的流程示意图;

图12为本公开一些实施例提供的一种图形处理器资源的使用方法的工作流程图;

图13为本公开一些实施例提供的一种图形处理器资源的使用装置的示意框图;

图14为本公开一些实施例提供的另一种图形处理器资源的使用装置的示意框图;以及

图15为本公开一些实施例提供的一种电子设备的示意框图。

具体实施方式

为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。

随着图形处理器性能的不断提升,其大体积、高功耗带来的高硬件成本已经成为影响其使用的一大难题。因此,有必要采用虚拟化技术来利用图形处理器进行数据计算。虚拟化技术通过各类方法实现对系统资源的复用,将有限的资源高效地提供给多个用户使用,从而提高系统的资源使用率并降低单个用户的成本。然而,针对图形处理器的虚拟化技术面临诸多问题,例如兼容性较差、需要在本地部署硬件资源等,这些问题严重阻碍了针对图形处理器的虚拟化技术,无法满足当前日益增长的应用需求。

本公开至少一个实施例提供一种图形处理器资源的使用方法及装置、电子设备。该图形处理器资源的使用方法提供了远程资源的使用方式,无需在本地端部署图形处理器的硬件资源,无需在本地端创建虚拟图形处理器,具有较高的灵活性和兼容性,可以适用于多样化的远程应用场景。例如,在一些实施例中,该图形处理器资源的使用方法可以用于Linux架构下的远程资源使用,可以在Linux架构下提供便捷、简单的远程图形处理器资源的使用。

下面,将参考附图详细地说明本公开的实施例。应当注意的是,不同的附图中相同的附图标记将用于指代已描述的相同的元件。

本公开至少一个实施例提供一种图形处理器资源的使用方法。该图形处理器资源的使用方法包括:根据运行在虚拟驱动器中的虚拟设备文件,获取暂存空间的使用信息,虚拟驱动器运行在操作系统中;基于应用程序的任务指令,生成图形处理命令包,该应用程序运行在部署有该操作系统的装置中;根据使用信息,将图形处理命令包写入暂存空间;利用图形处理客户端从暂存空间获取图形处理命令包,并将包含图形处理命令包的信息发送至远程的图形处理服务器。图形处理命令包配置为可被对应于虚拟设备文件的物理图形处理器执行,以完成应用程序的任务指令指示的任务。

图1为本公开一些实施例提供的一种应用图形处理器资源的使用方法的系统的示意图,本公开实施例提供的图形处理器资源的使用方法可以应用于该系统,以实现远程图形处理器资源的使用。

如图1所示,第一装置110和第二装置120例如为两个独立的设备,分别部署在不同的地点,两者通过通信网络进行数据传输。又例如,第一装置110可以为虚拟装置,例如虚拟机或云端的容器等。相对于第一装置110而言,第二装置120为远程设备;相对于第二装置120而言,第一装置110为远程设备。

例如,第一装置110可以包括多个层次的硬件/软件资源。例如,第一装置110可以包括图形处理器用户态运行库(也即GPU Runtime Libs)、操作系统等。例如,操作系统可以为Linux系统或其他适用的操作系统。操作系统中运行有虚拟驱动器,虚拟驱动器中运行有至少一个虚拟设备文件。虚拟设备文件配置为向应用程序提供表示虚拟图形处理器的资源和接口。图形处理器用户态运行库通过与虚拟设备文件交互,可以实现对图形处理器资源的使用。虚拟设备文件负责接收来自上层的图形处理器资源使用请求,并将对应分配的暂存空间的使用信息返回给图形处理器用户态运行库。图形处理器用户态运行库根据暂存空间的使用信息,将图形处理命令包(GPU Packet)写入暂存空间。

例如,操作系统中运行有图形处理客户端,该图形处理客户端可以通过通信网络与其他装置传输数据。图形处理客户端可以从暂存空间获取图形处理命令包,并将图形处理命令包通过通信网络发送至其他装置。例如,图形处理器用户态运行库中运行有用户态驱动器,该用户态驱动器配置为处理与图形处理器有关的任务指令,以生成图形处理命令包。例如,第一装置110还可以包括图形处理器程序模型、通用图形处理器(General-purpose Computing On Graphics Processing Units,GPGPU)应用、图形应用、多媒体应用等,由此实现多种图形处理功能。

例如,在一些示例中,应用程序为容器化的应用程序,图形处理器用户态运行库运行在容器(例如用户容器)中。例如,在另一些示例中,应用程序以线程的方式直接运行在中央处理器核中,图形处理器用户态运行库直接运行在中央处理器核中。例如,在再一些示例中,如图1所示,第一装置110中可以同时存在容器化的应用程序和以线程的方式直接运行在中央处理器核中的应用程序,相应地,第一装置110中可以同时存在运行在用户容器中的图形处理器用户态运行库和直接运行在中央处理器核中的图形处理器用户态运行库。关于应用程序以及图形处理器用户态运行库的具体运行方式以及在第一装置110中的层级架构,本公开的实施例不作限制。

第二装置120可以包括多个层次的硬件/软件资源。例如,第二装置120可以包括图形处理服务端、内核驱动器、至少一个物理图形处理器。图形处理服务端可以通过通信网络与其他装置传输数据。内核驱动器用于驱动、管理至少一个物理图形处理器。例如,物理图形处理器可以为一个或多个,本公开的实施例对此不作限制。需要说明的是,物理图形处理器可以为可独立执行图形处理的硬件模块,也可以为可独立执行图形处理的硬件模块的一个细粒度部分,这可以根据实际需求而定,本公开的实施例对此不作限制。例如,第二装置120还可以包括图形处理器程序模型、图形处理器用户态运行库、多个应用(例如应用1、应用2等),由此实现多种图形处理功能。

例如,第一装置110可以为用户使用的终端(或称为图形处理客户机),第二装置120可以为服务器(或称为图形处理服务器),第二装置120的图形处理器资源可以为第一装置110提供服务,以实现远程图形处理器资源的使用。关于第一装置110与第二装置120的交互方式将在下文中结合本公开实施例提供的图形处理器资源的使用方法进行说明,此处不再赘述。

图2为本公开一些实施例提供的一种图形处理器资源的使用方法的流程示意图。如图2所示,在一些实施例中,图形处理器资源的使用方法可以包括如下操作。

步骤S11:根据运行在虚拟驱动器中的虚拟设备文件,获取暂存空间的使用信息,其中,虚拟驱动器运行在操作系统中;

步骤S12:基于应用程序的任务指令,生成图形处理命令包,其中,该应用程序运行在部署有该操作系统的装置中;

步骤S13:根据使用信息,将图形处理命令包写入暂存空间;

步骤S14:利用图形处理客户端从暂存空间获取图形处理命令包,并将包含图形处理命令包的信息发送至远程的图形处理服务器。

例如,该使用方法可以用于图1所示的系统的第一装置110中,由此实现远程图形处理器资源的使用,例如可以使用远程的第二装置120中的图形处理器资源。

例如,在步骤S11中,操作系统中运行有虚拟驱动器,虚拟驱动器运行于内核中,主要用于为上层应用提供资源分配以及管理等功能,例如进行内存分配。虚拟驱动器也可以被称为rGPU Kernel Driver。虚拟驱动器中运行有至少一个虚拟设备文件。这里,虚拟设备文件是指虚拟驱动器输出(export)的虚拟的设备文件。虚拟设备文件是虚拟驱动器与上层应用交互的媒介,例如,虚拟驱动器通过虚拟设备文件与图形处理器用户态运行库中的用户态驱动器通信。通过这种方式,上层应用程序或容器化的应用程序无需感知所请求的图形处理器设备是虚拟的还是物理的,因此,图形处理器用户态运行库(GPU Runtime Libs)不需要做任何修改,这使得本公开实施例提供的方法具有较高的灵活性和兼容性,不存在版本兼容的问题,可以适用于多样化的远程应用场景。虚拟设备文件配置为向应用程序提供表示虚拟图形处理器的资源和接口。图形处理器用户态运行库通过与虚拟设备文件交互,可以实现与虚拟驱动器之间的通信。

需要说明的是,本公开的实施例中,虚拟设备文件所提供的表示虚拟图形处理器的资源和接口可以被上层应用使用,可以实现相对应的物理图形处理器的操作和功能,所提供的图形处理器资源并不部署在本地设备中,而是部署在远程设备中。例如,如图1所示,虚拟设备文件所提供的图形处理器资源并不部署在第一装置110中,而是部署在远程的第二装置120中,该虚拟设备文件可向使用第一装置100的用户提供封装好的图形处理器资源。

例如,暂存空间为预设的存储空间,用于实现图形处理命令包和相应的任务结果的传递,例如可以暂时存储图形处理命令包和相应的任务结果。暂存空间的使用信息例如是指暂存空间的地址、空间大小等信息,通过获取使用信息,可以基于使用信息对暂存空间进行读写。例如,在一些示例中,暂存空间可以是共享内存,相应地,使用信息可以是共享内存的地址信息。当然,本公开的实施例不限于此,暂存空间还可以为寄存器、缓存或其他任意适用的用于存储的空间,本公开的实施例对此不作限制。

例如,图形处理器用户态运行库中运行的用户态驱动器通过虚拟设备文件向虚拟驱动器发送命令(例如需要使用GPU的命令),虚拟驱动器通过虚拟设备文件向用户态驱动器返回暂存空间的使用信息(例如共享内存的地址信息),以便于在后续步骤中使用暂存空间。

例如,在步骤S12中,应用程序的任务指令可以是指示需要使用图形处理器资源进行处理的任务指令,该任务指令需要由图形处理器执行,因此,可以根据该任务指令生成图形处理命令包。例如,图形处理命令包(GPU Packet)是可以被图形处理器直接执行的命令包,其采用与图形处理器匹配的数据结构进行封装,因此该图形处理命令包无需在软件层面进行解析,可以直接被图形处理器执行。

例如,基于应用程序的任务指令,生成图形处理命令包,可以包括:基于应用程序的任务指令,利用用户态驱动器对任务指令进行格式组织,生成图形处理命令包。例如,用户态驱动器运行在图形处理器用户态运行库中,用户态驱动器用于处理与图形处理器有关的任务指令,以生成图形处理命令包。当应用程序的任务指令为指示需要使用图形处理器资源进行处理的任务指令时,用户态驱动器对该任务指令进行格式组织,例如进行编码、编译、封装等操作,从而生成与该任务指令对应的图形处理命令包。

例如,在步骤S13中,根据暂存空间的使用信息,将图形处理命令包写入暂存空间。例如,在一些示例中,当暂存空间为共享内存、使用信息为共享内存的地址信息时,步骤S13可以包括:根据地址信息,将图形处理命令包写入共享内存中与该地址信息对应的空间。

例如,在步骤S14中,图形处理命令包被写入暂存空间之后,利用图形处理客户端从暂存空间获取图形处理命令包,并将包含图形处理命令包的信息发送至远程的图形处理服务器,由此可以利用远程的图形处理服务器提供的图形处理器资源来进行运算,从而实现远程图形处理器资源的使用。在一些示例中,图形处理客户端可以采用用户态应用程序的方式运行于操作系统中,它可以使用套接字(Socket)、共享内存或者管道等方式与用户态驱动器进行数据交互。例如,在另一些示例中,图形处理客户端可以采用内核态驱动的方式运行于操作系统中,以设备文件的形式存在,用户态驱动器通过读写设备的方式与图形处理客户端交互。例如,图形处理客户端可以从暂存空间读取存储在其中的图形处理命令包。

在一些示例中,如图3所示,当暂存空间为共享内存时,上述步骤S14可以进一步包括如下操作。

步骤S141:根据地址信息,利用图形处理客户端从共享内存获取图形处理命令包;

步骤S142:基于通信协议,利用图形处理客户端以对应于通信协议的数据格式将包含图形处理命令包的信息发送至远程的图形处理服务器。

例如,在步骤S141中,当图形处理命令包被写入共享内存后,图形处理客户端会得到通知,并获知共享内存的地址信息。然后,图形处理客户端根据地址信息从共享内存获取图形处理命令包。关于针对图形处理客户端的通知机制,将在后文说明,此处不再赘述。

例如,在步骤S142中,通信协议可以包括以太网、远程直接数据存取(RDMA)、无限带宽协议(IB)、光纤通道协议(FC)中的至少一种。需要说明的是,本公开的实施例中,通信协议不限于上文中列举的类型,还可以为其他任意适用的类型,这可以根据实际需求而定,本公开的实施例对此不作限制,只需利用该通信协议能够将信息发送至远程的图形处理服务器即可。

例如,在图1所示的系统中,第二装置120可以为上文描述的远程的图形处理服务器,第一装置110中的图形处理客户端将包含图形处理命令包的信息发送至第二装置120,从而利用第二装置120提供的图形处理器资源来进行运算。例如,根据具体的通信协议的数据格式要求,第一装置110中的图形处理客户端对图形处理命令包进行打包、封装,将图形处理命令包封装在所得到的信息中,然后基于通信协议将所得到的信息发送至第二装置120,由此实现图形处理命令包的传输。例如,应用程序运行在第一装置110中,利用上述方式可以使用第二装置120提供的图形处理器资源,从而实现远程图形处理器资源的使用。

例如,在一些示例中,第一装置110中的图形处理客户端将图形处理命令包封装到协议特定的数据帧中,帧的格式将取决于使用的传输方式。例如,若使用以太网,则图形处理命令包将被封装转入以太网数据帧,并将它们发送到远程的第二装置120的图形处理服务端。

在本公开的实施例中,图形处理命令包配置为可被对应于虚拟设备文件的物理图形处理器执行,以完成应用程序的任务指令指示的任务。例如,如图1所示,第一装置110中的虚拟设备文件对应于第二装置120中的物理图形处理器,基于第一装置110中运行的应用程序的任务指令所生成的图形处理命令包被发送至第二装置120,并由第二装置120中的物理图形处理器处理,从而完成第一装置110中运行的应用程序的任务指令所指示的任务。

图4为本公开一些实施例提供的另一种图形处理器资源的使用方法的流程示意图。如图4所示,在该示例中,除了进一步包括步骤S15-S17,该图形处理器资源的使用方法与图2中所示的图形处理器资源的使用方法基本相同,相同的步骤不再赘述。

步骤S15:利用图形处理客户端接收并解析包含任务结果的信息,以得到任务结果,并将任务结果写入暂存空间,其中,包含任务结果的信息来自远程的图形处理服务器;

步骤S16:利用用户态驱动器从暂存空间中读取任务结果,并利用用户态驱动器向应用程序返回任务结果。

例如,在步骤S15中,由于图形处理命令包被发送至远程的图形处理服务器,该图形处理服务器执行图形处理命令包可以得到处理结果,也即,得到任务结果,因此,远程的图形处理服务器会通过通信网络将包含任务结果的信息发送回来,由此,可以利用图形处理客户端接收并解析包含任务结果的信息,以得到任务结果。例如,可以根据具体的通信协议的数据格式要求,对接收到的信息进行解析,从而得到任务结果。得到任务结果之后,图形处理客户端将任务结果写入暂存空间。

例如,在一些示例中,虚拟驱动器中可以运行有一个或多个虚拟设备文件。当虚拟驱动器中运行有一个虚拟设备文件时,图形处理客户端从暂存空间获取图形处理命令包,并将与之对应的任务结果写入暂存空间。当虚拟驱动器中运行有多个虚拟设备文件时(如图1所示,虚拟驱动器中运行有虚拟设备文件0至虚拟设备文件M,M为正整数),暂存空间被划分为多个子空间,多个虚拟设备文件与多个子空间一一对应。与某一虚拟设备文件交互的应用程序所对应的图形处理命令包被写入与该虚拟设备文件对应的子空间中,与该图形处理命令包对应的任务结果也被写入与该虚拟设备文件对应的子空间中。由于多个虚拟设备文件与多个子空间一一对应,因此图形处理客户端可以处理多个任务并且各个任务对应的图形处理命令包和任务结果不会发生混淆和错乱。在该情形中,图形处理客户端统一为多个任务提供与远程的图形处理服务器的通信服务。

例如,在图1所示的系统中,第二装置120中的物理图形处理器执行图形处理命令包之后可以得到任务结果,第二装置120将任务结果通过通信网络发送回第一装置110。第一装置110中的图形处理客户端接收并解析包含任务结果的信息,得到任务结果之后,将任务结果写入暂存空间。当第一装置110的虚拟驱动器中运行有多个虚拟设备文件时,图形处理客户端分别从暂存空间的多个子空间获取对应于不同任务的图形处理命令包并将其发送至远程的第二装置120,待接收到第二装置120发回的多个任务结果后,将多个任务结果分别写入对应的子空间,图形处理客户端统一为这些任务提供与第二装置120的通信服务。

例如,在步骤S16中,利用运行在图形处理器用户态运行库中的用户态驱动器从暂存空间中读取任务结果,并利用用户态驱动器向应用程序返回任务结果。

由此,在应用程序发出任务指令之后,通过上述各个步骤,应用程序可以得到对应于该任务指令的任务结果。该任务结果是利用远程的图形处理器资源进行运算得到的,实现了远程图形处理器资源的使用。

例如,如图4所示,在将图形处理命令包写入暂存空间之后,该方法还可以包括步骤S17。

步骤S17:将暂存空间的数据变化信息通知图形处理客户端。

例如,在步骤S17中,通过设置通知机制,将暂存空间的数据变化信息通知图形处理客户端,从而便于图形处理客户端去暂存空间获取图形处理命令包。例如,数据变化信息可以包括触发信号,该触发信号有效时可以触发图形处理客户端去暂存空间获取图形处理命令包。例如,数据变化信息还可以包括暂存空间的使用信息(例如共享缓存的地址信息),因此,图形处理客户端可以基于地址信息读取共享缓存中存储的图形处理命令包。

例如,通知机制可以根据实际需求设置,只要能够通知到图形处理客户端即可,本公开的实施例对此不作限制。例如,在一些示例中,可以利用页面异常反应机制(PageFault),使图形处理客户端获取数据变化信息。例如,可以将暂存空间设置为只读模式,那么当图形处理命令包被写入该暂存空间时,会触发页面异常通知,当页面异常通知被触发时,则通知图形处理客户端,从而可以实现上述的通知机制。这种方式不需要用户态驱动器进行感知,易于实现。例如,在另一些示例中,可以利用用户态驱动器将数据变化信息发送至图形处理客户端。当用户态驱动器得到图形处理命令包并将其写入暂存空间时,用户态驱动器同步向图形处理客户端发送数据变化信息,以通知图形处理客户端。这种方式的响应时间短,性能好。例如,在再一些示例中,可以使虚拟驱动器轮询用于存储图形处理命令包的暂存空间(例如共享内存或缓冲区),当轮询查到图形处理命令包之后,将图形处理命令包通过图形处理客户端转发到远端的设备。

例如,虚拟驱动器可以与图形处理客户端交互、通讯。当图形处理客户端以用户态的方式实现时,虚拟驱动器可以通过UK通信协议与图形处理客户端通讯。当图形处理客户端以内核态的方式实现时,虚拟驱动器与图形处理客户端可以合并在同一个内核模块直接调用。

图5为本公开一些实施例提供的另一种图形处理器资源的使用方法的流程示意图。如图5所示,在一些示例中,该图形处理器资源的使用方法还可以进一步包括步骤S18和步骤S19。

步骤S18:利用用户态驱动器向虚拟驱动器发送资源请求,以对虚拟设备文件进行资源配置;

步骤S19:对虚拟设备文件进行初始化和/或资源配置。

例如,在步骤S18中,在使用图形处理器资源之前或在使用图形处理器资源的过程中,若需要对其进行资源配置,可以利用用户态驱动器向虚拟驱动器发送资源请求,从而使虚拟驱动器响应于该资源请求而进行资源配置。例如,虚拟驱动器运行在操作系统中。

例如,在步骤S19中,当虚拟驱动器接收到资源请求后,可以对虚拟设备文件进行初始化和/或资源配置。例如,该资源请求还可以包含初始化命令,从而可以对虚拟设备文件进行初始化。

例如,对虚拟设备文件进行初始化和/或资源配置可以包括:将物理图形处理器的内存映射到虚拟设备文件。也即是,虚拟设备文件提供表示虚拟图形处理器的资源和接口,其并不具有物理的资源,因此需要利用虚拟驱动器将远程的物理图形处理器的内存映射到本地的虚拟设备文件,以使虚拟设备文件可以向应用程序提供可用的资源,从而便于应用程序使用该虚拟设备文件。

例如,在图1所示的系统中,可以利用第一装置110中的虚拟驱动器将第二装置120中的物理图形处理器的内存映射到第一装置110中的虚拟设备文件,从而使第一装置110中的虚拟设备文件与第二装置120中的物理图形处理器具有相同或相似的规格,以便于第一装置110中运行的应用程序通过虚拟设备文件使用物理图形处理器的资源。

图6为图5中步骤S19的流程示意图。如图6所示,在一些示例中,上述步骤S19可以进一步包括如下操作。

步骤S191:利用虚拟驱动器将对应于虚拟设备文件的管理命令包发送至图形处理客户端,其中,管理命令包配置为可被对应于虚拟设备文件的物理图形处理器执行,以完成执行初始化和/或资源配置的操作;

步骤S192:利用图形处理客户端发送包含管理命令包的信息至远程的图形处理服务器;

步骤S193:利用图形处理客户端接收并解析包含管理结果的信息,以得到管理结果,并将管理结果发送至虚拟驱动器,以实现对虚拟设备文件的初始化和/或资源配置。

例如,在步骤S191中,管理命令包配置为可被对应于虚拟设备文件的物理图形处理器执行,以完成执行初始化和/或资源配置的操作。也即是,管理命令包与前述的图形处理命令包均为可被图形处理器直接执行的命令包,都采用与图形处理器匹配的数据结构进行封装,无需在软件层面进行解析,可以直接被图形处理器执行。管理命令包与前述的图形处理命令包的区别在于:管理命令包被图形处理器执行后可实现初始化和/或资源配置,而前述的图形处理命令包被图形处理器执行后可以得到对应于应用程序的任务指令的任务结果。当虚拟驱动器接收到相应的请求(例如前述的资源请求)之后,虚拟驱动器进行相应的操作,生成与该请求对应的管理命令包,然后将管理命令包发送至图形处理客户端。

例如,利用虚拟驱动器将对应于虚拟设备文件的管理命令包发送至图形处理客户端,可以包括:通过设备文件、嵌套字或内存共享的方式,将对应于虚拟设备文件的管理命令包从虚拟驱动器传输至图形处理客户端。例如,可以通过Linux架构下的设备文件ioctl实现传输,也可以通过Linux架构下的netlink socket实现传输,还可以通过设备文件共享内存的方式实现传输,本公开的实施例对此不作限制。

例如,在步骤S192中,图形处理客户端接收到管理命令包之后,将包含管理命令包的信息发送至远程的图形处理服务器。该操作与利用图形处理客户端发送包含图形处理命令包的信息的操作基本相同,此处不再赘述。

例如,在步骤S193中,图形处理客户端接收并解析包含管理结果的信息,以得到管理结果,然后将管理结果发送至虚拟驱动器。例如,包含管理结果的信息来自远程的图形处理服务器。该操作与利用图形处理客户端接收包含任务结果的信息的操作基本相同,此处不再赘述。

由此,可以实现对虚拟设备文件的初始化和/或资源配置。例如,初始化可以指在使用虚拟设备文件之前向其写入参数、进行设置等。例如,资源配置可以指在使用虚拟设备文件之前或在使用虚拟设备文件的过程中更改其参数、调整其资源或运行方式等。当然,本公开的实施例不限于此,初始化和资源配置的具体操作可以根据实际需求而定,本公开的实施例对此不作限制。

例如,将管理结果发送至虚拟驱动器可以包括:通过设备文件、嵌套字或内存共享的方式,将管理结果从图形处理客户端传输至虚拟驱动器。例如,可以通过Linux架构下的设备文件ioctl实现传输,也可以通过Linux架构下的netlink socket实现传输,还可以通过设备文件共享内存的方式实现传输,本公开的实施例对此不作限制。

例如,在一些示例中,前述的应用程序、虚拟驱动器(以及其中运行的虚拟设备文件)、图形处理客户端部署在同一物理设备上。例如,如图1所示,应用程序、虚拟驱动器、图形处理客户端均部署在第一装置110中,第一装置110为一个独立的物理设备,例如可以为计算机、个人电脑等。

例如,在另一些示例中,前述的应用程序、虚拟驱动器(以及其中运行的虚拟设备文件)、图形处理客户端部署在同一虚拟设备上,该虚拟设备通过至少一个物理设备构建得到。例如,如图1所示,应用程序、虚拟驱动器、图形处理客户端均部署在第一装置110中,第一装置110可以为一个虚拟设备,第一装置110实际上由一个或多个物理设备构建得到。例如,第一装置110可以为多个计算机组成的集群,也可以为计算机与其他外设装置所组成的系统,本公开的实施例对此不作限制。

本公开实施例提供的图形处理器资源的使用方法提供了远程资源的使用方式,无需在本地端部署图形处理器的硬件资源,并且,通过虚拟设备文件的方式面向上层应用程序,无需在本地端创建虚拟图形处理器,具有较高的灵活性和兼容性,可以适用于多样化的远程应用场景。例如,该方法可以在非GPU场景下利用远程的GPU资源,例如在边缘推理场景下利用远程的GPU资源。

例如,本公开实施例提供的图形处理器资源的使用方法可以用于Linux架构下的远程GPU资源使用,可以在Linux架构下提供便捷、简单的远程图形处理器资源的使用。当然,本公开的实施例不限于此,该方法也可以用于其他适用的架构。

本公开至少一个实施例提供一种图形处理器资源的使用方法。该图形处理器资源的使用方法包括:利用图形处理服务端从远程的图形处理客户机接收并解析包含图形处理命令包的信息,以得到图形处理命令包,并将图形处理命令包转发至内核驱动器;利用内核驱动器驱动至少一个物理图形处理器执行图形处理命令包,以得到任务结果。图形处理命令包是基于应用程序的任务指令生成的,用于运行至少一个物理图形处理器。

图7为本公开一些实施例提供的一种图形处理器资源的使用方法的流程示意图。如图7所示,在一些实施例中,图形处理器资源的使用方法可以包括如下操作。

步骤S21:利用图形处理服务端从远程的图形处理客户机接收并解析包含图形处理命令包的信息,以得到图形处理命令包,并将图形处理命令包转发至内核驱动器;

步骤S22:利用内核驱动器驱动至少一个物理图形处理器执行图形处理命令包,以得到任务结果。

例如,该使用方法可以用于图1所示的系统的第二装置120中,由此为第一装置110提供远程图形处理器资源以供使用。

例如,在步骤S21中,利用图形处理服务端从远程的图形处理客户机接收并解析包含图形处理命令包的信息,由此可以得到图形处理命令包,并利用图形处理器资源为远程的图形处理客户机提供服务。例如,图形处理服务端可以通过读写本地的内核驱动器提供的设备节点与当前物理图形处理器交互。

例如,利用图形处理服务端从远程的图形处理客户机接收并解析包含图形处理命令包的信息,以得到图形处理命令包,并将图形处理命令包转发至内核驱动器,可以包括:基于通信协议,利用图形处理服务端从远程的图形处理客户机接收包含图形处理命令包的信息,并以对应于该通信协议的数据格式解析包含图形处理命令包的信息,以得到图形处理命令包,并将图形处理命令包转发至内核驱动器。例如,通信协议包括以太网、远程直接数据存取(RDMA)、无限带宽协议(IB)、光纤通道协议(FC)中的至少一种。需要说明的是,本公开的实施例中,通信协议不限于上文中列举的类型,还可以为其他任意适用的类型,这可以根据实际需求而定,本公开的实施例对此不作限制,只需利用该通信协议能够接收远程的图形处理客户机发送的信息即可。

例如,在图1所示的系统中,第一装置110可以为上文描述的远程的图形处理客户机,第二装置120中的图形处理服务端接收来自第一装置110的信息,该信息包括图形处理命令包,从而利用第二装置120的图形处理器资源为第一装置110提供服务。例如,根据具体的通信协议的数据格式要求,第二装置120中的图形处理服务端对从第一装置110接收到的信息进行解包、解析,从而得到封装在该信息中的图形处理命令包。利用上述方式可以使用第二装置120提供的图形处理器资源为远程的第一装置110提供服务。

在本公开的实施例中,图形处理命令包是基于应用程序的任务指令生成的,用于运行至少一个物理图形处理器。例如,在图1所示的系统中,图形处理命令包是在第一装置110中生成的,并且是基于运行在第一装置110中的应用程序的任务指令生成的,该任务指令是指示需要使用图形处理器资源进行处理的任务指令,该任务指令需要由图形处理器执行。第二装置120得到该图形处理命令包之后,可以利用该图形处理命令包运行第二装置120中的一个或多个物理图形处理器,从而得到与上述任务指令对应的任务结果。

例如,在步骤S22中,内核驱动器用于管理和驱动至少一个物理图形处理器,因此,可以利用内核驱动器驱动物理图形处理器执行图形处理命令包,从而得到任务结果,任务结果例如是指物理图形处理器执行图形处理命令包所得到的结果。

例如,在一些示例中,至少一个物理图形处理器包括多个物理图形处理器,每个物理图形处理器为可独立执行图形处理的硬件模块。利用内核驱动器驱动至少一个物理图形处理器执行图形处理命令包,以得到任务结果,可以包括:根据任务指令的特征和/或多个物理图形处理器的资源使用状态,利用内核驱动器驱动多个物理图形处理器中至少之一执行图形处理命令包,以得到任务结果。在该情形中,内核驱动器对多个物理图形处理器进行统一管理,并根据预设规则将图形处理命令包发送至某个或某些物理图形处理器来执行。例如,被选择来执行图形处理命令包的物理图形处理器具有可执行图形处理命令包的特性和/或空闲资源。这里,“可执行图形处理命令包的特性”是指该物理图形处理器的硬件或软件配置适用于该图形处理命令包对应的任务类型或任务需求;“空闲资源”是指该物理图形处理器还未满负荷运行,仍然具有一定的运算能力来执行新的图形处理命令包。

例如,预设规则可以基于任务指令的特征和/或多个物理图形处理器的资源使用状态来确定,可以是设计人员预先设置的,也可以在运行过程中动态调整以实现动态资源分配,本公开的实施例对此不作限制。例如,在一些示例中,可以将图形处理命令包发送至空闲的物理图形处理器,或者,可以将图形处理命令包发送至预先指定的专门针对对应的任务类型进行处理的物理图形处理器,还可以采用其他适用的规则来选择物理图形处理器,这可以根据实际需求而定。由此,通过内核驱动器的管理和调配,可以调节不同物理图形处理器的工作负载,提高整体处理效率,降低整体功耗,最大限度地利用图形处理器资源。

例如,在一些示例中,图形处理服务端和内核驱动器可以共同作为负载均衡器,可以根据工作负载将图形处理命令包路由到不同的或指定的物理图形处理器模型或物理图形处理器资源池,从而达到负载均衡。

例如,在一些示例中,图7所示的方法还可以进一步包括步骤S23和步骤S24。

步骤S23:利用内核驱动器将任务结果转发给图形处理服务端;

步骤S24:利用图形处理服务端发送包含任务结果的信息至远程的图形处理客户机。

例如,在步骤S23中,当物理图形处理器在内核驱动器的驱动下执行图形处理命令包之后,可以得到任务结果,因此,内核驱动器将任务结果转发给图形处理服务端。

例如,在步骤S24中,图形处理服务端接收到内核驱动器转发的任务结果后,将包含任务结果的信息发送至远程的图形处理客户机。

例如,在图1所示的系统中,第一装置110可以为上文描述的远程的图形处理客户机,第二装置120中的图形处理服务端将包含任务结果的信息发送至第一装置110。例如,根据具体的通信协议的数据格式要求,第二装置120中的图形处理服务端对任务结果进行打包、封装,将任务结果封装在所得到的信息中,然后基于通信协议将所得到的信息发送至第一装置110,由此实现任务结果的传输。例如,应用程序运行在第一装置110中,利用上述方式可以使用第二装置120提供的图形处理器资源为第一装置110中的应用程序服务,从而实现远程图形处理器资源的使用。

图8为本公开一些实施例提供的另一种图形处理器资源的使用方法的流程示意图。如图8所示,在该示例中,除了进一步包括步骤S251和步骤S252,该图形处理器资源的使用方法与图7所示的图形处理器资源的使用方法基本相同,相同的步骤不再赘述。

步骤S251:利用内核驱动器管理多个物理图形处理器的资源,将多个物理图形处理器各自的资源整合为单一资源,以供应用程序使用;

步骤S252:将单一的可独立执行图形处理的硬件模块划分为至少一个细粒度部分,并将至少一个细粒度部分分别作为至少一个物理图形处理器。

例如,在步骤S251中,在一些示例中,可以利用内核驱动器管理多个物理图形处理器的资源,并将多个物理图形处理器各自的资源整合为单一资源。也即是,在远程的图形处理客户机中的虚拟设备文件对应于本地的多个物理图形处理器,这些物理图形处理器的内存均映射到该虚拟设备文件,因此,呈现给用户的资源是该虚拟设备文件的单一资源,但是实际上对应于该虚拟设备文件的物理图形处理器资源为多个。由此,可以便于应用程序使用,能够提高计算能力和处理效率。

例如,在步骤S252中,在另一些示例中,可以将单一的可独立执行图形处理的硬件模块划分为至少一个细粒度部分,例如划分为多个细粒度部分,并将每个细粒度部分作为一个物理图形处理器。也即是,在远程的图形处理客户机中的虚拟设备文件对应的硬件资源为本地的硬件模块的一个细粒度部分,而并非该硬件模块的全部资源。例如,可以根据远程的图形处理客户机的请求,根据其请求的资源(例如设备内存及计算核的数量),将相应的细粒度部分的资源呈现给远程的图形处理客户机中的虚拟设备文件。由此,可以在远程的图形处理客户机的虚拟驱动器中运行多个虚拟设备文件,而无需增加本地的硬件模块,可以提高应用灵活性,满足多样化使用需求,降低硬件成本。

需要说明的是,上述步骤S251和步骤S252可以择一执行,也可以针对不同的硬件模块分别执行,这可以根据实际需求而定,本公开的实施例对此不作限制。

图9为本公开一些实施例提供的另一种图形处理器资源的使用方法的流程示意图。如图9所示,在一些示例中,该图形处理器资源的使用方法还可以进一步包括步骤S26-S29。

步骤S26:利用图形处理服务端从远程的图形处理客户机接收并解析包含管理命令包的信息,以得到管理命令包,并将管理命令包转发至内核驱动器;

步骤S27:利用内核驱动器驱动至少一个物理图形处理器执行管理命令包,以得到管理结果;

步骤S28:利用内核驱动器将管理结果转发给图形处理服务端;

步骤S29:利用图形处理服务端发送包含管理结果的信息至远程的图形处理客户机。

例如,在步骤S26中,管理命令包配置为可被物理图形处理器执行,以完成对应的虚拟设备文件的初始化和/或资源配置的操作。也即是,管理命令包与前述的图形处理命令包均为可被图形处理器直接执行的命令包,都采用与图形处理器匹配的数据结构进行封装,无需在软件层面进行解析,可以直接被图形处理器执行。管理命令包与前述的图形处理命令包的区别在于:管理命令包被图形处理器执行后可实现初始化和/或资源配置,而前述的图形处理命令包被图形处理器执行后可以得到对应于应用程序的任务指令的任务结果。当接收到包含管理命令包的信息后,可以进行解析以得到管理命令包,然后将管理命令包转发至内核驱动器。

例如,在步骤S27中,利用内核驱动器驱动至少一个物理图形处理器执行管理命令包,以得到管理结果。例如,管理结果为物理图形处理器执行管理命令包后所得到的结果。该操作与利用内核驱动器驱动物理图形处理器执行图形处理命令包的操作基本相同,此处不再赘述。

例如,在步骤S28中,物理图形处理器执行管理命令包可以得到管理结果,内核驱动器将该管理结果转发给图形处理服务端。该操作与利用内核驱动器将任务结果转发给图形处理服务端的操作基本相同,此处不再赘述。

例如,在步骤S29中,图形处理服务端将包含管理结果的信息发送至远程的图形处理客户机。该操作与利用图形处理服务端发送包含任务结果的信息的操作基本相同,此处不再赘述。

本公开至少一个实施例还提供一种图形处理器资源的使用方法。图10为本公开一些实施例提供的另一种图形处理器资源的使用方法的流程示意图。如图10所示,在一些实施例中,图形处理器资源的使用方法可以包括如下操作。

步骤S30:根据运行在虚拟驱动器中的虚拟设备文件,获取暂存空间的使用信息,其中,虚拟驱动器运行在操作系统中;

步骤S31:基于应用程序的任务指令,生成图形处理命令包;

步骤S32:根据使用信息,将图形处理命令包写入暂存空间;

步骤S33:利用图形处理客户端从暂存空间获取图形处理命令包,并将包含图形处理命令包的信息发送至图形处理服务端;

步骤S34:利用图形处理服务端接收并解析包含图形处理命令包的信息,以得到图形处理命令包,并将图形处理命令包转发至内核驱动器;

步骤S35:利用内核驱动器驱动至少一个物理图形处理器执行图形处理命令包,以得到任务结果。

例如,上述图形处理客户端、上述操作系统、上述应用程序部署在图形处理客户机上,图形处理服务端部署在图形处理服务器上,图形处理客户机与图形处理服务器远程连接。例如,在图1所示的系统中,第一装置110可以为图形处理客户机,第二装置120可以为图形处理服务器,第一装置110与第二装置120通过通信网络远程连接。

上述步骤S30-S33与图2中所示的步骤S11-S14基本相同,上述步骤S34-S35与图7中所示的步骤S21-S22基本相同,相关说明可参考前述内容,此处不再赘述。

在本公开的实施例中,通过图形处理客户机与图形处理服务器之间的交互和配合,可以提供远程资源的使用方式,实现半虚拟化的远程GPU共享,无需在本地端部署图形处理器的硬件资源。并且,通过虚拟设备文件的方式面向上层应用程序,无需在本地端创建虚拟图形处理器,具有较高的灵活性和兼容性,可以适用于多样化的远程应用场景。通过利用上层应用程序使图形处理器的访问透明化,无需对图形处理器用户态运行库做任何修改,更改等级较低,可以解决版本兼容等问题。例如,在一些实施例中,该图形处理器资源的使用方法可以用于Linux架构下的远程资源使用,可以在Linux架构下提供便捷、简单的远程图形处理器资源的使用。

图11为本公开一些实施例提供的另一种图形处理器资源的使用方法的流程示意图。如图11所示,在该示例中,除了进一步包括步骤S36-S39,该图形处理器资源的使用方法与图10中所示的图形处理器资源的使用方法基本相同,相同的步骤不再赘述。

步骤S36:利用内核驱动器将任务结果转发给图形处理服务端;

步骤S37:利用图形处理服务端发送包含任务结果的信息至图形处理客户端;

步骤S38:利用图形处理客户端接收并解析包含任务结果的信息,以得到任务结果,并将任务结果写入暂存空间;

步骤S39:利用用户态驱动器从暂存空间中读取任务结果,并利用用户态驱动器向应用程序返回任务结果。

例如,上述用户态驱动器运行在图形处理器用户态运行库中。

上述步骤S36-S37与图7中所示的步骤S23-S24基本相同,上述步骤S38-S39与图4中所示的步骤S15-S16基本相同,相关说明可参考前述内容,此处不再赘述。

图12为本公开一些实施例提供的一种图形处理器资源的使用方法的工作流程图。下面结合图12对执行图形处理器资源的使用方法的具体工作流程进行简要说明。

如图12所示,图形处理器用户态运行库、虚拟驱动器、图形处理客户端部署在一个设备中,图形处理器服务端和内核驱动器部署在另一个设备中,这两个设备远程连接。

首先,运行在图形处理器用户态运行库的用户态驱动器向虚拟图形处理器中运行的虚拟设备文件发送GPU命令,从而获知暂存空间的使用信息(例如共享内存的地址信息)。接着,用户态驱动器将图形处理命令包(GPU命令包)写入暂存空间,图形处理客户端从暂存空间获取GPU命令包,由此通过暂存空间实现GPU命令包的传递。图形处理客户端将GPU命令包按照新的协议打包并发送至远端的图形处理服务端。

接着,对于图形处理服务端而言,接收并解析来自远端的新的命令包,并将远端发送的GPU命令包发送给本地的内核驱动器。内核驱动器驱动物理图形处理器执行GPU命令包,并将任务结果返回至图形处理服务端。图形处理服务端将内核驱动器对该命令进行执行的任务结果发送至远端的图形处理客户端。

然后,对于图形处理客户端而言,接收来自远端的信息,并将来自远端的图形处理服务端的任务结果写入暂存空间,图形处理器用户态运行库中的用户态驱动器从暂存空间获取任务结果,由此通过暂存空间实现任务结果的传递,将具体的命令执行的任务结果返回给用户态驱动器,以便于用户态驱动器向应用程序返回任务结果。

此外,在工作之前,还可以进行初始化并分配资源。例如,如图12所示,运行在图形处理器用户态运行库的用户态驱动器向虚拟驱动器发送资源请求(例如内存分配请求),虚拟驱动器对虚拟设备文件进行初始化,并分配资源。例如,在进行初始化并分配资源时,还需要图形处理客户端、远程的图形处理服务端及内核驱动器的配合。

需要说明的是,本公开的实施例中,图形处理器资源的使用方法还可以包括更多的步骤,而不限于上文描述的步骤。各个步骤的执行顺序不受限制,可以根据实际需求而定。

本公开至少一个实施例还提供一种图形处理器资源的使用装置。该图形处理器资源的使用装置包括:用户态驱动器、虚拟驱动器和图形处理客户端。虚拟驱动器中运行有虚拟设备文件。用户态驱动器配置为根据虚拟设备文件,获取暂存空间的使用信息,基于应用程序的任务指令,生成图形处理命令包,并且根据使用信息,将图形处理命令包写入暂存空间。用户态驱动器运行在图形处理器用户态运行库中。图形处理客户端配置为从暂存空间获取图形处理命令包,并将包含图形处理命令包的信息发送至远程的图形处理服务器。图形处理命令包配置为可被对应于虚拟设备文件的物理图形处理器执行,以完成应用程序的任务指令指示的任务。

该图形处理器资源的使用装置提供了远程资源的使用方式,无需在本地端部署图形处理器的硬件资源,无需在本地端创建虚拟图形处理器,具有较高的灵活性和兼容性,可以适用于多样化的远程应用场景。例如,在一些实施例中,该图形处理器资源的使用装置可以用于Linux架构下的远程资源使用,可以在Linux架构下提供便捷、简单的远程图形处理器资源的使用。

图13为本公开一些实施例提供的一种图形处理器资源的使用装置的示意框图。如图13所示,图形处理器资源的使用装置40包括用户态驱动器41、虚拟驱动器42和图形处理客户端43。虚拟驱动器42中运行有虚拟设备文件421。例如,图形处理器资源的使用装置40可以为图1所示的第一装置110。

用户态驱动器41配置为根据虚拟设备文件421,获取暂存空间的使用信息,基于应用程序的任务指令,生成图形处理命令包,并且根据使用信息,将图形处理命令包写入暂存空间。用户态驱动器41运行在图形处理器用户态运行库中。例如,用户态驱动器41可以执行如图2所示的图形处理器资源的使用方法的步骤S11-S13。

图形处理客户端43配置为从暂存空间获取图形处理命令包,并将包含图形处理命令包的信息发送至远程的图形处理服务器。图形处理命令包配置为可被对应于虚拟设备文件421的物理图形处理器执行,以完成应用程序的任务指令指示的任务。例如,图形处理客户端43可以执行如图2所示的图形处理器资源的使用方法的步骤S14。

例如,用户态驱动器41、虚拟驱动器42和图形处理客户端43可以为硬件、软件、固件以及它们的任意可行的组合。例如,用户态驱动器41、虚拟驱动器42和图形处理客户端43可以为专用或通用的电路、芯片或装置等,也可以为处理器和存储器的结合。关于用户态驱动器41、虚拟驱动器42和图形处理客户端43的具体实现形式,本公开的实施例对此不作限制。

需要说明的是,本公开的实施例中,图形处理器资源的使用装置40的各个单元与前述的图形处理器资源的使用方法的各个步骤对应,关于该图形处理器资源的使用装置40的具体功能可以参考上文中图形处理器资源的使用方法的相关描述,此处不再赘述。图13所示的图形处理器资源的使用装置40的组件和结构只是示例性的,而非限制性的,根据需要,该图形处理器资源的使用装置40还可以包括其他组件和结构。

本公开至少一个实施例还提供一种图形处理器资源的使用装置。该图形处理器资源的使用装置包括:图形处理服务端、内核驱动器和至少一个物理图形处理器。图形处理服务端配置为从远程的图形处理客户机接收并解析包含图形处理命令包的信息,以得到图形处理命令包,并将图形处理命令包转发至内核驱动器。内核驱动器配置为驱动至少一个物理图形处理器执行图形处理命令包,以得到任务结果。图形处理命令包是基于应用程序的任务指令生成的,用于运行至少一个物理图形处理器。

图14为本公开一些实施例提供的另一种图形处理器资源的使用装置的示意框图。如图14所示,图形处理器资源的使用装置50包括图形处理服务端51、内核驱动器52和至少一个物理图形处理器53。例如,图形处理器资源的使用装置50可以为图1所示的第二装置120。

图形处理服务端51配置为从远程的图形处理客户机接收并解析包含图形处理命令包的信息,以得到图形处理命令包,并将图形处理命令包转发至内核驱动器52。例如,图形处理服务端51可以执行如图7所示的图形处理器资源的使用方法的步骤S21。

内核驱动器52配置为驱动至少一个物理图形处理器53执行图形处理命令包,以得到任务结果。例如,内核驱动器52可以执行如图7所示的图形处理器资源的使用方法的步骤S22。

例如,图形处理命令包是基于应用程序的任务指令生成的,用于运行至少一个物理图形处理器53。

例如,图形处理服务端51、内核驱动器52和物理图形处理器53可以为硬件、软件、固件以及它们的任意可行的组合。例如,图形处理服务端51、内核驱动器52和物理图形处理器53可以为专用或通用的电路、芯片或装置等,也可以为处理器和存储器的结合。关于图形处理服务端51、内核驱动器52和物理图形处理器53的具体实现形式,本公开的实施例对此不作限制。

需要说明的是,本公开的实施例中,图形处理器资源的使用装置50的各个单元与前述的图形处理器资源的使用方法的各个步骤对应,关于该图形处理器资源的使用装置50的具体功能可以参考上文中图形处理器资源的使用方法的相关描述,此处不再赘述。图14所示的图形处理器资源的使用装置50的组件和结构只是示例性的,而非限制性的,根据需要,该图形处理器资源的使用装置50还可以包括其他组件和结构。

本公开至少一个实施例还提供一种电子设备。该电子设备提供了远程资源的使用方式,无需在本地端部署图形处理器的硬件资源,无需在本地端创建虚拟图形处理器,具有较高的灵活性和兼容性,可以适用于多样化的远程应用场景。例如,在一些实施例中,该电子设备可以用于Linux架构下的远程资源使用,可以在Linux架构下提供便捷、简单的远程图形处理器资源的使用。

图15为本公开一些实施例提供的一种电子设备的示意框图。如图15所示,电子设备60包括图形处理器资源的使用装置61。例如,图形处理器资源的使用装置61可以为图13所示的图形处理器资源的使用装置40和/或图14所示的图形处理器资源的使用装置50。关于该电子设备60的相关说明可参考上文中关于图形处理器资源的使用装置40/50的描述,此处不再赘述。

有以下几点需要说明:

(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。

(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。

以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。

34页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种首饰图像美化方法及终端

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!