GPU通及计算虚拟化方法研究

来源 :湖南大学 | 被引量 : 0次 | 上传用户:js_netbit
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
作为云计算的关键性基础设施,系统级虚拟机技术是当前计算机体系结构领域的研究热点之一。系统级虚拟机技术成功的将许多物理设备抽象成内存或硬盘中的数据结构,如网卡、硬盘、内存等,但GPU(Graphic Processing Unit,图形处理单元)从来不曾被完善的虚拟化。这其中一个主要原因在于GPU缺乏统一的硬件接口和开放的体系规范。在实践中,学术界和工业界选择在协议栈的更高层--用户API(Application Programming Interface,应用程序编程接口)层进行虚拟化,一些针对传统图形API的虚拟化工作已取得阶段性成果。CUDA(ComputeUnified Device Architecture)是一套崭新的GPU应用编程API,专注于通用计算(General-Purpose computation)而不是图形应用,是目前事实上的通用计算工业标准。它向程序员提供了直接控制GPU执行并行计算的能力,而不再依赖于传统图形API如OPENGL。CUDA框架的出现为系统级虚拟化技术带来了新的问题:已有的针对图形API的虚拟化工具对虚拟化CUDA没有任何帮助,运行在虚拟机中的应用程序无法调用CUDA API,从而不能利用GPU先进的并行加速功能。  为了解决这个问题,本文提出并实现了首个针对通用计算的虚拟化解决方案--vCUDA(virtual CUDA)。vCUDA允许虚拟机中的应用程序访问位于虚拟机外部的通用计算资源,向它们提供GPU通用计算能力,对加速虚拟机环境下的高性能计算具有重要意义。vCUDA的设计和实现有四个主要的方面:API重定向(API remoting)、懒惰RPC(lazy RPC)、虚拟机专用RPC系统VMRPC(VirtualMachine Remote Procedure Call)和虚拟机高级特性支持。  API重定向是指在用户层拦截API接口,将其参数转发到远程服务器,在远程服务器端完成实际计算工作,最后将计算结果返回用户。由于采用了在动态库中拦截和重定向API的技术,vCUDA在CUDA程序运行过程中实时进行虚拟化,不要求修改程序源码、不重新编译、不改变操作系统,实现了完全的二进制兼容,对程序员完全透明。针对NVIDIA官方样例程序和第三方CUDA应用的测试表明:vCUDA在虚拟机内实现了CUDA的全部功能,在远程服务器中完整而准确地模拟了CUDA的内部语义,所有实验均得到了与非虚拟化条件下相同的执行结果。  由于CUDA应用可能涉及成千上万个API,针对每个API发送RPC将导致极大的性能开销。vCUDA借鉴了图形项目中延迟更新(lazy update)的优化思路,采用了懒惰RPC的方法。尽可能地推迟RPC的发生时刻,通过累积、过滤、合并上层调用,合理确定发送RPC的时机,将连续的API打包一次性发送,有效的提高了系统性能。相关实验显示,懒惰RPC可将RPC次数减少至30%,开启懒惰RPC后vCUDA虚拟化性能最高可提升148%。  VMRPC是首个直接针对虚拟机体系的远程过程调用系统,与传统RPC系统不同的是,它利用了虚拟机之间的共享内存机制来实现堆和栈的共享,避免了不必要的数据复制和序列化操作,达到了传统RPC在虚拟机平台下所无法企及的性能。相关实验结果显示,VMRPC的吞吐率最大可达到传统RPC的100倍以上。利用API重定向和VMRPC,vCUDA同时实现了虚拟化的透明性和高效性,针对官方样例和第三方程序的测试表明,vCUDA所引入的虚拟化开销不超过21%,具有较大的实用价值。  在CUDA虚拟化的相关基础上,vCUDA实现了对多路复用、挂起/恢复等传统虚拟机高级特性的支持,使得依赖于这些特性的虚拟机应用可以无缝部署于vCUDA框架之上。vCUDA采用了“一对多”模式来实现多路复用,由单一的工作线程来满足不同客户的应用请求。在挂起/恢复功能方面,vCUDA利用Kernel运行的间隙来保存和恢复当前CUDA状态。相关实验结果显示,vCUDA在实施多路复用、挂起/恢复的过程中仅引入了有限的开销,满足实际应用的需要。进一步,本文利用vCUDA所采用的CUDA状态追踪和管理方法,在传统GPU核外检查点方案的基础上实现了核内检查点方案--IKC,增强了GPU的容错能力。
其他文献
随着社交网络的快速发展,网友花费在社交网络的时间越来越多,同时也对社交网络的依赖也越来越强。社交网络在巨多用户支持的背景下,怎么留的住用户,怎么基于这些用户提供更好
近年来互联网的发展给人们的生活带来了很大变化,特别是现在Web2.0方式下人们有了更丰富方便的网上生活,而作为互联网主力军的电子商务网站也是赶着互联网大潮不断地上升发展。
随着软件行业的快速发展,软件的开发周期和开发成本越来越被重视,软件测试作为软件开发过程中的一个重要环节,不仅仅为软件产品提供质量把关,而且还能降低人力重复投入的风险
随着Web服务技术的快速发展和广泛应用,越来越多的Web服务分布在Internet上,与此同时,功能相似的Web服务数量也快速增长。单个Web服务的功能已经无法满足复杂应用的需求,因而
随着计算机技术的飞速发展,软件系统已经被广泛应用到人们工作生活的各个领域,人们对软件可靠性的要求越来越高,因此软件可靠性的研究已成为计算机发展的新方向。UML作为面向对
随着WebGIS的快速发展和应用,其数据可视化处理中的静态缓存技术也被广泛的采用。然而在静态缓存处理中所产生的海量瓦片数据,给数据管理带来沉重的负担,而目前对于此类数据
生物特征识别技术如今在人们的生产、生活等社会活动中扮演着越来越重要的角色,对身份识别的贡献尤为突出。掌纹特征因其稳定、独特、准确、可靠的特性引发了广泛关注。尽管
全球IPv4地址已经于2011年全部分配完毕,IPv6作为下一代互联网的核心走上历史的舞台。IPv6技术采用了新的网络理念,提供了近乎无穷的地址空间的同时,还提高了网络的安全性、
随着电子商务的高速发展,越来越多消费者参与到在线评论互动中,由此产生了大量在线商品评论,并且数量呈爆炸式增长。然而巨大的用户群与潜在的利益关系,使虚假评论被广泛地制造与
随着经济的发展,我国的城建项目逐渐增多。如何有效地管理和科学地维护在城建项目中使用的各类工程机械已成为其管理者和运营者所面临的问题。因此目前提出了很多对工程机械