2014-07-09 20:41:04 +0000 2014-07-09 20:41:04 +0000
30
30

NVidia GPU van VirtualBox gebruiken?

_Hoe zorg ik ervoor dat de VirtualBox guest de NVidia graphics gebruikt? _

Host setup:

  • Windows 7 x64

  • NVidia Optimus

  • In NVIDIA Configuratiescherm, heb ik expliciet High-performance NVIDIA processor geselecteerd voor:

  • Als VirtualBox draait, dan staat de NVidia software niet vermeld als applicatie die gebruik maakt van de NVidia GPU. Daarom neem ik aan dat VirtualBox inderdaad geen gebruik maakt van de Nvidia GPU.

Guest:

  • Windows 7 x64 (d.w.z. hetzelfde als host)

  • Guest Additions installed

  • 3D acceleration enabled in VirtualBox settings: Display / Video / Enable 3D Acceleration

  • Wat Rhinoceros , een OpenGL capabele applicatie rapporteert als video adapter:

Antwoorden (2)

22
22
22
2019-01-18 20:23:51 +0000

Ik realiseer me dat er een paar jaar voorbij zijn gegaan, maar ik wilde antwoorden omdat deze post vrij hoog opduikt als je googelt op “virtualbox 3d multiple GPU”. In de tijd die is verstreken, zijn de dingen een stuk eenvoudiger en beter geworden.

Mensen die op deze thread stuiten, komen hier waarschijnlijk terecht omdat ze een laptop of PC hebben met twee GPU’s, wat tegenwoordig heel gebruikelijk is – vooral op gaming laptops. De on-board Intel GPU wordt gebruikt voor het renderen van vensters en algemene toepassingen, maar toepassingen die gebruik maken van GPU 3D functionaliteit moeten dat doen via de beter presterende Nvidia GPU.

Vandaag was ik een Ubuntu VM aan het bouwen op mijn laptop om wat cross-platform ontwikkeling te doen, en alles ging goed behalve dat de gast VM extreem traag was, en er was geen verklaring voor omdat CPU, geheugen, schijf allemaal een laag gebruik vertoonden.

Het duurde niet lang om uit te vinden dat het de videoprestaties waren die het probleem veroorzaakten. Toepassingen starten, vensters maximaliseren/minimaliseren – alles wat we in 2019 als vanzelfsprekend beschouwen, maar 3D-versnelling nodig heeft om op redelijke snelheid te werken – gebruikte GPU 0.

Het was gemakkelijk om dit vast te stellen omdat Windows 10 nu de mogelijkheid heeft om GPU-gebruik te zien met behulp van “taakbeheer” en vervolgens het tabblad “prestaties”. En ik kon zien wanneer ik vensters verplaatste, maximaliseerde, minimaliseerde, dat werd gedaan door GPU op de host. Die GPU op de host is de geïntegreerde Intel HD GPU, en ik wilde de NVidia GTX-1050ti gebruiken, die GPU1 was.

Na wat rondzoeken vond ik niet echt ergens waar je kon specificeren welke GPU je wilde gebruiken. Maar deze draad, en sommige anderen, herinnerden me eraan dat je bij dit soort setups naar het NVidia configuratiescherm moet gaan, dan “3d instellingen beheren”, dan de “Programma instellingen” tab.

Je zult waarschijnlijk “Virtualbox” niet in de lijst vinden. Maar je kunt op de knop “Toevoegen” drukken, en virtualbox.exe toevoegen. Het kan zijn dat je moet boren naar de drive/path waar je virtualbox installatie staat. Als je het eenmaal hebt toegevoegd, zorg er dan in de instellingen voor dat item 2. “Selecteer de gewenste grafische processor voor dit programma” is ingesteld op de GPU die je wilt gebruiken, wat in mijn geval “HIgh-performance NVIDIA processor” was.

Zet het niet op automatisch, en zeker niet op geïntegreerd. Natuurlijk moet je de VM instellingen instellen met het 3D versnellingsvakje aangevinkt, en je moet de gasttoevoegingen op de host geïnstalleerd hebben. Maar als je eenmaal de host video 3D instellingen hebt ingesteld zoals hierboven beschreven, sluit dan de gast VM af, sluit virtualbox af, en start virtualbox en de VM opnieuw.

Als je task manager|performacne gebruikt en kijkt naar het “virtualbox manager” proces en kijkt welke GPU wordt gebruikt wanneer je door de UI van de guest VM navigeert, zou je moeten zien dat het nu de betere GPU gebruikt. Zie de afbeelding hieronder geplakt.

Dat gezegd hebbende, verwacht niet dat je games kunt draaien in een gast-VM. 3D versnelling is nog niet zo ver gevorderd. Maar je kunt verwachten dat je een modern OS en UI in je gast hebt, en een acceptabele ervaring. Men zou in staat zijn om oudere spellen te spelen in de gast-VM, zoals alles gebaseerd op DirectX9. Helaas, als de mogelijkheid om GPU’s te virtualiseren evolueert, evolueert de 3D gaming technologie sneller.

17
17
17
2015-12-31 17:15:00 +0000

De gast volledige GPU toegang geven is waarschijnlijk niet mogelijk. Als een virtuele machine directe toegang zou hebben tot uw GPU terwijl uw host hem gebruikte, zouden er slechte dingenTM gebeuren, omdat het delen van geheugen tussen twee effectief verschillende computers geen ding is; pointers en adressen en wat al niet meer, zouden erg verschillend zijn tussen die twee. (Geen enkele consumentenkaart ondersteunt het gebruik van twee computers tegelijk.)

Er zijn echter een paar dingen die je kunt proberen. Ten eerste, stel uw voorkeurs grafische processor in op de goede in het NVidia Configuratiescherm (3D InstellingenBeheer 3D instellingenVoorkeur grafische processor). Dat zou ervoor kunnen zorgen dat VirtualBox met de NVidia kaart voor OpenGL gaat werken.

Als dat niet helpt, probeer dan het installeren van Guest Additions in Veilige Modus op de guest.

Tenslotte, op Linux hosts, kunt u proberen de GPU door te geven aan de virtuele machine, maar dit werkt alleen voor PCI kaarten en ik kon niet vinden of de uwe PCI is, en zelfs dan heeft u een goede kans om de GPU weg te rukken van de host of andere problemen te veroorzaken. Zoek eerst het PCI adres (bus, device, en functie) voor de goede kaart. Stel de chipset van je VM in op ICH9; dit maakte niet direct iets kapot toen ik het probeerde. Gebruik dan het VBoxManage hulpprogramma om de kaart aan te sluiten:

vboxmanage modifyvm "Your VM Name" --pciattach BB:DD.F@bb:dd.f

Vervang Your VM Name indien nodig. BB is het busnummer van je GPU op de host; DD is het apparaat; F is de functie. Voer na de @ de PCI-sleuf in waar deze zich op de gast zal bevinden. Bijvoorbeeld:

vboxmanage modifyvm "Windows 7 x64" --pciattach 01:00.0@03.01.0

In het algemeen is het waarschijnlijker dat GPU passthrough mogelijk is op een Linux host. Zie Hoe een gaming machine opzetten met GPU passthrough .