Virtualizzazione GPU - GPU virtualization

La virtualizzazione della GPU si riferisce alle tecnologie che consentono l'uso di una GPU per accelerare la grafica o le applicazioni GPGPU in esecuzione su una macchina virtuale . La virtualizzazione GPU è utilizzata in varie applicazioni come la virtualizzazione desktop , il cloud gaming e la scienza computazionale (es. simulazioni idrodinamiche ).

Le implementazioni della virtualizzazione della GPU generalmente implicano una o più delle seguenti tecniche: emulazione del dispositivo, API remota, pass-through fisso e pass-through mediato. Ogni tecnica presenta compromessi diversi per quanto riguarda il rapporto di consolidamento tra macchina virtuale e GPU , accelerazione grafica , fedeltà di rendering e supporto delle funzionalità , portabilità su hardware diverso, isolamento tra macchine virtuali e supporto per sospensione/ripresa e migrazione live .

API remota

Nel remoting API o nell'inoltro API, le chiamate alle API grafiche dalle applicazioni guest vengono inoltrate all'host tramite chiamata di procedura remota e l'host esegue quindi comandi grafici da più guest utilizzando la GPU dell'host come un singolo utente. Può essere considerata una forma di paravirtualizzazione se combinata con l'emulazione del dispositivo. Questa tecnica consente di condividere le risorse della GPU tra più guest e l'host quando la GPU non supporta la virtualizzazione assistita da hardware. È concettualmente semplice da implementare, ma presenta diversi svantaggi:

  • Nella pura API remoting, c'è poco isolamento tra le macchine virtuali quando si accede alle API grafiche; l'isolamento può essere migliorato usando la paravirtualizzazione
  • Le prestazioni vanno dall'86% fino al 12% delle prestazioni native in applicazioni che emettono un numero elevato di chiamate di disegno per frame
  • È necessario inoltrare un numero elevato di punti di ingresso API e l'implementazione parziale dei punti di ingresso potrebbe diminuire la fedeltà
  • Le applicazioni sui computer guest potrebbero essere limitate a poche API disponibili

Gli hypervisor di solito utilizzano la memoria condivisa tra guest e host per massimizzare le prestazioni e ridurre al minimo la latenza. Utilizzando invece un'interfaccia di rete (un approccio comune nel rendering distribuito ), il software di terze parti può aggiungere il supporto per API specifiche (es. RCUDA per CUDA ) o aggiungere il supporto per API tipiche (es. VMGL per OpenGL ) quando non è supportato da il pacchetto software dell'hypervisor, sebbene il ritardo della rete e l' overhead di serializzazione possano superare i vantaggi.

Supporto delle applicazioni dalle tecnologie di virtualizzazione remota delle API
Tecnologia Direct3D OpenGL Vulcano ApriCL
VMware Virtual Shared Graphics Acceleration (vSGA) 11 4.1 No
Parallels Desktop per Mac Accelerazione 3D 11 3.3 No No
Hyper-V RemoteFX vGPU 11 4.4 No 1.1
Driver 3D di VirtualBox Guest Additions 8/9 2.1 No No
QEMU / KVM con Virgil 3D No 4.3 pianificato No

Passante fisso

In pass-through fisso o pass-through GPU (un caso speciale di pass-through PCI ), una GPU è accessibile direttamente da una singola macchina virtuale in modo esclusivo e permanente. Questa tecnica raggiunge il 96-100% delle prestazioni native e dell'alta fedeltà, ma l'accelerazione fornita dalla GPU non può essere condivisa tra più macchine virtuali. In quanto tale, ha il rapporto di consolidamento più basso e il costo più elevato, poiché ogni macchina virtuale con accelerazione grafica richiede una GPU fisica aggiuntiva.

Le seguenti tecnologie software implementano il pass-through fisso:

VirtualBox ha rimosso il supporto per il pass-through PCI nella versione 6.1.0.

QEMU / KVM

Per alcuni modelli di GPU, i driver della scheda video Nvidia e AMD tentano di rilevare l'accesso alla GPU da parte di una macchina virtuale e disabilitano alcune o tutte le funzionalità della GPU. NVIDIA ha recentemente modificato le regole di virtualizzazione per le GPU consumer disabilitando il controllo nel driver GeForce Game Ready 465.xx e versioni successive.

Per NVIDIA, varie architetture di GPU consumer desktop e laptop possono essere passate in vari modi. Per le schede grafiche desktop, il passthrough può essere eseguito tramite KVM utilizzando la configurazione BIOS legacy o UEFI tramite SeaBIOS e OVMF, rispettivamente.

NVIDIA

Desktop

