CN111399976A - 基于api重定向技术的gpu虚拟化实现系统及方法 - Google Patents

基于api重定向技术的gpu虚拟化实现系统及方法 Download PDF

Info

Publication number
CN111399976A
CN111399976A CN202010134209.2A CN202010134209A CN111399976A CN 111399976 A CN111399976 A CN 111399976A CN 202010134209 A CN202010134209 A CN 202010134209A CN 111399976 A CN111399976 A CN 111399976A
Authority
CN
China
Prior art keywords
gpu
instruction
module
micro
task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010134209.2A
Other languages
English (en)
Inventor
戚正伟
李凯诗
管海兵
汤冬劼
汪沄
李林生
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.)
Shanghai Jiaotong University
Original Assignee
Shanghai Jiaotong University
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 Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN202010134209.2A priority Critical patent/CN111399976A/zh
Publication of CN111399976A publication Critical patent/CN111399976A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明提供了一种基于API重定向技术的GPU虚拟化实现系统,其中:位于客户端的指令代理模块截获客户端的图像应用程序中与OpenGL相关的API调用指令,并对该指令进行处理后,发送至远程服务器端执行渲染任务;任务调度模块将客户端发来的指令数据进行相应处理得到指令流,并分配给各个微GPU模块;微GPU模块完成指令流的渲染任务,并回传至客户端。同时提供了一种基于API重定向技术的GPU虚拟化实现方法。本发明提供了一个通用的加速服务平台,具有较好的通用性,且不需要修改源程序代码,使用简便。

Description

