自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

五分鐘技術(shù)趣談 | 淺談GPU虛擬化

人工智能
GPU虛擬化是一種技術(shù),它允許多個(gè)虛擬環(huán)境共享單個(gè)物理GPU的資源,它能帶來提高資源利用率、降低成本、高靈活性和可擴(kuò)展性、提高安全性等方面的好處。隨著GPU在各種領(lǐng)域的應(yīng)用越來越普及,如圖形渲染、通用計(jì)算(如深度學(xué)習(xí))、音視頻編解碼等,GPU虛擬化也在近年來得到了越來越廣泛的關(guān)注。

Part 01 背景 

1.1 GPU應(yīng)用場(chǎng)景

GPU(圖形處理器)最初設(shè)計(jì)用于處理計(jì)算機(jī)圖形學(xué)任務(wù),但現(xiàn)在其應(yīng)用場(chǎng)景已經(jīng)擴(kuò)展到了許多其他領(lǐng)域。以下是一些GPU應(yīng)用的場(chǎng)景:

游戲和視覺效果:GPU最初的目的是為了加速圖形渲染,因此它們?cè)谟螒蚝鸵曈X效果方面有很大的應(yīng)用。GPU可以快速處理大量數(shù)據(jù)并生成復(fù)雜的三維圖形,為玩家提供更真實(shí)的游戲體驗(yàn)。

機(jī)器學(xué)習(xí)和深度學(xué)習(xí):近年來,GPU在人工智能領(lǐng)域的應(yīng)用越來越廣泛。由于深度學(xué)習(xí)模型需要大量的并行計(jì)算和浮點(diǎn)運(yùn)算,GPU非常適合這種任務(wù)。使用GPU加速機(jī)器學(xué)習(xí)訓(xùn)練過程可以節(jié)省大量時(shí)間。

科學(xué)模擬和數(shù)據(jù)分析:許多科學(xué)計(jì)算任務(wù)需要處理大量數(shù)據(jù)并進(jìn)行復(fù)雜數(shù)學(xué)運(yùn)算。GPU可以在分子動(dòng)力學(xué)、流體動(dòng)力學(xué)、天文學(xué)、地球科學(xué)等領(lǐng)域的模擬和分析中發(fā)揮重要作用。

圖像和視頻處理:GPU在圖像和視頻處理領(lǐng)域也有很大的應(yīng)用。例如,它們可以用于實(shí)時(shí)視頻編解碼、圖像降噪、圖像增強(qiáng)、圖像識(shí)別等任務(wù)。

虛擬現(xiàn)實(shí)和增強(qiáng)現(xiàn)實(shí):GPU在虛擬現(xiàn)實(shí)(VR)和增強(qiáng)現(xiàn)實(shí)(AR)領(lǐng)域也有很大的應(yīng)用。它們可以實(shí)時(shí)渲染高質(zhì)量的虛擬環(huán)境,為用戶提供沉浸式體驗(yàn)。

可以預(yù)見,隨著技術(shù)的發(fā)展,GPU的應(yīng)用領(lǐng)域還將繼續(xù)擴(kuò)展。

1.2 GPU虛擬化帶來的優(yōu)勢(shì)

GPU虛擬化是一種將物理GPU的計(jì)算和顯存資源在多個(gè)虛擬環(huán)境中共享的技術(shù),它的主要優(yōu)勢(shì)如下:

資源共享:GPU虛擬化允許在多個(gè)虛擬環(huán)境中共享物理GPU的計(jì)算和顯存資源,提高GPU的使用效率。

彈性擴(kuò)展:通過GPU虛擬化,可以根據(jù)應(yīng)用程序的需求動(dòng)態(tài)調(diào)整虛擬GPU的計(jì)算和顯存資源,實(shí)現(xiàn)資源的彈性擴(kuò)展。

成本效益:GPU虛擬化可以降低硬件投資和維護(hù)成本,因?yàn)樗试S在多個(gè)虛擬環(huán)境中共享物理GPU,從而減少了購(gòu)買和維護(hù)多個(gè)獨(dú)立GPU的需要。

隔離性:GPU虛擬化提供了良好的隔離性,確保了虛擬環(huán)境之間的安全和獨(dú)立性。這在多租戶云計(jì)算環(huán)境中尤為重要,因?yàn)樗梢源_保不同租戶之間的數(shù)據(jù)和計(jì)算隔離。

