当前位置: 首页 > 专利查询>湖南大学专利>正文

CUDA图形子系统虚拟化方法技术方案

技术编号:2915368 阅读:383 留言:1更新日期:2012-04-11 18:40
本发明专利技术针对现有虚拟机技术对通用计算支持的不足,提出了一种针对通用计算程序的虚拟接口和功能框架-vCUDA,可在虚拟机条件下对CUDA相关应用进行物理加速。vCUDA在应用层拦截通用计算程序对通用计算资源的调用,在逻辑上重构虚拟计算资源,解离了通用计算资源的强耦合特征,将通用计算资源表达为新的逻辑中间层,并进一步在虚拟机平台上进行隔离、划分、整合、利用,实现了多用户并发、故障恢复、动态迁移、负载平衡等高级应用。本发明专利技术无需对程序源码做任何修改,对程序员保持透明。

【技术实现步骤摘要】

本专利技术属于计算机体系结构和虚拟接口领域,具体涉及在虚拟机条件下对CUDA相关应用进行物理加速的方法。
技术介绍
虚拟机技术发展过程中遇到的一个重大挑战是I/O虚拟化。由于I/O设备的多样性与复杂性、封闭性,难以在虚拟机(VMM)条件下充分有效的使用这些硬件资源,从而造成虚拟机条件下的功能缺失或性能下降。以显卡(主要是GPU,图形处理单元)为例,它的主要功能分为图形(2D与3D)计算与显示和通用计算(非图形应用,以大量并行为特征)两块。除少数2D显示标准外,显卡硬件电气接口没有统一的设计规范和国际标准,不但各大主要生厂商之间接口互不兼容,即使在同一厂商的不同世代、不同批次产品之间,物理特性也不完全相同。另外,出于商业考虑,各个厂商不对外公布设计细节,不提供驱动源码,使得在操作系统层自主开发适应不同硬件的驱动协议栈也不现实。目前主流的虚拟机管理器(VMM),商业级的如vmware,开源的如XEN,都只在较小的范围内解决了2D图形显示的问题,对GPU的另外两大功能——3D加速和通用计算基本不涉及。针对在底层虚拟化显卡(GPU)遇到的问题,最近学术界提出了在更高的软件栈层次上实现虚拟化的思路。以显卡的3D加速为例,通过截获OPENGL调用,相关的命令参数通过网络或其它通道从虚拟机传导至虚拟机管理器,在VMM进-->行计算和显示,从而实现了硬件资源的跨域使用。将虚拟化的层次从硬件接口上升到软件接口,从驱动层上升到应用层,有力的解决了前两者的异质化问题。但是,对GPU的虚拟化目前仍存在几个突出的问题:一是3D应用的实时性、交互性很强,域间通信量峰值极大,造成用户指令无法及时响应,或者图像质量下降;二是数据通路狭窄,目前GPU虚拟化技术广泛使用的是斯坦福大学铬(Chromium)项目的数据分发和传输机制,而这套机制最初是为在远程条件下实现并行渲染设计的,并没有针对虚拟机作任何优化;三是OPENGL的虚拟化对解决通用计算问题来说并不充分,因为目前已存在专门用于GPU通用计算的API架构CUDA(统一计算设备架构)。这意味着通用计算已脱离OPENGL等图形API(应用程序编程接口),成为连接程序员和显示硬件的新桥梁,对它的虚拟化成为VMM技术中一个独立的新课题。四是目前热门的虚拟机技术如实时迁移(live-migration)、挂起与恢复(suspend/resume)等并不支持涉及到通用计算的应用,它们将在迁移或恢复后失去继续执行的能力。
技术实现思路
本专利技术针对现有的虚拟机技术对通用计算支持的不足,提出了一种基于动态库拦截的通用计算虚拟化方案—vCUDA。vCUDA在应用层拦截通用计算程序对通用计算资源的调用,在逻辑上重构虚拟计算资源,解离了通用计算资源的强耦合特征,将通用计算资源表达为新的逻辑中间层,并进一步在虚拟机平台上进行隔离、划分、整合、利用,实现了故障恢复、实时迁移等功能。本专利技术采用动态库拦截方法,对程序员完全透明,不增加程序员编程负担,不提高程序复杂度。程序员在编写通用计算程序时无需考虑虚拟化因素,即可实现所有功能。另外,采用动态库拦截方法,无需修改源码,对二进制程序完-->全兼容,对老旧软件、不开源软件均适用。vCUDA采用客户服务器模式,包括四个主要的用户层组件:位于虚拟机管理器的vCUDA管理中心程序和远程调用服务器,以及位于每台虚拟机的vCUDA封装库和远程调用客户端。其中远程调用客户端和远程调用服务器负责底层通信,提供最基本的沟通机制,属于执行机构。vCUDA管理程序和vCUDA封装库是本方案的管理机构,它们存贮和管理API内部一致性数据,选择远程过程调用通信策略,为虚拟化提供更高层语义的支持,是实现动态迁移、负载平衡等高级功能的核心。1.远程调用客户端:负责虚拟机端数据的编解码和传递。它接收应用程序发送来的API指令和数据,经虚拟资源模块审计后将操作数和参数按预定义格式封装、缓冲、排队,发往虚拟机管理器中的远程调用服务器;接收远程调用服务器传送的数据,解码并由虚拟资源模块处理后向应用程序返回。2.远程调用服务器:为远程调用客户端提供服务线程,确保远程调用服务线程的持续性,处理并发请求和异步调用。它接收远程调用客户端发送来的数据,解码后经资源配置模块审计为其分配服务线程,驱动硬件完成相应计算任务,计算结果由审记模块检查后,编码并发回远程调用客户端。3.vCUDA管理中心程序:vCUDA管理中心程序是支配实际硬件和做出决策的机构。它通过所在OS或VMM内的原生驱动利用实际硬件,切实执行虚拟机提交的任务。包含三个模块:策略模块为其它模块提供实施策略,该策略由维护人员静态配置,或由系统在运行中动态生成。在动态模式中,该模块接收审计模块和控制流日志模块的报告作为输入。资源配置模块统一管理本地硬件资源,按照虚拟机的要求和当前分配策略-->向其提供虚拟通用计算资源,定时接收虚拟资源模块的报告,跟踪资源使用状况,及时收回空闲资源,平衡系统中的计算负载。统一管理本地软件资源,为不同要求的用户提供适当数量的服务线程。审计模块分析发生在虚拟机管理器端的调用命令及其参数,为策略中心模块提供统计数据,同时负责审计虚拟接口的参数,正确地翻译异地指针或句柄,保证在虚拟机管理器和虚拟机两端数据空间的一致性。其重要职责之一是翻译对特殊变量地址的引用。CUDA架构为设备变量(device variable)、纹理变量(texture variable)和共享变量(share variable)设计了一套特殊的影子变量(shadow variable)管理方法。当程序员在程序中定义以上三种变量时,NVCC编译器自动生成相应的注册函数,为影子变量在主机上开辟空间,并与变量名挂钩。注册后所有对该变量的引用都是使用影子变量的本地地址,由动态库在运行时转化成对应的设备地址。由于影子变量在主机和设备内存之间表现出来的强耦合特征,不可能仅通过传递参数进行虚拟化,而必须依赖审计模块和控制流日志模块适当的转化本地与远程地址空间来实现。图2说明了本方案虚拟化影子变量的过程,首先,当VM内的应用程序调用__cudaRegisterVar或__cudaRegisterTexture、__cudaRegisterShared时,影子变量在客户端的三个要素(地址、空间、变量名)被送往虚拟机管理器,由审计模块在虚拟机管理器上开辟新的空间,并将此空间的地址指针(服务器端地址)与客户端地址做为二元组本文档来自技高网
...