基于API重定向技术的GPU虚拟化实现系统及方法
技术领域
本发明涉及GPU虚拟化技术领域,具体地,涉及一种基于API重定向技术的GPU虚拟化实现系统及方法。
背景技术
随着机器学习研究领域的热度持续上升,学术界和工业界对于数据计算的需求也节节攀升。借由浮点数运算的高计算能力与数据并行的优势,GPU成为了高性能计算与云计算领域的新宠。然而随着GPU性能的不断提升,其大体积、高功耗带来的高硬件成本已经成为影响其使用的一大难题。为此,越来越多的使用者选择提供GPU云方案的云计算平台进行数据计算。
云计算技术的核心之一是虚拟化技术。虚拟化技术通过各类方法实现对系统资源的复用,将有限的资源高效地提供给多个用户使用,提高系统的资源使用率并降低单个用户的成本。相较于虚拟化技术成熟的其他设备,设备驱动的闭源,架构设计的差异的现状使得GPU在虚拟化技术实现上面临着许多难题。
当前GPU资源池的实现有着两种技术思路,一种是在单个计算机上聚合多个GPU设备从而组成加速系统,另一种则是由多台配有GPU的计算机组成集群提供加速服务。前者的使用场景主要是满足运算量小的业务需求,但是有着资源使用率较低的缺点。后者的设计方法与数据中心的硬件条件相性更好,改造更简易,更适用于当前的数据中心环境,但是仍然存在如下问题:。
云厂商通常以单张GPU设备为单位提供粗粒度的远程GPU服务,带来了较高的成本以及使用门槛,同时对设备资源的利用率不高。另外,在多台客户端同时提出渲染请求时,带宽资源也会成为系统的瓶颈。
目前没有发现同本发明类似技术的说明或报道,也尚未收集到国内外类似的资料。
发明内容
本发明针对现有技术中存在的上述不足,提出了一种基于API重定向技术的GPU虚拟化实现系统及方法,属于一种远程共享的GPU资源池设计,为当前的GPU云环境提出了一种虚拟化解决方案,满足日益增长的对GPU云计算服务的需求。
本发明是通过以下技术方案实现的。
根据本发明的一个方面,提供了一种基于API重定向技术的GPU虚拟化实现系统,包括:设置于客户端的指令代理模块;设置于远程服务器端的任务调度模块和一个或多个微GPU模块;设置于客户端和远程服务器端之间用于数据通讯的通信模块;其中:
所述指令代理模块:用于截获客户端的图像应用程序中与OpenGL相关的API调用指令,并对该指令进行处理后,通过通信模块发送至远程服务器端执行渲染任务;
所述任务调度模块:用于将客户端发来的指令数据进行相应处理得到指令流,并分配给各个微GPU模块;
所述微GPU模块:用于完成指令流的渲染任务,并回传至客户端。
优选地,所述指令代理模块在客户端被设置为环境变量,从而以共享库的形式,在客户端的图像应用程序启动时加载指令代理模块的OpenGL实现。
优选地,所述指令代理模块对指令进行压缩处理;相应地,所述任务调度模块用于对压缩后的指令进行解压缩并分发至各个微GPU模块。
优选地,所述指令代理模块对指令进行压缩处理,采用如下任意一种或任意多种方法:
-采用差量传输方式,在传输前比较相邻的两帧,压缩指令的传输量;
-采用浮点数转换方式,压缩顶点数据。
优选地,所述指令代理模块还对指令流中的一部分顶点数据进行聚合简化处理;其中,所述顶点数据为指令流传输中涉及到的一种指令数据,用于表述几何对象的顶点信息。
优选地,所述任务调度模块将指令分发至各个微GPU模块的方法为:
每一个微GPU模块将资源使用情况及时反馈给任务调度模块,任务调度模块根据微GPU模块的资源使用情况,使用调度算法进行任务分发;所述调度算法采用多层反馈调度算法,借由微GPU模块反馈的历史请求的资源使用情况判断当前任务请求的分发目标;当接受到新的任务请求时,任务调度模块判断是否接收过该应用的任务请求;若否,则将该任务随机分配给任意微GPU模块,并在运行过程中监控该任务的资源使用情况,判断该任务的资源需求特点并记录;若是,则根据该任务的资源需求特点分配给相应资源最充裕的微GPU模块。
优选地,所述微GPU模块完成指令流的渲染任务的方法为:
每一个所述微GPU模块通过设置于远程服务器端的GPU驱动模块,将接收到的指令流发送至装载于远程服务器端的GPU设备进行相应的渲染工作;
每一个微GPU模块完成的渲染结果存储于设置于GPU设备的GPU内存帧缓存中。
优选地,所述GPU内存帧缓存存储对渲染结果采用像素数据的形式进行存储;所述任务调度模块将GPU内存帧缓存存储的渲染结果编码为视频流后回传至客户端,并在客户端解码得到渲染结果后存储在客户端内存的帧缓存中。
优选地,所述微GPU程序单元根据接收到的指令流在远程服务器端的缓存情况进行相应处理:如果缓存命中,微GPU程序单元直接从缓存区域中提取需要的指令流数据进行渲染工作;否则,微GPU程序单元等待指令流传输完成后再借由远程服务器端装载的GPU设备,使用原生的OpenGL指令流完成渲染工作。
优选地,所述客户端和远程服务器端之间采用如下任意一种或任意多种通信方式:
-共享内存通信方式;
-TCP协议通信方式;
-RDMA通信方式。
根据本发明的另一个方面,提供了一种基于API重定向技术的GPU虚拟化实现方法,包括:
步骤S1,客户端运行图形应用程序;
步骤S2,指令代理模块截获图形应用程序中与OpenGL相关的API调用指令,并将该指令压缩后发送至远程服务器端;
步骤S3,远程服务器端接收指令数据后进行解压缩得到指令流,并将指令流分发至各个微GPU模块;
步骤S4,各个微GPU模块通过设置于远程服务器端的GPU驱动模块,将接收到的指令流发送至装载于远程服务器端的GPU设备进行相应的渲染任务后,读取设置于GPU设备的GPU内存帧缓存的像素信息并以位图的格式将渲染结果储存下来,通过视频流的形式将渲染结果回传至客户端;
步骤S5,客户端将接收到的渲染任务进行解码得到渲染结果,并将渲染结果储存在客户端内存的帧缓存中,并渲染在本地的窗口上。
优选地,所述步骤S4中,微GPU模块根据接收到的解压后的指令流在远程服务器端的缓存情况进行相应处理:如果缓存命中,微GPU程序单元直接从缓存区域中提取需要的指令流数据进行渲染工作;否则,微GPU程序单元等待指令流传输完成后再借由远程服务器端装载的GPU设备,使用原生的OpenGL指令流完成渲染工作。
优选地,所述步骤S4中,存储在微GPU模块的内存帧缓存中的渲染结果采用像素数据的形式。
与现有技术相比,本发明具有如下有益效果:
本发明提供的基于API重定向技术的GPU虚拟化实现系统及方法,将客户端本地的图像应用程序中与OpenGL相关的API调用图像渲染命令截获并发送到远程服务器端进行真正的渲染工作后再将结果返回给客户端,其过程与实际设备无关,是一种通用的GPU资源池框架方案,该框架能为包括虚拟机和物理机等在内的各类终端设备提供一个通用的加速服务框架,具有较好的通用性,并且,使用框架不需要修改源程序代码,使用简便。
本发明提供的基于API重定向技术的GPU虚拟化实现系统及方法,借助API重定向技术实现远程共享,相比现有的实现远程共享的技术,具有如下有益效果:
1、API重定向技术能从较高的编程库层级上进行虚拟化,绕开大多数GPU设备驱动闭源的问题,具有较好的通用性。
2、通过压缩与编码的方式提高了客户端与服务器端的传输效率,使得网络带宽资源不再成为系统瓶颈。
3、任务调度模块提高了硬件资源的使用率。
4、客户端可以为各类终端设备;在客户端,将程序需求进行了拆分,计算任务由本地完成,渲染任务交由服务器端完成;另外远程服务器端可以搭载多个GPU设备,任务调度模块和微GPU模块都是服务器本地的,效率高;除此之外,对于网络传输,采用了指令流压缩、视频流编码的方式对传输进行了优化,提高了效率,同时网络带宽不再成为系统瓶颈。
5、具有较好的通用性、泛用性和应用效率。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明实施例所提供的基于API重定向技术的GPU虚拟化实现系统整体结构框图;
图2为本发明实施例所提供的基于API重定向技术的GPU虚拟化实现方法流程图。
具体实施方式
下面对本发明的实施例作详细说明:本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
本实施例提供了一种基于API重定向技术的GPU虚拟化实现系统,该系统基于API重定向技术实现了远程共享,为当前的GPU云环境提出了一种虚拟化解决方案。
首先,通过将图像应用程序按照计算任务和渲染任务分别分配至CPU模块和远程服务器端执行;通过CPU模块执行分配的计算任务;所述的GPU虚拟化实现系统用于执行分配的渲染任务。
如图1所示,所述系统包括:设置于客户端的指令代理模块;设置于远程服务器端的任务调度模块和一个或多个微GPU模块;设置于客户端和远程服务器端之间用于数据通讯的通信模块;其中:
所述指令代理模块:用于截获客户端的图像应用程序中与OpenGL相关的API调用指令,并对该指令进行处理后,通过通信模块发送至远程服务器端执行渲染任务;
所述任务调度模块:用于将客户端发来的指令数据进行相应处理得到指令流,并分配给各个微GPU模块;
所述微GPU模块:用于完成指令流的渲染任务,并通过任务调度模块回传至客户端。
进一步地,所述指令代理模块在客户端被设置为环境变量,从而以共享库的形式被部署,其中,所述部署是指:在客户端的图像应用程序启动时加载指令代理模块的OpenGL实现。
进一步地,所述指令代理模块对指令进行压缩处理;相应地,所述任务调度模块用于对压缩后的指令进行解压缩并分发至各个微GPU模块。
进一步地,所述指令代理模块还对指令流中的一部分顶点数据进行聚合简化处理;其中,所述顶点数据为指令流传输中涉及到的一种指令数据,用于表述几何对象的顶点信息;聚合顶点数据,可以减少数据传输量,从而提升通信效率。
进一步地,所述微GPU模块包括一个或多个微GPU程序单元、GPU驱动单元以及GPU内存的帧缓存单元;其中:
每一个所述微GPU程序单元用于对接收到的指令流进行相应的渲染工作;
所述GPU驱动单元用于装载的GPU设备与服务器之间的交互;
所述GPU内存的帧缓存单元用于储存每一个微GPU程序单元完成的渲染任务。
进一步地,所述GPU内存帧缓存单元存储对渲染任务采用像素数据的形式进行存储;所述任务调度模块将GPU内存帧缓存单元存储的渲染任务编码为视频流后回传至客户端,并在客户端解码得到渲染结果后存储在客户端内存帧缓存中。
进一步地,所述微GPU程序单元根据接收到的指令流在远程服务器端的缓存情况(即接收到的解压后的指令流在微GPU程序单元中的缓存情况)进行相应处理:如果缓存命中,微GPU程序单元直接从缓存区域中提取需要的指令流数据进行渲染工作;否则,微GPU程序单元等待指令流传输完成后再借由远程服务器端本身装载的硬件,使用原生的OpenGL指令流完成渲染工作。其中,使用原生的OpenGL指令流完成渲染工作,是指服务器端装载的由硬件厂商提供的原生OpenGL的实现,也就是说,如果缓存没有命中,系统会等待指令传输完成后,将命令以及参数通过服务器端装载的由硬件厂商提供的原生OpenGL的实现来对接收的命令进行渲染。
进一步地,所述远程服务器端本身装载的硬件是指:远程服务器端装载的GPU设备。
基于本发明实施例所提供的基于API重定向技术的GPU虚拟化实现系统,本发明实施例同时提供了一种基于API重定向技术的GPU虚拟化实现方法。
如图2所示,所述方法,包括如下步骤:
步骤S1,客户端运行图形应用程序;
步骤S2,指令代理模块截获图形应用程序中与OpenGL相关的API调用指令,并将该指令压缩后发送至远程服务器端;
步骤S3,远程服务器端接收指令数据后进行解压缩得到指令流,并将指令流分发至各个微GPU模块;
步骤S4,各个微GPU模块完成渲染任务后,将其存储在该模块的内存帧缓存中;远程服务器端将内存帧缓存中存储的渲染任务编码并回传至客户端;
步骤S5,客户端将接收到的渲染任务进行解码得到渲染结果,并将渲染结果储存在客户端内存帧缓存中。
进一步地,所述步骤S4中,微GPU模块述微根据接收到的指令流在远程服务器端的缓存情况进行相应处理:如果缓存命中,微GPU程序单元直接从缓存区域中提取需要的指令流数据进行渲染工作;否则,微GPU程序单元等待指令流传输完成后再借由远程服务器端本身装载的硬件,使用原生的OpenGL指令流完成渲染工作。
进一步地,所述步骤S4中,存储在微GPU模块的内存帧缓存中的渲染任务采用像素数据的形式。
进一步地,所述步骤S4中,远程服务器端将渲染任务编码为视频流的形式回传至客户端。
本发明上述实施例所提供的基于API重定向技术的GPU虚拟化实现系统及方法,在指令流压缩上,采用了两种优化方法:一是差量传输的方式,在传输前比较相邻的两帧,压缩指令的传输量,从而减少带宽的使用;二是通过浮点数转换的方式压缩顶点数据,在压缩数据量的同时只牺牲较小的精度。
在客户端和服务器端通信的方式上,支持共享内存(Shared Memory)、TCP以及RDMA(Remote direct memory access)。
任务调度模块根据服务器端每个微GPU模块及时反馈的资源使用监控情况,使用调度算法进行任务分发。
所述调度算法采用多层反馈调度算法,借由微GPU模块反馈的历史请求的资源使用情况判断当前任务请求的分发目标;当接受到新的任务请求时,任务调度模块判断是否接收过该应用的任务请求;若否,则将该任务随机分配给任意微GPU模块,并在运行过程中监控该任务的资源使用情况,判断该任务的资源需求特点并记录;若是,则根据该任务的资源需求特点分配给相应资源最充裕的微GPU模块。
视频流编码中,各个微GPU模块完成渲染任务后,将会读取帧缓存的像素信息并以位图的格式储存下来,通过视频流传输模块将渲染结果回传至客户端。视频流传输模块会将视频流编码传输给客户端。客户端会将收到的视频流解码并渲染在本地的窗口上。
本发明上述实施例所提供的基于API重定向技术的GPU虚拟化实现系统及方法,客户端的图像应用程序模块会把图像应用程序按照计算任务和渲染任务,分别交给本地CPU模块和远程服务器端执行。其中,程序的计算任务主要由本地的CPU模块负责,能在较短时间内完成计算,并且可以减少远程服务器端的计算量。程序的渲染任务则由远程服务器端负责,任务由本地的指令代理模块处理后通过通信模块被发送至远程服务器端处理。
在客户端上,当用户开始运行图形应用程序模块中的程序时,指令代理模块会截获程序中与OpenGL相关的API调用指令,将其压缩后通过通信模块发送到远程服务器端。远程服务器端接收到指令数据后进行解压缩得到指令流,然后将其分发给各个微GPU模块中的各个微GPU程序单元。微GPU程序单元完成渲染图像的任务后,将其存储在微GPU模块的内存帧缓存单元中,形式是像素数据。远程服务器端会将这段内存中的图像数据编码后传回客户端,形式是视频流。客户端再对数据进行解码后得到图像的渲染结果,将其放入本地的内存帧缓存中,供程序使用。通过这样一个过程,实现了图形应用程序的远程渲染和加速。
本发明实施例所提供的基于API重定向技术的GPU虚拟化实现系统及方法,其技术实现中有两个模块比较关键,分别是指令代理模块和微GPU模块;其中:
指令代理模块,负责的主要工作是截获本地图像应用程序的OpenGL指令流,对其进行一定的处理后,再发送到远程服务器端。客户端将指令代理模块设置成环境变量,从而令其以共享库的形式被部署。在这样的设置下,图像应用程序启动时会加载指令代理的OpenGL实现。指令代理模块对指令流处理的方式主要是压缩数据,此外也会聚合简化一部分顶点数据。
微GPU模块,主要负责完成被截获指令流的渲染工作。微GPU会根据接收到的指令流在本地的缓存情况决定处理方法。如果缓存命中,微GPU会直接从缓存区域中提取需要的指令数据。否则,微GPU会等到指令流传输完成后再借由远程服务器端本身装载的硬件,使用原生的OpenGL实现来完成命令渲染工作。
本发明上述实施例提供的基于API重定向技术的GPU虚拟化实现系统及方法,通信的方式上,支持Linux系统的共享内存(Shared Memory)、TCP以及RDMA(Remote directmemory access)。指令流的传输,采用差量传输的方式,这种方式具有传输数据量小,传输效率高的优点;通过浮点数转换的方式压缩顶点数据,在压缩数据量的同时牺牲较小的精度。服务器端每个GPU节点上都有资源使用的监控,并及时反馈给任务调度模块,任务调度模块会根据服务器的资源使用情况,使用一个调度算法进行任务分发,这种方式具有硬件资源使用率高,提升系统性能的优点。
本发明上述实施例提供的基于API重定向技术的GPU虚拟化实现系统及方法,将客户端本地的图像应用程序中与OpenGL相关的图像渲染命令截获并发送到远程服务器端进行真正的渲染工作后再将结果返回给客户端,其过程与实际设备无关,是一种通用的GPU资源池框架方案,该框架能为包括虚拟机和物理机等在内的各类终端设备提供一个通用的加速服务,具有较好的通用性,并且,使用框架不需要修改源程序代码,使用简便。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。