靈活部署:GPU虛擬化使得虛擬環(huán)境可以靈活地部署在不同的物理硬件上,以滿足不同的性能需求。這意味著用戶可以根據(jù)自己的需求選擇合適的GPU硬件,而無需考慮與現(xiàn)有虛擬環(huán)境的兼容性問題。

Part 02 相關(guān)基礎(chǔ)概念

為方便大家理解GPU虛擬化,先介紹相關(guān)的基礎(chǔ)概念,包括I/O總線、GPU API、GPU工作流程。

2.1 I/O總線


圖片圖片

根據(jù)接口協(xié)議的性能,現(xiàn)代計(jì)算機(jī)對(duì)I/O總線進(jìn)行了分層。

見上圖,一些外圍相對(duì)較慢的I/O設(shè)備則通過外圍I/O總線連接到系統(tǒng),比如使用SCSI(Small Computer System Interface)、SATA(Serial AT Attachment)或者USB(Universal Serial Bus)等協(xié)議的I/O設(shè)備。而顯卡、網(wǎng)卡等高性能的I/O設(shè)備通過通用I/O總線連接到系統(tǒng),在許多現(xiàn)代系統(tǒng)中會(huì)是PCIe(Peripheral Component Interconnect Express)或它的衍生形式。

2.2 GPU API

為了支持各種功能,GPU提供了不同類型的API,讓開發(fā)者能夠在應(yīng)用程序中使用GPU的強(qiáng)大功能。這些API可分為三類:圖形渲染、通用計(jì)算和音視頻編解碼。

圖形渲染API被用于處理圖形渲染任務(wù),例如實(shí)時(shí)3D圖形和動(dòng)畫。這些API提供了一組函數(shù)和接口,允許開發(fā)者在程序中創(chuàng)建和操縱3D對(duì)象、紋理和著色器。這些API經(jīng)常被用于游戲和3D建模軟件。主要的渲染API有:OpenGL(開放圖形庫(kù)):跨平臺(tái)的圖形編程接口,提供2D和3D圖形渲染功能;Vulkan:與OpenGL類似,是一個(gè)跨平臺(tái)的3D圖形和計(jì)算API,但提供了更低級(jí)的硬件控制和更高的性能;DirectX:由微軟開發(fā)的一系列API,包括Direct3D,用于處理Windows平臺(tái)上的3D圖形渲染;Metal:由蘋果開發(fā)的圖形和計(jì)算API,專為iOS和macOS平臺(tái)設(shè)計(jì)。

通用計(jì)算API允許開發(fā)者將GPU用于通用計(jì)算任務(wù),而不僅僅是圖形渲染。這些任務(wù)可能包括物理模擬、機(jī)器學(xué)習(xí)、圖像處理等。通用計(jì)算API提供了編程模型和優(yōu)化工具,以便在GPU上實(shí)現(xiàn)高性能并行計(jì)算。主要的通用計(jì)算API有:CUDA(Compute Unified Device Architecture):由NVIDIA開發(fā)的并行計(jì)算平臺(tái)和編程模型,專為NVIDIA GPU設(shè)計(jì);OpenCL(開放計(jì)算語言):跨平臺(tái)的并行計(jì)算API,可以在不同類型的處理器(如GPU、CPU和其他加速器)上運(yùn)行。

音視頻編解碼API用于處理音頻和視頻數(shù)據(jù)的編碼和解碼。它們利用GPU的并行處理能力來加速音視頻數(shù)據(jù)的壓縮和解壓縮。主要的音視頻編解碼API有:NVENC/NVDEC:NVIDIA GPU上的硬件加速視頻編碼和解碼API,支持常見的視頻編碼標(biāo)準(zhǔn),如H.264、HEVC和VP9;AMD VCE/UVD:AMD GPU上的硬件加速視頻編碼和解碼API,支持常見的視頻編碼標(biāo)準(zhǔn);Intel Quick Sync Video:Intel處理器集成GPU上的硬件加速視頻編解碼API;VideoToolbox:蘋果平臺(tái)上的硬件加速視頻編解碼框架,支持iOS和macOS設(shè)備。

2.3 GPU工作流程

在沒有虛擬化的情況下,渲染涉及到的關(guān)鍵組件見下圖。


圖片圖片