【技术保护点】
一种工作在虚拟机平台的针对通用计算程序的虚拟接口和功能框架。 虚拟机管理器内运行vCUDA管理中心程序,内含策略模块、资源配置模块、审计模块和远程调用服务器模块,每个虚拟机安装vCUDA封装库,内含虚拟资源模块、传输策略模块、控制流日 志模块和远程调用客户端模块。当虚拟机内应用程序执行通用计算任务时,相应的指令被虚拟资源模块截获,经控制流日志模块分析和记录后,按当前传输策略交由远程调用客户端模块发往位于虚拟机管理中心的远程调用服务器模块,经审计后由资源配置模块分配服务线程处理并返回。 远程调用服务器模块及远程调用客户端模块负责虚拟机管理器和各个虚拟机之间的底层通信,将双方的请求或应答传递给其它功能模块。 策略模块为其它模块提供实施策略,该策略由维护人员静态配置,或由系统在运行中动态生成。在动态模 式中,该模块接收审计模块和控制流日志模块的报告作为输入。 资源配置模块统一管理本地硬件资源,按照虚拟机的要求、分配策略向其提供虚拟通用计算资源,定时接收虚拟资源模块的报告,跟踪资源使用状况,及时收回空闲资源,平衡系统中的计算负载。统一 管理本地软件资源,为不同要求的用户提供适当数量的服务线程。 审计模块分析发生在虚拟机管理器端的调用命令及其参数,为策略中心模块提供统计数据,同时负责审计虚拟接口的参数,正确地翻译异地指针或句柄,保证在虚拟机管理器和虚拟机两端数据空间的 一致性。 虚拟资源模块是虚拟通用计算资源在每个虚拟机中的逻辑镜象,向应用层提供完整的底层硬件视图。它依据资源配置模块分配的资源初始化,并定期向其报告本地的使用状况。虚拟资源模块与审计模块合作维护一个变量名表,使远程变量地址将与本地引用 保持一致。 传输策略模块决定发送远程过程调用的时机和频率,它按照定制策略累积、合并、过滤上层调用,使虚拟化开销和带宽消耗达到最小。 控制流日志模块跟踪本地调用情况,记录调用名和相关参数,提供对虚拟机高级应用的支持。...

