GPU计算应用日趋广泛

随着图像处理技术的发展,对图形和图像的处理要求也越来越高,特别是3D技术的兴起,使图形图像处理和3D计算技术已经应用到各种视频游戏、电影产业、医疗成像、空间探索、远程通信等方面。同时,伴随着移动互联网以及终端技术的发展和普及,云端须处理的数据量呈爆发式增长,对大数据、视频和3D计算提出了更多的需求。

在通用计算领域,凭借高密度并行计算能力,GPU现已用于解决大量的通用计算问题,形成GPGPU(General-purpose computing on graphic computing unit)研究领域,特别是在CUDA推出以后,GPU计算已被广泛应用于图像处理以外的领域,包括导航识别、数理统计分析、数值天气预报、分子力学模拟、流体力学模拟、军事模拟、地质勘探等。

统一计算架构CUDA

CUDA(Compute Unified Device Architecture)是由NVIDIA公司提出的一种GPU通用计算框架,为GPU增加一个易用的编程接口,是目前应用最广泛的编程框架。

CUDA是C语言的一种扩展,它允许使用标准C来进行GPU代码编程。这个代码既适用于主机处理器(CPU),也适用于设备处理器(GPU)。主机处理器负责派生出运行在GPU设备上的多线程任务(CUDA称其为内核程序)。GPU设有内部调度器来把这些内核程序分配到相应的GPU硬件上。一般将逻辑语句多的,并且串行执行的处理,使用主机编程,而数据处理较密集,算术运算多的,具有高度并行性的部分使用GPU处理。

CUDA架构优势。相比CPU而言,CUDA架构中的GPU具备以下特点:

从硬件架构角度,GPU的计算单元有两层结构:SM(Streming Multiprocessor)和SP(Streming Processor)。一个GPU,实际上是一个SM的阵列,每个SM包含多个SP。SM相当于CPU的核,相同的SM中的所有SP可同时处理不同的数据。例如费米架构的GPU卡包含16个SM,每个SM包含32个SP。相对于一个四核的CPU来说,一个费米架构的GPU,核数是其4倍,数据吞吐量是其32倍。在内存方面,CPU程序模型的内存层次由硬件解决,程序员无需关心。而GPU的设计则在SM层设计了程序员可见的共享内存,可供程序员根据需要灵活使用以提高数据访问速度。同时,GPU具有多个寄存器组,可快速进行线程间切换。

从编程模型的角度,CPU使用MIMD(多指令多数据) 指令模型,而GPU采用SIMT(单指令多线程)指令模型。CUDA的编程模型将线程组合在一起形成了线程束、线程块以及线程网络,这些线程组合在一起形成了并行程序。相比CPU的按时间片串行执行程序,GPU采用硬件并行的模式,需大量线程填充数据区,利用有效的工作池来保证一直有事可做,不会出现闲置。当遇到指令延迟与存储器延迟引起的阻塞时,CPU处理器会闲置等待操作完成,而GPU的线程模型会快速切换到另外的线程,以实现对这种延迟的隐藏。

综上所述,CUDA的硬件架构和编程模型,决定其性能优势集中体现在硬件的并行计算上。基于高密度并行处理的CUDA程序,可极大地提高异构系统的整体性能。

基于CUDA构建高密计算云

GPU虚拟化。构建GPU高密计算云,必须解决GPU计算能力的虚拟化问题。目前,对于GPU虚拟化方法的研究,主要集中在三个方面。

设备仿真:采用模拟出完整的硬件环境的方式,为系统提供一个伪设备。实际仿真的设备位于CPU或内存中。由于实际运行的CPU并不具备GPU的大规模并行计算能力,其执行效率太低,在实际应用环境中并不具有实用价值。

设备独占:该方式允许用户通过操作系统直接控制物理设备,本质上是直接通过原生的显卡驱使用GPU,跳过了VMM(Virtual Machine Monitor)的参与。由于缺少VMM跟踪和硬件设备的维护状态,采用该方式无法支持虚拟机的实时迁移、快照等高级特性。

API虚拟化:该方式主要是对应用程序接口API进行重定向。通过拦截所有与GPU相关的API,使用重定向或者模拟的方式,将计算任务发送至物理机,在物理机中利用相应硬件去完成相应功能,最后将计算的结果通过指定的通信方式返回给客户端应用程序。

目前,大多数虚拟化平台对CUDA虚拟化的支持,仅达到设备独占的层次,仅有Citrix XenServer可以达到Partitioning的高度,即在同一虚拟机上将一个物理GPU进行多个复用的功能,而对于更高级的功能,比如基于分时复用、热迁移等功能都没有涉及。