Claims (10)

1.一种基于API重定向技术的GPU虚拟化实现系统,其特征在于,包括:设置于客户端的指令代理模块;设置于远程服务器端的任务调度模块和一个或多个微GPU模块;设置于客户端和远程服务器端之间用于数据通讯的通信模块;其中:
所述指令代理模块:用于截获客户端的图像应用程序中与OpenGL相关的API调用指令,并对该指令进行处理后,通过通信模块发送至远程服务器端执行渲染任务;
所述任务调度模块:用于将客户端发来的指令数据进行相应处理得到指令流,并分配给各个微GPU模块;
所述微GPU模块:用于完成指令流的渲染任务,并回传至客户端。
2.根据权利要求1所述的基于API重定向技术的GPU虚拟化实现系统,其特征在于,所述指令代理模块在客户端被设置为环境变量,从而以共享库的形式,在客户端的图像应用程序启动时加载指令代理模块的OpenGL实现;和/或
所述指令代理模块对指令进行压缩处理;相应地,所述任务调度模块用于对压缩后的指令进行解压缩并分发至各个微GPU模块。
3.根据权利要求2所述的基于API重定向技术的GPU虚拟化实现系统,其特征在于,所述指令代理模块对指令进行压缩处理,采用如下任意一种或任意多种方法:
-采用差量传输方式,在传输前比较相邻的两帧,压缩指令的传输量;
-采用浮点数转换方式,压缩顶点数据;
和/或
所述任务调度模块将指令分发至各个微GPU模块的方法为:
每一个微GPU模块将资源使用情况及时反馈给任务调度模块,任务调度模块根据微GPU模块的资源使用情况,使用调度算法进行任务分发;所述调度算法采用多层反馈调度算法,借由微GPU模块反馈的历史请求的资源使用情况判断当前任务请求的分发目标;当接受到新的任务请求时,任务调度模块判断是否接收过该应用的任务请求;若否,则将该任务随机分配给任意微GPU模块,并在运行过程中监控该任务的资源使用情况,判断该任务的资源需求特点并记录;若是,则根据该任务的资源需求特点分配给相应资源最充裕的微GPU模块。
4.根据权利要求3所述的基于API重定向技术的GPU虚拟化实现系统,其特征在于,所述指令代理模块还对指令流中的一部分顶点数据进行聚合简化处理;其中,所述顶点数据为指令流传输中涉及到的一种指令数据,用于表述几何对象的顶点信息。
5.根据权利要求1所述的基于API重定向技术的GPU虚拟化实现系统,其特征在于,所述微GPU模块完成指令流的渲染任务的方法为:
每一个所述微GPU模块通过设置于远程服务器端的GPU驱动模块,将接收到的指令流发送至装载于远程服务器端的GPU设备进行相应的渲染工作;
每一个微GPU模块完成的渲染结果存储于设置于GPU设备的GPU内存帧缓存中
6.根据权利要求5所述的基于API重定向技术的GPU虚拟化实现系统,其特征在于,所述GPU内存帧缓存存储对渲染结果采用像素数据的形式进行存储;所述任务调度模块将GPU内存帧缓存存储的渲染结果编码为视频流后回传至客户端,并在客户端解码得到渲染结果后存储在客户端内存的帧缓存中。
7.根据权利要求1所述的基于API重定向技术的GPU虚拟化实现系统,其特征在于,所述微GPU程序单元根据接收到的指令流在远程服务器端的缓存情况进行相应处理:如果缓存命中,微GPU程序单元直接从缓存区域中提取需要的指令流数据进行渲染工作;否则,微GPU程序单元等待指令流传输完成后再借由远程服务器端装载的GPU设备,使用原生的OpenGL指令流完成渲染工作。
8.根据权利要求1至7中任一项所述的基于API重定向技术的GPU虚拟化实现系统,其特征在于,所述客户端和远程服务器端之间采用如下任意一种或任意多种通信方式:
-共享内存通信方式;
-TCP协议通信方式;
-RDMA通信方式。
9.一种基于API重定向技术的GPU虚拟化实现方法,其特征在于,包括:
步骤S1,客户端运行图形应用程序;
步骤S2,指令代理模块截获图形应用程序中与OpenGL相关的API调用指令,并将该指令压缩后发送至远程服务器端;
步骤S3,远程服务器端接收指令数据后进行解压缩得到指令流,并将指令流分发至各个微GPU模块;
步骤S4,各个微GPU模块通过设置于远程服务器端的GPU驱动模块,将接收到的指令流发送至装载于远程服务器端的GPU设备进行相应的渲染任务后,读取设置于GPU设备的GPU内存帧缓存的像素信息并以位图的格式将渲染结果储存下来,通过视频流的形式将渲染结果回传至客户端;
步骤S5,客户端将接收到的渲染任务进行解码得到渲染结果,并将渲染结果储存在客户端内存的帧缓存中,并渲染在本地的窗口上。
10.根据权利要求9所述的基于API重定向技术的GPU虚拟化实现方法,其特征在于,还包括如下任意一项或任意多项:
-所述步骤S4中,微GPU模块根据接收到的解压后的指令流在远程服务器端的缓存情况进行相应处理:如果缓存命中,微GPU程序单元直接从缓存区域中提取需要的指令流数据进行渲染工作;否则,微GPU程序单元等待指令流传输完成后再借由远程服务器端装载的GPU设备,使用原生的OpenGL指令流完成渲染工作;
-所述步骤S4中,存储在微GPU模块的内存帧缓存中的渲染结果采用像素数据的形式。
CN202010134209.2A 2020-03-02 2020-03-02 基于api重定向技术的gpu虚拟化实现系统及方法 Pending CN111399976A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010134209.2A CN111399976A (zh) 2020-03-02 2020-03-02 基于api重定向技术的gpu虚拟化实现系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010134209.2A CN111399976A (zh) 2020-03-02 2020-03-02 基于api重定向技术的gpu虚拟化实现系统及方法