一個(gè)典型的GPU設(shè)備的工作流程如下:

應(yīng)用調(diào)用GPU支持的某個(gè)API,如OpenGL或DirectX;

OpenGL或DirectX庫(kù),提交渲染負(fù)載到操作系統(tǒng)內(nèi)核GPU驅(qū)動(dòng);

GPU驅(qū)動(dòng)把它提交給GPU硬件;

GPU硬件開始工作。完成后,DMA到內(nèi)存,發(fā)出中斷給CPU;

CPU找到中斷處理程序(GPU驅(qū)動(dòng)此前向操作系統(tǒng)注冊(cè)過的)調(diào)用它;

中斷處理程序找到是哪個(gè)渲染負(fù)載被執(zhí)行完畢了,最終GPU驅(qū)動(dòng)喚醒相關(guān)的應(yīng)用。

Part 03 GPU虛擬化技術(shù)方案

3.1 PCIe直通

PCIe直通是一種虛擬化技術(shù),允許虛擬機(jī)(Virtual Machine,VM)直接訪問物理主機(jī)上的PCIe設(shè)備,而無需通過虛擬化軟件進(jìn)行模擬。通過PCIe直通就可以將GPU設(shè)備直接分配給虛擬機(jī),見下圖:


圖片圖片

各大公用云廠商廣泛采用直通模式,因?yàn)樗男阅軗p耗最小,硬件驅(qū)動(dòng)無需修改。直通模式?jīng)]有對(duì)可支持的GPU數(shù)量做限制,也沒有對(duì)GPU功能性做閹割,因此大多數(shù)功能可以在直通模式下無修改支持。

? 直通模式存在以下優(yōu)點(diǎn):

①性能損耗小;

②功能兼容性好;

③技術(shù)簡(jiǎn)單,運(yùn)維成本低,對(duì)GPU廠商沒有依賴。

? 直通模式存在以下缺點(diǎn):

1.不支持熱遷移;

2.只能支持1:1,不支持GPU資源分隔。

3.2 PCIe SR-IOV

PCIe SR-IOV(Single Root Input/Output Virtualization)是一種更高級(jí)的虛擬化技術(shù),允許一個(gè)PCIe設(shè)備在多個(gè)虛擬機(jī)之間共享,同時(shí)保持較高的性能。它是通過在物理設(shè)備(Physical Functions,PF)上創(chuàng)建多個(gè)虛擬功能(Virtual Functions,VF)來實(shí)現(xiàn)的,每個(gè)虛擬功能可以被分配給一個(gè)虛擬機(jī),讓虛擬機(jī)直接訪問和控制這些虛擬功能,從而實(shí)現(xiàn)高效的I/O虛擬化。基于PCIe SR-IOV的GPU虛擬化方案,本質(zhì)是把一個(gè)物理GPU顯卡設(shè)備(PF)拆分成多份虛擬(VF)的顯卡設(shè)備,而且VF 依然是符合 PCIe 規(guī)范的設(shè)備。核心架構(gòu)如下圖:


圖片圖片

在SR-IOV方案中,可以將一個(gè)PF虛擬化分割為多個(gè)VF。

基于此,SR-IOV有三種應(yīng)用場(chǎng)景:

(1)用戶基于HostOS通過PF驅(qū)動(dòng)直接使用PF;

(2)用戶基于HostOS通過VF驅(qū)動(dòng)直接使用VF;

(3)用戶在VM中通過VF驅(qū)動(dòng)使用VF;

? SR-IOV方案的優(yōu)點(diǎn):

①每個(gè)VF都有獨(dú)立的配置空間、MMIO、地址空間,因此數(shù)據(jù)更加安全;

②真正實(shí)現(xiàn)了1:N,一個(gè)PCIe設(shè)備提供給多個(gè)VM使用;

? SR-IOV方案的缺點(diǎn):

1.靈活性較差,無法進(jìn)行更細(xì)粒度的分割與調(diào)度;

2.不支持熱遷移。

業(yè)界支持SR-IOV的顯卡:

1、AMD Radeon PRO V620:一塊顯卡PV支持分割12個(gè)VF。

2、摩爾線程MTT S3000:一塊顯卡PV支持分隔32個(gè)VF。

3.3 API轉(zhuǎn)發(fā)

