加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 综合聚焦 > 资源网站 > 空间 > 正文

详解GPU虚拟化技术

发布时间:2019-04-18 06:37:40 所属栏目:空间 来源:陶菘
导读:副标题#e# GPU英文名称为Graphic Processing Unit,GPU中文全称为计算机图形处理器,1999年由NVIDIA公司提出。 一、GPU概述 GPU这一概念也是相对于计算机系统中的CPU而言的,由于人们对图形的需求越来越大,尤其是在家用系统和游戏发烧友,而传统的CPU不能
副标题[/!--empirenews.page--]

GPU英文名称为Graphic Processing Unit,GPU中文全称为计算机图形处理器,1999年由NVIDIA公司提出。

详解GPU虚拟化技术

一、GPU概述

GPU这一概念也是相对于计算机系统中的CPU而言的,由于人们对图形的需求越来越大,尤其是在家用系统和游戏发烧友,而传统的CPU不能满足现状,因此需要提供一个专门处理图形的核心处理器。

GPU作为硬件显卡的“心脏”,地位等同于CPU在计算机系统中的作用。同时GPU也可以用来作为区分2D硬件显卡和3D硬件显卡的重要依据。2D硬件显卡主要通过使用CPU 来处理特性和3D 图像,将其称作“软加速”。

3D 硬件显卡则是把特性和3D 图像的处理能力集中到硬件显卡中,也就是“硬件加速”。目前市场上流行的显卡多半是由NVIDIA及ATI这两家公司生产的。

1.1、为什么需要专门出现GPU来处理图形工作,CPU为啥不可以?

GPU是并行编程模型,和CPU的串行编程模型完全不同,导致很多CPU上优秀的算法都无法直接映射到GPU上,并且GPU的结构相当于共享存储式多处理结构,因此在GPU上设计的并行程序与CPU上的串行程序具有很大的差异。GPU主要采用立方环境的材质贴图、硬体T&L、顶点混合、凹凸的映射贴图和纹理压缩、双重纹理四像素256位的渲染引擎等重要技术。

由于图形渲染任务具有高度的并行性,因此GPU可以仅仅通过增加并行处理单元和存储器控制单元便可有效的提高处理能力和存储器带宽。

GPU设计目的和CPU截然不同,CPU是设计用来处理通用任务,因此具有复杂的控制单元,而GPU主要用来处理计算性强而逻辑性不强的计算任务,GPU中可利用的处理单元可以更多的作为执行单元。因此,相较于CPU,GPU在具备大量重复数据集运算和频繁内存访问等特点的应用场景中具有无可比拟的优势。

1.2、GPU如何使用?

使用GPU有两种方式,一种是开发的应用程序通过通用的图形库接口调用GPU设备,另一种是GPU自身提供API编程接口,应用程序通过GPU提供的API编程接口直接调用GPU设备。

1.2.1、通用图形库

通过通用的图形库的方式使用GPU,都是通过 OpenGL 或Direct3D这一类现有的图形函数库,以编写渲染语言(Shading Language)的方法控制 GPU 内部的渲染器(Shader)来完成需要的计算。

目前业界公认的图形编程接口主要有OpenGL和DirectX这两种接口。OpenGL是当前可用于开发可交互、可移植的2D与3D图形应用程序的首选环境,也是当前图形应用最广泛的标准。OpenGL是SGI公司开发的计算机图形处理系统,是图形硬件的软件接口,GL为图形库(Graphics Library),OpenGL应用程序不需要关注所在运行环境所处的操作系统与平台。

只要在任何一个遵循OpenGL标准的环境下都会产生一样的可视化效果。与OpenGL类似,DirectX (Directe Xtension)也是一种图形API。它是由Microsoft创建的多媒体编程接口,并已经成为微软视窗的标准。为适应GPU应用的需求,DirectX则根据GPU新产品功能的扩充与进展及时地定义新的版本,它所提供的功能几乎与GPU提供的功能同步。

1.2.2、GPU自身编程接口

GPU自身提供的编程接口主要由提供GPU设备的两家公司提供,分别是括NVIDIA的CUDA框架和AMD(ATI)公司于2006年提出了CTM(Close To Metal)框架(备注,最初是ATI公司生产GPU设备,后被AMD收购)。AMD的CTM框架现在已不在使用,主要是AMD(ATI)于2007 年推出了ATI Stream SDK架构,2008 年AMD(ATI)完全转向了公开的OpenCL标准,因此AMD(ATI)公司目前已没有独立的、私有的通用计算框架。

2007年NVIDIA公司发布CUDA (Compute Unified Device Architecture)专用通用计算框架。使用CUDA 进行通用计算编程不再需要借助图形学API,而是使用与C 语言十分类似的方式进行开发。在CUDA 编程模型中,有一个被称为主机(Host)的CPU 和若干个被称作设备(Device)或者协处理器(Co-Processor)的GPU。

在该模型中,CPU和GPU协同工作,各司其职。CPU负责进行逻辑性较强的事务处理和串行计算,而GPU 则专注于执行线程化的并行处理任务。CPU、GPU 各自拥有相互独立的存储器地址空间主机端的内存和设备端的显存。一般采用CUDA 框架自己进行编程的都一些大型的应用程序,比如石油勘测、流体力学模拟、分子动力学仿真、生物计算、音视频编解码、天文计算等领域。

而我们一般企业级的应用程序由于开发成本以及兼容性等原因,大多数都是采用通用的图形库来进行开发调用GPU设备。

1.3、GPU如何工作?

GPU 对于通用计算和图形处理的内部组件主要有两部分: 顶点处理器(Vertex Processor)和子素处理器(Fragment Processor)。这种处理器具备流处理机的模式,即不具有大容量的快存/存储器可以读写,只是直接在芯片上利用临时寄存器进行流数据的操作。

当GPU 用于图形处理时,此时GPU 内部的顶点渲染、像素渲染以及几何渲染操作都可以通过流处理器完成。从图中可以看出,此时GPU 内部的所有流处理器相当于一个多核的处理器,数据可以很方便的在不同的流处理器之间的输入和输出之间移动,同时GPU分派器和控制逻辑可以动态的指派流处理器进行相应的顶点,像素,几何等操作,因为流处理器都是通用的。

二、GPU虚拟化

开始我们的正题,目前虚拟机系统中的图形处理方式有三种:一种是采用虚拟显卡的方式,另一种是直接采用物理显卡,最后是采用GPU虚拟化。

2.1、虚拟显卡

第一种采用虚拟显卡是现在主流的虚拟化系统的选择,因为专业的显卡硬件价格不菲。目前采用虚拟显卡的这些技术包括:

  • 虚拟网络计算机VNC (Virtual Network Computing)
  • Xen 虚拟帧缓存
  • VMware虚拟图形显示处理器GPU (Graphics Processing Unit)
  • 独立于虚拟机管理器的图形加速系统VMGL (VMM-Independent Graphics Acceleration)。

VNC(Virtual Network Computing)基本上是属于一种显示系统,也就是说它能将完整的窗口界面通过网络,传输到另一台计算机的屏幕上。Windows 服务器中包含的"Terminal Server"即是属于这种原理的设计。VNC 是由AT&T 实验室所开发的,其采用GPL(General Public License)授权条款,任何人都可免费取得该软件。VNC软件要由两个部分组成:VNC server和VNC viewer。用户需先将VNC server安装在被远程操控的计算机上后,才能在主控端执行VNC viewer 进行远程操控。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读