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