学术界对CUDA的虚拟化方法的研究则更加深入,主要集中在对API重定向技术上,已提出多个基于CUDA的API重定向的虚拟化可行方案,实现对上层应用的完全透明,可无缝支持热迁移、快照等功能。

基于CUDA的API重定向实现GPU虚拟化。

自CUDA架构提出以来,基于CUDA的API重定向的GPU虚拟化技术,成为国内外学者广泛关注的一个热点。由于API重定向技术的灵活性,越来越多的研究人员认定API重定向技术是GPU虚拟化技术的归宿,提出了多种不同的解决方案,如vCUDA(Virtual CUDA)、rCUDA(remote CUDA)、GVim(GPU-accelerated Virtual achines)、gVirtuS等。

vCUDA通过API重定向的方法,拦截用户层的所有CUDA的API调用,重定向到物理机器上执行,实现对程序员的全透明,使得开发难度大大降低。考虑到RPC的性能开销问题,该解决方案采用了懒惰RPC的方法,尽可能减少RPC调用的次数。具体的做法是通过累积、过滤、合并上层调用等方式,合理确定发送RPC的时机,将连续的API打包一次性发送,有效提高了系统性能。

rCUDA,通过socket的通信方式在远程执行CUDA,相对采用RPC的vCUDA来说,效率有所提高。

GVim通过建立前端、后端、拦截库、库封装器四个模块来实现API的拦截和重定向。但是该解决方案只适用于特定的Xen虚拟化平台。

gVirtuS在vCUDA和GVim的基础上,独立实现了GPU虚拟化架构,保证了平台无关性,适用于Xen、VMware、KVM等主流的虚拟化平台。

CUDA高密计算云应用现状

自2007年提出CUDA以来,NVIDIA公司一直致力于云计算平台与CUDA的技术结合。其率先于2012年5月推出利用GPU加速云计算技术,同年10月推出了首款云计算虚拟GPU加速平台—VGX K2,并于2013年GTC大会上推出了云计算产品服务器平台—NVIDIA GRID。GRID 卡采用基于 NVIDIA Kepler架构的GPU,首次实现了 GPU 的硬件虚拟化。这意味着多名用户可以共享单一GPU。随后,国外的多家云服务提供商也推出了各自的基于GPU并行计算的云服务平台,包括Amazon、Nimbix、Peer 1 Hosting等。

在国内,“云图”和“云渲染”方案的提出,也标志着云服务提供商开始在GPU高密计算方面发力。“云图”(W760-G10)由曙光公司、NVIDIA公司、思杰公司于2014年合作推出,虽然尚未有明确的云租用服务,但已具备GPU硬件虚拟化的能力。阿里云于2013年提出“云渲染”方案,在国产3D动画电影《昆塔》中首次使用了云计算进行后期渲染的新技术,通过将一个或者多个渲染任务分割成若干部分,在计算机集群中的各个节点同时进行,以此类推,大大缩短渲染时间。

可以预见,随着CUDA与云计算的紧密结合,强大的GPU计算能力将推动云服务平台在图像分时、动画渲染、视频编码、3D运算、导航识别、数理统计分析以及大数据挖掘等领域发挥重要作用。

关注中国IDC圈官方微信:idc-quan 我们将定期推送IDC产业最新资讯

查看心情排 行你看到此篇文章的感受是:


  • 支持

  • 高兴

  • 震惊

  • 愤怒

  • 无聊

  • 无奈

  • 谎言

  • 枪稿

  • 不解

  • 标题党
2019-07-30 11:32:42
云技术 顶级云计算合规性软件工具
组织需要深入了解顶级云计算合规性工具,这些工具可帮助其实现法规遵从性,并实施行业最佳实践。 <详情>
2019-07-30 10:08:16
云技术 提高混合环境中的IT可视性
很多调研机构认为混合云环境将在未来五年内主导企业的IT。Research and Markets公司估计,到2023年,混合云市场规模将从450亿美元增长到980亿美元。AWS公司和Microsoft Azu <详情>
2019-07-29 14:00:56
云技术 拐点已到!传统IT向“云计算”全面转移,不懂就出局
对云计算还不识变、不应变、不改变,就可能陷入被动,错失机遇,甚至被淘汰,错过整整一个时代。一句话:时至不迎,反受其殃,活该。 <详情>
2019-07-26 14:14:43
云技术 大多数企业仍然无法实现云计算成本节省、简单性和数据洞察力
根据数据管理供应商Cohesity公司最新的一份调查报告,IT经理希望公共云为其组织提供的服务与实际发生的情况之间存在巨大的期望差距。 <详情>
2019-07-26 14:10:50
云技术 企业如何在不超出预算的情况下将业务迁移到云端
当企业需要IT升级时,将其业务迁移到云端就是最终答案吗? <详情>