Publications (1)

Publication Number Publication Date
CN111399976A true CN111399976A (zh) 2020-07-10

Family

ID=71435925

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010134209.2A Pending CN111399976A (zh) 2020-03-02 2020-03-02 基于api重定向技术的gpu虚拟化实现系统及方法

Country Status (1)

Country Link
CN (1) CN111399976A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112346890A (zh) * 2020-11-13 2021-02-09 武汉蓝星科技股份有限公司 一种复杂图形离屏渲染方法及系统
CN113592996A (zh) * 2021-06-30 2021-11-02 中国人民解放军63891部队 空间电磁环境的多gpu并行渲染系统及方法
CN113791906A (zh) * 2021-08-09 2021-12-14 戴西(上海)软件有限公司 基于gpu资源在人工智能与工程领域调度系统及优化算法
CN113867907A (zh) * 2021-08-09 2021-12-31 唐维昌 一种基于cpu资源在工程领域调度系统及优化算法
CN117036566A (zh) * 2023-08-28 2023-11-10 北京趋动智能科技有限公司 远程图像渲染方法、系统、电子设备及可读存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102752594A (zh) * 2012-06-21 2012-10-24 浙江大学 一种基于图像编解码与传输并行的集群渲染方法
CN103631634A (zh) * 2012-08-24 2014-03-12 中国电信股份有限公司 实现图形处理器虚拟化的方法与装置
CN103888485A (zh) * 2012-12-19 2014-06-25 华为技术有限公司 云计算资源的分配方法、装置及系统
CN103974062A (zh) * 2013-06-24 2014-08-06 福州瑞芯微电子有限公司 图像显示装置、图像显示系统和图像显示方法
US20150116335A1 (en) * 2013-10-25 2015-04-30 Futurewei Technologies, Inc. System and Method for Distributed Virtualization of GPUs in Desktop Cloud
US20160293134A1 (en) * 2013-12-26 2016-10-06 Square Enix Holdings Co., Ltd. Rendering system, control method and storage medium
CN109165093A (zh) * 2018-07-31 2019-01-08 宁波积幂信息科技有限公司 一种计算节点集群弹性分配系统及方法
CN109582425A (zh) * 2018-12-04 2019-04-05 中山大学 一种基于云端与终端gpu融合的gpu服务重定向系统及方法
CN110377415A (zh) * 2018-04-12 2019-10-25 华为技术有限公司 一种请求处理方法和服务器
CN110659103A (zh) * 2019-08-14 2020-01-07 西安万像电子科技有限公司 资源分配方法及装置

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102752594A (zh) * 2012-06-21 2012-10-24 浙江大学 一种基于图像编解码与传输并行的集群渲染方法
CN103631634A (zh) * 2012-08-24 2014-03-12 中国电信股份有限公司 实现图形处理器虚拟化的方法与装置
CN103888485A (zh) * 2012-12-19 2014-06-25 华为技术有限公司 云计算资源的分配方法、装置及系统
CN103974062A (zh) * 2013-06-24 2014-08-06 福州瑞芯微电子有限公司 图像显示装置、图像显示系统和图像显示方法
US20150116335A1 (en) * 2013-10-25 2015-04-30 Futurewei Technologies, Inc. System and Method for Distributed Virtualization of GPUs in Desktop Cloud
US20160293134A1 (en) * 2013-12-26 2016-10-06 Square Enix Holdings Co., Ltd. Rendering system, control method and storage medium
CN110377415A (zh) * 2018-04-12 2019-10-25 华为技术有限公司 一种请求处理方法和服务器
CN109165093A (zh) * 2018-07-31 2019-01-08 宁波积幂信息科技有限公司 一种计算节点集群弹性分配系统及方法
CN109582425A (zh) * 2018-12-04 2019-04-05 中山大学 一种基于云端与终端gpu融合的gpu服务重定向系统及方法
CN110659103A (zh) * 2019-08-14 2020-01-07 西安万像电子科技有限公司 资源分配方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
(英)伊恩•克鲁克: "《动态图形设计基础 从理论到实践》", 北京:中国宇航出版社, pages: 651 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112346890A (zh) * 2020-11-13 2021-02-09 武汉蓝星科技股份有限公司 一种复杂图形离屏渲染方法及系统
CN112346890B (zh) * 2020-11-13 2024-03-29 武汉蓝星科技股份有限公司 一种复杂图形离屏渲染方法及系统
CN113592996A (zh) * 2021-06-30 2021-11-02 中国人民解放军63891部队 空间电磁环境的多gpu并行渲染系统及方法
CN113592996B (zh) * 2021-06-30 2022-09-27 中国人民解放军63891部队 空间电磁环境的多gpu并行渲染系统及方法
CN113791906A (zh) * 2021-08-09 2021-12-14 戴西(上海)软件有限公司 基于gpu资源在人工智能与工程领域调度系统及优化算法
CN113867907A (zh) * 2021-08-09 2021-12-31 唐维昌 一种基于cpu资源在工程领域调度系统及优化算法
CN117036566A (zh) * 2023-08-28 2023-11-10 北京趋动智能科技有限公司 远程图像渲染方法、系统、电子设备及可读存储介质
CN117036566B (zh) * 2023-08-28 2024-09-17 北京趋动智能科技有限公司 远程图像渲染方法、系统、电子设备及可读存储介质