【技术特征摘要】
1.一种工作在虚拟机平台的针对通用计算程序的虚拟接口和功能框架。
虚拟机管理器内运行vCUDA管理中心程序,内含策略模块、资源配置模块、
审计模块和远程调用服务器模块,每个虚拟机安装vCUDA封装库,内含虚拟资
源模块、传输策略模块、控制流日志模块和远程调用客户端模块。当虚拟机内
应用程序执行通用计算任务时,相应的指令被虚拟资源模块截获,经控制流日
志模块分析和记录后,按当前传输策略交由远程调用客户端模块发往位于虚拟
机管理中心的远程调用服务器模块,经审计后由资源配置模块分配服务线程处
理并返回。
远程调用服务器模块及远程调用客户端模块负责虚拟机管理器和各个虚拟
机之间的底层通信,将双方的请求或应答传递给其它功能模块。
策略模块为其它模块提供实施策略,该策略由维护人员静态配置,或由系
统在运行中动态生成。在动态模式中,该模块接收审计模块和控制流日志模块
的报告作为输入。
资源配置模块统一管理本地硬件资源,按照虚拟机的要求、分配策略向其
提供虚拟通用计算资源,定时接收虚拟资源模块的报告,跟踪资源使用状况,
及时收回空闲资源,平衡系统中的计算负载。统一管理本地软件资源,为不同
要求的用户提供适当数量的服务线程。
审计模块分析发生在虚拟机管理器端的调用命令及其参数,为策略中心模
块提供统计数据,同时负责审计虚拟接口的参数,正确地翻译异地指针或句柄,
保证在虚拟机管理器和虚拟机两端数据空间的一致性。
虚拟资源模块是虚拟通用计算资源在每个虚拟机中的逻辑镜象,向应用层
提供完整的底层硬件视图。它依据资源配置模块分配的资源初始化,并定期向
其报告本地的使用状况。虚拟资源模块与审计模块合作维护一个变量名表,使
远程变量地址将与本地引用保持一致。
传输策略模块决定发送远程过程调用的时机和频率,它按照定制策略累积、
合并、过滤上层调用,使虚拟化开销和带宽消耗达到最小。
控制流日志模块跟踪本地调用情况,记录调用名和相关参数,提供对虚拟
机高级应用的支持。
...

【专利技术属性】
技术研发人员:陈浩孙建华石林彭萃芬
申请(专利权)人:湖南大学
类型:发明
国别省市:43[中国|湖南]

网友询问留言 已有1条评论
  • 来自[未知地区] 2012年09月04日 11:33
    正在写关于这方面的论文,不知道vCUDA底层怎么实现,希望能有个指导
    0
1
相关领域技术
  • 暂无相关专利