Virtualizace GPU - GPU virtualization

Virtualizace GPU označuje technologie, které umožňují použití GPU k urychlení grafiky nebo aplikací GPGPU spuštěných na virtuálním stroji . Virtualizace GPU se používá v různých aplikacích, jako je virtualizace desktopů , cloudové hraní a výpočetní věda (např. Hydrodynamické simulace).

Implementace virtualizace GPU obecně zahrnují jednu nebo více z následujících technik: emulace zařízení, vzdálená komunikace API, pevné předání a zprostředkované předání. Každá technika představuje různé kompromisy týkající se konsolidačního poměru virtuálního počítače k ​​GPU , akcelerace grafiky , podpory věrnosti vykreslování a funkcí , přenositelnosti na jiný hardware, izolace mezi virtuálními stroji a podpory pozastavení / obnovení a živé migrace .

Vzdálená komunikace API

V vzdálené komunikaci API nebo přesměrování API jsou volání grafických API z aplikací hosta přesměrována na hostitele vzdáleným voláním procedury a hostitel poté provede grafické příkazy od více hostů pomocí GPU hostitele jako jednoho uživatele. Lze jej považovat za formu paravirtualizace v kombinaci s emulací zařízení. Tato technika umožňuje sdílení prostředků GPU mezi více hosty a hostitelem, když GPU nepodporuje virtualizaci podporovanou hardwarem. Je koncepčně jednoduchý na implementaci, ale má několik nevýhod:

  • V čisté vzdálené komunikaci API existuje malá izolace mezi virtuálními počítači při přístupu ke grafickým API; izolaci lze zlepšit pomocí paravirtualizace
  • Výkon se pohybuje od 86% do pouhých 12% nativního výkonu v aplikacích, které vydávají velký počet volání výkresu na snímek
  • Musí být předáno velké množství vstupních bodů API a částečná implementace vstupních bodů může snížit věrnost
  • Aplikace na hostovaných počítačích mohou být omezeny na několik dostupných API

Hypervisory obvykle používají sdílenou paměť mezi hostem a hostitelem k maximalizaci výkonu a minimalizaci latence. Místo toho pomocí síťového rozhraní (běžný přístup v distribuovaném vykreslování ) může software třetích stran přidat podporu pro konkrétní API (např. RCUDA pro CUDA ) nebo přidat podporu pro typická API (např. VMGL pro OpenGL ), pokud to není podporováno softwarový balíček hypervisoru, ačkoli síťové zpoždění a režie serializace mohou převážit výhody.

Podpora aplikací z virtualizačních technologií vzdálené komunikace API
Technologie Direct3D OpenGL Vulkan OpenCL
VMware Virtual Shared Graphics Acceleration (vSGA) 11 4.1 Ano Ne
Parallels Desktop pro Mac 3D akcelerace 11 3.3 Ne Ne
Hyper-V RemoteFX vGPU 11 4.4 Ne 1.1
Virtuální ovladač pro hosty 3D 3D ovladač 8/9 2.1 Ne Ne
QEMU / KVM s Virgil 3D Ne 4.3 Plánováno Ne

Pevný průchod

V pevném předávání nebo předávání GPU (speciální případ předávání PCI ) je GPU přistupováno přímo a jediným virtuálním strojem výhradně a trvale. Tato technika dosahuje 96–100% nativního výkonu a vysoké věrnosti, ale zrychlení poskytované GPU nelze sdílet mezi více virtuálními stroji. Jako takový má nejnižší konsolidační poměr a nejvyšší náklady, protože každý graficky akcelerovaný virtuální stroj vyžaduje další fyzický GPU.

Následující softwarové technologie implementují pevné předávání:

VirtualBox odstranil podporu pro předávání PCI ve verzi 6.1.0.

QEMU / KVM

U některých modelů GPU se ovladače grafických karet Nvidia a AMD pokusí zjistit, že k GPU přistupuje virtuální stroj, a deaktivovat některé nebo všechny funkce GPU. NVIDIA nedávno změnila pravidla virtualizace pro spotřebitelské GPU deaktivací kontroly v ovladači GeForce Game Ready 465.xx a novějším.

U NVIDIA lze různé architektury spotřebitelských GPU pro stolní počítače a notebooky projít různými způsoby. U stolních grafických karet lze průchod provést prostřednictvím KVM pomocí starší konfigurace nebo konfigurace systému UEFI BIOS přes SeaBIOS a OVMF.

NVIDIA

Pracovní plochy

U stolních počítačů lze projít většinou grafických karet, i když u grafických karet s architekturou Pascal nebo starší musí být VBIOS grafické karty předány ve virtuálním stroji, pokud se ke spuštění hostitele používá GPU.