Similar Documents

Publication Publication Date Title
CN111399976A (zh) 基于api重定向技术的gpu虚拟化实现系统及方法
CN110227259B (zh) 一种数据处理的方法、装置、服务器和系统
CN110381322B (zh) 视频流解码方法、装置、终端设备及存储介质
WO2022100522A1 (zh) 一种视频编码方法、视频解码方法、装置、电子设备、存储介质及计算机程序产品
US9075560B2 (en) Real-time compression with GPU/CPU
US20140082052A1 (en) Data redirection system and method for providing data redirection service
KR20140006778A (ko) 이미지 압축을 위한 엔트로피 코더
WO2015135181A1 (zh) 一种图像处理方法、虚拟机及虚拟机系统
CN103873886B (zh) 一种处理图像信息的方法、装置及系统
CN108762934B (zh) 远程图形传输系统、方法及云服务器
CN111818115B (zh) 一种处理方法、装置和系统
KR20130123156A (ko) 다수의 서버를 이용한 분산 트랜스코딩 장치 및 방법
US20170272545A1 (en) Method and system for transmitting remote screen
CN108989845A (zh) 一种基于spice协议的视频传输方法
Neal et al. Distributed OpenGL rendering in network bandwidth constrained environments
CN117093292A (zh) 云桌面的图像处理方法、装置、服务器和存储介质
CN112714319B (zh) 计算机可读取存储介质、使用多个执行单元的视频编解码方法和装置
US9875076B1 (en) Remoting client having GPU off-loader
CN117676241A (zh) 基于服务器三维渲染的数字化工厂大场景显示方法及系统
CN110012003B (zh) 一种云应用抓屏方法和装置
WO2023104186A1 (zh) 一种高效低成本的云游戏系统
US10223997B2 (en) System and method of leveraging GPU resources to increase performance of an interact-able content browsing service
CN110941490A (zh) 一种基于云计算的医学图像处理的方法
Bundulis et al. Use of H. 264 real-time video encoding to reduce display wall system bandwidth consumption
Deng et al. GPU-based real-time decoding technique for high-definition videos

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