基于API重定向技术的GPU虚拟化实现系统及方法技术方案

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

【技术实现步骤摘要】
基于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资源池框架方案,该框架能为包括虚拟机和物理机等在内的各类终端设备提供一个通用的加速服务框架,具有较好的通用性,并且,使用框架不需要本文档来自技高网
...

【技术保护点】
1.一种基于API重定向技术的GPU虚拟化实现系统,其特征在于,包括:设置于客户端的指令代理模块;设置于远程服务器端的任务调度模块和一个或多个微GPU模块;设置于客户端和远程服务器端之间用于数据通讯的通信模块;其中:/n所述指令代理模块:用于截获客户端的图像应用程序中与OpenGL相关的API调用指令,并对该指令进行处理后,通过通信模块发送至远程服务器端执行渲染任务;/n所述任务调度模块:用于将客户端发来的指令数据进行相应处理得到指令流,并分配给各个微GPU模块;/n所述微GPU模块:用于完成指令流的渲染任务,并回传至客户端。/n

【技术特征摘要】
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设备进行相应的渲染工作;

【专利技术属性】
技术研发人员:戚正伟李凯诗管海兵汤冬劼汪沄李林生
申请(专利权)人:上海交通大学
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1