Wie man einer Hyper-V-VM eine physische GPU zuweist

So aktivieren Sie GPU-Passthrough oder -Sharing mit Hyper-V-VMs

GPU-Passthrough und virtuelle Maschinen können schnell kompliziert werden. Gerade bei rechenintensiven Anwendungen oder bestimmten Programmen ist es oft sinnvoll, die GPU direkt einer VM zuzuweisen. Unter Windows Server ermöglicht DDA dies bedingt – allerdings nicht ganz intuitiv. Windows 10 und 11 bieten zwar eingeschränkte Möglichkeiten, aber Optionen wie die GPU-Partitionierung sind vorhanden. Die Herausforderung besteht darin, alles korrekt zu konfigurieren, insbesondere die Hardwarepfade, Treiber und VM-Einstellungen. Hier finden Sie einige bewährte Methoden, um die GPU in Ihrer Hyper-V-Umgebung reibungslos zum Laufen zu bringen – keine Garantie für eine perfekte Lösung in jeder Konfiguration, aber ein guter Anfang.

GPU-Passthrough für Hyper-V-VM auf Windows Server aktivieren

Durch Deaktivieren der automatischen Snapshots und Anpassen einiger VM-Einstellungen können Sie eine PCIe-GPU direkt in Ihre VM einbinden. Dies funktioniert nur unter Windows Server mit der Hyper-V-Rolle, nicht unter Windows 10 oder 11.Warum es hilft : Die direkte Einbindung der GPU in die VM kann die Grafikleistung drastisch steigern, sofern alle Einstellungen korrekt sind. Normalerweise wird die GPU als neues Gerät im Geräte-Manager der VM angezeigt, und Sie können dort die Treiber installieren.Wann Sie dies verwenden sollten : Wenn Sie eine VM hosten, die hohe Grafikleistung benötigt – beispielsweise für Spiele, Rendering oder CUDA-Aufgaben – und Sie Windows Server verwenden.Erwartetes Ergebnis : Ihre GPU wird im Geräte-Manager der VM als Grafikadapter zusammen mit dem Hyper-V-Grafiktreiber angezeigt. Beachten Sie, dass die VM vorinstallierte Grafiktreiber für die eingebundene GPU benötigt, da diese sonst möglicherweise nicht ordnungsgemäß funktioniert.

Ändern Sie die VM-Konfiguration

Hierbei handelt es sich um einen Teil des Prozesses, bei dem Windows aufgrund automatischer Snapshots oder Cache-Beschränkungen manchmal Probleme verursacht. Deaktivieren Sie zunächst diese Snapshots, um die Konfiguration übersichtlich zu halten:

Set-VM -Name munGPUVM1 -AutomaticStopAction TurnOff

Optimieren Sie anschließend die Cache- und Speichereinstellungen – dies ist manchmal notwendig, um Konflikte zu vermeiden:

Set-VM -Name munGPUVM1 -GuestControlledCacheTypes $True -LowMemoryMappedIoSpace 3Gb -HighMemoryMappedIoSpace 33280Mb

Ermitteln Sie den PCIe-Gerätepfad zur GPU

Dieser Teil ist der knifflige. Sie müssen den Pfad zum PCIe-Steckplatz Ihrer Grafikkarte finden. Eine Möglichkeit? Öffnen Sie den Geräte-Manager, gehen Sie zu den Eigenschaften der Grafikkarte unter „Details“, aktivieren Sie Speicherpfade und kopieren Sie die Zeile, die mit PCIROOT beginnt. Oder, falls Sie es wie ich lieber einfach haben, können Sie PowerShell ausführen:

Get-PnpDevice | Where-Object {$_. Present -eq $true} | Where-Object {$_. Class -eq "Display"} | Select-Object Name, InstanceId

Dadurch erhalten Sie eine Liste der Anzeigegeräte mit ihren Instanz-IDs. Wählen Sie das Gerät aus, das zu Ihrer GPU passt.

Karte abtrennen und an die VM weitergeben

Um die Karte im Host zu deaktivieren (damit sie einer VM zugewiesen werden kann), führen Sie Folgendes aus:

Dismount-VmHostAssignableDevice -LocationPath "PCIROOT(0)#PCI(0300)#PCI(0000)" –Force

Ersetzen Sie diesen Pfad durch den zuvor ermittelten Wert. Anschließend weisen Sie ihn der VM zu:

Add-VMAssignableDevice -VMName VMName -LocationPath "PCIROOT(0)#PCI(0300)#PCI(0000)"

Schalten Sie die VM ein und prüfen Sie, ob die GPU im Geräte-Manager unter Grafikkarten angezeigt wird. Gegebenenfalls müssen Sie die VM oder sogar den Host nach diesem Schritt neu starten. Vergessen Sie außerdem nicht, dass die VM die richtigen Treiber benötigt; andernfalls wird sie als unbekanntes Gerät angezeigt.

Um die GPU-Zuweisung rückgängig zu machen oder neu zuzuweisen

Falls etwas schiefgeht oder Sie die GPU an den Host zurückgeben möchten, führen Sie einfach Folgendes aus:

Remove-VMAssignableDevice -VMName munGPUVM1 -LocationPath $locationPath Und dann: 
Mount-VMHostAssignableDevice -LocationPath $locationPath

---

Gemeinsame Nutzung der GPU in Windows 10 oder 11 mit GPU-Partitionierung (GPU-P)

Unter Windows 10/11 ist die Unterstützung für direktes GPU-Passthrough eingeschränkt. GPU-Partitionierung (GPU-P) ist jedoch eine gute Alternative. Damit lässt sich die GPU in kleinere Bereiche aufteilen, sodass eine virtuelle Maschine einen Teil davon nutzen kann – ähnlich wie beim Teilen einer Pizza.Warum es hilft : Es ist weniger hardwareabhängig als vollständiges Passthrough und funktioniert mit unterstützten Treibern unter Windows 10/11.Wann man das verwenden sollte : Wenn man einfach nur eine ordentliche GPU-Leistung in einer VM haben möchte, ohne sich mit PCIe-Pfaden herumschlagen zu müssen. Um zu überprüfen, ob Ihre GPU GPU-P unterstützt, führen Sie folgenden Befehl in PowerShell aus:

Get-VMPartitionableGpu

(oder unter Win11)

Get-VMHostPartitionableGpu

Wenn Ihre GPU aufgeführt ist, ist das eine gute Nachricht. Nun zur Partitionierung:

Set-VM -VMName myVM1 -GuestControlledCacheTypes $true -LowMemoryMappedIoSpace 1Gb -HighMemoryMappedIoSpace 32Gb

Fügen Sie anschließend den GPU-Partitionsadapter hinzu:

Add-VMGpuPartitionAdapter -VMName myVM1

Der knifflige Teil? Sie benötigen den Treiber sowohl auf dem Host-System als auch auf der virtuellen Maschine. Das Skript Easy-GPU-PV hilft beim Kopieren der Treiber in die virtuelle Maschine – denn natürlich muss Windows es unnötig kompliziert machen. Führen Sie das Treiberaktualisierungsskript aus:

.\Update-VMGpuPartitionDriver.ps1 -VMName myVM1 -GPUName "AUTO"

Weisen Sie anschließend in den VM-Einstellungen die GPU über PowerShell oder die Hyper-V-Verwaltung zu.---

Zusammenfassung

Die korrekte Einrichtung von GPU-Passthrough oder -Sharing ist nicht immer einfach. Es hängt stark von Ihrer Hardware, der Treiberunterstützung und Ihrer Windows-Version ab. Doch die folgenden Schritte – insbesondere die Überprüfung der Gerätepfade und Treiberstrategien – können einen großen Unterschied machen. Bei manchen Systemen reicht es, den Computer ein paar Mal neu zu starten oder die Befehle in einer bestimmten Reihenfolge auszuführen. Warum es funktioniert, ist mir nicht ganz klar, aber bei einem System hat es nach einem Neustart plötzlich geklappt. Hoffentlich spart das jemandem ein paar Stunden. Denken Sie daran: Geduld und umsichtiges Fahren sind hier entscheidend.