virtio-nvgpu — modul na poskytovanie prístupu k GPU NVIDIA z virtuálnych strojov KVM

Projekt virtio-nvgpu vyvíja virtio-zariadenie, ktoré umožňuje prístup k GPU NVIDIA z hosťovských systémov bežiacich pod hypervízorom KVM s minimálnou stratou výkonu. Obsahuje modul jadra, ktorý je načítaný do hosťovského systému a virtio-zariadenie, ktoré funguje na strane hostiteľského prostredia. Kód modulu jadra je napísaný v jazyku C a je distribuovaný pod licenciou GPLv2, zatiaľ čo kód virtio-zariadenia je napísaný v Ruste a je distribuovaný pod licenciou Apache 2.0.

Podľa odhadov vývojárov strata výkonu pri prístupe k GPU nepresahuje 2%. Vysoká rýchlosť je dosiahnutá vďaka presmerovaniu ioctl-volaní na natívny ovládač NVIDIA a práci na úrovni ABI ovládača NVIDIA, bez prekladu požiadaviek na úrovni API. Na strane hosťovského systému sa používajú štandardné knižnice a vysokolevelové ovládače NVIDIA, ktoré fungujú v používateľskom priestore.

V hosťovskom systéme sa načíta modul jadra, ktorý poskytuje súbory zariadení /dev/nvidiactl, /dev/nvidia0…N, /dev/nvidia-uvm a presmerováva volania ioctl() a mmap() cez virtqueue na spracovateľa na strane hostiteľského prostredia, ktorý ich posiela hostiteľskému ovládaču NVIDIA. Na odstránenie prepínania kontextov medzi hostiteľským systémom a virtuálnym strojom sú príkazové buffery odrážané (mmap) do zdieľanej pamäte, ktorá je prístupná hostiteľskému prostrediu a GPU.

Na rozdiel od exkluzívneho presmerovania prístupu k GPU (VFIO Passthrough) projekt virtio-nvgpu zabezpečuje zdieľaný prístup k jednému GPU z viacerých virtuálních strojů, a na rozdiel od virtio-gpu (Venus, VirGL) pracuje cez presmerovanie ABI na ovládač NVIDIA, a nie na úrovni prekladu grafických API Vulkan a OpenGL. Nevýhodami virtio-nvgpu sú nedostatok plnohodnotnej izolácie na báze IOMMU (hosťovské systémy pracujú cez hostiteľský ovládač NVIDIA a sú obmedzené len na filtrovanie volaní ioctl) a vazba na ABI ovládačov NVIDIA (ABI sa mení v každej verzii a vyžaduje adaptáciu virtio-nvgpu).

Možnosti virtio-nvgpu sú dostatočné na renderovanie, kódovanie videa a výpočty pomocou API Vulkan, OpenGL, NVENC a CUDA. Ako hlavná oblasť aplikácie je spomínané vytváranie cloudových herných služieb alebo virtuálnych pracovných miest, kde sa hra alebo grafická aplikácia spúšťa v virtuálnom stroji, ktorá zabezpečuje rendrovanie, hardvérové kódovanie výsledku pomocou NVENC a prenos výstupu vzdialenému užívateľovi vo forme komprimovaného video streamu.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster