图形处理器资源的使用方法及装置、电子设备
技术领域
本公开的实施例涉及一种图形处理器资源的使用方法及装置、电子设备。
背景技术
随着互联网技术、大数据技术、机器学习技术等新一代技术的发展,数据计算的需求日益增大。由于浮点数运算的高计算能力与数据并行的优势,图形处理器(GraphicsProcessing Unit,GPU)在高性能计算与云计算领域发挥着日益重要的作用。图形处理器又称为显示核心、视觉处理器或显示芯片,是一种用于做图像和图形相关运算工作的微处理器,可以用于加速计算、图像与图形数据处理等,具有广阔的应用前景。
发明内容
本公开至少一个实施例提供一种图形处理器资源的使用方法,包括:基于应用程序的任务指令,生成图形处理命令包;利用虚拟图形处理器接收所述图形处理命令包,并将所述图形处理命令包转发至图形处理客户端;利用所述图形处理客户端发送包含所述图形处理命令包的信息至远程的图形处理服务器;其中,所述图形处理命令包配置为可被对应于所述虚拟图形处理器的物理图形处理器执行,以完成所述应用程序的任务指令指示的任务。
例如,在本公开一实施例提供的方法中,基于所述应用程序的任务指令,生成所述图形处理命令包,包括:基于所述应用程序的任务指令,利用用户态驱动器对所述任务指令进行格式组织,生成所述图形处理命令包;其中,所述用户态驱动器运行在图形处理器用户态运行库中。
例如,在本公开一实施例提供的方法中,所述虚拟图形处理器以用户态的方式运行,利用所述虚拟图形处理器接收所述图形处理命令包,并将所述图形处理命令包转发至所述图形处理客户端,包括:利用所述虚拟图形处理器接收所述图形处理命令包,并通过共享内存或套接字的方式将所述图形处理命令包转发至所述图形处理客户端。
例如,在本公开一实施例提供的方法中,所述虚拟图形处理器以内核态的方式运行,利用所述虚拟图形处理器接收所述图形处理命令包,并将所述图形处理命令包转发至所述图形处理客户端,包括:利用所述虚拟图形处理器接收所述图形处理命令包,并通过读写设备文件的方式将所述图形处理命令包转发至所述图形处理客户端。
例如,在本公开一实施例提供的方法中,利用所述图形处理客户端发送包含所述图形处理命令包的信息至所述远程的图形处理服务器,包括:基于通信协议,利用所述图形处理客户端以对应于所述通信协议的数据格式将包含所述图形处理命令包的信息发送至所述远程的图形处理服务器;其中,所述通信协议包括以太网、远程直接数据存取、无限带宽协议、光纤通道协议中的至少一种。
例如,本公开一实施例提供的方法还包括:利用所述图形处理客户端接收并解析包含任务结果的信息,以得到所述任务结果,并将所述任务结果转发至所述虚拟图形处理器,其中,所述包含任务结果的信息来自所述远程的图形处理服务器;利用所述虚拟图形处理器将所述任务结果转发至所述用户态驱动器,并利用所述用户态驱动器向所述应用程序返回所述任务结果。
例如,在本公开一实施例提供的方法中,所述图形处理客户端对应于多个虚拟图形处理器,所述图形处理客户端配置为分别接收来自不同虚拟图形处理器的多个图形处理命令包,并将多个任务结果分别发送至对应的虚拟图形处理器,所述多个任务结果与所述多个图形处理命令包一一对应。
例如,本公开一实施例提供的方法还包括:利用虚拟驱动器对所述虚拟图形处理器进行初始化和/或资源配置;其中,所述虚拟驱动器运行在操作系统中。
例如,在本公开一实施例提供的方法中,利用所述虚拟驱动器对所述虚拟图形处理器进行初始化和/或资源配置,包括:利用所述虚拟驱动器,将所述物理图形处理器的内存映射到所述虚拟图形处理器。
例如,在本公开一实施例提供的方法中,利用所述虚拟驱动器对所述虚拟图形处理器进行初始化和/或资源配置,包括:利用所述虚拟驱动器将管理命令包发送至所述虚拟图形处理器,其中,所述管理命令包配置为可被对应于所述虚拟图形处理器的物理图形处理器执行,以完成执行初始化和/或资源配置的操作;利用所述虚拟图形处理器接收所述管理命令包,并将所述管理命令包转发至所述图形处理客户端;利用所述图形处理客户端发送包含所述管理命令包的信息至所述远程的图形处理服务器;利用所述图形处理客户端接收并解析包含管理结果的信息,以得到所述管理结果,并将所述管理结果转发至所述虚拟图形处理器,其中,所述包含管理结果的信息来自所述远程的图形处理服务器;利用所述虚拟图形处理器将所述管理结果返回至所述虚拟驱动器,以实现对所述虚拟图形处理器的初始化和/或资源配置。
例如,本公开一实施例提供的方法还包括:利用所述用户态驱动器向所述虚拟驱动器发送资源请求,以对所述虚拟图形处理器进行资源配置。
例如,在本公开一实施例提供的方法中,所述应用程序、所述虚拟图形处理器、所述图形处理客户端部署在同一物理设备上,或者所述应用程序、所述虚拟图形处理器、所述图形处理客户端部署在同一虚拟设备上,所述虚拟设备通过至少一个物理设备构建得到。
本公开至少一个实施例提供一种图形处理器资源的使用方法,包括:利用图形处理服务端从远程的图形处理客户机接收并解析包含图形处理命令包的信息,以得到所述图形处理命令包,并将所述图形处理命令包转发至内核驱动器;利用所述内核驱动器驱动至少一个物理图形处理器执行所述图形处理命令包,以得到任务结果;其中,所述图形处理命令包是基于应用程序的任务指令生成的,用于运行所述至少一个物理图形处理器。
例如,本公开一实施例提供的方法还包括:利用所述内核驱动器将所述任务结果转发给所述图形处理服务端;利用所述图形处理服务端发送包含所述任务结果的信息至所述远程的图形处理客户机。
例如,在本公开一实施例提供的方法中,所述至少一个物理图形处理器包括多个物理图形处理器,每个物理图形处理器为可独立执行图形处理的硬件模块;利用所述内核驱动器驱动所述至少一个物理图形处理器执行所述图形处理命令包,以得到所述任务结果,包括:根据所述任务指令的特征和/或所述多个物理图形处理器的资源使用状态,利用所述内核驱动器驱动所述多个物理图形处理器中至少之一执行所述图形处理命令包,以得到所述任务结果;其中,执行所述图形处理命令包的物理图形处理器具有可执行所述图形处理命令包的特性和/或空闲资源。
例如,本公开一实施例提供的方法还包括:利用所述内核驱动器管理所述多个物理图形处理器的资源,将所述多个物理图形处理器各自的资源整合为单一资源,以供所述应用程序使用。
例如,本公开一实施例提供的方法还包括:将单一的可独立执行图形处理的硬件模块划分为至少一个细粒度部分,并将所述至少一个细粒度部分分别作为所述至少一个物理图形处理器。
例如,在本公开一实施例提供的方法中,利用所述图形处理服务端从所述远程的图形处理客户机接收并解析包含所述图形处理命令包的信息,以得到所述图形处理命令包,并将所述图形处理命令包转发至所述内核驱动器,包括:基于通信协议,利用所述图形处理服务端从所述远程的图形处理客户机接收包含所述图形处理命令包的信息,并以对应于所述通信协议的数据格式解析包含所述图形处理命令包的信息,以得到所述图形处理命令包,并将所述图形处理命令包转发至所述内核驱动器;其中,所述通信协议包括以太网、远程直接数据存取、无限带宽协议、光纤通道协议中的至少一种。
例如,本公开一实施例提供的方法还包括:利用所述图形处理服务端从所述远程的图形处理客户机接收并解析包含管理命令包的信息,以得到所述管理命令包,并将所述管理命令包转发至所述内核驱动器;利用所述内核驱动器驱动所述至少一个物理图形处理器执行所述管理命令包,以得到管理结果;利用所述内核驱动器将所述管理结果转发给所述图形处理服务端;利用所述图形处理服务端发送包含所述管理结果的信息至所述远程的图形处理客户机。
本公开至少一个实施例提供一种图形处理器资源的使用方法,包括:基于应用程序的任务指令,生成图形处理命令包;利用虚拟图形处理器接收所述图形处理命令包,并将所述图形处理命令包转发至图形处理客户端;利用所述图形处理客户端发送包含所述图形处理命令包的信息至图形处理服务端;利用所述图形处理服务端接收并解析包含所述图形处理命令包的信息,以得到所述图形处理命令包,并将所述图形处理命令包转发至内核驱动器;利用所述内核驱动器驱动至少一个物理图形处理器执行所述图形处理命令包,以得到任务结果;其中,所述图形处理客户端部署在图形处理客户机上,所述图形处理服务端部署在图形处理服务器上,所述图形处理客户机与所述图形处理服务器远程连接。
例如,本公开一实施例提供的方法还包括:利用所述内核驱动器将所述任务结果转发给所述图形处理服务端;利用所述图形处理服务端发送包含所述任务结果的信息至所述图形处理客户端;利用所述图形处理客户端接收并解析包含所述任务结果的信息,以得到所述任务结果,并将所述任务结果转发至所述虚拟图形处理器;利用所述虚拟图形处理器将所述任务结果转发至用户态驱动器,并利用所述用户态驱动器向所述应用程序返回所述任务结果;其中,所述用户态驱动器运行在图形处理器用户态运行库中。
本公开至少一个实施例提供一种图形处理器资源的使用装置,包括:用户态驱动器、虚拟图形处理器和图形处理客户端;其中,所述用户态驱动器配置为基于应用程序的任务指令,生成图形处理命令包,其中,所述用户态驱动器运行在图形处理器用户态运行库中;所述虚拟图形处理器配置为接收所述图形处理命令包,并将所述图形处理命令包转发至所述图形处理客户端;所述图形处理客户端配置为发送包含所述图形处理命令包的信息至远程的图形处理服务器;所述图形处理命令包配置为可被对应于所述虚拟图形处理器的物理图形处理器执行,以完成所述应用程序的任务指令指示的任务。
本公开至少一个实施例提供一种图形处理器资源的使用装置,包括:图形处理服务端、内核驱动器和至少一个物理图形处理器;其中,所述图形处理服务端配置为从远程的图形处理客户机接收并解析包含图形处理命令包的信息,以得到所述图形处理命令包,并将所述图形处理命令包转发至所述内核驱动器;所述内核驱动器配置为驱动所述至少一个物理图形处理器执行所述图形处理命令包,以得到任务结果;所述图形处理命令包是基于应用程序的任务指令生成的,用于运行所述至少一个物理图形处理器。
本公开至少一个实施例提供一种电子设备,包括如本公开任一实施例提供的图形处理器资源的使用装置。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1为本公开一些实施例提供的一种应用图形处理器资源的使用方法的系统的示意图;
图2为本公开一些实施例提供的一种图形处理器资源的使用方法的流程示意图;
图3为本公开一些实施例提供的另一种图形处理器资源的使用方法的流程示意图;
图4为本公开一些实施例提供的另一种图形处理器资源的使用方法的流程示意图;
图5为图4中步骤S17的流程示意图;
图6为本公开一些实施例提供的一种图形处理器资源的使用方法的流程示意图;
图7为本公开一些实施例提供的另一种图形处理器资源的使用方法的流程示意图;
图8为本公开一些实施例提供的另一种图形处理器资源的使用方法的流程示意图;
图9为本公开一些实施例提供的另一种图形处理器资源的使用方法的流程示意图;
图10为本公开一些实施例提供的另一种图形处理器资源的使用方法的流程示意图;
图11为本公开一些实施例提供的另一种图形处理器资源的使用方法的流程示意图;
图12为本公开一些实施例提供的一种图形处理器资源的使用方法的工作流程图;
图13为本公开一些实施例提供的一种图形处理器资源的使用装置的示意框图;
图14为本公开一些实施例提供的另一种图形处理器资源的使用装置的示意框图;以及
图15为本公开一些实施例提供的一种电子设备的示意框图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
随着图形处理器性能的不断提升,其大体积、高功耗带来的高硬件成本已经成为影响其使用的一大难题。因此,有必要采用虚拟化技术来利用图形处理器进行数据计算。虚拟化技术通过各类方法实现对系统资源的复用,将有限的资源高效地提供给多个用户使用,从而提高系统的资源使用率并降低单个用户的成本。然而,针对图形处理器的虚拟化技术面临诸多问题,例如兼容性较差、需要在本地部署硬件资源等,这些问题严重阻碍了针对图形处理器的虚拟化技术,无法满足当前日益增长的应用需求。
本公开至少一个实施例提供一种图形处理器资源的使用方法及装置、电子设备。该图形处理器资源的使用方法提供了远程资源的使用方式,无需在本地端部署图形处理器的硬件资源,具有较高的灵活性和兼容性,可以适用于多样化的远程应用场景。
下面,将参考附图详细地说明本公开的实施例。应当注意的是,不同的附图中相同的附图标记将用于指代已描述的相同的元件。
本公开至少一个实施例提供一种图形处理器资源的使用方法。该图形处理器资源的使用方法包括:基于应用程序的任务指令,生成图形处理命令包;利用虚拟图形处理器接收图形处理命令包,并将图形处理命令包转发至图形处理客户端;利用图形处理客户端发送包含图形处理命令包的信息至远程的图形处理服务器。图形处理命令包配置为可被对应于虚拟图形处理器的物理图形处理器执行,以完成应用程序的任务指令指示的任务。
图1为本公开一些实施例提供的一种应用图形处理器资源的使用方法的系统的示意图,本公开实施例提供的图形处理器资源的使用方法可以应用于该系统,以实现远程图形处理器资源的使用。
如图1所示,第一装置110和第二装置120例如为两个独立的设备,分别部署在不同的地点,两者通过通信网络进行数据传输。又例如,第一装置110可以为虚拟装置,例如虚拟机或云端的容器等。相对于第一装置110而言,第二装置120为远程设备;相对于第二装置120而言,第一装置110为远程设备。
例如,第一装置110可以包括多个层次的硬件/软件资源。例如,第一装置110可以包括图形处理器用户态运行库(也即GPU Runtime Libs)、操作系统、虚拟硬件和管理程序。例如,虚拟硬件中运行有虚拟图形处理器(例如vGPU),操作系统中运行有虚拟驱动器,该虚拟驱动器对应驱动虚拟图形处理器。例如,虚拟图形处理器基于virtio协议创建,负责拦截来自上层的图形处理命令包(GPU Packet),并将来自图形处理客户端的响应转发给上层软件。例如,管理程序中运行有图形处理客户端,该图形处理客户端可以通过通信网络与其他装置传输数据。例如,图形处理器用户态运行库中运行有用户态驱动器,该用户态驱动器配置为处理与图形处理器有关的任务指令,以生成图形处理命令包。例如,第一装置110还可以包括图形处理器程序模型、通用图形处理器(General-purpose Computing On GraphicsProcessing Units,GPGPU)应用、图形应用、多媒体应用等,由此实现多种图形处理功能。
第二装置120可以包括多个层次的硬件/软件资源。例如,第二装置120可以包括图形处理服务端、内核驱动器、至少一个物理图形处理器。图形处理服务端可以通过通信网络与其他装置传输数据。内核驱动器用于驱动、管理至少一个物理图形处理器。例如,物理图形处理器可以为一个或多个,本公开的实施例对此不作限制。需要说明的是,物理图形处理器可以为可独立执行图形处理的硬件模块,也可以为可独立执行图形处理的硬件模块的一个细粒度部分,这可以根据实际需求而定,本公开的实施例对此不作限制。例如,第二装置120还可以包括图形处理器程序模型、图形处理器用户态运行库、多个应用(例如应用1、应用2等),由此实现多种图形处理功能。
例如,第一装置110可以为用户使用的终端(或称为图形处理客户机),第二装置120可以为服务器(或称为图形处理服务器),第二装置120的图形处理器资源可以为第一装置110提供服务,以实现远程图形处理器资源的使用。关于第一装置110与第二装置120的交互方式将在下文中结合本公开实施例提供的图形处理器资源的使用方法进行说明,此处不再赘述。
图2为本公开一些实施例提供的一种图形处理器资源的使用方法的流程示意图。如图2所示,在一些实施例中,图形处理器资源的使用方法可以包括如下操作。
步骤S11:基于应用程序的任务指令,生成图形处理命令包;
步骤S12:利用虚拟图形处理器接收图形处理命令包,并将图形处理命令包转发至图形处理客户端;
步骤S13:利用图形处理客户端发送包含图形处理命令包的信息至远程的图形处理服务器。
例如,该使用方法可以用于图1所示的系统的第一装置110中,由此实现远程图形处理器资源的使用,例如可以使用远程的第二装置120中的图形处理器资源。
例如,在步骤S11中,应用程序的任务指令可以是指示需要使用图形处理器资源进行处理的任务指令,该任务指令需要由图形处理器执行,因此,可以根据该任务指令生成图形处理命令包。例如,图形处理命令包(GPU Packet)是可以被图形处理器直接执行的命令包,其采用与图形处理器匹配的数据结构进行封装,因此该图形处理命令包无需在软件层面进行解析,可以直接被图形处理器执行。
例如,基于应用程序的任务指令,生成图形处理命令包,可以包括:基于应用程序的任务指令,利用用户态驱动器对任务指令进行格式组织,生成图形处理命令包。例如,用户态驱动器运行在图形处理器用户态运行库中,用户态驱动器用于处理与图形处理器有关的任务指令,以生成图形处理命令包。当应用程序的任务指令为指示需要使用图形处理器资源进行处理的任务指令时,用户态驱动器对该任务指令进行格式组织,例如进行编码、编译、封装等操作,从而生成与该任务指令对应的图形处理命令包。
例如,在步骤S12中,用户态驱动器生成图形处理命令包之后将该图形处理命令包发送至虚拟图形处理器,虚拟图形处理器接收图形处理命令包,并将图形处理命令包转发至图形处理客户端。
例如,在一些示例中,虚拟图形处理器以用户态(User Mode)的方式运行,因此,相应地,利用虚拟图形处理器接收图形处理命令包并将图形处理命令包转发至图形处理客户端可以包括:利用虚拟图形处理器接收图形处理命令包,并通过共享内存或套接字的方式将图形处理命令包转发至图形处理客户端。例如,共享内存或套接字的方式与虚拟图形处理器所采用的用户态的方式相匹配,由此可以实现图形处理命令包的转发。
例如,在另一些示例中,虚拟图形处理器以内核态(Kernel Mode)的方式运行,因此,相应地,利用虚拟图形处理器接收图形处理命令包并将图形处理命令包转发至图形处理客户端可以包括:利用虚拟图形处理器接收图形处理命令包,并通过读写设备文件的方式将图形处理命令包转发至图形处理客户端。例如,读写设备文件的方式与虚拟图形处理器所采用的内核态的方式相匹配,由此可以实现图形处理命令包的转发。
需要说明的是,本公开的实施例中,虚拟图形处理器是一个通过软件实现的抽象的、虚拟的图形处理器,可以实现被参照虚拟化的对应的物理图形处理器的操作和功能,该虚拟图形处理器所提供的图形处理器资源并不部署在本地设备中,而是部署在远程设备中。例如,如图1所示,虚拟图形处理器所提供的图形处理器资源并不部署在第一装置110中,而是部署在远程的第二装置120中,该虚拟图形处理器可向使用第一装置100的用户提供封装好的图形处理器资源。虚拟图形处理器可以采用用户态的方式运行,也可以采用内核态的方式运行,还可以采用其他任意适用的方式运行,本公开的实施例对此不作限制,只需利用相对应的方式转发图形处理命令包即可。
例如,在步骤S13中,利用图形处理客户端发送包含图形处理命令包的信息至远程的图形处理服务器,由此可以利用远程的图形处理服务器提供的图形处理器资源来进行运算,从而实现远程图形处理器资源的使用。例如,在一些示例中,图形处理客户端可以采用用户态应用程序的方式运行于操作系统中,它可以使用套接字(Socket)、共享内存或者管道等方式与虚拟图形处理器进行数据交互。例如,在另一些示例中,图形处理客户端可以采用内核态驱动的方式运行于操作系统中,以设备文件的形式存在,虚拟图形处理器通过读写设备的方式与图形处理客户端交互。
例如,利用图形处理客户端发送包含图形处理命令包的信息至远程的图形处理服务器可以包括:基于通信协议,利用图形处理客户端以对应于该通信协议的数据格式将包含图形处理命令包的信息发送至远程的图形处理服务器。例如,通信协议包括以太网、远程直接数据存取(RDMA)、无限带宽协议(IB)、光纤通道协议(FC)中的至少一种。需要说明的是,本公开的实施例中,通信协议不限于上文中列举的类型,还可以为其他任意适用的类型,这可以根据实际需求而定,本公开的实施例对此不作限制,只需利用该通信协议能够将信息发送至远程的图形处理服务器即可。
例如,在图1所示的系统中,第二装置120可以为上文描述的远程的图形处理服务器,第一装置110中的图形处理客户端将包含图形处理命令包的信息发送至第二装置120,从而利用第二装置120提供的图形处理器资源来进行运算。例如,根据具体的通信协议的数据格式要求,第一装置110中的图形处理客户端对图形处理命令包进行打包、封装,将图形处理命令包封装在所得到的信息中,然后基于通信协议将所得到的信息发送至第二装置120,由此实现图形处理命令包的传输。例如,应用程序运行在第一装置110中,利用上述方式可以使用第二装置120提供的图形处理器资源,从而实现远程图形处理器资源的使用。
例如,在一些示例中,第一装置110中的图形处理客户端将图形处理命令包封装到协议特定的数据帧中,帧的格式将取决于使用的传输方式。例如,若使用以太网,则图形处理命令包将被封装转入以太网数据帧,并将它们发送到远程的第二装置120的图形处理服务端。
在本公开的实施例中,图形处理命令包配置为可被对应于虚拟图形处理器的物理图形处理器执行,以完成应用程序的任务指令指示的任务。例如,如图1所示,第一装置110中的虚拟图形处理器对应于第二装置120中的物理图形处理器,基于第一装置110中运行的应用程序的任务指令所生成的图形处理命令包被发送至第二装置120,并由第二装置120中的物理图形处理器处理,从而完成第一装置110中运行的应用程序的任务指令所指示的任务。
图3为本公开一些实施例提供的另一种图形处理器资源的使用方法的流程示意图。如图3所示,在该示例中,除了进一步包括步骤S14和步骤S15,该图形处理器资源的使用方法与图2中所示的图形处理器资源的使用方法基本相同,相同的步骤不再赘述。
步骤S14:利用图形处理客户端接收并解析包含任务结果的信息,以得到任务结果,并将任务结果转发至虚拟图形处理器,包含任务结果的信息来自远程的图形处理服务器;
步骤S15:利用虚拟图形处理器将任务结果转发至用户态驱动器,并利用用户态驱动器向应用程序返回任务结果。
例如,在步骤S14中,由于图形处理命令包被发送至远程的图形处理服务器,该图形处理服务器执行图形处理命令包可以得到处理结果,也即,得到任务结果,因此,远程的图形处理服务器会通过通信网络将包含任务结果的信息发送回来,由此,可以利用图形处理客户端接收并解析包含任务结果的信息,以得到任务结果。例如,可以根据具体的通信协议的数据格式要求,对接收到的信息进行解析,从而得到任务结果。得到任务结果之后,图形处理客户端将任务结果转发至虚拟图形处理器。
例如,图形处理客户端可以对应于一个或多个虚拟图形处理器。当图形处理客户端对应于一个虚拟图形处理器时,图形处理客户端接收来自该虚拟图形处理器的图形处理命令包,并将与之对应的任务结果发送至该虚拟图形处理器。当图形处理客户端对应于多个虚拟图形处理器时,图形处理客户端配置为分别接收来自不同虚拟图形处理器的多个图形处理命令包,并将多个任务结果分别发送至对应的虚拟图形处理器。例如,多个任务结果与多个图形处理命令包一一对应,这些任务结果与图形处理命令包均通过图形处理客户端进行转发。在该情形中,图形处理客户端统一为多个虚拟图形处理器提供与远程的图形处理服务器的通信服务。
例如,在图1所示的系统中,第二装置120中的物理图形处理器执行图形处理命令包之后可以得到任务结果,第二装置120将任务结果通过通信网络发送回第一装置110。第一装置110中的图形处理客户端接收并解析包含任务结果的信息,得到任务结果之后,将任务结果转发至虚拟图形处理器。当第一装置110中部署有多个虚拟图形处理器时(图1中未示出该情形),图形处理客户端分别接收来自不同虚拟图形处理器的多个图形处理命令包并将其发送至远程的第二装置120,待接收到第二装置120发回的多个任务结果后,将多个任务结果分别发送至对应的虚拟图形处理器,图形处理客户端统一为这些虚拟图形处理器提供与第二装置120的通信服务。
例如,在步骤S15中,利用虚拟图形处理器将任务结果转发至运行在图形处理器用户态运行库中的用户态驱动器,并利用用户态驱动器向应用程序返回任务结果。由此,在应用程序发出任务指令之后,通过上述各个步骤,应用程序可以得到对应于该任务指令的任务结果。该任务结果是利用远程的图形处理器资源进行运算得到的,实现了远程图形处理器资源的使用。
图4为本公开一些实施例提供的另一种图形处理器资源的使用方法的流程示意图。如图4所示,在一些示例中,该图形处理器资源的使用方法还可以进一步包括步骤S16和步骤S17。
步骤S16:利用用户态驱动器向虚拟驱动器发送资源请求,以对虚拟图形处理器进行资源配置;
步骤S17:利用虚拟驱动器对虚拟图形处理器进行初始化和/或资源配置。
例如,在步骤S16中,在使用虚拟图形处理器之前或在使用虚拟图形处理器的过程中,若需要对其进行资源配置,可以利用用户态驱动器向虚拟驱动器发送资源请求,从而使虚拟驱动器响应于该资源请求而进行资源配置。例如,虚拟驱动器运行在操作系统中。
例如,在步骤S17中,当虚拟驱动器接收到资源请求后,可以对虚拟图形处理器进行初始化和/或资源配置。例如,该资源请求还可以包含初始化命令,从而可以对虚拟图形处理器进行初始化。
例如,利用虚拟驱动器对虚拟图形处理器进行初始化和/或资源配置可以包括:利用虚拟驱动器,将物理图形处理器的内存映射到虚拟图形处理器。也即是,该虚拟图形处理器是一个抽象的、虚拟的图形处理器,其并不具有物理的资源,因此需要利用虚拟驱动器将远程的物理图形处理器的内存映射到本地的虚拟图形处理器,以使该虚拟图形处理器可以向应用程序提供可用的资源,从而便于应用程序使用该虚拟图形处理器。
例如,在图1所示的系统中,可以利用第一装置110中的虚拟驱动器将第二装置120中的物理图形处理器的内存映射到第一装置110中的虚拟图形处理器,从而使第一装置110中的虚拟图形处理器与第二装置120中的物理图形处理器具有相同或相似的规格,以便于第一装置110中运行的应用程序通过虚拟图形处理器使用物理图形处理器的资源。
图5为图4中步骤S17的流程示意图。如图5所示,在一些示例中,上述步骤S17可以进一步包括如下操作。
步骤S171:利用虚拟驱动器将管理命令包发送至虚拟图形处理器,管理命令包配置为可被对应于虚拟图形处理器的物理图形处理器执行,以完成执行初始化和/或资源配置的操作;
步骤S172:利用虚拟图形处理器接收管理命令包,并将管理命令包转发至图形处理客户端;
步骤S173:利用图形处理客户端发送包含管理命令包的信息至远程的图形处理服务器;
步骤S174:利用图形处理客户端接收并解析包含管理结果的信息,以得到管理结果,并将管理结果转发至虚拟图形处理器,包含管理结果的信息来自远程的图形处理服务器;
步骤S175:利用虚拟图形处理器将管理结果返回至虚拟驱动器,以实现对虚拟图形处理器的初始化和/或资源配置。
例如,在步骤S171中,管理命令包配置为可被对应于虚拟图形处理器的物理图形处理器执行,以完成执行初始化和/或资源配置的操作。也即是,管理命令包与前述的图形处理命令包均为可被图形处理器直接执行的命令包,都采用与图形处理器匹配的数据结构进行封装,无需在软件层面进行解析,可以直接被图形处理器执行。管理命令包与前述的图形处理命令包的区别在于:管理命令包被图形处理器执行后可实现初始化和/或资源配置,而前述的图形处理命令包被图形处理器执行后可以得到对应于应用程序的任务指令的任务结果。当虚拟驱动器接收到相应的请求(例如前述的资源请求)之后,虚拟驱动器进行相应的操作,生成与该请求对应的管理命令包,然后将管理命令包发送至虚拟图形处理器。
例如,在步骤S172中,虚拟图形处理器接收到管理命令包之后,将管理命令包转发至图形处理客户端。该操作与利用虚拟图形处理器转发图形处理命令包的操作基本相同,此处不再赘述。
例如,在步骤S173中,图形处理客户端接收到管理命令包之后,将包含管理命令包的信息发送至远程的图形处理服务器。该操作与利用图形处理客户端发送包含图形处理命令包的信息的操作基本相同,此处不再赘述。
例如,在步骤S174中,图形处理客户端接收并解析包含管理结果的信息,以得到管理结果,然后将管理结果转发至虚拟图形处理器。例如,包含管理结果的信息来自远程的图形处理服务器。该操作与利用图形处理客户端接收包含任务结果的信息的操作基本相同,此处不再赘述。
例如,在步骤S175中,虚拟图形处理器接收到管理结果后,将管理结果返回至虚拟驱动器。由此,可以实现对虚拟图形处理器的初始化和/或资源配置。例如,初始化可以指在使用虚拟图形处理器之前向其写入参数、进行设置等。例如,资源配置可以指在使用虚拟图形处理器之前或在使用虚拟图形处理器的过程中更改其参数、调整其资源或运行方式等。当然,本公开的实施例不限于此,初始化和资源配置的具体操作可以根据实际需求而定,本公开的实施例对此不作限制。
例如,在一些示例中,前述的应用程序、虚拟图形处理器、图形处理客户端部署在同一物理设备上。例如,如图1所示,应用程序、虚拟图形处理器、图形处理客户端均部署在第一装置110中,第一装置110为一个独立的物理设备,例如可以为计算机、个人电脑等。
例如,在另一些示例中,前述的应用程序、虚拟图形处理器、图形处理客户端部署在同一虚拟设备上,该虚拟设备通过至少一个物理设备构建得到。例如,如图1所示,应用程序、虚拟图形处理器、图形处理客户端均部署在第一装置110中,第一装置110可以为一个虚拟设备,第一装置110实际上由一个或多个物理设备构建得到。例如,第一装置110可以为多个计算机组成的集群,也可以为计算机与其他外设装置所组成的系统,本公开的实施例对此不作限制。
本公开至少一个实施例提供一种图形处理器资源的使用方法。该图形处理器资源的使用方法包括:利用图形处理服务端从远程的图形处理客户机接收并解析包含图形处理命令包的信息,以得到图形处理命令包,并将图形处理命令包转发至内核驱动器;利用内核驱动器驱动至少一个物理图形处理器执行图形处理命令包,以得到任务结果。图形处理命令包是基于应用程序的任务指令生成的,用于运行至少一个物理图形处理器。
图6为本公开一些实施例提供的一种图形处理器资源的使用方法的流程示意图。如图6所示,在一些实施例中,图形处理器资源的使用方法可以包括如下操作。
步骤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为本公开一些实施例提供的另一种图形处理器资源的使用方法的流程示意图。如图7所示,在该示例中,除了进一步包括步骤S23和步骤S24,该图形处理器资源的使用方法与图6所示的图形处理器资源的使用方法基本相同,相同的步骤不再赘述。
步骤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所示,在一些实施例中,图形处理器资源的使用方法可以包括如下操作。
步骤S31:基于应用程序的任务指令,生成图形处理命令包;
步骤S32:利用虚拟图形处理器接收图形处理命令包,并将图形处理命令包转发至图形处理客户端;
步骤S33:利用图形处理客户端发送包含图形处理命令包的信息至图形处理服务端;
步骤S34:利用图形处理服务端接收并解析包含图形处理命令包的信息,以得到图形处理命令包,并将图形处理命令包转发至内核驱动器;
步骤S35:利用内核驱动器驱动至少一个物理图形处理器执行图形处理命令包,以得到任务结果。
例如,图形处理客户端部署在图形处理客户机上,图形处理服务端部署在图形处理服务器上,图形处理客户机与图形处理服务器远程连接。例如,在图1所示的系统中,第一装置110可以为图形处理客户机,第二装置120可以为图形处理服务器,第一装置110与第二装置120通过通信网络远程连接。
上述步骤S31-S33与图2中所示的步骤S11-S13基本相同,上述步骤S34-S35与图6中所示的步骤S21-S22基本相同,相关说明可参考前述内容,此处不再赘述。
在本公开的实施例中,通过图形处理客户机与图形处理服务器之间的交互和配合,可以提供远程资源的使用方式,实现半虚拟化的远程GPU共享,无需在本地端部署图形处理器的硬件资源,具有较高的灵活性和兼容性,能够满足多样化的远程应用场景。通过利用上层应用程序使图形处理器的访问透明化,无需对图形处理器用户态运行库做任何修改,更改等级较低,可以解决版本兼容等问题。
图11为本公开一些实施例提供的另一种图形处理器资源的使用方法的流程示意图。如图11所示,在该示例中,除了进一步包括步骤S36-S39,该图形处理器资源的使用方法与图10中所示的图形处理器资源的使用方法基本相同,相同的步骤不再赘述。
步骤S36:利用内核驱动器将任务结果转发给图形处理服务端;
步骤S37:利用图形处理服务端发送包含任务结果的信息至图形处理客户端;
步骤S38:利用图形处理客户端接收并解析包含任务结果的信息,以得到任务结果,并将任务结果转发至虚拟图形处理器;
步骤S39:利用虚拟图形处理器将任务结果转发至用户态驱动器,并利用用户态驱动器向应用程序返回任务结果。
例如,上述用户态驱动器运行在图形处理器用户态运行库中。
上述步骤S36-S37与图7中所示的步骤S23-S24基本相同,上述步骤S38-S39与图3中所示的步骤S14-S15基本相同,相关说明可参考前述内容,此处不再赘述。
图12为本公开一些实施例提供的一种图形处理器资源的使用方法的工作流程图。下面结合图12对执行图形处理器资源的使用方法的具体工作流程进行简要说明。
如图12所示,图形处理器用户态运行库、虚拟图形处理器、虚拟驱动器、图形处理客户端部署在一个设备中,图形处理器服务端和内核驱动器部署在另一个设备中,这两个设备远程连接。
首先,运行在图形处理器用户态运行库的用户态驱动器向虚拟图形处理器发送图形处理命令包(GPU命令包),虚拟图形处理器将GPU命令包转发至图形处理客户端。图形处理客户端将GPU命令包按照新的协议打包并发送至远端的图形处理服务端。
接着,对于图形处理服务端而言,接收并解析来自远端的新的命令包,并将远端发送的GPU命令包发送给本地的内核驱动器。内核驱动器驱动物理图形处理器执行GPU命令包,并将任务结果返回至图形处理服务端。图形处理服务端将内核驱动器对该命令进行执行的任务结果发送至远端的图形处理客户端。
然后,对于图形处理客户端而言,接收来自远端的信息,并将来自远端的图形处理服务端的任务结果发送至虚拟图形处理器。虚拟图形处理器将具体的命令执行的任务结果返回给用户态驱动器,以便于用户态驱动器向应用程序返回任务结果。
此外,在工作之前,还可以进行初始化并分配资源。例如,如图12所示,运行在图形处理器用户态运行库的用户态驱动器向虚拟驱动器发送资源请求(例如内存分配请求),虚拟驱动器对虚拟图形处理器进行初始化,并分配资源。例如,在进行初始化并分配资源时,还需要图形处理客户端、远程的图形处理服务端及内核驱动器的配合。然后,虚拟图形处理器向虚拟驱动器返回执行结果,从而完成初始化和资源分配。
需要说明的是,本公开的实施例中,图形处理器资源的使用方法还可以包括更多的步骤,而不限于上文描述的步骤。各个步骤的执行顺序不受限制,可以根据实际需求而定。
本公开至少一个实施例还提供一种图形处理器资源的使用装置。该图形处理器资源的使用装置包括:用户态驱动器、虚拟图形处理器和图形处理客户端。用户态驱动器配置为基于应用程序的任务指令,生成图形处理命令包。用户态驱动器运行在图形处理器用户态运行库中。虚拟图形处理器配置为接收图形处理命令包,并将图形处理命令包转发至图形处理客户端。图形处理客户端配置为发送包含图形处理命令包的信息至远程的图形处理服务器。图形处理命令包配置为可被对应于虚拟图形处理器的物理图形处理器执行,以完成应用程序的任务指令指示的任务。
该图形处理器资源的使用装置提供了远程资源的使用方式,无需在本地端部署图形处理器的硬件资源,具有较高的灵活性和兼容性,可以适用于多样化的远程应用场景。
图13为本公开一些实施例提供的一种图形处理器资源的使用装置的示意框图。如图13所示,图形处理器资源的使用装置40包括用户态驱动器41、虚拟图形处理器42和图形处理客户端43。例如,图形处理器资源的使用装置40可以为图1所示的第一装置110。
用户态驱动器41配置为基于应用程序的任务指令,生成图形处理命令包。例如,用户态驱动器41运行在图形处理器用户态运行库中。例如,用户态驱动器41可以执行如图2所示的图形处理器资源的使用方法的步骤S11。
虚拟图形处理器42配置为接收图形处理命令包,并将图形处理命令包转发至图形处理客户端43。例如,虚拟图形处理器42可以执行如图2所示的图形处理器资源的使用方法的步骤S12。
图形处理客户端43配置为发送包含图形处理命令包的信息至远程的图形处理服务器。例如,图形处理客户端43可以执行如图2所示的图形处理器资源的使用方法的步骤S13。
例如,图形处理命令包配置为可被对应于虚拟图形处理器42的物理图形处理器执行,以完成应用程序的任务指令指示的任务。
例如,用户态驱动器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可以执行如图6所示的图形处理器资源的使用方法的步骤S21。
内核驱动器52配置为驱动至少一个物理图形处理器53执行图形处理命令包,以得到任务结果。例如,内核驱动器52可以执行如图6所示的图形处理器资源的使用方法的步骤S22。
例如,图形处理命令包是基于应用程序的任务指令生成的,用于运行至少一个物理图形处理器53。
例如,图形处理服务端51、内核驱动器52和物理图形处理器53可以为硬件、软件、固件以及它们的任意可行的组合。例如,图形处理服务端51、内核驱动器52和物理图形处理器53可以为专用或通用的电路、芯片或装置等,也可以为处理器和存储器的结合。关于图形处理服务端51、内核驱动器52和物理图形处理器53的具体实现形式,本公开的实施例对此不作限制。
需要说明的是,本公开的实施例中,图形处理器资源的使用装置50的各个单元与前述的图形处理器资源的使用方法的各个步骤对应,关于该图形处理器资源的使用装置50的具体功能可以参考上文中图形处理器资源的使用方法的相关描述,此处不再赘述。图14所示的图形处理器资源的使用装置50的组件和结构只是示例性的,而非限制性的,根据需要,该图形处理器资源的使用装置50还可以包括其他组件和结构。
本公开至少一个实施例还提供一种电子设备。该电子设备提供了远程资源的使用方式,无需在本地端部署图形处理器的硬件资源,具有较高的灵活性和兼容性,可以适用于多样化的远程应用场景。
图15为本公开一些实施例提供的一种电子设备的示意框图。如图15所示,电子设备60包括图形处理器资源的使用装置61。例如,图形处理器资源的使用装置61可以为图13所示的图形处理器资源的使用装置40和/或图14所示的图形处理器资源的使用装置50。关于该电子设备60的相关说明可参考上文中关于图形处理器资源的使用装置40/50的描述,此处不再赘述。
有以下几点需要说明:
(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。