在苦等PCIe SR-IOV期間,業(yè)界出現(xiàn)了基于API轉(zhuǎn)發(fā)的GPU虛擬化方案。API轉(zhuǎn)發(fā)分為被調(diào)方和調(diào)用方,兩方對(duì)外提供同樣的接口(API),被調(diào)方API實(shí)現(xiàn)是真實(shí)的渲染、計(jì)算處理邏輯,而調(diào)用方API實(shí)現(xiàn)僅僅是轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)給被調(diào)方。其核心架構(gòu)示意如下圖:


圖片圖片

在GPU API層的轉(zhuǎn)發(fā),業(yè)界有針對(duì)OpenGL的AWS Elastic GPU,OrionX,有針對(duì)CUDA的騰訊vCUDA,瓦倫西亞理工大學(xué)rCUDA;在GPU驅(qū)動(dòng)層的轉(zhuǎn)發(fā),有針對(duì)CUDA的阿里云cGPU和騰訊云pGPU。

? API轉(zhuǎn)發(fā)方案的優(yōu)點(diǎn):

①靈活性最高。通過API轉(zhuǎn)發(fā)的方式解耦應(yīng)用與GPU設(shè)備之后,可以通過軟件任意配置1塊GPU設(shè)備服務(wù)N個(gè)VM。也能做到靈活的GPU資源擴(kuò)縮容、遷移等等;

②不依賴GPU硬件廠商。

③不限虛擬化環(huán)境。

? API轉(zhuǎn)發(fā)方案的缺點(diǎn):

1.復(fù)雜度極高。同一功能有多套 API(渲染的 DirectX 和 OpenGL),同一套 API 還有不同版本(如 DirectX 9 和 DirectX 11),兼容性非常復(fù)雜。

2.功能不完整。如不支持媒體編解碼。

3.4 受控直通

受控直通方案是由Nvidia提出,并聯(lián)合Intel一起將相關(guān)的mdev提交到了Linux內(nèi)核4.0中。受控直通把會(huì)影響性能的訪問直接透?jìng)鹘oGPU(如顯存),把性能無關(guān)功能部分(如CSR和部分MMIO寄存器)做攔截,并在mdev模塊中做模擬,使得系統(tǒng)層面能看到多個(gè)“看似”完整的多個(gè)GPU PCIe設(shè)備,即vGPU,它也可以支持原生GPU驅(qū)動(dòng)。


圖片圖片

? 該方案的優(yōu)點(diǎn):

①具備1:N的靈活性;

②高性能;

③功能完備,3D渲染、通用計(jì)算、媒體編解碼都支持。

? 該方案的缺點(diǎn):宿主機(jī)的GPU驅(qū)動(dòng)相當(dāng)于在模擬GPU,而GPU的硬件不開源,導(dǎo)致只有GPU廠商才能提供這一部分。

業(yè)界的受控直通實(shí)現(xiàn),有Nvidia的vGPU、Intel的GVT-g、摩爾線程的MT Mesh 2.0(MTT S3000顯卡)。

責(zé)任編輯:龐桂玉 來源: 移動(dòng)Labs
相關(guān)推薦

2023-07-23 18:47:59

Docker開源

2023-04-15 20:25:23

微前端

2023-09-02 20:22:42

自動(dòng)化測(cè)試軟件開發(fā)

2024-12-18 14:10:33

2023-07-02 16:17:31

VR虛擬現(xiàn)實(shí)

2021-06-04 15:55:57

GPU云桌面5G+AI

2023-09-03 19:06:42

2023-08-06 07:05:25

Android優(yōu)化

2023-08-29 06:55:43

2023-07-16 18:49:42

HTTP網(wǎng)絡(luò)

2023-08-06 06:55:29

數(shù)字可視化物聯(lián)網(wǎng)

2023-07-02 16:09:57

人工智能人臉識(shí)別

2023-09-12 07:10:13

Nacos架構(gòu)

2023-08-07 06:39:03

網(wǎng)絡(luò)傳輸

2023-07-31 08:55:15

AI技術(shù)網(wǎng)絡(luò)暴力

2023-07-12 15:50:29

機(jī)器學(xué)習(xí)人工智能

2023-08-29 06:50:01

Javamaven

2023-08-06 07:00:59

Openstack網(wǎng)絡(luò)

2023-08-15 14:46:03

2023-09-17 17:51:43

Android 14
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)