簡(jiǎn)述:GPU英文名稱(chēng)為GraphicProcessingUnit,GPU中文全稱(chēng)為計(jì)算機(jī)圖形處理器,1999年由NVIDIA公司提出。一、GPU概述GPU這一概念也是相對(duì)于計(jì)算機(jī)系統(tǒng)中的CPU而言的,由于人們對(duì)圖形的需求越來(lái)越大,尤其是在家用系統(tǒng)
GPU英文名稱(chēng)為GraphicProcessingUnit,GPU1999年,中文全稱(chēng)為計(jì)算機(jī)圖形處理器NVIDIA公司提出。
一、GPU概述
GPU與計(jì)算機(jī)系統(tǒng)對(duì)于計(jì)算機(jī)系統(tǒng)CPU而言的,由于人們對(duì)圖形的需求越來(lái)越大,尤其是在家用系統(tǒng)和游戲發(fā)燒友,而傳統(tǒng)的CPU不能滿(mǎn)足現(xiàn)狀,需要提供專(zhuān)門(mén)處理圖形的核心處理器。
GPU作為硬件顯卡的心臟,其地位相當(dāng)于CPU在計(jì)算機(jī)系統(tǒng)中的作用。GPU也可用作區(qū)分2D硬件顯卡和3D硬件顯卡的重要依據(jù)。D硬件顯卡主要通過(guò)使用CPU處理特性和3D圖像稱(chēng)為軟加速。
3D硬件顯卡是特性和3D圖像處理能力集中在硬件顯卡上,即硬件加速。目前市場(chǎng)上流行的顯卡大多是由于NVIDIA及ATI這兩家公司生產(chǎn)的。
1.1.為什么需要專(zhuān)門(mén)出現(xiàn)?GPU處理圖形工作,CPU為什么不呢?
GPU和CPU串行編程模型完全不同,導(dǎo)致許多CPU優(yōu)秀的算法不能直接映射到GPU上,并且GPU因此,該結(jié)構(gòu)相當(dāng)于共享存儲(chǔ)式多處理結(jié)構(gòu)GPU并行程序與上述設(shè)計(jì)CPU上面的串行程序差別很大。GPU主要采用立方環(huán)境材料地圖、硬體T&L、重要技術(shù),如頂點(diǎn)混合、凹凸映射貼圖和紋理壓縮、渲染引擎等重要技術(shù)。
由于圖形渲染任務(wù)高度并行,GPU僅通過(guò)增加并行處理單元和存儲(chǔ)器控制單元,就能有效提高存儲(chǔ)器的處理能力和帶寬。
GPU設(shè)計(jì)目的和CPU截然不同,CPU設(shè)計(jì)用于處理一般任務(wù),因此具有復(fù)雜的控制單元GPU主要用于處理計(jì)算性強(qiáng)、邏輯性弱的計(jì)算任務(wù),GPU可用的處理單元可以更多地用作執(zhí)行單元。因此,與CPU,GPU具有大量重復(fù)數(shù)據(jù)集運(yùn)算和頻繁內(nèi)存訪(fǎng)問(wèn)等特點(diǎn)的應(yīng)用場(chǎng)景具有無(wú)可比擬的優(yōu)勢(shì)。
1.2、GPU如何使用?
使用GPU通過(guò)通用圖形庫(kù)接口調(diào)用開(kāi)發(fā)應(yīng)用程序有兩種方法GPU另一種是設(shè)備GPU自身提供API通過(guò)編程,應(yīng)用程序通過(guò)GPU提供的API直接調(diào)用編程接口GPU設(shè)備。
1.2.一、通用圖形庫(kù)
通過(guò)通用圖形庫(kù)使用GPU,都是通過(guò)OpenGL或Direct3D編寫(xiě)渲染語(yǔ)言的現(xiàn)有圖形函數(shù)庫(kù)(ShadingLanguage)的方法控制GPU內(nèi)部的渲染器(Shader)完成所需的計(jì)算。
目前,業(yè)界公認(rèn)的圖形編程接口主要包括OpenGL和DirectX這兩個(gè)接口。OpenGL目前可用于開(kāi)發(fā)可互動(dòng)和可移植的2D與3D圖形應(yīng)用的首選環(huán)境也是目前圖形應(yīng)用最廣泛的標(biāo)準(zhǔn)。OpenGL是SGI公司開(kāi)發(fā)的計(jì)算機(jī)圖形處理系統(tǒng)是圖形硬件的軟件接口,GL為圖形庫(kù)(GraphicsLibrary),OpenGL應(yīng)用程序不需要關(guān)注運(yùn)行環(huán)境中的操作系統(tǒng)和平臺(tái)。
只要遵循任何一個(gè)OpenGL相同的可視化效果將在標(biāo)準(zhǔn)環(huán)境中產(chǎn)生。與OpenGL類(lèi)似,DirectX(DirecteXtension)也是一種圖形API。它是由Microsoft創(chuàng)建的多媒體編程界面已成為微軟視窗的標(biāo)準(zhǔn)。為適應(yīng)GPU應(yīng)用需求,DirectX則根據(jù)GPU新產(chǎn)品功能的擴(kuò)展和進(jìn)展及時(shí)定義了新版本,其功能幾乎與GPU提供的功能同步。
1.2.2、GPU自編接口
GPU提供自己的編程接口主要由提供GPU兩家公司提供設(shè)備,包括NVIDIA的CUDA框架和AMD(ATI)公司于2006年提出CTM(CloseToMetal)框架(注意,最初是ATI公司生產(chǎn)GPU設(shè)備,后被AMD收購(gòu))。AMD的CTM框架現(xiàn)在使用,主要是因?yàn)锳MD(ATI)于2007年推出了ATIStreamSDK架構(gòu),2008年AMD(ATI)完全轉(zhuǎn)向公開(kāi)OpenCL標(biāo)準(zhǔn),因此AMD(ATI)目前,公司還沒(méi)有獨(dú)立和私有的通用計(jì)算框架。
2007年NVIDIA公司發(fā)布CUDA(ComputeUnifiedDeviceArchitecture)專(zhuān)用通用計(jì)算框架。使用CUDA通用計(jì)算編程不再需要圖形學(xué)的幫助API,相反,開(kāi)發(fā)的方法與C語(yǔ)言非常相似。在CUDA在編程模型中,有一個(gè)被稱(chēng)為主機(jī)(Host)的CPU和幾個(gè)被稱(chēng)為設(shè)備(Device)或協(xié)處理器(Co-Processor)的GPU。
在這個(gè)模型中,CPU和GPU各司其職。CPU負(fù)責(zé)邏輯事務(wù)處理和串行計(jì)算,GPU重點(diǎn)執(zhí)行線(xiàn)程并行處理任務(wù)。CPU、GPU各自擁有相互獨(dú)立的存儲(chǔ)器地址空間主機(jī)端的內(nèi)存和設(shè)備端的顯存。一般采用CUDA石油勘測(cè)、流體力學(xué)模擬、分子動(dòng)力學(xué)模擬、生物計(jì)算、音視頻編解碼、天文計(jì)算等大型應(yīng)用程序。
而我們一般企業(yè)級(jí)的應(yīng)用程序由于開(kāi)發(fā)成本以及兼容性等原因,大多數(shù)都是采用通用的圖形庫(kù)來(lái)進(jìn)行開(kāi)發(fā)調(diào)用GPU設(shè)備。
1.3、GPU如何工作?
GPU一般計(jì)算和圖形處理的內(nèi)部組件主要有兩部分:頂點(diǎn)處理器(VertexProcessor)和子素處理器(FragmentProcessor)。該處理器具有流處理器的模式,即可讀寫(xiě)無(wú)大容量快速存儲(chǔ)/存儲(chǔ)器,能直接使用臨時(shí)存儲(chǔ)器在芯片上操作流數(shù)據(jù)。
當(dāng)GPU當(dāng)用于圖形處理時(shí),此時(shí)GPU流處理器可以完成內(nèi)部頂點(diǎn)渲染、像素渲染和幾何渲染操作。從圖中可以看出,此時(shí)GPU所有內(nèi)部流處理器相當(dāng)于多核處理器,數(shù)據(jù)可以在不同流處理器的輸入輸出之間移動(dòng),同時(shí)GPU分派器和控制邏輯可以動(dòng)態(tài)的指派流處理器進(jìn)行相應(yīng)的頂點(diǎn),像素,幾何等操作,因?yàn)榱魈幚砥鞫际峭ㄓ玫摹?/p>
二、GPU虛擬化
目前,虛擬機(jī)系統(tǒng)中有三種圖形處理方法:一種是虛擬顯卡,另一種是直接使用物理顯卡,最后使用GPU虛擬化。
2.1、虛擬顯卡
第一種使用虛擬顯卡是主流虛擬化系統(tǒng)的選擇,因?yàn)閷?zhuān)業(yè)的顯卡硬件很貴。目前使用虛擬顯卡的技術(shù)包括:
虛擬網(wǎng)絡(luò)計(jì)算機(jī)VNC(VirtualNetworkComputing)
Xen虛擬幀緩存
VMware顯示處理器的虛擬圖形GPU(GraphicsProcessingUnit)
圖形加速系統(tǒng)獨(dú)立于虛擬機(jī)管理器VMGL(VMM-IndependentGraphicsAcceleration)。
VNC(VirtualNetworkComputing)它基本上屬于一種顯示系統(tǒng),即它可以通過(guò)網(wǎng)絡(luò)將完整的窗口界面?zhèn)鬏數(shù)搅硪慌_(tái)計(jì)算機(jī)的屏幕上。Windows服務(wù)器中包含的TerminalServer屬于這一原則的設(shè)計(jì)。VNC是由AT&T實(shí)驗(yàn)室開(kāi)發(fā)的GPL(GeneralPublicLicense)任何人都可以免費(fèi)獲得授權(quán)條款。VNC軟件由兩部分組成:VNCserver和VNCviewer。用戶(hù)需先將VNCserver只有安裝在遠(yuǎn)程控制的計(jì)算機(jī)上,才能在主控端執(zhí)行VNCviewer遠(yuǎn)程控制。
XEN虛擬幀緩存是指XEN虛擬顯示設(shè)備。虛擬顯示設(shè)備采用特權(quán)域VNC因此,虛擬顯示設(shè)備具有類(lèi)似的服務(wù)器VNC接口。客戶(hù)機(jī)在XEN將數(shù)據(jù)寫(xiě)入虛擬幀緩存中,然后通過(guò)VNC協(xié)議傳輸修改后的圖片,最后通知前端更新相應(yīng)區(qū)域。虛擬幀緩存設(shè)備的源代碼來(lái)自開(kāi)源Qemu。我們?cè)赬enServer虛擬機(jī)操作系統(tǒng)的桌面界面是該技術(shù)的顯示。
虛擬網(wǎng)絡(luò)計(jì)算機(jī)VNC和XEN虛擬幀緩存這兩種模式在虛擬機(jī)中還沒(méi)有提供一定的硬件圖形加速能力。由于沒(méi)有機(jī)制使虛擬機(jī)訪(fǎng)問(wèn)圖形硬件,這些虛擬顯示設(shè)備是通過(guò)使用的CPU以及形數(shù)據(jù)進(jìn)行內(nèi)存處理。沒(méi)有物理顯示設(shè)備的功能。
然而VMGL這種機(jī)制已經(jīng)實(shí)現(xiàn),通常稱(chēng)為前端-后端虛擬化機(jī)制(Front-endvirtualization)。VMGL該模式將需要圖形處理的數(shù)據(jù)發(fā)送到具有硬件圖形加速功能的虛擬監(jiān)控器上進(jìn)行相應(yīng)的圖形數(shù)據(jù)處理。目前存在的主流比較可用于GPU應(yīng)用程序開(kāi)發(fā)的圖形處理接口有兩種:OpenGL和Direct3D。
在這兩種圖形處理接口中,OpenGL是主流操作系統(tǒng)中唯一能跨平臺(tái)操作的圖形API接口。在虛擬機(jī)平臺(tái)中,VMGL是首個(gè)針對(duì)OpenGLAPI虛擬化項(xiàng)目。VMGL其工作原理是在客戶(hù)端操作系統(tǒng)中部署偽庫(kù)(FakeLibrary)用于替代標(biāo)準(zhǔn)OpenGL庫(kù),偽庫(kù)(FakeLibrary)擁有和標(biāo)準(zhǔn)OpenGL客戶(hù)端操作系統(tǒng)中的偽庫(kù)也實(shí)現(xiàn)了指向遠(yuǎn)程服務(wù)器的宿主機(jī)操作系統(tǒng)的遠(yuǎn)程調(diào)用。
這樣,所有地方OPENGL調(diào)用將被解釋為遠(yuǎn)程服務(wù)器的服務(wù)請(qǐng)求,遠(yuǎn)程服務(wù)器宿主操作系統(tǒng)有真正的服務(wù)請(qǐng)求OPENGL圖書(shū)館、顯卡驅(qū)動(dòng)和物理硬件GPU,它負(fù)責(zé)完成OPENGL請(qǐng)求并在屏幕上顯示執(zhí)行結(jié)果。由于VMGL在整個(gè)操作過(guò)程中是完全透明的,所以調(diào)用OPENGL應(yīng)用程序不需要修改源代碼或重寫(xiě)二進(jìn)制,也不需要對(duì)虛擬機(jī)平臺(tái)進(jìn)行任何更改。
2.2、顯卡直通
顯卡直通也叫顯卡穿透(Pass-Through),指繞過(guò)虛擬機(jī)管理系統(tǒng),將GPU單獨(dú)分配給虛擬機(jī),只有虛擬機(jī)有使用GPU這種獨(dú)家設(shè)備的分配方法保存了權(quán)限GPU完整性和獨(dú)立性在性能上接近非虛擬化條件,可用于通用計(jì)算。但顯卡直通需要使用顯卡的一些特殊細(xì)節(jié),兼容性差,只有部分GPU可使用中等設(shè)備。
Xen4.0增加了VGAPassthrough技術(shù),因此XenServer也有這個(gè)技術(shù),XenServer的Passthrough就是利用英特爾設(shè)備虛擬化(IntelVT-d)該技術(shù)將顯示設(shè)備暴露給客戶(hù)虛擬機(jī),不僅其他客戶(hù)虛擬機(jī)無(wú)法訪(fǎng)問(wèn),而且宿主虛擬機(jī)也失去了使用GPU的能力。它在客戶(hù)虛擬機(jī)中實(shí)現(xiàn)了顯卡的一些特殊細(xì)節(jié),如VGABIOS、文本模式、IO端口、內(nèi)存映射、VESA支持直接訪(fǎng)問(wèn)的模式等。使用XenServer的VGAPass-Through技術(shù)的GPU執(zhí)行效率高,功能齊全,但只能由單個(gè)系統(tǒng)獨(dú)占,設(shè)備復(fù)用功能喪失。VMwareESXi中包括一個(gè)VMDirectPathI/O框架,使用該技術(shù)也可以直接使用我們的顯卡設(shè)備到虛擬機(jī)。
XenServer和VMware使用不同的技術(shù),但效果是一樣的,即物理顯卡設(shè)備直接用于虛擬機(jī),以實(shí)現(xiàn)虛擬機(jī)3D顯示和渲染效果。
由于顯卡直通實(shí)際上是由客戶(hù)操作系統(tǒng)使用的,缺乏必要的中間層來(lái)跟蹤和維護(hù)GPU狀態(tài)支持虛擬機(jī)的高級(jí)特性,如實(shí)時(shí)遷移。如XenServerPassthrough禁止執(zhí)行Save/Restore/Migration等操作。VMware在虛擬機(jī)中,一旦打開(kāi)VMDirectPathI/O功能,相應(yīng)的虛擬機(jī)將失去執(zhí)行懸掛/恢復(fù)和實(shí)時(shí)遷移的能力。
2.3.顯卡虛擬化(GPU虛擬化)
顯卡虛擬化是將顯卡切片,并將這些顯卡時(shí)間片分配給虛擬機(jī)的過(guò)程。由于支持顯卡虛擬化的顯卡通??梢愿鶕?jù)需要分為不同規(guī)格的時(shí)間片,因此可以分配給多臺(tái)虛擬機(jī)。實(shí)際上,實(shí)現(xiàn)原則是利用應(yīng)用層接口虛擬化(APIremoting),API重定向是指在應(yīng)用層中攔截GPU相關(guān)應(yīng)用程序編程接口(API),通過(guò)重定向(仍然使用)GPU)完成相應(yīng)功能的方法,然后將執(zhí)行結(jié)果返回應(yīng)用程序。
我們現(xiàn)在用Citrix的3D大多數(shù)桌面虛擬化解決方案都是使用的NVIDIA公司提供的顯卡虛擬化技術(shù)是vCUDA(virtualCUDA)我們前面說(shuō)過(guò)技術(shù)。CUDA框架,再此不在說(shuō)明。vCUDA用戶(hù)層攔截和重定向CUDAAPI在虛擬機(jī)中建立物理的方法GPU的邏輯映像——虛擬GPU,實(shí)現(xiàn)GPU細(xì)粒度細(xì)粒度劃分、重組和再利用支持虛擬機(jī)的先進(jìn)特性,如多機(jī)并發(fā)、懸掛和恢復(fù)。
其vCUDA實(shí)現(xiàn)原理大約包括三個(gè)模塊:CUDA客戶(hù)端、CUDA服務(wù)端和CUDA管理端。以XenServer例如,物理硬件資源運(yùn)行VMM用于向上提供硬件圖像VMM幾臺(tái)虛擬機(jī)在上面運(yùn)行。其中一臺(tái)虛擬機(jī)是特權(quán)虛擬機(jī)(HostVM),即為XenServer中的Domain0.在虛擬機(jī)中運(yùn)行的操作系統(tǒng)稱(chēng)為HostOS。
HostOS能直接控制硬件,系統(tǒng)內(nèi)安裝原生硬件CUDA庫(kù)以及GPU驅(qū)動(dòng),使得HostOS可直接訪(fǎng)問(wèn)GPU和使用CUDA。其他虛擬機(jī)屬于非特權(quán)虛擬機(jī)(GuestVM),上述操作系統(tǒng)(GuestOS)不能直接操作GPU。我們將在這里CUDA客戶(hù)端稱(chēng)為客戶(hù)端驅(qū)動(dòng),CUDA服務(wù)端稱(chēng)之為宿主機(jī)的驅(qū)動(dòng),CUDA管理端稱(chēng)之為GPU管理器。
2.3.1、客戶(hù)端
客戶(hù)端驅(qū)動(dòng)其實(shí)質(zhì)就是我們安裝在虛擬機(jī)比如Windows7上的顯卡驅(qū)動(dòng)程序。主要功能是為用戶(hù)層提供CUDAAPI庫(kù)和維護(hù)CUDA虛擬軟硬件狀態(tài)相關(guān)軟硬件狀態(tài)GPU(vGPU)。直接面向客戶(hù)端驅(qū)動(dòng)CUDA其作用包括:
1)攔截應(yīng)用程序CUDAAPI調(diào)用;
2)選擇通信策略,為虛擬化提供更高層次的語(yǔ)義支持;
3)包裝和編碼調(diào)用的接口和參數(shù);
4)解碼服務(wù)器返回的數(shù)據(jù)并返回應(yīng)用程序。
此外,客戶(hù)端驅(qū)動(dòng)是第一個(gè)API調(diào)用前,先到管理端索取GPU資源。每一個(gè)獨(dú)立的調(diào)用過(guò)程都必須驅(qū)動(dòng)宿主管理端的申請(qǐng)資源,以實(shí)現(xiàn)對(duì)GPU實(shí)時(shí)調(diào)度資源和任務(wù)。
此外,還設(shè)置了客戶(hù)端驅(qū)動(dòng)vGPU用于維護(hù)與顯卡相關(guān)的軟硬件狀態(tài)。vGPU本質(zhì)上,它只是一個(gè)鍵值對(duì)的數(shù)據(jù)結(jié)構(gòu),存儲(chǔ)當(dāng)前使用的地址空間、顯存對(duì)象、內(nèi)存對(duì)象等,并記錄API調(diào)用順序。當(dāng)計(jì)算結(jié)果返回時(shí),客戶(hù)端驅(qū)動(dòng)將根據(jù)結(jié)果更新vGPU。
2.3.2、服務(wù)器端
服務(wù)器組件位于特權(quán)虛擬機(jī)(XenServer術(shù)語(yǔ):特權(quán)域)中的應(yīng)用層。特權(quán)虛擬機(jī)可以直接與硬件交互,因此服務(wù)器組件可以直接操作物理GPU完成一般計(jì)算任務(wù)。服務(wù)端面向真實(shí)。GPU,其功能包括:
1)接收客戶(hù)端數(shù)據(jù)報(bào)告,分析調(diào)用和參數(shù);
2)對(duì)調(diào)用和參數(shù)進(jìn)行審核;
3)利用CUDA和物理GPU通過(guò)計(jì)算審核的調(diào)用;
4)編碼結(jié)果并返回客戶(hù)端;
5)支持計(jì)算系統(tǒng)CUDA的GPU進(jìn)行管理。
此外,服務(wù)端運(yùn)行的第一個(gè)任務(wù)是支持自己CUDA的GPU在管理端注冊(cè)設(shè)備信息。當(dāng)服務(wù)端響應(yīng)客戶(hù)端的要求時(shí),為每個(gè)應(yīng)用程序分配獨(dú)立的服務(wù)線(xiàn)程。當(dāng)?shù)胤?wù)端統(tǒng)一管理GPU根據(jù)一定的策略提供資源GPU因?yàn)橘Y源API調(diào)用修改后的相關(guān)軟硬件狀態(tài)更新至vGPU。
2.3.3、管理端
管理端組件位于特權(quán)域,實(shí)現(xiàn)CUDA編程接口虛擬化的基礎(chǔ)上,將GPU在更高的邏輯層面上,強(qiáng)大的計(jì)算能力和計(jì)算資源被隔離、劃分和調(diào)度。在CUDA在一定程度上,服務(wù)端使用計(jì)算線(xiàn)程和工作線(xiàn)程在同一物理機(jī)器上GPU間負(fù)荷平衡,設(shè)置CUDA管理端組件在更高的邏輯層面上平衡負(fù)載,使其在同一個(gè)層面GPU在虛擬集群中GPU負(fù)載均衡。
管理端組件調(diào)度的原則是盡可能在同一個(gè)物理機(jī)器上GPU如果物理機(jī)上滿(mǎn)足條件,需求自給。GPU一般來(lái)說(shuō),物理機(jī)上的虛擬機(jī)資源GPU所有需求都重定向于物理機(jī)CUDA服務(wù)端。
管理端對(duì)GPU統(tǒng)一管理資源,采用集中靈活的機(jī)制,實(shí)現(xiàn):
1)動(dòng)態(tài)調(diào)度:當(dāng)用戶(hù)占用的空閑時(shí)間超過(guò)一定閾值或任務(wù)結(jié)束時(shí),管理端回收資源,當(dāng)用戶(hù)再次發(fā)布計(jì)算任務(wù)時(shí),重新分配任務(wù)GPU資源;
2)負(fù)載平衡:當(dāng)局部計(jì)算壓力過(guò)大時(shí),通過(guò)動(dòng)態(tài)調(diào)度調(diào)整計(jì)算負(fù)載,選擇合適的負(fù)載GPU資源分散計(jì)算負(fù)載;
3)故障恢復(fù):當(dāng)出現(xiàn)故障時(shí),將任務(wù)轉(zhuǎn)移到新的可用性GPU資源上。
騰佑科技(m.mubashirfilms.com)成立于2009年,總部位于河南鄭州,是一家集互聯(lián)網(wǎng)基礎(chǔ)設(shè)施及軟硬件于一體化的高新技術(shù)企業(yè),具有IDC/ISP/ICP/云牌照、雙軟等資質(zhì),并擁有多個(gè)國(guó)家版權(quán)局認(rèn)證。公司自成立以來(lái),一直致力于發(fā)展互聯(lián)網(wǎng)IDC數(shù)據(jù)中心DataCenter、云計(jì)算Cloud、大數(shù)據(jù)BigDate、人工智能AI、內(nèi)容加速CDN、互聯(lián)網(wǎng)安全、軟件定制開(kāi)發(fā)等產(chǎn)品服務(wù)及行業(yè)客戶(hù)技術(shù)一體化智能解決方案;2018年成為百度智能云AI河南服務(wù)中心。
售前咨詢(xún)熱線(xiàn):400-996-8756
備案提交:0371-89913068
售后客服:0371-89913000
搜索詞
熱門(mén)產(chǎn)品推薦