Per i desktop, è possibile passare la maggior parte delle schede grafiche, anche se per le schede grafiche con architettura Pascal o precedenti, il VBIOS della scheda grafica deve essere passato nella macchina virtuale se la GPU viene utilizzata per avviare l'host.

computer portatili

Per i laptop, il driver NVIDIA verifica la presenza di una batteria tramite ACPI e, senza batteria, verrà restituito un errore. Per evitare ciò, è necessario un accpitable creato da testo convertito in Base64 per falsificare una batteria e ignorare il controllo.

Pascal e prima

Per le schede grafiche per laptop Pascal e precedenti, il passthrough varia notevolmente in base alla configurazione della scheda grafica. Per i laptop che non dispongono di NVIDIA Optimus, come le varianti MXM, il passthrough può essere ottenuto con i metodi tradizionali. Per i laptop con NVIDIA Optimus acceso e il rendering tramite il framebuffer grafico integrato della CPU anziché il proprio, il passthrough è più complicato, richiede un display o un servizio di rendering remoto, l'uso di Intel GVT-g, nonché l'integrazione del VBIOS nella configurazione di avvio a causa della presenza di VBIOS nel BIOS di sistema del laptop rispetto alla GPU stessa. Per i laptop che dispongono di una GPU con NVIDIA Optimus e di un framebuffer dedicato, le configurazioni possono variare. Se NVIDIA Optimus può essere disattivato, il passthrough è possibile con i mezzi tradizionali. Tuttavia, se Optimus è l'unica configurazione, è molto probabile che il VBIOS sia presente nel BIOS di sistema del laptop, richiedendo gli stessi passaggi del rendering del laptop solo sul framebuffer grafico integrato, ma è anche possibile un monitor esterno.

Passaggio mediato

Nel pass-through del dispositivo mediato o nella virtualizzazione completa della GPU, l'hardware della GPU fornisce contesti con intervalli di memoria virtuale per ogni guest tramite IOMMU e l'hypervisor invia comandi grafici dai guest direttamente alla GPU. Questa tecnica è una forma di virtualizzazione assistita da hardware e raggiunge prestazioni quasi native e alta fedeltà. Se l'hardware espone i contesti come dispositivi logici completi, i guest possono utilizzare qualsiasi API. In caso contrario, API e driver devono gestire la complessità aggiuntiva dei contesti GPU. Come svantaggio, potrebbe esserci poco isolamento tra le macchine virtuali quando si accede alle risorse della GPU.

Le seguenti tecnologie software e hardware implementano il pass-through mediato:

  • Accelerazione grafica VMware Virtual Shared Pass-through con Nvidia vGPU o AMD MxGPU
  • Citrix XenServer GPU condivisa con Nvidia vGPU, AMD MxGPU o Intel GVT-g
  • Xen e KVM con Intel GVT-g
  • Thincast Workstation - Funzionalità 3D virtuale (Direct X 12 e API 3D Vulkan)


Sebbene la comunicazione remota API sia generalmente disponibile per le GPU attuali e precedenti, il pass-through mediato richiede il supporto hardware disponibile solo su dispositivi specifici.

Supporto hardware per virtualizzazione pass-through mediata
Venditore Tecnologia Famiglie di schede grafiche dedicate Famiglie di GPU integrate
server Professionale Consumatore
Nvidia vGPU GRIGLIA , Tesla Quadro No -
AMD MxGPU FirePro Server , Radeon Instinct Radeon Pro No No
Intel GVT-g - - - Broadwell e più recente

Emulazione del dispositivo

Le architetture GPU sono molto complesse e cambiano rapidamente e i loro dettagli interni sono spesso tenuti segreti. In genere non è possibile virtualizzare completamente le nuove generazioni di GPU, ma solo le generazioni più vecchie e più semplici. Ad esempio, PCem , un emulatore specializzato dell'architettura PC IBM , può emulare un dispositivo grafico S3 ViRGE /DX, che supporta Direct3D 3, e un 3dfx Voodoo2 , che supporta Glide , tra gli altri.

Quando si utilizza un adattatore per display virtuale VGA o SVGA , il guest potrebbe non disporre dell'accelerazione grafica 3D, fornendo solo funzionalità minime per consentire l'accesso alla macchina tramite un terminale grafico. Il dispositivo emulato può esporre solo le modalità grafiche 2D di base agli ospiti. Il gestore della macchina virtuale può anche fornire implementazioni API comuni utilizzando il rendering del software per abilitare le applicazioni grafiche 3D sul guest, anche se a velocità che possono essere inferiori al 3% delle prestazioni native con accelerazione hardware. Le seguenti tecnologie software implementano le API grafiche utilizzando il rendering software:

Guarda anche

Appunti

Riferimenti