Notebooky

U notebooků ovladač NVIDIA kontroluje přítomnost baterie pomocí ACPI a bez baterie bude vrácena chyba. Aby se tomu zabránilo, je nutné vytvořit text vytvořený z textu převedeného na Base64, aby se zfalšovala baterie a obejde se kontrola.

Pascal a dřívější

U grafických karet pro notebooky, které jsou Pascal a starší, se průchod značně liší v konfiguraci grafické karty. U notebooků, které nemají NVIDIA Optimus, jako jsou varianty MXM, lze průchod dosáhnout tradičními metodami. U notebooků, které mají NVIDIA Optimus zapnutou i při vykreslování prostřednictvím integrovaného grafického framebufferu CPU, na rozdíl od vlastního, je průchod komplikovanější, což vyžaduje vzdálené vykreslování displeje nebo služby, použití Intel GVT-g, stejně jako integraci VBIOS do spouštěcí konfigurace kvůli tomu, že VBIOS je přítomen v systému BIOS notebooku, na rozdíl od samotného GPU. U notebooků, které mají GPU s NVIDIA Optimus a mají vyhrazený framebuffer, se konfigurace mohou lišit. Pokud lze NVIDIA Optimus vypnout, je možné provést průchod tradičními prostředky. Pokud je však Optimus jedinou konfigurací, je nejpravděpodobnější, že je VBIOS přítomen v systému BIOS notebooku, což vyžaduje stejné kroky jako vykreslování notebooku pouze na integrovaném grafickém framebufferu, ale je také možný externí monitor.

Zprostředkovaný průchod

Ve zprostředkovaném předávání zařízení nebo úplné virtualizaci GPU poskytuje hardware GPU kontexty s rozsahy virtuální paměti pro každého hosta prostřednictvím IOMMU a hypervisor odesílá grafické příkazy od hostů přímo do GPU. Tato technika je formou virtualizace podporované hardwarem a dosahuje téměř nativního výkonu a vysoké věrnosti. Pokud hardware vystavuje kontexty jako plná logická zařízení, mohou hosté použít libovolné rozhraní API. Jinak musí rozhraní API a ovladače řídit další složitost kontextů GPU. Nevýhodou může být malá izolace mezi virtuálními počítači při přístupu k prostředkům GPU.

Následující softwarové a hardwarové technologie implementují zprostředkované předávání:

  • VMware Virtual Shared Pass-Through Graphics Acceleration with Nvidia vGPU or AMD MxGPU
  • Citrix XenServer sdílený GPU s Nvidia vGPU, AMD MxGPU nebo Intel GVT-g
  • Xen a KVM s Intel GVT-g
  • Thincast Workstation - funkce Virtual 3D (Direct X 12 & Vulkan 3D API)


Zatímco vzdálená komunikace API je obecně k dispozici pro aktuální a starší GPU, zprostředkované předávání vyžaduje podporu hardwaru dostupnou pouze na konkrétních zařízeních.

Hardwarová podpora pro zprostředkovanou předávací virtualizaci
Prodejce Technologie Specializované rodiny grafických karet Integrované rodiny GPU
Server Profesionální Spotřebitel
Nvidia vGPU GRID , Tesla Quadro Ne -
AMD MxGPU FirePro Server , Radeon Instinct Radeon Pro Ne Ne
Intel GVT-g - - - Broadwell a novější

Emulace zařízení

Architektury GPU jsou velmi složité a rychle se mění a jejich vnitřní podrobnosti jsou často utajovány. Obecně není možné plně virtualizovat nové generace GPU, pouze starší a jednodušší generace. Například PCem , specializovaný emulátor architektury IBM PC , může emulovat grafické zařízení S3 ViRGE / DX, které podporuje Direct3D 3, a 3dfx Voodoo2 , který mimo jiné podporuje Glide .

Pokud používáte virtuální grafický adaptér VGA nebo SVGA , host nemusí mít 3D grafickou akceleraci, protože poskytuje pouze minimální funkce umožňující přístup k zařízení prostřednictvím grafického terminálu. Emulované zařízení může hostům vystavit pouze základní režimy 2D grafiky. Správce virtuálního stroje může také poskytovat běžné implementace API pomocí softwarového vykreslování k povolení 3D grafických aplikací na hostovi, i když při rychlostech, které mohou být nízké jako 3% hardwarově akcelerovaného nativního výkonu. Následující softwarové technologie implementují grafická rozhraní API pomocí vykreslování softwaru:

Viz také

Poznámky

Reference